@@ -11,7 +11,6 @@ import net.minecraft.server.EntityEnderDragon;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.ComplexEntityPart;
|
||||
import org.bukkit.entity.EnderDragon;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
public class CraftEnderDragon extends CraftComplexLivingEntity implements EnderDragon {
|
||||
|
||||
@@ -2,8 +2,8 @@ package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityEnderman;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.Enderman;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.material.MaterialData;
|
||||
@@ -14,11 +14,11 @@ public class CraftEnderman extends CraftMonster implements Enderman {
|
||||
}
|
||||
|
||||
public MaterialData getCarriedMaterial() {
|
||||
return Material.getMaterial(getHandle().getCarriedId()).getNewData((byte) getHandle().getCarriedData());
|
||||
return CraftMagicNumbers.getMaterial(getHandle().getCarried()).getNewData((byte) getHandle().getCarriedData());
|
||||
}
|
||||
|
||||
public void setCarriedMaterial(MaterialData data) {
|
||||
getHandle().setCarriedId(data.getItemTypeId());
|
||||
getHandle().setCarried(CraftMagicNumbers.getBlock(data.getItemTypeId()));
|
||||
getHandle().setCarriedData(data.getData());
|
||||
}
|
||||
|
||||
|
||||
@@ -144,6 +144,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
else if (entity instanceof EntityMinecartHopper) { return new CraftMinecartHopper(server, (EntityMinecartHopper) entity); }
|
||||
else if (entity instanceof EntityMinecartMobSpawner) { return new CraftMinecartMobSpawner(server, (EntityMinecartMobSpawner) entity); }
|
||||
else if (entity instanceof EntityMinecartRideable) { return new CraftMinecartRideable(server, (EntityMinecartRideable) entity); }
|
||||
else if (entity instanceof EntityMinecartCommandBlock) { return new CraftMinecartCommand(server, (EntityMinecartCommandBlock) entity); }
|
||||
} else if (entity instanceof EntityHanging) {
|
||||
if (entity instanceof EntityPainting) { return new CraftPainting(server, (EntityPainting) entity); }
|
||||
else if (entity instanceof EntityItemFrame) { return new CraftItemFrame(server, (EntityItemFrame) entity); }
|
||||
@@ -230,7 +231,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
}
|
||||
|
||||
public int getEntityId() {
|
||||
return entity.id;
|
||||
return entity.getId();
|
||||
}
|
||||
|
||||
public int getFireTicks() {
|
||||
|
||||
@@ -4,6 +4,7 @@ import net.minecraft.server.EntityFallingBlock;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.FallingSand;
|
||||
|
||||
@@ -32,7 +33,7 @@ public class CraftFallingSand extends CraftEntity implements FallingSand {
|
||||
}
|
||||
|
||||
public int getBlockId() {
|
||||
return getHandle().id;
|
||||
return CraftMagicNumbers.getId(getHandle().id);
|
||||
}
|
||||
|
||||
public byte getBlockData() {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import net.minecraft.server.EntityFireworks;
|
||||
import net.minecraft.server.Item;
|
||||
import net.minecraft.server.ItemStack;
|
||||
import net.minecraft.server.Items;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
@@ -25,7 +25,7 @@ public class CraftFirework extends CraftEntity implements Firework {
|
||||
ItemStack item = getHandle().getDataWatcher().getItemStack(FIREWORK_ITEM_INDEX);
|
||||
|
||||
if (item == null) {
|
||||
item = new ItemStack(Item.FIREWORKS);
|
||||
item = new ItemStack(Items.FIREWORKS);
|
||||
getHandle().getDataWatcher().watch(FIREWORK_ITEM_INDEX, item);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import net.minecraft.server.Container;
|
||||
import net.minecraft.server.EntityHuman;
|
||||
import net.minecraft.server.EntityMinecartHopper;
|
||||
import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.Packet100OpenWindow;
|
||||
import net.minecraft.server.Packet101CloseWindow;
|
||||
import net.minecraft.server.PacketPlayInCloseWindow;
|
||||
import net.minecraft.server.PacketPlayOutOpenWindow;
|
||||
import net.minecraft.server.TileEntityBrewingStand;
|
||||
import net.minecraft.server.TileEntityDispenser;
|
||||
import net.minecraft.server.TileEntityFurnace;
|
||||
@@ -249,7 +249,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
String title = container.getBukkitView().getTitle();
|
||||
int size = container.getBukkitView().getTopInventory().getSize();
|
||||
|
||||
player.playerConnection.sendPacket(new Packet100OpenWindow(container.windowId, windowType, title, size, true));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, title, size, true));
|
||||
getHandle().activeContainer = container;
|
||||
getHandle().activeContainer.addSlotListener(player);
|
||||
}
|
||||
@@ -293,7 +293,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
if (((EntityPlayer) getHandle()).playerConnection == null) return;
|
||||
if (getHandle().activeContainer != getHandle().defaultContainer) {
|
||||
// fire INVENTORY_CLOSE if one already open
|
||||
((EntityPlayer)getHandle()).playerConnection.handleContainerClose(new Packet101CloseWindow(getHandle().activeContainer.windowId));
|
||||
((EntityPlayer)getHandle()).playerConnection.a(new PacketPlayInCloseWindow(getHandle().activeContainer.windowId));
|
||||
}
|
||||
EntityPlayer player = (EntityPlayer) getHandle();
|
||||
Container container;
|
||||
@@ -314,7 +314,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
int windowType = CraftContainer.getNotchInventoryType(type);
|
||||
String title = inventory.getTitle();
|
||||
int size = inventory.getTopInventory().getSize();
|
||||
player.playerConnection.sendPacket(new Packet100OpenWindow(container.windowId, windowType, title, size, false));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, title, size, false));
|
||||
player.activeContainer = container;
|
||||
player.activeContainer.addSlotListener(player);
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
}
|
||||
|
||||
public void removePotionEffect(PotionEffectType type) {
|
||||
getHandle().k(type.getId()); // Should be removeEffect.
|
||||
getHandle().m(type.getId()); // Should be removeEffect.
|
||||
}
|
||||
|
||||
public Collection<PotionEffect> getActivePotionEffects() {
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraft.server.EntityMinecartCommandBlock;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.minecart.CommandMinecart;
|
||||
import org.bukkit.permissions.PermissibleBase;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionAttachment;
|
||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class CraftMinecartCommand extends CraftMinecart implements CommandMinecart {
|
||||
private final PermissibleBase perm = new PermissibleBase(this);
|
||||
|
||||
public CraftMinecartCommand(CraftServer server, EntityMinecartCommandBlock entity) {
|
||||
super(server, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCommand() {
|
||||
return ((EntityMinecartCommandBlock) getHandle()).e().e;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCommand(String command) {
|
||||
((EntityMinecartCommandBlock) getHandle()).e().a(command != null ? command : "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
((EntityMinecartCommandBlock) getHandle()).e().b(name != null ? name : "@");
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType getType() {
|
||||
return EntityType.MINECART_COMMAND;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String message) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String[] messages) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return ((EntityMinecartCommandBlock) getHandle()).e().getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOp() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOp(boolean value) {
|
||||
throw new UnsupportedOperationException("Cannot change operator status of a minecart");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPermissionSet(String name) {
|
||||
return perm.isPermissionSet(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPermissionSet(Permission perm) {
|
||||
return this.perm.isPermissionSet(perm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(String name) {
|
||||
return perm.hasPermission(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(Permission perm) {
|
||||
return this.perm.hasPermission(perm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) {
|
||||
return perm.addAttachment(plugin, name, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionAttachment addAttachment(Plugin plugin) {
|
||||
return perm.addAttachment(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) {
|
||||
return perm.addAttachment(plugin, name, value, ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionAttachment addAttachment(Plugin plugin, int ticks) {
|
||||
return perm.addAttachment(plugin, ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAttachment(PermissionAttachment attachment) {
|
||||
perm.removeAttachment(attachment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recalculatePermissions() {
|
||||
perm.recalculatePermissions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<PermissionAttachmentInfo> getEffectivePermissions() {
|
||||
return perm.getEffectivePermissions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Server getServer() {
|
||||
return Bukkit.getServer();
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,8 @@ import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.bukkit.craftbukkit.map.CraftMapView;
|
||||
import org.bukkit.craftbukkit.map.RenderData;
|
||||
import org.bukkit.craftbukkit.scoreboard.CraftScoreboard;
|
||||
import org.bukkit.craftbukkit.util.CraftChatMessage;
|
||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||
@@ -129,36 +131,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendRawMessage(String message) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
getHandle().playerConnection.sendPacket(new Packet3Chat(ChatMessage.d(message)));
|
||||
for (IChatBaseComponent component : CraftChatMessage.fromString(message)) {
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutChat(component));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String message) {
|
||||
if (!conversationTracker.isConversingModaly()) {
|
||||
this.sendRawMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String[] messages) {
|
||||
for (String message : messages) {
|
||||
sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return getHandle().displayName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDisplayName(final String name) {
|
||||
getHandle().displayName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPlayerListName() {
|
||||
return getHandle().listName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerListName(String name) {
|
||||
String oldName = getHandle().listName;
|
||||
|
||||
@@ -184,8 +195,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
getHandle().listName = name;
|
||||
|
||||
// Change the name on the client side
|
||||
Packet201PlayerInfo oldpacket = new Packet201PlayerInfo(oldName, false, 9999);
|
||||
Packet201PlayerInfo packet = new Packet201PlayerInfo(name, true, getHandle().ping);
|
||||
PacketPlayOutPlayerInfo oldpacket = new PacketPlayOutPlayerInfo(oldName, false, 9999);
|
||||
PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(name, true, getHandle().ping);
|
||||
for (int i = 0; i < server.getHandle().players.size(); ++i) {
|
||||
EntityPlayer entityplayer = (EntityPlayer) server.getHandle().players.get(i);
|
||||
if (entityplayer.playerConnection == null) continue;
|
||||
@@ -217,47 +228,89 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return nameEquals && idEquals;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void kickPlayer(String message) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
getHandle().playerConnection.disconnect(message == null ? "" : message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompassTarget(Location loc) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
// Do not directly assign here, from the packethandler we'll assign it.
|
||||
getHandle().playerConnection.sendPacket(new Packet6SpawnPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutSpawnPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getCompassTarget() {
|
||||
return getHandle().compassTarget;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void chat(String msg) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
getHandle().playerConnection.chat(msg, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performCommand(String command) {
|
||||
return server.dispatchCommand(this, command);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playNote(Location loc, byte instrument, byte note) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
int id = getHandle().world.getTypeId(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
|
||||
getHandle().playerConnection.sendPacket(new Packet54PlayNoteBlock(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), id, instrument, note));
|
||||
String instrumentName = null;
|
||||
switch (instrument) {
|
||||
case 0:
|
||||
instrumentName = "harp";
|
||||
break;
|
||||
case 1:
|
||||
instrumentName = "bd";
|
||||
break;
|
||||
case 2:
|
||||
instrumentName = "snare";
|
||||
break;
|
||||
case 3:
|
||||
instrumentName = "hat";
|
||||
break;
|
||||
case 4:
|
||||
instrumentName = "bassattack";
|
||||
break;
|
||||
}
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect("note."+instrumentName, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, note));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playNote(Location loc, Instrument instrument, Note note) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
int id = getHandle().world.getTypeId(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
|
||||
getHandle().playerConnection.sendPacket(new Packet54PlayNoteBlock(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), id, instrument.getType(), note.getId()));
|
||||
String instrumentName = null;
|
||||
switch (instrument.ordinal()) {
|
||||
case 0:
|
||||
instrumentName = "harp";
|
||||
break;
|
||||
case 1:
|
||||
instrumentName = "bd";
|
||||
break;
|
||||
case 2:
|
||||
instrumentName = "snare";
|
||||
break;
|
||||
case 3:
|
||||
instrumentName = "hat";
|
||||
break;
|
||||
case 4:
|
||||
instrumentName = "bassattack";
|
||||
break;
|
||||
}
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect("note."+instrumentName, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), 3.0f, note.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSound(Location loc, Sound sound, float volume, float pitch) {
|
||||
if (sound == null) {
|
||||
return;
|
||||
@@ -265,6 +318,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
playSound(loc, CraftSound.getSound(sound), volume, pitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSound(Location loc, String sound, float volume, float pitch) {
|
||||
if (loc == null || sound == null || getHandle().playerConnection == null) return;
|
||||
|
||||
@@ -272,18 +326,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
double y = loc.getBlockY() + 0.5;
|
||||
double z = loc.getBlockZ() + 0.5;
|
||||
|
||||
Packet62NamedSoundEffect packet = new Packet62NamedSoundEffect(sound, x, y, z, volume, pitch);
|
||||
PacketPlayOutNamedSoundEffect packet = new PacketPlayOutNamedSoundEffect(sound, x, y, z, volume, pitch);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playEffect(Location loc, Effect effect, int data) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
int packetData = effect.getId();
|
||||
Packet61WorldEvent packet = new Packet61WorldEvent(packetData, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), data, false);
|
||||
PacketPlayOutWorldEvent packet = new PacketPlayOutWorldEvent(packetData, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), data, false);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void playEffect(Location loc, Effect effect, T data) {
|
||||
if (data != null) {
|
||||
Validate.isTrue(data.getClass().equals(effect.getData()), "Wrong kind of data for this effect!");
|
||||
@@ -295,20 +351,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
playEffect(loc, effect, datavalue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location loc, Material material, byte data) {
|
||||
sendBlockChange(loc, material.getId(), data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location loc, int material, byte data) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
Packet53BlockChange packet = new Packet53BlockChange(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), ((CraftWorld) loc.getWorld()).getHandle());
|
||||
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), ((CraftWorld) loc.getWorld()).getHandle());
|
||||
|
||||
packet.material = material;
|
||||
packet.block = CraftMagicNumbers.getBlock(material);
|
||||
packet.data = data;
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data) {
|
||||
if (getHandle().playerConnection == null) return false;
|
||||
|
||||
@@ -342,6 +401,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
throw new NotImplementedException("Chunk changes do not yet work"); // TODO: Chunk changes.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMap(MapView map) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
@@ -352,7 +412,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
for (int y = 0; y < 128; ++y) {
|
||||
bytes[y + 3] = data.buffer[y * 128 + x];
|
||||
}
|
||||
Packet131ItemData packet = new Packet131ItemData((short) Material.MAP.getId(), map.getId(), bytes);
|
||||
PacketPlayOutMap packet = new PacketPlayOutMap(map.getId(), bytes);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
@@ -365,7 +425,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (entity.playerConnection == null || entity.playerConnection.disconnected) {
|
||||
if (entity.playerConnection == null || entity.playerConnection.isDisconnected()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -408,125 +468,125 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSneaking(boolean sneak) {
|
||||
getHandle().setSneaking(sneak);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSneaking() {
|
||||
return getHandle().isSneaking();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSprinting() {
|
||||
return getHandle().isSprinting();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSprinting(boolean sprinting) {
|
||||
getHandle().setSprinting(sprinting);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadData() {
|
||||
server.getHandle().playerFileData.load(getHandle());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveData() {
|
||||
server.getHandle().playerFileData.save(getHandle());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public void updateInventory() {
|
||||
getHandle().updateInventory(getHandle().activeContainer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSleepingIgnored(boolean isSleeping) {
|
||||
getHandle().fauxSleeping = isSleeping;
|
||||
((CraftWorld) getWorld()).getHandle().checkSleepStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSleepingIgnored() {
|
||||
return getHandle().fauxSleeping;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void awardAchievement(Achievement achievement) {
|
||||
sendStatistic(achievement.getId(), 1);
|
||||
// TODO - non-functional as of ID purge
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementStatistic(Statistic statistic) {
|
||||
incrementStatistic(statistic, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementStatistic(Statistic statistic, int amount) {
|
||||
sendStatistic(statistic.getId(), amount);
|
||||
// TODO - non-functional as of ID purge
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementStatistic(Statistic statistic, Material material) {
|
||||
incrementStatistic(statistic, material, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementStatistic(Statistic statistic, Material material, int amount) {
|
||||
if (!statistic.isSubstatistic()) {
|
||||
throw new IllegalArgumentException("Given statistic is not a substatistic");
|
||||
}
|
||||
if (statistic.isBlock() != material.isBlock()) {
|
||||
throw new IllegalArgumentException("Given material is not valid for this substatistic");
|
||||
}
|
||||
|
||||
int mat = material.getId();
|
||||
|
||||
if (!material.isBlock()) {
|
||||
mat -= 255;
|
||||
}
|
||||
|
||||
sendStatistic(statistic.getId() + mat, amount);
|
||||
}
|
||||
|
||||
private void sendStatistic(int id, int amount) {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
while (amount > Byte.MAX_VALUE) {
|
||||
sendStatistic(id, Byte.MAX_VALUE);
|
||||
amount -= Byte.MAX_VALUE;
|
||||
}
|
||||
|
||||
getHandle().playerConnection.sendPacket(new Packet200Statistic(id, amount));
|
||||
// TODO - non-functional as of ID purge
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerTime(long time, boolean relative) {
|
||||
getHandle().timeOffset = time;
|
||||
getHandle().relativeTime = relative;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPlayerTimeOffset() {
|
||||
return getHandle().timeOffset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPlayerTime() {
|
||||
return getHandle().getPlayerTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerTimeRelative() {
|
||||
return getHandle().relativeTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetPlayerTime() {
|
||||
setPlayerTime(0, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerWeather(WeatherType type) {
|
||||
getHandle().setPlayerWeather(type, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WeatherType getPlayerWeather() {
|
||||
return getHandle().getPlayerWeather();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetPlayerWeather() {
|
||||
getHandle().resetPlayerWeather();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBanned() {
|
||||
return server.getHandle().getNameBans().isBanned(getName().toLowerCase());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBanned(boolean value) {
|
||||
if (value) {
|
||||
BanEntry entry = new BanEntry(getName().toLowerCase());
|
||||
@@ -538,10 +598,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
server.getHandle().getNameBans().save();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWhitelisted() {
|
||||
return server.getHandle().getWhitelisted().contains(getName().toLowerCase());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWhitelisted(boolean value) {
|
||||
if (value) {
|
||||
server.getHandle().addWhitelist(getName().toLowerCase());
|
||||
@@ -566,7 +628,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
getHandle().playerInteractManager.setGameMode(EnumGamemode.a(mode.getValue()));
|
||||
getHandle().playerConnection.sendPacket(new Packet70Bed(3, mode.getValue()));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutGameStateChange(3, mode.getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -669,13 +731,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
//remove this player from the hidden player's EntityTrackerEntry
|
||||
EntityTracker tracker = ((WorldServer) entity.world).tracker;
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
EntityTrackerEntry entry = (EntityTrackerEntry) tracker.trackedEntities.get(other.id);
|
||||
EntityTrackerEntry entry = (EntityTrackerEntry) tracker.trackedEntities.get(other.getId());
|
||||
if (entry != null) {
|
||||
entry.clear(getHandle());
|
||||
}
|
||||
|
||||
//remove the hidden player from this player user list
|
||||
getHandle().playerConnection.sendPacket(new Packet201PlayerInfo(player.getPlayerListName(), false, 9999));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(player.getPlayerListName(), false, 9999));
|
||||
}
|
||||
|
||||
public void showPlayer(Player player) {
|
||||
@@ -687,12 +749,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
EntityTracker tracker = ((WorldServer) entity.world).tracker;
|
||||
EntityPlayer other = ((CraftPlayer) player).getHandle();
|
||||
EntityTrackerEntry entry = (EntityTrackerEntry) tracker.trackedEntities.get(other.id);
|
||||
EntityTrackerEntry entry = (EntityTrackerEntry) tracker.trackedEntities.get(other.getId());
|
||||
if (entry != null && !entry.trackedPlayers.contains(getHandle())) {
|
||||
entry.updatePlayer(getHandle());
|
||||
}
|
||||
|
||||
getHandle().playerConnection.sendPacket(new Packet201PlayerInfo(player.getPlayerListName(), true, getHandle().ping));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(player.getPlayerListName(), true, getHandle().ping));
|
||||
}
|
||||
|
||||
public boolean canSee(Player player) {
|
||||
@@ -772,7 +834,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
public void setExtraData(NBTTagCompound nbttagcompound) {
|
||||
if (!nbttagcompound.hasKey("bukkit")) {
|
||||
nbttagcompound.setCompound("bukkit", new NBTTagCompound());
|
||||
nbttagcompound.set("bukkit", new NBTTagCompound());
|
||||
}
|
||||
|
||||
NBTTagCompound data = nbttagcompound.getCompound("bukkit");
|
||||
@@ -811,10 +873,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (getHandle().playerConnection == null) return;
|
||||
|
||||
if (channels.contains(channel)) {
|
||||
Packet250CustomPayload packet = new Packet250CustomPayload();
|
||||
packet.tag = channel;
|
||||
packet.length = message.length;
|
||||
packet.data = message;
|
||||
PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload(channel, message);
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
@@ -825,7 +884,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
byte[] message = (url + "\0" + "16").getBytes();
|
||||
Validate.isTrue(message.length <= Messenger.MAX_MESSAGE_SIZE, "Texture pack URL is too long");
|
||||
|
||||
getHandle().playerConnection.sendPacket(new Packet250CustomPayload("MC|TPack", message));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload("MC|TPack", message));
|
||||
}
|
||||
|
||||
public void addChannel(String channel) {
|
||||
@@ -849,9 +908,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
Set<String> listening = server.getMessenger().getIncomingChannels();
|
||||
|
||||
if (!listening.isEmpty()) {
|
||||
Packet250CustomPayload packet = new Packet250CustomPayload();
|
||||
|
||||
packet.tag = "REGISTER";
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
|
||||
for (String channel : listening) {
|
||||
@@ -863,10 +919,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
packet.data = stream.toByteArray();
|
||||
packet.length = packet.data.length;
|
||||
|
||||
getHandle().playerConnection.sendPacket(packet);
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutCustomPayload("REGISTER", stream.toByteArray()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1003,7 +1056,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
if (playerConnection == null) {
|
||||
throw new IllegalStateException("Cannot set scoreboard yet");
|
||||
}
|
||||
if (playerConnection.disconnected) {
|
||||
if (playerConnection.isDisconnected()) {
|
||||
throw new IllegalStateException("Cannot set scoreboard for invalid CraftPlayer");
|
||||
}
|
||||
|
||||
@@ -1045,14 +1098,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
public void updateScaledHealth() {
|
||||
AttributeMapServer attributemapserver = (AttributeMapServer) getHandle().aX();
|
||||
AttributeMapServer attributemapserver = (AttributeMapServer) getHandle().bc();
|
||||
Set set = attributemapserver.b();
|
||||
|
||||
injectScaledMaxHealth(set, true);
|
||||
|
||||
getHandle().getDataWatcher().watch(6, (float) getScaledHealth());
|
||||
getHandle().playerConnection.sendPacket(new Packet8UpdateHealth(getScaledHealth(), getHandle().getFoodData().a(), getHandle().getFoodData().e()));
|
||||
getHandle().playerConnection.sendPacket(new Packet44UpdateAttributes(getHandle().id, set));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutUpdateHealth(getScaledHealth(), getHandle().getFoodData().a(), getHandle().getFoodData().e()));
|
||||
getHandle().playerConnection.sendPacket(new PacketPlayOutUpdateAttributes(getHandle().getId(), set));
|
||||
|
||||
set.clear();
|
||||
getHandle().maxHealthCache = getMaxHealth();
|
||||
@@ -1070,6 +1123,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
continue;
|
||||
}
|
||||
collection.add(new AttributeModifiable(getHandle().aX(), (new AttributeRanged("generic.maxHealth", scaledHealth ? healthScale : getMaxHealth(), 0.0D, Float.MAX_VALUE)).a("Max Health").a(true)));
|
||||
collection.add(new AttributeModifiable(getHandle().bc(), (new AttributeRanged("generic.maxHealth", scaledHealth ? healthScale : getMaxHealth(), 0.0D, Float.MAX_VALUE)).a("Max Health").a(true)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user