From fb434a79bd2b4db4fc0aefb8e2ff80686319d6ff Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Fri, 19 Apr 2024 17:05:07 +0200 Subject: [PATCH 1/5] Use correct deserialization method in SerializerVersion#toComponent (#3795) MCStructs has multiple methods for parsing jsons depending on the version, we should use them correctly in our wrapper to support all possible cases of components. --- .../com/viaversion/viaversion/util/ComponentUtil.java | 4 ++-- .../com/viaversion/viaversion/util/SerializerVersion.java | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java b/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java index e523bf231..370d83d7f 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java +++ b/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java @@ -93,11 +93,11 @@ public final class ComponentUtil { } public static @Nullable JsonElement convertJson(@Nullable final JsonElement element, final SerializerVersion from, final SerializerVersion to) { - return element != null ? convert(from, to, from.jsonSerializer.deserialize(element)) : null; + return element != null ? convert(from, to, from.toComponent(element)) : null; } public static @Nullable JsonElement convertJson(@Nullable final String json, final SerializerVersion from, final SerializerVersion to) { - return json != null ? convert(from, to, from.jsonSerializer.deserializeReader(json)) : null; + return json != null ? convert(from, to, from.toComponent(json)) : null; } private static JsonElement convert(final SerializerVersion from, final SerializerVersion to, final ATextComponent component) { diff --git a/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java b/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java index ae76835a5..aa4e4cb98 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java +++ b/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java @@ -77,7 +77,13 @@ public enum SerializerVersion { } public ATextComponent toComponent(final String json) { - return jsonSerializer.deserializeReader(json); + if (ordinal() >= SerializerVersion.V1_20_3.ordinal()) { + return jsonSerializer.deserializeParser(json); + } else if (ordinal() >= SerializerVersion.V1_9.ordinal()) { + return jsonSerializer.deserializeReader(json); + } else { + return jsonSerializer.deserialize(json); + } } public ATextComponent toComponent(final Tag tag) { From 33cc21d6e66596bfeb52987cb8f77181e7dc6e1c Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Sat, 20 Apr 2024 15:17:26 +0200 Subject: [PATCH 2/5] Add setting for ocelot->cat translation in 1.13.2->1.14 (#3796) --- .../api/configuration/ViaVersionConfig.java | 7 +++++++ .../viaversion/configuration/AbstractViaConfig.java | 7 +++++++ .../metadata/MetadataRewriter1_14To1_13_2.java | 13 ++++++++++++- .../src/main/resources/assets/viaversion/config.yml | 3 +++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java index c80737fe3..72227841f 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java +++ b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java @@ -452,4 +452,11 @@ public interface ViaVersionConfig extends Config { * @return true if enabled */ boolean isArmorToggleFix(); + + /** + * Ocelots will always be translated to cats for 1.14+ clients on 1.13 servers. + * + * @return true if enabled + */ + boolean translateOcelotToCat(); } diff --git a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java index 4072f58d6..574f24916 100644 --- a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java +++ b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java @@ -89,6 +89,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf private JsonElement resourcePack1_17PromptMessage; private WorldIdentifiers map1_16WorldNames; private boolean cache1_17Light; + private boolean translateOcelotToCat; protected AbstractViaConfig(final File configFile) { super(configFile); @@ -157,6 +158,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf worlds.getOrDefault("nether", WorldIdentifiers.NETHER_DEFAULT), worlds.getOrDefault("end", WorldIdentifiers.END_DEFAULT)); cache1_17Light = getBoolean("cache-1_17-light", true); + translateOcelotToCat = getBoolean("translate-ocelot-to-cat", false); } private BlockedProtocolVersions loadBlockedProtocolVersions() { @@ -528,4 +530,9 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf public boolean isArmorToggleFix() { return false; } + + @Override + public boolean translateOcelotToCat() { + return translateOcelotToCat; + } } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java index 05acc1187..324124b42 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java @@ -39,7 +39,12 @@ public class MetadataRewriter1_14To1_13_2 extends EntityRewriter { EntityType type = event.entityType(); if (type.is(EntityTypes1_14.WITCH) || type.is(EntityTypes1_14.RAVAGER) || type.isOrHasParent(EntityTypes1_14.ABSTRACT_ILLAGER_BASE)) { diff --git a/common/src/main/resources/assets/viaversion/config.yml b/common/src/main/resources/assets/viaversion/config.yml index 9a1088885..05a5ac1b8 100644 --- a/common/src/main/resources/assets/viaversion/config.yml +++ b/common/src/main/resources/assets/viaversion/config.yml @@ -175,6 +175,9 @@ map-1_16-world-names: nether: "minecraft:the_nether" end: "minecraft:the_end" # +# Ocelots will always be translated to cats for 1.14+ clients on 1.13 servers. +translate-ocelot-to-cat: false +# #----------------------------------------------------------# # 1.9+ CLIENTS ON 1.8 SERVERS OPTIONS # #----------------------------------------------------------# From ce2ad7d5eb479e5c67d504434c485a9f3a44b9bb Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Sun, 21 Apr 2024 15:15:17 +0200 Subject: [PATCH 3/5] Change default value for new ocelot setting (#3797) --- .../viaversion/api/configuration/ViaVersionConfig.java | 4 +--- .../viaversion/configuration/AbstractViaConfig.java | 2 +- common/src/main/resources/assets/viaversion/config.yml | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java index 72227841f..dff9d8721 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java +++ b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java @@ -27,8 +27,6 @@ import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.WorldIdentifiers; import com.viaversion.viaversion.api.protocol.version.BlockedProtocolVersions; -import it.unimi.dsi.fastutil.ints.IntSet; -import org.checkerframework.checker.nullness.qual.Nullable; public interface ViaVersionConfig extends Config { @@ -454,7 +452,7 @@ public interface ViaVersionConfig extends Config { boolean isArmorToggleFix(); /** - * Ocelots will always be translated to cats for 1.14+ clients on 1.13 servers. + * If disabled, tamed cats will be displayed as ocelots to 1.14+ clients on 1.13 servers. Otherwise, ocelots (tamed and untamed) will be displayed as cats. * * @return true if enabled */ diff --git a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java index 574f24916..40d3f3871 100644 --- a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java +++ b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java @@ -158,7 +158,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf worlds.getOrDefault("nether", WorldIdentifiers.NETHER_DEFAULT), worlds.getOrDefault("end", WorldIdentifiers.END_DEFAULT)); cache1_17Light = getBoolean("cache-1_17-light", true); - translateOcelotToCat = getBoolean("translate-ocelot-to-cat", false); + translateOcelotToCat = getBoolean("translate-ocelot-to-cat", true); } private BlockedProtocolVersions loadBlockedProtocolVersions() { diff --git a/common/src/main/resources/assets/viaversion/config.yml b/common/src/main/resources/assets/viaversion/config.yml index 05a5ac1b8..7211ec81e 100644 --- a/common/src/main/resources/assets/viaversion/config.yml +++ b/common/src/main/resources/assets/viaversion/config.yml @@ -175,7 +175,7 @@ map-1_16-world-names: nether: "minecraft:the_nether" end: "minecraft:the_end" # -# Ocelots will always be translated to cats for 1.14+ clients on 1.13 servers. +# If disabled, tamed cats will be displayed as ocelots to 1.14+ clients on 1.13 servers. Otherwise, ocelots (tamed and untamed) will be displayed as cats. translate-ocelot-to-cat: false # #----------------------------------------------------------# From 1ed22327f6022a0823eda53025c12c713db3100a Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Sun, 21 Apr 2024 16:00:30 +0200 Subject: [PATCH 4/5] Replace string->component conversion in 1.8->1.9 (#3794) --- .../api/configuration/ViaVersionConfig.java | 7 ---- .../protocol1_9to1_8/DeathListener.java | 2 +- .../configuration/AbstractViaConfig.java | 7 ---- .../viaversion/legacy/bossbar/CommonBoss.java | 5 ++- .../protocols/base/BaseProtocol1_7.java | 6 ++- .../packets/InventoryPackets.java | 1 - .../protocol1_9to1_8/ItemRewriter.java | 2 +- .../protocol1_9to1_8/Protocol1_9To1_8.java | 40 +++---------------- .../protocol1_9to1_8/metadata/MetaIndex.java | 2 +- .../metadata/MetadataRewriter1_9To1_8.java | 7 +++- .../packets/EntityPackets.java | 2 +- .../packets/InventoryPackets.java | 2 +- .../packets/PlayerPackets.java | 15 +++---- .../packets/WorldPackets.java | 21 ++++++---- .../viaversion/util/ComponentUtil.java | 8 ++++ .../resources/assets/viaversion/config.yml | 2 - 16 files changed, 52 insertions(+), 77 deletions(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java index dff9d8721..e3f04aba4 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java +++ b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java @@ -233,13 +233,6 @@ public interface ViaVersionConfig extends Config { */ boolean isChunkBorderFix(); - /** - * Force json transform - * - * @return true if enabled - */ - boolean isForceJsonTransform(); - /** * Should we fix nbt array's in json chat messages for 1.12 clients * diff --git a/bukkit-legacy/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_9to1_8/DeathListener.java b/bukkit-legacy/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_9to1_8/DeathListener.java index 9939707b8..079096dbd 100644 --- a/bukkit-legacy/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_9to1_8/DeathListener.java +++ b/bukkit-legacy/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_9to1_8/DeathListener.java @@ -63,7 +63,7 @@ public class DeathListener extends ViaBukkitListener { wrapper.write(Type.VAR_INT, 2); // Event - Entity dead wrapper.write(Type.VAR_INT, p.getEntityId()); // Player ID wrapper.write(Type.INT, p.getEntityId()); // Entity ID - Protocol1_9To1_8.FIX_JSON.write(wrapper, msg); // Message + Protocol1_9To1_8.STRING_TO_JSON.write(wrapper, msg); // Message wrapper.scheduleSend(Protocol1_9To1_8.class); } catch (Exception e) { diff --git a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java index 40d3f3871..c0d029a38 100644 --- a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java +++ b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java @@ -63,7 +63,6 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf private int pistonReplacementId; private boolean chunkBorderFix; private boolean autoTeam; - private boolean forceJsonTransform; private boolean nbtArrayFix; private BlockedProtocolVersions blockedProtocolVersions; private String blockedDisconnectMessage; @@ -129,7 +128,6 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf pistonReplacementId = getInt("replacement-piston-id", 0); chunkBorderFix = getBoolean("chunk-border-fix", false); autoTeam = getBoolean("auto-team", true); - forceJsonTransform = getBoolean("force-json-transform", false); nbtArrayFix = getBoolean("chat-nbt-fix", true); blockedProtocolVersions = loadBlockedProtocolVersions(); blockedDisconnectMessage = getString("block-disconnect-msg", "You are using an unsupported Minecraft version!"); @@ -371,11 +369,6 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf return preventCollision && autoTeam; } - @Override - public boolean isForceJsonTransform() { - return forceJsonTransform; - } - @Override public boolean is1_12NBTArrayFix() { return nbtArrayFix; diff --git a/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java b/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java index 9690af79e..bf4574ca8 100644 --- a/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java +++ b/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java @@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; +import com.viaversion.viaversion.util.ComponentUtil; import java.util.ArrayList; import java.util.Collections; import java.util.EnumSet; @@ -245,7 +246,7 @@ public class CommonBoss implements BossBar { wrapper.write(Type.VAR_INT, action.getId()); switch (action) { case ADD: - Protocol1_9To1_8.FIX_JSON.write(wrapper, title); + wrapper.write(Type.COMPONENT, ComponentUtil.plainToJson(title)); wrapper.write(Type.FLOAT, health); wrapper.write(Type.VAR_INT, color.getId()); wrapper.write(Type.VAR_INT, style.getId()); @@ -257,7 +258,7 @@ public class CommonBoss implements BossBar { wrapper.write(Type.FLOAT, health); break; case UPDATE_TITLE: - Protocol1_9To1_8.FIX_JSON.write(wrapper, title); + wrapper.write(Type.COMPONENT, ComponentUtil.plainToJson(title)); break; case UPDATE_STYLE: wrapper.write(Type.VAR_INT, color.getId()); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java index f3dae8b1f..1c9fb0742 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java @@ -37,8 +37,8 @@ import com.viaversion.viaversion.protocol.ServerProtocolVersionSingleton; import com.viaversion.viaversion.protocols.base.packet.BaseClientboundPacket; import com.viaversion.viaversion.protocols.base.packet.BasePacketTypesProvider; import com.viaversion.viaversion.protocols.base.packet.BaseServerboundPacket; -import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.util.ChatColorUtil; +import com.viaversion.viaversion.util.ComponentUtil; import com.viaversion.viaversion.util.GsonUtil; import io.netty.channel.ChannelFuture; import java.util.List; @@ -163,8 +163,10 @@ public class BaseProtocol1_7 extends AbstractProtocol { - public static final ValueTransformer FIX_JSON = new ValueTransformer(Type.COMPONENT) { + + public static final ValueTransformer STRING_TO_JSON = new ValueTransformer(Type.COMPONENT) { @Override public JsonElement transform(PacketWrapper wrapper, String line) { - return fixJson(line); + return ComponentUtil.convertJsonOrEmpty(line, SerializerVersion.V1_8, SerializerVersion.V1_9); } }; private final MetadataRewriter1_9To1_8 metadataRewriter = new MetadataRewriter1_9To1_8(this); @@ -64,35 +65,6 @@ public class Protocol1_9To1_8 extends AbstractProtocol { @@ -127,8 +129,9 @@ public class MetadataRewriter1_9To1_8 extends EntityRewriter { @@ -61,15 +62,15 @@ public class PlayerPackets { protocol.registerClientbound(ClientboundPackets1_8.TAB_LIST, new PacketHandlers() { @Override public void register() { - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 0 - Header - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 1 - Footer + map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 0 - Header + map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 1 - Footer } }); protocol.registerClientbound(ClientboundPackets1_8.DISCONNECT, new PacketHandlers() { @Override public void register() { - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 0 - Reason + map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 0 - Reason } }); @@ -81,7 +82,7 @@ public class PlayerPackets { handler(wrapper -> { int action = wrapper.get(Type.VAR_INT, 0); if (action == 0 || action == 1) { - Protocol1_9To1_8.FIX_JSON.write(wrapper, wrapper.read(Type.STRING)); + Protocol1_9To1_8.STRING_TO_JSON.write(wrapper, wrapper.read(Type.STRING)); } }); // Everything else is handled. @@ -248,13 +249,13 @@ public class PlayerPackets { wrapper.passthrough(Type.VAR_INT); // ping String displayName = wrapper.read(Type.OPTIONAL_STRING); wrapper.write(Type.OPTIONAL_COMPONENT, displayName != null ? - Protocol1_9To1_8.FIX_JSON.transform(wrapper, displayName) : null); + Protocol1_9To1_8.STRING_TO_JSON.transform(wrapper, displayName) : null); } else if ((action == 1) || (action == 2)) { // update gamemode || update latency wrapper.passthrough(Type.VAR_INT); } else if (action == 3) { // update display name String displayName = wrapper.read(Type.OPTIONAL_STRING); wrapper.write(Type.OPTIONAL_COMPONENT, displayName != null ? - Protocol1_9To1_8.FIX_JSON.transform(wrapper, displayName) : null); + Protocol1_9To1_8.STRING_TO_JSON.transform(wrapper, displayName) : null); } } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java index 6eedc83f7..39ac43821 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java @@ -45,6 +45,7 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.sounds.Effect; import com.viaversion.viaversion.protocols.protocol1_9to1_8.sounds.SoundEffect; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.ClientChunks; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9; +import com.viaversion.viaversion.util.ComponentUtil; import java.util.ArrayList; import java.util.Optional; @@ -54,10 +55,12 @@ public class WorldPackets { @Override public void register() { map(Type.POSITION1_8); // 0 - Sign Position - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 1 - Sign Line (json) - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 2 - Sign Line (json) - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 3 - Sign Line (json) - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 4 - Sign Line (json) + handler(wrapper -> { + for (int i = 0; i < 4; i++) { + final String line = wrapper.read(Type.STRING); // Should be Type.COMPONENT but would break in some cases + Protocol1_9To1_8.STRING_TO_JSON.write(wrapper, line); + } + }); } }); @@ -245,10 +248,12 @@ public class WorldPackets { @Override public void register() { map(Type.POSITION1_8); // 0 - Sign Position - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 1 - Sign Line (json) - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 2 - Sign Line (json) - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 3 - Sign Line (json) - map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 4 - Sign Line (json) + handler(wrapper -> { + for (int i = 0; i < 4; i++) { + final String line = wrapper.read(Type.STRING); + wrapper.write(Type.COMPONENT, ComponentUtil.plainToJson(line)); + } + }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java b/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java index 370d83d7f..f64ce2d3d 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java +++ b/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java @@ -100,6 +100,14 @@ public final class ComponentUtil { return json != null ? convert(from, to, from.toComponent(json)) : null; } + public static @Nullable JsonElement convertJsonOrEmpty(@Nullable final String json, final SerializerVersion from, final SerializerVersion to) { + final ATextComponent component = from.toComponent(json); + if (component == null) { + return emptyJsonComponent(); + } + return to.toJson(component); + } + private static JsonElement convert(final SerializerVersion from, final SerializerVersion to, final ATextComponent component) { if (from.ordinal() >= SerializerVersion.V1_16.ordinal() && to.ordinal() < SerializerVersion.V1_16.ordinal()) { // Convert hover event to legacy format diff --git a/common/src/main/resources/assets/viaversion/config.yml b/common/src/main/resources/assets/viaversion/config.yml index 7211ec81e..05cd26e8f 100644 --- a/common/src/main/resources/assets/viaversion/config.yml +++ b/common/src/main/resources/assets/viaversion/config.yml @@ -219,8 +219,6 @@ replace-pistons: false replacement-piston-id: 0 # Fix 1.9+ clients not rendering the far away chunks and improve chunk rendering when moving fast (Increases network usage and decreases client fps slightly) chunk-border-fix: false -# Force the string -> json transform -force-json-transform: false # Minimize the cooldown animation in 1.8 servers minimize-cooldown: true # Allows 1.9+ left-handedness (main hand) on 1.8 servers From a152993ffd3d830848c50c08e9c371953e11b0dd Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sun, 21 Apr 2024 22:39:13 +0200 Subject: [PATCH 5/5] Add UserConnection to item rewriters Already required for ViaBackwards, later required for ViaVersion as well due to synchronized registry entries in items --- .../viaversion/api/rewriter/ItemRewriter.java | 13 +++-- .../packets/InventoryPackets.java | 3 +- .../packets/InventoryPackets.java | 3 +- .../packets/InventoryPackets.java | 5 +- .../MetadataRewriter1_12To1_11_1.java | 2 +- .../packets/InventoryPackets.java | 15 +++--- .../Protocol1_13_1To1_13.java | 2 +- .../packets/InventoryPackets.java | 6 +-- .../Protocol1_13To1_12_2.java | 4 +- .../data/ComponentRewriter1_13.java | 2 +- .../data/ParticleRewriter.java | 2 +- .../MetadataRewriter1_13To1_12_2.java | 2 +- .../packets/InventoryPackets.java | 21 +++++---- .../packets/InventoryPackets.java | 11 +++-- .../packets/PlayerPackets.java | 2 +- .../Protocol1_15To1_14_4.java | 2 +- .../packets/WorldPackets.java | 2 +- .../packets/InventoryPackets.java | 2 +- .../packets/InventoryPackets.java | 9 ++-- .../packets/InventoryPackets.java | 7 +-- .../packets/EntityPackets.java | 6 +-- .../packets/InventoryPackets.java | 2 +- .../packets/InventoryPackets.java | 12 ++--- .../rewriter/RecipeRewriter1_19_3.java | 6 +-- .../packets/EntityPackets.java | 2 +- .../packets/InventoryPackets.java | 6 +-- .../BlockItemPacketRewriter1_20_2.java | 47 ++++++++++--------- .../Protocol1_20_3To1_20_2.java | 2 +- .../BlockItemPacketRewriter1_20_3.java | 7 +-- .../rewriter/EntityPacketRewriter1_20_3.java | 2 +- .../rewriter/RecipeRewriter1_20_3.java | 2 +- .../BlockItemPacketRewriter1_20_5.java | 17 +++---- .../packets/InventoryPackets.java | 2 +- .../viaversion/rewriter/EntityRewriter.java | 12 ++--- .../viaversion/rewriter/ItemRewriter.java | 23 ++++----- .../viaversion/rewriter/RecipeRewriter.java | 19 ++++---- .../rewriter/StructuredItemRewriter.java | 5 +- 37 files changed, 153 insertions(+), 134 deletions(-) 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 71f98081a..3bfcd0709 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 @@ -22,6 +22,7 @@ */ package com.viaversion.viaversion.api.rewriter; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.type.Type; @@ -32,18 +33,22 @@ public interface ItemRewriter extends Rewriter { /** * Returns the rewritten item, which may or may not be the same given Item instance. * - * @param item item + * @param connection user connection + * @param item item * @return rewritten item */ - @Nullable Item handleItemToClient(@Nullable Item item); + @Nullable + Item handleItemToClient(UserConnection connection, @Nullable Item item); /** * Returns the rewritten item, which may or may not be the same given Item instance. * - * @param item item + * @param connection user connection + * @param item item * @return rewritten item */ - @Nullable Item handleItemToServer(@Nullable Item item); + @Nullable + Item handleItemToServer(UserConnection connection, @Nullable Item item); /** * Returns the item type of the current protocol. diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/packets/InventoryPackets.java index bb2269eba..9b1107a3c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/packets/InventoryPackets.java @@ -17,6 +17,7 @@ */ package com.viaversion.viaversion.protocols.protocol1_10to1_9_3.packets; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_10to1_9_3.Protocol1_10To1_9_3_4; @@ -36,7 +37,7 @@ public class InventoryPackets extends ItemRewriter= 213 && item.identifier() <= 217; if (newItem) { // Replace server-side unknown items diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11_1to1_11/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11_1to1_11/packets/InventoryPackets.java index be4520e65..b6647f199 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11_1to1_11/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11_1to1_11/packets/InventoryPackets.java @@ -17,6 +17,7 @@ */ package com.viaversion.viaversion.protocols.protocol1_11_1to1_11.packets; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_11_1to1_11.Protocol1_11_1To1_11; @@ -36,7 +37,7 @@ public class InventoryPackets extends ItemRewriter= 218 && item.identifier() <= 234; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java index a76ab5dcc..632d4c8e3 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java @@ -34,7 +34,7 @@ public class MetadataRewriter1_12To1_11_1 extends EntityRewriter { if (meta.getValue() instanceof Item) { - meta.setValue(protocol.getItemRewriter().handleItemToClient(meta.value())); + meta.setValue(protocol.getItemRewriter().handleItemToClient(event.user(), meta.value())); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java index 498d0063c..51520064f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java @@ -18,6 +18,7 @@ package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.packets; import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; @@ -52,12 +53,12 @@ public class InventoryPackets extends ItemRewriter { Item item = wrapper.get(Type.ITEM1_8, 0); if (!Via.getConfig().is1_12QuickMoveActionFix()) { - handleItemToServer(item); + handleItemToServer(wrapper.user(), item); return; } byte button = wrapper.get(Type.BYTE, 0); @@ -100,7 +101,7 @@ public class InventoryPackets extends ItemRewriter { Item item = wrapper.get(Type.ITEM1_13, 0); - itemRewriter.handleItemToServer(item); + itemRewriter.handleItemToServer(wrapper.user(), item); }); handler(wrapper -> { int hand = wrapper.read(Type.VAR_INT); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java index 5cb4db20f..bbf606d1c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java @@ -52,14 +52,14 @@ public class InventoryPackets extends ItemRewriter extends Comp final Item item = new DataItem(); item.setData(damage); item.setTag(itemTag); - protocol.getItemRewriter().handleItemToClient(item); + protocol.getItemRewriter().handleItemToClient(null, item); // Serialize again if (damage != item.data()) { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java index 21c6a37ec..c38af8f4c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java @@ -138,7 +138,7 @@ public class ParticleRewriter { } // Transform to new Item - Via.getManager().getProtocolManager().getProtocol(Protocol1_13To1_12_2.class).getItemRewriter().handleItemToClient(item); + Via.getManager().getProtocolManager().getProtocol(Protocol1_13To1_12_2.class).getItemRewriter().handleItemToClient(null, item); particle.add(Type.ITEM1_13, item); // Item Slot The item that will be used. return particle; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java index d0c28bb78..973e68796 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java @@ -39,7 +39,7 @@ public class MetadataRewriter1_13To1_12_2 extends EntityRewriter Types1_13.META_TYPES.byId(typeId > 4 ? typeId + 1 : typeId)); - filter().metaType(Types1_13.META_TYPES.itemType).handler(((event, meta) -> protocol.getItemRewriter().handleItemToClient(meta.value()))); + filter().metaType(Types1_13.META_TYPES.itemType).handler(((event, meta) -> protocol.getItemRewriter().handleItemToClient(event.user(), meta.value()))); filter().metaType(Types1_13.META_TYPES.blockStateType).handler(((event, meta) -> { final int oldId = meta.value(); if (oldId != 0) { 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 2e6d8c8ef..8aacf8ff0 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 @@ -26,6 +26,7 @@ import com.github.steveice10.opennbt.tag.builtin.Tag; import com.google.common.base.Joiner; import com.google.common.primitives.Ints; import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; @@ -62,7 +63,7 @@ public class InventoryPackets extends ItemRewriter handleItemToClient(wrapper.get(Type.ITEM1_13, 0))); + handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_13, 0))); } }); protocol.registerClientbound(ClientboundPackets1_12_1.WINDOW_ITEMS, new PacketHandlers() { @@ -74,7 +75,7 @@ public class InventoryPackets extends ItemRewriter { Item[] items = wrapper.get(Type.ITEM1_13_SHORT_ARRAY, 0); for (Item item : items) { - handleItemToClient(item); + handleItemToClient(wrapper.user(), item); } }); } @@ -142,18 +143,18 @@ public class InventoryPackets extends ItemRewriter handleItemToClient(wrapper.get(Type.ITEM1_13, 0))); + handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_13, 0))); } }); @@ -216,7 +217,7 @@ public class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.get(Type.ITEM1_8, 0))); + handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Type.ITEM1_8, 0))); } }); @@ -258,13 +259,13 @@ public class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.get(Type.ITEM1_8, 0))); + handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Type.ITEM1_8, 0))); } }); } @Override - public Item handleItemToClient(Item item) { + public Item handleItemToClient(UserConnection connection, Item item) { if (item == null) return null; CompoundTag tag = item.tag(); @@ -504,7 +505,7 @@ public class InventoryPackets extends ItemRewriter { Item item = wrapper.passthrough(Type.ITEM1_13_2); - protocol.getItemRewriter().handleItemToServer(item); + protocol.getItemRewriter().handleItemToServer(wrapper.user(), item); if (item == null) return; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java index 546a1212b..1b06301ac 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java @@ -59,7 +59,7 @@ public class Protocol1_15To1_14_4 extends AbstractProtocol(this).register(ClientboundPackets1_14_4.STATISTICS); - registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> itemRewriter.handleItemToServer(wrapper.passthrough(Type.ITEM1_13_2))); + registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> itemRewriter.handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); tagRewriter.register(ClientboundPackets1_14_4.TAGS, RegistryType.ENTITY); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java index ff5ecca6b..9847a1b0d 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java @@ -99,7 +99,7 @@ public final class WorldPackets { int data = wrapper.passthrough(Type.VAR_INT); wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data)); } else if (id == 32) { - protocol.getItemRewriter().handleItemToClient(wrapper.passthrough(Type.ITEM1_13_2)); + protocol.getItemRewriter().handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java index a95c45374..9c2d174eb 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java @@ -56,7 +56,7 @@ public class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.passthrough(Type.ITEM1_13_2))); + protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); registerSpawnParticle(ClientboundPackets1_16.SPAWN_PARTICLE, Type.DOUBLE); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java index af4bed1d5..09cf0112f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java @@ -22,6 +22,7 @@ import com.github.steveice10.opennbt.tag.builtin.IntArrayTag; import com.github.steveice10.opennbt.tag.builtin.ListTag; import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; @@ -119,7 +120,7 @@ public class InventoryPackets extends ItemRewriter { int slot = wrapper.read(Type.VAR_INT); wrapper.write(Type.BYTE, (byte) slot); - handleItemToClient(wrapper.passthrough(Type.ITEM1_13_2)); + handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); }); } }); @@ -134,13 +135,13 @@ public class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.passthrough(Type.ITEM1_13_2))); + protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); registerSpawnParticle(ClientboundPackets1_15.SPAWN_PARTICLE, Type.DOUBLE); } @Override - public Item handleItemToClient(Item item) { + public Item handleItemToClient(UserConnection connection, Item item) { if (item == null) return null; CompoundTag tag = item.tag(); @@ -169,7 +170,7 @@ public class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.passthrough(Type.ITEM1_13_2))); + protocol.registerServerbound(ServerboundPackets1_17.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); protocol.registerServerbound(ServerboundPackets1_17.CLICK_WINDOW, new PacketHandlers() { @Override @@ -81,7 +82,7 @@ public final class InventoryPackets extends ItemRewriter { final Particle particle = (Particle) meta.getValue(); - if (particle.getId() == 2) { // Barrier + if (particle.id() == 2) { // Barrier particle.setId(3); // Block marker particle.add(Type.VAR_INT, 7754); // Barrier state - } else if (particle.getId() == 3) { // Light block + } else if (particle.id() == 3) { // Light block particle.add(Type.VAR_INT, 7786); // Light block state } else { - rewriteParticle(particle); + rewriteParticle(event.user(), particle); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/InventoryPackets.java index af7b7f335..db38aa702 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/InventoryPackets.java @@ -86,7 +86,7 @@ public final class InventoryPackets extends ItemRewriter extends Recip wrapper.passthrough(Type.STRING); // Group wrapper.passthrough(Type.VAR_INT); // Crafting book category handleIngredients(wrapper); - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); } @@ -61,7 +61,7 @@ public class RecipeRewriter1_19_3 extends Recip for (int i = 0; i < ingredients; i++) { handleIngredient(wrapper); } - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); } @@ -70,7 +70,7 @@ public class RecipeRewriter1_19_3 extends Recip wrapper.passthrough(Type.STRING); // Group wrapper.passthrough(Type.VAR_INT); // Crafting book category handleIngredient(wrapper); - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); wrapper.passthrough(Type.FLOAT); // EXP wrapper.passthrough(Type.VAR_INT); // Cooking time diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java index 6ad9ab3bb..3cda4e74e 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java @@ -335,7 +335,7 @@ public final class EntityPackets extends EntityRewriter { final Item[] items = wrapper.read(Type.ITEM1_13_2_ARRAY); for (final Item item : items) { - handleItemToClient(item); + handleItemToClient(wrapper.user(), item); } wrapper.write(Type.ITEM1_20_2_ARRAY, items); - wrapper.write(Type.ITEM1_20_2, handleItemToClient(wrapper.read(Type.ITEM1_13_2))); // Carried item + wrapper.write(Type.ITEM1_20_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_13_2))); // Carried item }); } }); @@ -135,7 +136,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter wrapper.write(Type.ITEM1_20_2, handleItemToClient(wrapper.read(Type.ITEM1_13_2)))); + handler(wrapper -> wrapper.write(Type.ITEM1_20_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_13_2)))); } }); protocol.registerClientbound(ClientboundPackets1_19_4.ADVANCEMENTS, wrapper -> { @@ -152,7 +153,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter wrapper.write(Type.ITEM1_13_2, handleItemToServer(wrapper.read(Type.ITEM1_20_2)))); // 1 - Clicked Item + handler(wrapper -> wrapper.write(Type.ITEM1_13_2, handleItemToServer(wrapper.user(), wrapper.read(Type.ITEM1_20_2)))); // 1 - Clicked Item } }); protocol.registerClientbound(ClientboundPackets1_19_4.SPAWN_PARTICLE, new PacketHandlers() { @@ -253,7 +254,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter extends Recip handleIngredient(wrapper); } - final Item item = rewrite(wrapper.read(itemType())); // Result + final Item item = rewrite(wrapper.user(), wrapper.read(itemType())); // Result wrapper.write(mappedItemType(), item); wrapper.passthrough(Type.BOOLEAN); // Show notification } 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 2ec3147df..86a4be39a 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 @@ -23,6 +23,7 @@ import com.github.steveice10.opennbt.tag.builtin.ListTag; import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.minecraft.GameProfile; import com.viaversion.viaversion.api.minecraft.Particle; @@ -110,7 +111,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter { final MetaType type = meta.metaType(); if (type == itemType) { - meta.setValue(protocol.getItemRewriter().handleItemToClient(meta.value())); + meta.setValue(protocol.getItemRewriter().handleItemToClient(event.user(), meta.value())); } else if (type == blockStateType) { int data = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(data)); @@ -234,7 +234,7 @@ public abstract class EntityRewriter data = particle.getArgument(0); data.setValue(protocol.getMappingData().getNewBlockStateId(data.getValue())); } else if (mappings.isItemParticle(id) && protocol.getItemRewriter() != null) { Particle.ParticleData data = particle.getArgument(0); Item item = data.getValue(); - protocol.getItemRewriter().handleItemToClient(item); + protocol.getItemRewriter().handleItemToClient(connection, item); } particle.setId(protocol.getMappingData().getNewParticleId(id)); @@ -606,7 +606,7 @@ public abstract class EntityRewriter from, Type to) throws Exception { final Particle particle = wrapper.read(from); - rewriteParticle(particle); + rewriteParticle(wrapper.user(), particle); wrapper.write(to, particle); } 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 b35144028..48b943b44 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java @@ -17,6 +17,7 @@ */ package com.viaversion.viaversion.rewriter; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.data.Mappings; import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.minecraft.Particle; @@ -51,7 +52,7 @@ public class ItemRewriter { final Particle particle = wrapper.read(unmappedParticleType); - rewriteParticle(particle); + rewriteParticle(wrapper.user(), particle); wrapper.write(mappedParticleType, particle); }); } @@ -484,8 +485,8 @@ public class ItemRewriter data = particle.getArgument(0); - data.setValue(handleItemToClient(data.getValue())); + data.setValue(handleItemToClient(connection, data.getValue())); } particle.setId(protocol.getMappingData().getNewParticleId(id)); diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java index add8bf4ba..7161fb3f4 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java @@ -17,6 +17,7 @@ */ package com.viaversion.viaversion.rewriter; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; @@ -96,21 +97,21 @@ public class RecipeRewriter { handleIngredient(wrapper); } - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); } public void handleCraftingShapeless(PacketWrapper wrapper) throws Exception { wrapper.passthrough(Type.STRING); // Group handleIngredients(wrapper); - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); } public void handleSmelting(PacketWrapper wrapper) throws Exception { wrapper.passthrough(Type.STRING); // Group handleIngredient(wrapper); - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); wrapper.passthrough(Type.FLOAT); // EXP wrapper.passthrough(Type.VAR_INT); // Cooking time @@ -119,14 +120,14 @@ public class RecipeRewriter { public void handleStonecutting(PacketWrapper wrapper) throws Exception { wrapper.passthrough(Type.STRING); // Group handleIngredient(wrapper); - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); } public void handleSmithing(PacketWrapper wrapper) throws Exception { handleIngredient(wrapper); // Base handleIngredient(wrapper); // Addition - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); } @@ -138,7 +139,7 @@ public class RecipeRewriter { handleIngredient(wrapper); // Template handleIngredient(wrapper); // Base handleIngredient(wrapper); // Additions - final Item result = rewrite(wrapper.read(itemType())); + final Item result = rewrite(wrapper.user(), wrapper.read(itemType())); wrapper.write(mappedItemType(), result); } @@ -148,9 +149,9 @@ public class RecipeRewriter { handleIngredient(wrapper); // Additions } - protected @Nullable Item rewrite(@Nullable Item item) { + protected @Nullable Item rewrite(UserConnection connection, @Nullable Item item) { if (protocol.getItemRewriter() != null) { - return protocol.getItemRewriter().handleItemToClient(item); + return protocol.getItemRewriter().handleItemToClient(connection, item); } return item; } @@ -160,7 +161,7 @@ public class RecipeRewriter { wrapper.write(mappedItemArrayType(), items); for (int i = 0; i < items.length; i++) { Item item = items[i]; - items[i] = rewrite(item); + items[i] = rewrite(wrapper.user(), item); } } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/StructuredItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/StructuredItemRewriter.java index 3260e41b0..b980befdd 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/StructuredItemRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/StructuredItemRewriter.java @@ -17,6 +17,7 @@ */ package com.viaversion.viaversion.rewriter; +import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.data.MappingData; import com.viaversion.viaversion.api.data.Mappings; import com.viaversion.viaversion.api.data.ParticleMappings; @@ -44,7 +45,7 @@ public class StructuredItemRewriter