From 9fe187c0491a5198e0fd63bbd58e8c22bbbe3c54 Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Tue, 20 Mar 2018 13:46:26 -0300 Subject: [PATCH] Fix block and item rewriting --- .../packets/InventoryPackets.java | 29 +++++++++---------- .../packets/WorldPackets.java | 2 +- .../providers/blockentities/SkullHandler.java | 1 + 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/InventoryPackets.java index 69459eb74..7ebe36580 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/InventoryPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/InventoryPackets.java @@ -198,7 +198,7 @@ public class InventoryPackets { public static void toClient(Item item) { if (item == null) return; - int rawId = (item.getId() << 4 | item.getData() & 0xF); + int rawId = (item.getId() << 16 | item.getData() & 0xFFFF); int originalId = rawId; if (!MappingData.oldToNewItems.containsKey(rawId)) { if (MappingData.oldToNewItems.containsKey(item.getId() << 4)) { @@ -219,32 +219,29 @@ public class InventoryPackets { public static void toServer(Item item) { if (item == null) return; - int rawId = -1; if (item.getTag() != null) { CompoundTag tag = item.getTag(); // Check for valid tag if (tag.contains(NBT_TAG_NAME)) { if (tag.get(NBT_TAG_NAME) instanceof IntTag) { - rawId = (int) tag.get(NBT_TAG_NAME).getValue(); + int rawId = (int) tag.get(NBT_TAG_NAME).getValue(); // Remove the tag tag.remove(NBT_TAG_NAME); + item.setId((short) (rawId >> 16)); + item.setData((short) (rawId & 0xFFFF)); + return; } } } - if (rawId == -1){ - int itemID = item.getId(); - for (Map.Entry entry : MappingData.oldToNewItems.entrySet()){ - if (entry.getValue() == itemID){ - rawId = entry.getKey(); - break; - } + int itemID = item.getId(); + for (Map.Entry entry : MappingData.oldToNewItems.entrySet()){ + if (entry.getValue() == itemID){ + int rawId = entry.getKey(); + item.setId((short) (rawId >> 4)); + item.setData((short) (rawId & 0xF)); + return; } } - if (rawId != -1) { - item.setId((short) (rawId >> 4)); - item.setData((short) (rawId & 0xF)); - } else { - System.out.println("FAILED TO GET 1.12 ITEM FOR " + item.getId()); // TODO: Make this nicer etc, perhaps fix issues with mapping :T - } + System.out.println("FAILED TO GET 1.12 ITEM FOR " + item.getId()); // TODO: Make this nicer etc, perhaps fix issues with mapping :T } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/WorldPackets.java index 3a5b72af2..665eb74ea 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/packets/WorldPackets.java @@ -179,7 +179,7 @@ public class WorldPackets { if (storage.contains(position)) storage.get(position).setReplacement(newId); - chunk.getSections()[y >> 4].setFlatBlock(x & 0xF, y, z & 0xF, newId); + chunk.getSections()[y >> 4].setFlatBlock(x & 0xF, y & 0xF, z & 0xF, newId); } } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/providers/blockentities/SkullHandler.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/providers/blockentities/SkullHandler.java index 6b42359db..752d739e5 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/providers/blockentities/SkullHandler.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_12_2/providers/blockentities/SkullHandler.java @@ -27,6 +27,7 @@ public class SkullHandler implements BlockEntityProvider.BlockEntityHandler { id += (byte) tag.get("SkullType").getValue() * 20 + (byte) tag.get("Rot").getValue(); } else { System.out.println("Why does this block have the skull block entity? :(" + tag); + return -1; } return id;