--- a/net/minecraft/network/PacketDataSerializer.java +++ b/net/minecraft/network/PacketDataSerializer.java @@ -81,6 +81,8 @@ import org.joml.Quaternionf; import org.joml.Vector3f; +import org.bukkit.craftbukkit.inventory.CraftItemStack; // CraftBukkit + public class PacketDataSerializer extends ByteBuf { public static final int DEFAULT_NBT_QUOTA = 2097152; @@ -205,7 +207,7 @@ public > C readCollection(IntFunction intfunction, PacketDataSerializer.a packetdataserializer_a) { int i = this.readVarInt(); - C c0 = (Collection) intfunction.apply(i); + C c0 = intfunction.apply(i); // CraftBukkit - decompile error for (int j = 0; j < i; ++j) { c0.add(packetdataserializer_a.apply(this)); @@ -216,7 +218,7 @@ public void writeCollection(Collection collection, PacketDataSerializer.b packetdataserializer_b) { this.writeVarInt(collection.size()); - Iterator iterator = collection.iterator(); + Iterator iterator = collection.iterator(); // CraftBukkit - decompile error while (iterator.hasNext()) { T t0 = iterator.next(); @@ -243,12 +245,12 @@ public void writeIntIdList(IntList intlist) { this.writeVarInt(intlist.size()); - intlist.forEach(this::writeVarInt); + intlist.forEach((java.util.function.IntConsumer) this::writeVarInt); // CraftBukkit - decompile error } public > M readMap(IntFunction intfunction, PacketDataSerializer.a packetdataserializer_a, PacketDataSerializer.a packetdataserializer_a1) { int i = this.readVarInt(); - M m0 = (Map) intfunction.apply(i); + M m0 = intfunction.apply(i); // CraftBukkit - decompile error for (int j = 0; j < i; ++j) { K k0 = packetdataserializer_a.apply(this); @@ -282,7 +284,7 @@ } public > void writeEnumSet(EnumSet enumset, Class oclass) { - E[] ae = (Enum[]) oclass.getEnumConstants(); + E[] ae = oclass.getEnumConstants(); // CraftBukkit - decompile error BitSet bitset = new BitSet(ae.length); for (int i = 0; i < ae.length; ++i) { @@ -293,7 +295,7 @@ } public > EnumSet readEnumSet(Class oclass) { - E[] ae = (Enum[]) oclass.getEnumConstants(); + E[] ae = oclass.getEnumConstants(); // CraftBukkit - decompile error BitSet bitset = this.readFixedBitSet(ae.length); EnumSet enumset = EnumSet.noneOf(oclass); @@ -529,7 +531,7 @@ } public > T readEnum(Class oclass) { - return ((Enum[]) oclass.getEnumConstants())[this.readVarInt()]; + return ((T[]) oclass.getEnumConstants())[this.readVarInt()]; // CraftBukkit - fix decompile error } public PacketDataSerializer writeEnum(Enum oenum) { @@ -584,7 +586,7 @@ try { NBTCompressedStreamTools.writeAnyTag((NBTBase) nbtbase, new ByteBufOutputStream(this)); return this; - } catch (IOException ioexception) { + } catch (Exception ioexception) { // CraftBukkit - IOException -> Exception throw new EncoderException(ioexception); } } @@ -612,7 +614,7 @@ } public PacketDataSerializer writeItem(ItemStack itemstack) { - if (itemstack.isEmpty()) { + if (itemstack.isEmpty() || itemstack.getItem() == null) { // CraftBukkit - NPE fix itemstack.getItem() this.writeBoolean(false); } else { this.writeBoolean(true); @@ -641,6 +643,11 @@ ItemStack itemstack = new ItemStack(item, b0); itemstack.setTag(this.readNbt()); + // CraftBukkit start + if (itemstack.getTag() != null) { + CraftItemStack.setItemMeta(itemstack, CraftItemStack.getItemMeta(itemstack)); + } + // CraftBukkit end return itemstack; } }