From 13688f446d26dc3db810dcda520ae46c28ccd396 Mon Sep 17 00:00:00 2001 From: RaphiMC <50594595+RaphiMC@users.noreply.github.com> Date: Wed, 18 Jan 2023 20:07:27 +0100 Subject: [PATCH] Added 1.6 and 1.7 non-existent item remapping --- .../api/remapper/LegacyItemRewriter.java | 46 ++++++++++--- .../rewriter/ItemRewriter.java | 68 +++++++++++-------- .../rewriter/ItemRewriter.java | 37 ++++++---- 3 files changed, 102 insertions(+), 49 deletions(-) diff --git a/src/main/java/net/raphimc/vialegacy/api/remapper/LegacyItemRewriter.java b/src/main/java/net/raphimc/vialegacy/api/remapper/LegacyItemRewriter.java index 28e608e..a7d31ce 100644 --- a/src/main/java/net/raphimc/vialegacy/api/remapper/LegacyItemRewriter.java +++ b/src/main/java/net/raphimc/vialegacy/api/remapper/LegacyItemRewriter.java @@ -25,8 +25,6 @@ import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; import com.viaversion.viaversion.api.rewriter.ItemRewriter; import com.viaversion.viaversion.api.rewriter.RewriterBase; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.libs.fastutil.ints.IntArrayList; -import com.viaversion.viaversion.libs.fastutil.ints.IntList; import com.viaversion.viaversion.libs.fastutil.objects.ObjectArrayList; import com.viaversion.viaversion.libs.fastutil.objects.ObjectList; import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; @@ -36,7 +34,7 @@ import java.util.List; public abstract class LegacyItemRewriter

extends RewriterBase

implements ItemRewriter

{ private final ObjectList rewriteEntries = new ObjectArrayList<>(); - private final IntList nonExistentItems = new IntArrayList(); + private final ObjectList nonExistentItems = new ObjectArrayList<>(); protected final String tagName; protected final String protocolName; @@ -58,15 +56,25 @@ public abstract class LegacyItemRewriter

extends RewriterBas this.rewriteEntries.add(new RewriteEntry(oldItemId, (short) oldItemMeta, newItemId, (short) newItemMeta, newItemName)); } + protected void addNonExistentItem(final int itemId, final int itemMeta) { + this.nonExistentItems.add(new NonExistentEntry(itemId, (short) itemMeta)); + } + + protected void addNonExistentItem(final int itemId, final int startItemMeta, final int endItemMeta) { + for (int i = startItemMeta; i <= endItemMeta; i++) { + this.nonExistentItems.add(new NonExistentEntry(itemId, (short) i)); + } + } + protected void addNonExistentItems(final int... itemIds) { for (int itemId : itemIds) { - this.nonExistentItems.add(itemId); + this.nonExistentItems.add(new NonExistentEntry(itemId, (short) -1)); } } protected void addNonExistentItemRange(final int startItemId, final int endItemId) { for (int i = startItemId; i <= endItemId; i++) { - this.nonExistentItems.add(i); + this.nonExistentItems.add(new NonExistentEntry(i, (short) -1)); } } @@ -103,10 +111,12 @@ public abstract class LegacyItemRewriter

extends RewriterBas public Item handleItemToServer(final Item item) { if (item == null) return null; - if (this.nonExistentItems.contains(item.identifier())) { - item.setIdentifier(1); - item.setData((short) 0); - return item; + for (NonExistentEntry nonExistentEntry : this.nonExistentItems) { + if (nonExistentEntry.rewrites(item)) { + item.setIdentifier(1); + item.setData((short) 0); + return item; + } } this.setRemappedTagWrite(item); @@ -193,7 +203,7 @@ public abstract class LegacyItemRewriter

extends RewriterBas } - public static class RewriteEntry { + private static class RewriteEntry { private final int oldItemID; private final short oldItemMeta; @@ -223,4 +233,20 @@ public abstract class LegacyItemRewriter

extends RewriterBas } + private static class NonExistentEntry { + + private final int itemId; + private final short itemMeta; + + public NonExistentEntry(final int itemId, final short itemMeta) { + this.itemId = itemId; + this.itemMeta = itemMeta; + } + + public boolean rewrites(final Item item) { + return item.identifier() == this.itemId && (this.itemMeta == -1 || this.itemMeta == item.data()); + } + + } + } diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ItemRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ItemRewriter.java index 27c71fc..349cd3a 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ItemRewriter.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ItemRewriter.java @@ -26,33 +26,47 @@ public class ItemRewriter extends LegacyItemRewriter { public ItemRewriter(final Protocol1_7_2_5to1_6_4 protocol) { super(protocol, "1.6.4"); - addRemappedItem(26, 355, "Bed Block"); - addRemappedItem(34, 33, "Piston Head"); - addRemappedItem(36, 33, "Piston Moving"); - addRemappedItem(55, 331, "Redstone Wire"); - addRemappedItem(59, 295, "Wheat Crops"); - addRemappedItem(63, 323, "Standing Sign"); - addRemappedItem(64, 324, "Oak Door Block"); - addRemappedItem(68, 323, "Wall Sign"); - addRemappedItem(71, 330, "Iron Door Block"); - addRemappedItem(74, 73, "Lit Redstone Ore"); - addRemappedItem(75, 76, "Unlit Redstone Torch"); - addRemappedItem(83, 338, "Sugar Cane Block"); - addRemappedItem(92, 354, "Cake Block"); - addRemappedItem(93, 356, "Unlit Redstone Repeater"); - addRemappedItem(94, 356, "Lit Redstone Repeater"); - addRemappedItem(95, 146, "Locked Chest"); - addRemappedItem(104, 361, "Pumpkin Stem"); - addRemappedItem(105, 362, "Melon Stem"); - addRemappedItem(115, 372, "Nether Wart Block"); - addRemappedItem(117, 379, "Brewing Stand Block"); - addRemappedItem(118, 380, "Cauldron Block"); - addRemappedItem(124, 123, "Lit Redstone Lamp"); - addRemappedItem(132, 287, "Tripwire"); - addRemappedItem(140, 390, "Flower Pot"); - addRemappedItem(144, 397, "Undefined Mob Head"); - addRemappedItem(149, 404, "Unlit Redstone Comparator"); - addRemappedItem(150, 404, "Lit Redstone Comparator"); + + this.addRemappedItem(26, 355, "Bed Block"); + this.addRemappedItem(34, 33, "Piston Head"); + this.addRemappedItem(36, 33, "Piston Moving"); + this.addRemappedItem(55, 331, "Redstone Wire"); + this.addRemappedItem(59, 295, "Wheat Crops"); + this.addRemappedItem(63, 323, "Standing Sign"); + this.addRemappedItem(64, 324, "Oak Door Block"); + this.addRemappedItem(68, 323, "Wall Sign"); + this.addRemappedItem(71, 330, "Iron Door Block"); + this.addRemappedItem(74, 73, "Lit Redstone Ore"); + this.addRemappedItem(75, 76, "Unlit Redstone Torch"); + this.addRemappedItem(83, 338, "Sugar Cane Block"); + this.addRemappedItem(92, 354, "Cake Block"); + this.addRemappedItem(93, 356, "Unlit Redstone Repeater"); + this.addRemappedItem(94, 356, "Lit Redstone Repeater"); + this.addRemappedItem(95, 146, "Locked Chest"); + this.addRemappedItem(104, 361, "Pumpkin Stem"); + this.addRemappedItem(105, 362, "Melon Stem"); + this.addRemappedItem(115, 372, "Nether Wart Block"); + this.addRemappedItem(117, 379, "Brewing Stand Block"); + this.addRemappedItem(118, 380, "Cauldron Block"); + this.addRemappedItem(124, 123, "Lit Redstone Lamp"); + this.addRemappedItem(132, 287, "Tripwire"); + this.addRemappedItem(140, 390, "Flower Pot"); + this.addRemappedItem(144, 397, "Undefined Mob Head"); + this.addRemappedItem(149, 404, "Unlit Redstone Comparator"); + this.addRemappedItem(150, 404, "Lit Redstone Comparator"); + + this.addNonExistentItems(3, 2); + this.addNonExistentItem(5, 4, 5); + this.addNonExistentItem(6, 4, 5); + this.addNonExistentItems(12, 1); + this.addNonExistentItem(38, 1, 8); + this.addNonExistentItems(95); + this.addNonExistentItem(97, 3, 5); + this.addNonExistentItem(126, 4, 5); + this.addNonExistentItemRange(160, 164); + this.addNonExistentItemRange(174, 175); + this.addNonExistentItem(349, 1, 3); + this.addNonExistentItemRange(350, 1); } @Override diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ItemRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ItemRewriter.java index 6f0ec7b..4038ee0 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ItemRewriter.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ItemRewriter.java @@ -35,18 +35,31 @@ public class ItemRewriter extends LegacyItemRewriter { public ItemRewriter(final Protocol1_8to1_7_6_10 protocol) { super(protocol, "1.7"); - addRemappedItem(8, 326, "Water Block"); - addRemappedItem(9, 326, "Stationary Water Block"); - addRemappedItem(10, 327, "Lava Block"); - addRemappedItem(11, 327, "Stationary Lava Block"); - addRemappedItem(51, 385, "Fire"); - addRemappedItem(90, 399, "Nether portal"); - addRemappedItem(119, 381, "End portal"); - addRemappedItem(127, 351, 3, "Cocoa Block"); - addRemappedItem(141, 391, "Carrot Crops"); - addRemappedItem(142, 392, "Potato Crops"); - addRemappedItem(43, 44, "Double Stone Slab"); - addRemappedItem(125, 126, "Double Wood Slab"); + + this.addRemappedItem(8, 326, "Water Block"); + this.addRemappedItem(9, 326, "Stationary Water Block"); + this.addRemappedItem(10, 327, "Lava Block"); + this.addRemappedItem(11, 327, "Stationary Lava Block"); + this.addRemappedItem(51, 385, "Fire"); + this.addRemappedItem(90, 399, "Nether portal"); + this.addRemappedItem(119, 381, "End portal"); + this.addRemappedItem(127, 351, 3, "Cocoa Block"); + this.addRemappedItem(141, 391, "Carrot Crops"); + this.addRemappedItem(142, 392, "Potato Crops"); + this.addRemappedItem(43, 44, "Double Stone Slab"); + this.addRemappedItem(125, 126, "Double Wood Slab"); + + this.addNonExistentItem(1, 1, 6); + this.addNonExistentItem(3, 1); + this.addNonExistentItem(19, 1); + this.addNonExistentItemRange(165, 169); + this.addNonExistentItemRange(179, 192); + this.addNonExistentItem(383, 67); + this.addNonExistentItem(383, 68); + this.addNonExistentItem(383, 101); + this.addNonExistentItemRange(409, 416); + this.addNonExistentItemRange(423, 425); + this.addNonExistentItemRange(427, 431); } @Override