From 249280312e6926572ff41e55dc74f292b8f0ea80 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sat, 4 Dec 2021 16:33:30 +0100 Subject: [PATCH] Fix advancement translatables Closes #415 --- .../api/rewriters/ItemRewriter.java | 63 ++++++++++++++++--- .../packets/BlockItemPackets1_13.java | 2 +- .../Protocol1_13_2To1_14.java | 9 ++- .../packets/BlockItemPackets1_14.java | 5 +- .../Protocol1_14_4To1_15.java | 9 ++- .../packets/BlockItemPackets1_15.java | 5 +- .../Protocol1_15_2To1_16.java | 5 +- .../packets/BlockItemPackets1_16.java | 5 +- .../Protocol1_16_1To1_16_2.java | 6 +- .../packets/BlockItemPackets1_16_2.java | 5 +- .../Protocol1_16_4To1_17.java | 5 +- .../packets/BlockItemPackets1_17.java | 5 +- .../packets/EntityPackets1_17.java | 5 +- .../Protocol1_17_1To1_18.java | 5 +- .../packets/BlockItemPackets1_18.java | 5 +- 15 files changed, 96 insertions(+), 43 deletions(-) diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/ItemRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/ItemRewriter.java index 8d30be3d..93b97e2f 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/ItemRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/ItemRewriter.java @@ -20,6 +20,10 @@ package com.viaversion.viabackwards.api.rewriters; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.data.MappedItem; import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntTag; @@ -30,11 +34,8 @@ import org.checkerframework.checker.nullness.qual.Nullable; public abstract class ItemRewriter extends ItemRewriterBase { - private final TranslatableRewriter translatableRewriter; - - protected ItemRewriter(T protocol, @Nullable TranslatableRewriter translatableRewriter) { + protected ItemRewriter(T protocol) { super(protocol, true); - this.translatableRewriter = translatableRewriter; } @Override @@ -42,11 +43,11 @@ public abstract class ItemRewriter extends ItemRewr if (item == null) return null; CompoundTag display = item.tag() != null ? item.tag().get("display") : null; - if (translatableRewriter != null && display != null) { + if (protocol.getTranslatableRewriter() != null && display != null) { // Handle name and lore components StringTag name = display.get("Name"); if (name != null) { - String newValue = translatableRewriter.processText(name.getValue()).toString(); + String newValue = protocol.getTranslatableRewriter().processText(name.getValue()).toString(); if (!newValue.equals(name.getValue())) { saveStringTag(display, name, "Name"); } @@ -61,7 +62,7 @@ public abstract class ItemRewriter extends ItemRewr if (!(loreEntryTag instanceof StringTag)) continue; StringTag loreEntry = (StringTag) loreEntryTag; - String newValue = translatableRewriter.processText(loreEntry.getValue()).toString(); + String newValue = protocol.getTranslatableRewriter().processText(loreEntry.getValue()).toString(); if (!changed && !newValue.equals(loreEntry.getValue())) { // Backup original lore before doing any modifications changed = true; @@ -111,4 +112,52 @@ public abstract class ItemRewriter extends ItemRewr } return item; } + + @Override + public void registerAdvancements(ClientboundPacketType packetType, Type type) { + protocol.registerClientbound(packetType, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.passthrough(Type.BOOLEAN); // Reset/clear + final int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.STRING); // Identifier + + // Parent + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.STRING); + } + + // Display data + if (wrapper.passthrough(Type.BOOLEAN)) { + final JsonElement title = wrapper.passthrough(Type.COMPONENT); + final JsonElement description = wrapper.passthrough(Type.COMPONENT); + final TranslatableRewriter translatableRewriter = protocol.getTranslatableRewriter(); + if (translatableRewriter != null) { + translatableRewriter.processText(title); + translatableRewriter.processText(description); + } + + handleItemToClient(wrapper.passthrough(type)); // Icon + wrapper.passthrough(Type.VAR_INT); // Frame type + int flags = wrapper.passthrough(Type.INT); // Flags + if ((flags & 1) != 0) { + wrapper.passthrough(Type.STRING); // Background texture + } + wrapper.passthrough(Type.FLOAT); // X + wrapper.passthrough(Type.FLOAT); // Y + } + + wrapper.passthrough(Type.STRING_ARRAY); // Criteria + + final int arrayLength = wrapper.passthrough(Type.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Type.STRING_ARRAY); // String array + } + } + }); + } + }); + } } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java index eb1f7626..d9eab1bf 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java @@ -68,7 +68,7 @@ public class BlockItemPackets1_13 extends com.viaversion.viabackwards.api.rewrit private final String extraNbtTag; public BlockItemPackets1_13(Protocol1_12_2To1_13 protocol) { - super(protocol, null); + super(protocol); extraNbtTag = "VB|" + protocol.getClass().getSimpleName() + "|2"; } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java index e91db5c2..fccbe20d 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java @@ -46,6 +46,7 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { - public BlockItemPackets1_15(Protocol1_14_4To1_15 protocol, TranslatableRewriter translatableRewriter) { - super(protocol, translatableRewriter); + public BlockItemPackets1_15(Protocol1_14_4To1_15 protocol) { + super(protocol); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/Protocol1_15_2To1_16.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/Protocol1_15_2To1_16.java index e5625155..74295da8 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/Protocol1_15_2To1_16.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/Protocol1_15_2To1_16.java @@ -53,8 +53,8 @@ public class Protocol1_15_2To1_16 extends BackwardsProtocol { - public BlockItemPackets1_16_2(Protocol1_16_1To1_16_2 protocol, TranslatableRewriter translatableRewriter) { - super(protocol, translatableRewriter); + public BlockItemPackets1_16_2(Protocol1_16_1To1_16_2 protocol) { + super(protocol); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java index d8696b20..f7120e03 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java @@ -56,8 +56,8 @@ public final class Protocol1_16_4To1_17 extends BackwardsProtocol { - public BlockItemPackets1_17(Protocol1_16_4To1_17 protocol, TranslatableRewriter translatableRewriter) { - super(protocol, translatableRewriter); + public BlockItemPackets1_17(Protocol1_16_4To1_17 protocol) { + super(protocol); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java index c442900a..194b698b 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java @@ -39,6 +39,8 @@ import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPacke public final class EntityPackets1_17 extends EntityRewriter { + private boolean warned; + public EntityPackets1_17(Protocol1_16_4To1_17 protocol) { super(protocol); } @@ -215,9 +217,10 @@ public final class EntityPackets1_17 extends EntityRewriter 256 || logicalHeight.asInt() > 256) { - if (warn) { + if (warn && !warned) { ViaBackwards.getPlatform().getLogger().severe("Custom worlds heights are NOT SUPPORTED for 1.16 players and older and may lead to errors!"); ViaBackwards.getPlatform().getLogger().severe("You have min/max set to " + minY.asInt() + "/" + height.asInt()); + warned = true; } height.setValue(Math.min(256, height.asInt())); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/Protocol1_17_1To1_18.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/Protocol1_17_1To1_18.java index 6910d62e..a885a4e1 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/Protocol1_17_1To1_18.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/Protocol1_17_1To1_18.java @@ -39,7 +39,7 @@ public final class Protocol1_17_1To1_18 extends BackwardsProtocol { - public BlockItemPackets1_18(final Protocol1_17_1To1_18 protocol, final TranslatableRewriter translatableRewriter) { - super(protocol, translatableRewriter); + public BlockItemPackets1_18(final Protocol1_17_1To1_18 protocol) { + super(protocol); } @Override