From 01bb8deddaa0fb39adf5bc8f6e84e09d7cefb30d Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Thu, 29 Feb 2024 12:08:29 +0100 Subject: [PATCH] More renames --- .../api/minecraft/item/DataItem.java | 15 ++++-- .../viaversion/api/minecraft/item/Item.java | 6 ++- .../{DynamicItem.java => StructuredItem.java} | 26 +++++----- .../api/type/types/item/ItemType1_20_5.java | 6 +-- .../api/type/types/version/Types1_20_5.java | 3 +- .../packets/InventoryPackets.java | 8 +-- .../BlockItemPacketRewriter1_20_5.java | 52 +++++++++++-------- .../viaversion/rewriter/ItemRewriter.java | 8 --- .../rewriter/BlockItemPacketRewriter1_99.java | 2 +- 9 files changed, 70 insertions(+), 56 deletions(-) rename api/src/main/java/com/viaversion/viaversion/api/minecraft/item/{DynamicItem.java => StructuredItem.java} (81%) diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java index 29368f82c..8daa7374e 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java @@ -26,7 +26,6 @@ import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.google.gson.annotations.SerializedName; import com.viaversion.viaversion.api.minecraft.data.StructuredData; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import java.util.Objects; import java.util.Optional; import org.checkerframework.checker.nullness.qual.Nullable; @@ -96,8 +95,18 @@ public class DataItem implements Item { } @Override - public Int2ObjectMap>> itemData() { - return new Int2ObjectOpenHashMap<>(); + public Int2ObjectMap>> structuredData() { + throw new UnsupportedOperationException(); + } + + @Override + public void addData(final StructuredData data) { + throw new UnsupportedOperationException(); + } + + @Override + public void removeDefaultData(final int id) { + throw new UnsupportedOperationException(); } @Override diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/Item.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/Item.java index f71c40cb6..7022e7573 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/Item.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/Item.java @@ -91,7 +91,11 @@ public interface Item { */ void setTag(@Nullable CompoundTag tag); - Int2ObjectMap>> itemData(); + Int2ObjectMap>> structuredData(); + + void addData(StructuredData data); + + void removeDefaultData(int id); /** * Returns a copy of the item. diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DynamicItem.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/StructuredItem.java similarity index 81% rename from api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DynamicItem.java rename to api/src/main/java/com/viaversion/viaversion/api/minecraft/item/StructuredItem.java index 9036c0adc..5b5c23a39 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DynamicItem.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/StructuredItem.java @@ -29,16 +29,16 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import java.util.Optional; import org.checkerframework.checker.nullness.qual.Nullable; -public class DynamicItem implements Item { +public class StructuredItem implements Item { private final Int2ObjectMap>> data; private int identifier; private byte amount; - public DynamicItem() { + public StructuredItem() { this(0, (byte) 0, new Int2ObjectOpenHashMap<>()); } - public DynamicItem(int identifier, byte amount, Int2ObjectMap>> data) { + public StructuredItem(final int identifier, final byte amount, final Int2ObjectMap>> data) { this.identifier = identifier; this.amount = amount; this.data = data; @@ -50,7 +50,7 @@ public class DynamicItem implements Item { } @Override - public void setIdentifier(int identifier) { + public void setIdentifier(final int identifier) { this.identifier = identifier; } @@ -60,7 +60,7 @@ public class DynamicItem implements Item { } @Override - public void setAmount(int amount) { + public void setAmount(final int amount) { if (amount > Byte.MAX_VALUE || amount < Byte.MIN_VALUE) { throw new IllegalArgumentException("Invalid item amount: " + amount); } @@ -73,34 +73,36 @@ public class DynamicItem implements Item { } @Override - public void setTag(@Nullable CompoundTag tag) { + public void setTag(@Nullable final CompoundTag tag) { throw new UnsupportedOperationException(); } @Override - public Int2ObjectMap>> itemData() { + public Int2ObjectMap>> structuredData() { return data; } - public void addData(StructuredData data) { + @Override + public void addData(final StructuredData data) { this.data.put(data.id(), Optional.of(data)); } - public void removeDefault(int id) { + @Override + public void removeDefaultData(final int id) { // Empty optional to override the Minecraft default this.data.put(id, Optional.empty()); } @Override - public Item copy() { - return new DynamicItem(identifier, amount, data); + public StructuredItem copy() { + return new StructuredItem(identifier, amount, new Int2ObjectOpenHashMap<>(data)); } @Override public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - final DynamicItem that = (DynamicItem) o; + final StructuredItem that = (StructuredItem) o; if (identifier != that.identifier) return false; if (amount != that.amount) return false; return data.equals(that.data); diff --git a/api/src/main/java/com/viaversion/viaversion/api/type/types/item/ItemType1_20_5.java b/api/src/main/java/com/viaversion/viaversion/api/type/types/item/ItemType1_20_5.java index b79e25829..a82e3feae 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/type/types/item/ItemType1_20_5.java +++ b/api/src/main/java/com/viaversion/viaversion/api/type/types/item/ItemType1_20_5.java @@ -22,9 +22,9 @@ */ package com.viaversion.viaversion.api.type.types.item; -import com.viaversion.viaversion.api.minecraft.item.DynamicItem; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.data.StructuredData; +import com.viaversion.viaversion.api.minecraft.item.StructuredItem; import com.viaversion.viaversion.api.type.Type; import io.netty.buffer.ByteBuf; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; @@ -50,7 +50,7 @@ public class ItemType1_20_5 extends Type { final int id = Type.VAR_INT.readPrimitive(buffer); final Int2ObjectMap>> data = readData(buffer); - return new DynamicItem(id, amount, data); + return new StructuredItem(id, amount, data); } private Int2ObjectMap>> readData(final ByteBuf buffer) throws Exception { @@ -83,7 +83,7 @@ public class ItemType1_20_5 extends Type { buffer.writeByte(object.amount()); Type.VAR_INT.writePrimitive(buffer, object.identifier()); - final Int2ObjectMap>> data = object.itemData(); + final Int2ObjectMap>> data = object.structuredData(); int valuesSize = 0; int markersSize = 0; for (final Int2ObjectMap.Entry>> entry : data.int2ObjectEntrySet()) { diff --git a/api/src/main/java/com/viaversion/viaversion/api/type/types/version/Types1_20_5.java b/api/src/main/java/com/viaversion/viaversion/api/type/types/version/Types1_20_5.java index 1d27a6343..86f0a07f1 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/type/types/version/Types1_20_5.java +++ b/api/src/main/java/com/viaversion/viaversion/api/type/types/version/Types1_20_5.java @@ -36,12 +36,11 @@ import java.util.List; public final class Types1_20_5 { - // Only safe to use after protocol loading + // Most of these are only safe to use after protocol loading public static final ParticleType PARTICLE = new ParticleType(); public static final StructuredDataType ITEM_DATA = new StructuredDataType(); public static final Type ITEM = new ItemType1_20_5(ITEM_DATA); public static final Type ITEM_ARRAY = new ArrayType<>(ITEM); - public static final MetaTypes1_20_5 META_TYPES = new MetaTypes1_20_5(PARTICLE); public static final Type METADATA = new MetadataType(META_TYPES); public static final Type> METADATA_LIST = new MetaListType(METADATA); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java index d9a57b60b..21a492e28 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java @@ -62,7 +62,7 @@ public class InventoryPackets extends ItemRewriter handleItemToClient(wrapper.get(Type.ITEM1_13, 0))); } }); protocol.registerClientbound(ClientboundPackets1_12_1.WINDOW_ITEMS, new PacketHandlers() { @@ -196,7 +196,7 @@ public class InventoryPackets extends ItemRewriter handleItemToClient(wrapper.get(Type.ITEM1_13, 0))); } }); @@ -211,7 +211,7 @@ public class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.get(Type.ITEM1_8, 0))); } }); @@ -253,7 +253,7 @@ public class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.get(Type.ITEM1_8, 0))); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java index f78159dc7..e1a8e5445 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java @@ -22,10 +22,10 @@ import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.minecraft.Particle; -import com.viaversion.viaversion.api.minecraft.item.DataItem; -import com.viaversion.viaversion.api.minecraft.item.DynamicItem; -import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.data.StructuredData; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.item.StructuredItem; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; import com.viaversion.viaversion.api.type.types.version.Types1_20_3; @@ -175,27 +175,45 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter()); + @Override + public @Nullable Item handleItemToServer(@Nullable final Item item) { + if (item == null) return null; + + super.handleItemToServer(item); + return toOldItem(item); + } + + public static Item toOldItem(final Item item) { + final CompoundTag tag = new CompoundTag(); + // TODO + return new DataItem(item.identifier(), (byte) item.amount(), (short) 0, tag); + } + + public static Item toStructuredItem(final Item old) { + final CompoundTag tag = old.tag(); + final StructuredItem item = new StructuredItem(old.identifier(), (byte) old.amount(), new Int2ObjectOpenHashMap<>()); if (tag == null) { - return dynamicItem; + return item; } // Rewrite nbt to new data structures final NumberTag damage = tag.getNumberTag("Damage"); if (damage != null) { - addData(dynamicItem, "damage", Type.VAR_INT, damage.asInt()); + addData(item, "damage", Type.VAR_INT, damage.asInt()); } final NumberTag repairCost = tag.getNumberTag("RepairCost"); if (repairCost != null) { - addData(dynamicItem, "repair_cost", Type.VAR_INT, repairCost.asInt()); + addData(item, "repair_cost", Type.VAR_INT, repairCost.asInt()); } - return dynamicItem; + // TODO + return item; } - private void addData(final DynamicItem item, final String serializer, final Type type, final T value) { + private static void addData(final StructuredItem item, final String serializer, final Type type, final T value) { final int id = serializerId(serializer); if (id == -1) { Via.getPlatform().getLogger().severe("Could not find item data serializer for type " + type); @@ -205,17 +223,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter(type, value, id)); } - private int serializerId(final String type) { - return protocol.getMappingData().getDataComponentSerializerMappings().mappedId(type); - } - - @Override - public @Nullable Item handleItemToServer(@Nullable final Item item) { - if (item == null) return null; - - super.handleItemToServer(item); - - final CompoundTag tag = new CompoundTag(); - return new DataItem(item.identifier(), (byte) item.amount(), (short) 0, tag); + private static int serializerId(final String type) { + return Protocol1_20_5To1_20_3.MAPPINGS.getDataComponentSerializerMappings().mappedId(type); } } \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java index 47f07ef65..8d204510c 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java @@ -528,14 +528,6 @@ public class ItemRewriter type) { - return wrapper -> handleItemToClient(wrapper.get(type, 0)); - } - - public PacketHandler itemToServerHandler(Type type) { - return wrapper -> handleItemToServer(wrapper.get(type, 0)); - } - private void handleClientboundItem(final PacketWrapper wrapper) throws Exception { final Item item = handleItemToClient(wrapper.read(itemType)); wrapper.write(mappedItemType, item); diff --git a/template/src/main/java/com/viaversion/viaversion/template/protocols/rewriter/BlockItemPacketRewriter1_99.java b/template/src/main/java/com/viaversion/viaversion/template/protocols/rewriter/BlockItemPacketRewriter1_99.java index cf0684320..2f9b6832f 100644 --- a/template/src/main/java/com/viaversion/viaversion/template/protocols/rewriter/BlockItemPacketRewriter1_99.java +++ b/template/src/main/java/com/viaversion/viaversion/template/protocols/rewriter/BlockItemPacketRewriter1_99.java @@ -35,7 +35,7 @@ import com.viaversion.viaversion.template.protocols.Protocol1_99To_98; public final class BlockItemPacketRewriter1_99 extends ItemRewriter { public BlockItemPacketRewriter1_99(final Protocol1_99To_98 protocol) { - super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); + super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); // Add two more types if they changed } @Override