Update CraftBukkit to Minecraft 1.7.2

By: mbax <matt@phozop.net>
This commit is contained in:
CraftBukkit/Spigot
2013-11-04 07:07:38 -06:00
parent 5961c3b788
commit 5783df9d13
63 changed files with 1137 additions and 429 deletions

View File

@@ -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 {

View File

@@ -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());
}

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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() {

View File

@@ -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();
}
}

View File

@@ -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)));
}
}