Added 1.6 and 1.7 non-existent item remapping

This commit is contained in:
RaphiMC 2023-01-18 20:07:27 +01:00
parent 15aa16e513
commit 13688f446d
3 changed files with 102 additions and 49 deletions

View File

@ -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<P extends Protocol> extends RewriterBase<P> implements ItemRewriter<P> {
private final ObjectList<RewriteEntry> rewriteEntries = new ObjectArrayList<>();
private final IntList nonExistentItems = new IntArrayList();
private final ObjectList<NonExistentEntry> nonExistentItems = new ObjectArrayList<>();
protected final String tagName;
protected final String protocolName;
@ -58,15 +56,25 @@ public abstract class LegacyItemRewriter<P extends Protocol> 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<P extends Protocol> 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<P extends Protocol> 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<P extends Protocol> 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());
}
}
}

View File

@ -26,33 +26,47 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_7_2_5to1_6_4> {
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

View File

@ -35,18 +35,31 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_8to1_7_6_10> {
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