diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java index 80ce89112..d4ff6564c 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java @@ -64,7 +64,8 @@ public class SpawnEggRewriter { public static int getSpawnEggId(String entityIdentifier) { // Fallback to bat if (!spawnEggs.containsKey(entityIdentifier)) - return 25100288; + //return 25100288; + return -1; return (383 << 16 | (spawnEggs.get(entityIdentifier) & 0xFFFF)); } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java index c6d4d4429..1025771f7 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java @@ -265,6 +265,8 @@ public class InventoryPackets { // Save original id int originalId = (item.getId() << 16 | item.getData() & 0xFFFF); + int rawId = (item.getId() << 4 | item.getData() & 0xF); + // NBT Additions if (isDamageable(item.getId())) { if (tag == null) item.setTag(tag = new CompoundTag("tag")); @@ -343,24 +345,31 @@ public class InventoryPackets { tag.remove("StoredEnchantments"); tag.put(newStoredEnch); } - } - - int rawId = (item.getId() << 4 | item.getData() & 0xF); - - // Handle SpawnEggs - if (item.getId() == 383) { - if (tag != null && tag.get("EntityTag") instanceof CompoundTag) { - CompoundTag entityTag = tag.get("EntityTag"); - if (entityTag.get("id") instanceof StringTag) { - StringTag identifier = entityTag.get("id"); - rawId = SpawnEggRewriter.getSpawnEggId(identifier.getValue()); + // Handle SpawnEggs + if (item.getId() == 383) { + if (tag.get("EntityTag") instanceof CompoundTag) { + CompoundTag entityTag = tag.get("EntityTag"); + if (entityTag.get("id") instanceof StringTag) { + StringTag identifier = entityTag.get("id"); + rawId = SpawnEggRewriter.getSpawnEggId(identifier.getValue()); + if (rawId == -1) { + rawId = 25100288; // Bat fallback + } else { + entityTag.remove("id"); + if (entityTag.isEmpty()) + tag.remove("EntityTag"); + } + } else { + // Fallback to bat + rawId = 25100288; + } } else { // Fallback to bat rawId = 25100288; } - } else { - // Fallback to bat - rawId = 25100288; + } + if (tag.isEmpty()) { + item.setTag(tag = null); } }