From ba62fe8316b913b4f9c77b5d19e6a9fe05c20ab1 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Tue, 24 Nov 2020 18:08:32 +0100 Subject: [PATCH] some mappings and entity meta fixes for pre flattening versions --- .../minosoft/data/entities/EntityMetaData.java | 6 +++++- .../data/mappings/versions/VersionMapping.java | 11 +++++++++-- .../clientbound/play/PacketEntityEquipment.java | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java index 4200910b0..600f1d027 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java +++ b/src/main/java/de/bixilon/minosoft/data/entities/EntityMetaData.java @@ -238,7 +238,11 @@ public class EntityMetaData { } public int getInt(EntityMetaDataFields field) { - return get(field); + Object value = get(field); + if (value instanceof Byte b) { + return b; + } + return (int) value; } public Short getShort(EntityMetaDataFields field) { diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java index 95470b61a..71710b5ef 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java +++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java @@ -97,6 +97,13 @@ public class VersionMapping { } public Item getItemById(int versionId) { + if (!version.isFlattened()) { + return getItemByLegacy(versionId >>> 16, versionId & 0xFFFF); + } + return getItemByIdIgnoreFlattened(versionId); + } + + private Item getItemByIdIgnoreFlattened(int versionId) { if (parentMapping != null) { Item item = parentMapping.getItemById(versionId); if (item != null) { @@ -268,10 +275,10 @@ public class VersionMapping { if (metaData > 0 && metaData < Short.MAX_VALUE) { versionItemId |= metaData; } - Item item = getItemById(versionItemId); + Item item = getItemByIdIgnoreFlattened(versionItemId); if (item == null) { // ignore meta data ? - return getItemById(itemId << 16); + return getItemByIdIgnoreFlattened(itemId << 16); } return item; } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java index 835678c8c..13d6b9f23 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java @@ -70,7 +70,7 @@ public class PacketEntityEquipment implements ClientboundPacket { Log.protocol(String.format("[IN] Entity equipment changed (entityId=%d, slot=%s): AIR", entityId, set.getKey())); return; } - Log.protocol(String.format("[IN] Entity equipment changed (entityId=%d, slot=%s): %dx %s", entityId, set.getKey(), set.getValue().getItemCount(), set.getValue().getDisplayName())); + Log.protocol(String.format("[IN] Entity equipment changed (entityId=%d, slot=%s, item=%s): %dx %s", entityId, set.getKey(), set.getValue().getItem(), set.getValue().getItemCount(), set.getValue().getDisplayName())); } else { Log.protocol(String.format("[IN] Entity equipment changed (entityId=%d, slotCount=%d)", entityId, slots.size())); }