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