diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/data/StructuredDataContainer.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/data/StructuredDataContainer.java index 2b0fcf657..f6f7daff4 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/data/StructuredDataContainer.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/data/StructuredDataContainer.java @@ -47,10 +47,8 @@ public final class StructuredDataContainer { * @param data type * @return structured data */ - public Optional> get(final int id) { - final Optional> data = this.data.getOrDefault(id, Optional.empty()); - //noinspection unchecked - return data.map(value -> (StructuredData) value); + public Optional> get(final int id) { + return this.data.getOrDefault(id, Optional.empty()); } /** @@ -78,7 +76,7 @@ public final class StructuredDataContainer { } } - public void addEmpty(final Protocol protocol, final StructuredDataKey key) { + public void addEmpty(final Protocol protocol, final StructuredDataKey key) { final int id = serializerId(protocol, key); if (id != -1) { this.data.put(id, Optional.empty()); diff --git a/api/src/main/java/com/viaversion/viaversion/api/rewriter/ItemRewriter.java b/api/src/main/java/com/viaversion/viaversion/api/rewriter/ItemRewriter.java index 96af1d162..2dd5110a5 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/rewriter/ItemRewriter.java +++ b/api/src/main/java/com/viaversion/viaversion/api/rewriter/ItemRewriter.java @@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.rewriter; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.Protocol; +import com.viaversion.viaversion.api.type.Type; import org.checkerframework.checker.nullness.qual.Nullable; public interface ItemRewriter extends Rewriter { @@ -43,4 +44,12 @@ public interface ItemRewriter extends Rewriter { * @return rewritten item */ @Nullable Item handleItemToServer(@Nullable Item item); + + Type itemType(); + + Type itemArrayType(); + + Type mappedItemType(); + + Type mappedItemArrayType(); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_3to1_20_2/rewriter/RecipeRewriter1_20_3.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_3to1_20_2/rewriter/RecipeRewriter1_20_3.java index 8ef9e6098..0d4754b92 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_3to1_20_2/rewriter/RecipeRewriter1_20_3.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_3to1_20_2/rewriter/RecipeRewriter1_20_3.java @@ -46,11 +46,21 @@ public class RecipeRewriter1_20_3 extends Recip @Override protected Type itemType() { - return Type.ITEM1_20_2; + return protocol.getItemRewriter().itemType(); } @Override protected Type itemArrayType() { - return Type.ITEM1_20_2_ARRAY; + return protocol.getItemRewriter().itemArrayType(); + } + + @Override + protected Type mappedItemType() { + return protocol.getItemRewriter().mappedItemType(); + } + + @Override + protected Type mappedItemArrayType() { + return protocol.getItemRewriter().mappedItemArrayType(); } } \ No newline at end of file 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 021946df1..fef6e99fc 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 @@ -156,17 +156,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter recipeRewriter = new RecipeRewriter1_20_3(protocol) { - @Override - protected Type mappedItemType() { - return Types1_20_5.ITEM; - } - - @Override - protected Type mappedItemArrayType() { - return Types1_20_5.ITEM_ARRAY; - } - }; + final RecipeRewriter1_20_3 recipeRewriter = new RecipeRewriter1_20_3<>(protocol); protocol.registerClientbound(ClientboundPackets1_20_3.DECLARE_RECIPES, wrapper -> { final int size = wrapper.passthrough(Type.VAR_INT); for (int i = 0; i < size; i++) { @@ -197,11 +187,9 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter> customData = data.get(protocol, StructuredDataKey.CUSTOM_DATA); - // Start out with custom data and add the rest on top - final CompoundTag tag = customData.map(StructuredData::value).orElse(new CompoundTag()); + final StructuredDataContainer data = item.structuredData(); + final CompoundTag tag = data.get(protocol, StructuredDataKey.CUSTOM_DATA).map(StructuredData::value).orElse(new CompoundTag()); // TODO @@ -277,6 +265,44 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter getItemType() { + @Override + public Type itemType() { return itemType; } - public Type getItemArrayType() { + @Override + public Type itemArrayType() { return itemArrayType; } + + @Override + public Type mappedItemType() { + return mappedItemType; + } + + @Override + public Type mappedItemArrayType() { + return mappedItemArrayType; + } } diff --git a/template/src/main/java/com/viaversion/viaversion/template/protocols/Protocol1_99To_98.java b/template/src/main/java/com/viaversion/viaversion/template/protocols/Protocol1_99To_98.java index 5e0f720e6..e9a8e23df 100644 --- a/template/src/main/java/com/viaversion/viaversion/template/protocols/Protocol1_99To_98.java +++ b/template/src/main/java/com/viaversion/viaversion/template/protocols/Protocol1_99To_98.java @@ -38,9 +38,7 @@ import com.viaversion.viaversion.template.protocols.rewriter.EntityPacketRewrite // Protocol1_99To_98, EntityPacketRewriter1_99, BlockItemPacketRewriter1_99 // ClientboundPacket1_20_5 // ServerboundPacket1_20_5 -// ClientboundConfigurationPackets1_20_3 -// ServerboundConfigurationPackets1_20_2 -// Entity1_19_4Types (MAPPED type) +// EntityTypes1_20_5 (MAPPED type) // 1.99, 1.98 public final class Protocol1_99To_98 extends AbstractProtocol { 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 2f9b6832f..ea0082dd3 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); // Add two more types if they changed + super(protocol, /*TypesOLD.ITEM, TypesOLD.ITEM_ARRAY, */Types1_20_5.ITEM, Types1_20_5.ITEM_ARRAY); } @Override