From 4a3da6fd6c6927bc0749da05232d268dc1083eef Mon Sep 17 00:00:00 2001 From: lionarius Date: Sun, 1 Dec 2024 23:34:34 +0300 Subject: [PATCH] backport to 1.20-1.20.1 --- .../skinshuffle/SkinShuffleCompatibility.java | 2 +- .../SkinShuffleHandshakePayload.java | 15 +---- .../SkinShuffleSkinRefreshV1Payload.java | 20 ++---- .../SkinShuffleSkinRefreshV2Payload.java | 22 ++----- .../skinshuffle/SkinShufflePacketHandler.java | 66 +++++++++++-------- .../platform/ForgeCompatibilityHelper.java | 2 +- 6 files changed, 49 insertions(+), 78 deletions(-) diff --git a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleCompatibility.java b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleCompatibility.java index b535f0f..2e296da 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleCompatibility.java +++ b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleCompatibility.java @@ -34,7 +34,7 @@ public class SkinShuffleCompatibility { public static void handleSkinRefresh(MinecraftServer server, ServerPlayer player, SkinShuffleSkinRefreshPayload payload) { var property = payload.textureProperty(); - if (!property.name().equals(PlayerUtils.TEXTURES_KEY)) + if (!property.getName().equals(PlayerUtils.TEXTURES_KEY)) return; if (!property.hasSignature()) diff --git a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleHandshakePayload.java b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleHandshakePayload.java index b4afa59..9e93ec3 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleHandshakePayload.java +++ b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleHandshakePayload.java @@ -1,23 +1,10 @@ package net.lionarius.skinrestorer.compat.skinshuffle; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; -public record SkinShuffleHandshakePayload() implements CustomPacketPayload { +public record SkinShuffleHandshakePayload() { public static final SkinShuffleHandshakePayload INSTANCE = new SkinShuffleHandshakePayload(); public static final ResourceLocation PACKET_ID = SkinShuffleCompatibility.resourceLocation("handshake"); - - @Override - public void write(@NotNull FriendlyByteBuf buf) { - // NO-OP - } - - @Override - public @NotNull ResourceLocation id() { - return PACKET_ID; - } } diff --git a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV1Payload.java b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV1Payload.java index 6a3132b..8ccd1a3 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV1Payload.java +++ b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV1Payload.java @@ -2,34 +2,22 @@ package net.lionarius.skinrestorer.compat.skinshuffle; import com.mojang.authlib.properties.Property; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; public record SkinShuffleSkinRefreshV1Payload( - Property textureProperty) implements CustomPacketPayload, SkinShuffleSkinRefreshPayload { + Property textureProperty) implements SkinShuffleSkinRefreshPayload { public static final ResourceLocation PACKET_ID = SkinShuffleCompatibility.resourceLocation("refresh"); public static void encode(FriendlyByteBuf buf, SkinShuffleSkinRefreshV1Payload value) { var textureProperty = value.textureProperty(); - buf.writeUtf(textureProperty.name()); - buf.writeUtf(textureProperty.value()); - buf.writeNullable(textureProperty.signature(), FriendlyByteBuf::writeUtf); + buf.writeUtf(textureProperty.getName()); + buf.writeUtf(textureProperty.getValue()); + buf.writeNullable(textureProperty.getSignature(), FriendlyByteBuf::writeUtf); } public static SkinShuffleSkinRefreshV1Payload decode(FriendlyByteBuf buf) { return new SkinShuffleSkinRefreshV1Payload(new Property(buf.readUtf(), buf.readUtf(), buf.readNullable(FriendlyByteBuf::readUtf))); } - - @Override - public void write(@NotNull FriendlyByteBuf buf) { - encode(buf, this); - } - - @Override - public @NotNull ResourceLocation id() { - return PACKET_ID; - } } diff --git a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV2Payload.java b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV2Payload.java index 82cab98..86f35d9 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV2Payload.java +++ b/common/src/main/java/net/lionarius/skinrestorer/compat/skinshuffle/SkinShuffleSkinRefreshV2Payload.java @@ -2,12 +2,10 @@ package net.lionarius.skinrestorer.compat.skinshuffle; import com.mojang.authlib.properties.Property; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; public record SkinShuffleSkinRefreshV2Payload( - Property textureProperty) implements CustomPacketPayload, SkinShuffleSkinRefreshPayload { + Property textureProperty) implements SkinShuffleSkinRefreshPayload { public static final ResourceLocation PACKET_ID = SkinShuffleCompatibility.resourceLocation("skin_refresh"); @@ -15,12 +13,12 @@ public record SkinShuffleSkinRefreshV2Payload( var textureProperty = value.textureProperty(); buf.writeBoolean(textureProperty.hasSignature()); - buf.writeUtf(textureProperty.name()); - buf.writeUtf(textureProperty.value()); + buf.writeUtf(textureProperty.getName()); + buf.writeUtf(textureProperty.getValue()); if (textureProperty.hasSignature()) { - assert textureProperty.signature() != null; + assert textureProperty.getSignature() != null; - buf.writeUtf(textureProperty.signature()); + buf.writeUtf(textureProperty.getSignature()); } } @@ -30,14 +28,4 @@ public record SkinShuffleSkinRefreshV2Payload( } return new SkinShuffleSkinRefreshV2Payload(new Property(buf.readUtf(), buf.readUtf(), null)); } - - @Override - public void write(@NotNull FriendlyByteBuf buf) { - encode(buf, this); - } - - @Override - public @NotNull ResourceLocation id() { - return PACKET_ID; - } } diff --git a/forge/src/main/java/net/lionarius/skinrestorer/forge/compat/skinshuffle/SkinShufflePacketHandler.java b/forge/src/main/java/net/lionarius/skinrestorer/forge/compat/skinshuffle/SkinShufflePacketHandler.java index 2b02632..9ead6c5 100644 --- a/forge/src/main/java/net/lionarius/skinrestorer/forge/compat/skinshuffle/SkinShufflePacketHandler.java +++ b/forge/src/main/java/net/lionarius/skinrestorer/forge/compat/skinshuffle/SkinShufflePacketHandler.java @@ -1,57 +1,65 @@ package net.lionarius.skinrestorer.forge.compat.skinshuffle; import io.netty.buffer.Unpooled; -import net.lionarius.skinrestorer.compat.skinshuffle.*; import net.lionarius.skinrestorer.compat.skinshuffle.SkinShuffleCompatibility; +import net.lionarius.skinrestorer.compat.skinshuffle.*; import net.minecraft.network.Connection; import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.event.network.CustomPayloadEvent; -import net.minecraftforge.network.ChannelBuilder; -import net.minecraftforge.network.EventNetworkChannel; +import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.event.EventNetworkChannel; public class SkinShufflePacketHandler { private SkinShufflePacketHandler() { } - - private static final EventNetworkChannel HANDSHAKE_INSTANCE = ChannelBuilder + + private static final EventNetworkChannel HANDSHAKE_INSTANCE = NetworkRegistry.ChannelBuilder .named(SkinShuffleHandshakePayload.PACKET_ID) - .optional() + .clientAcceptedVersions(NetworkRegistry.acceptMissingOr("")) + .serverAcceptedVersions(NetworkRegistry.acceptMissingOr("")) + .networkProtocolVersion(() -> "") .eventNetworkChannel(); - private static final EventNetworkChannel SKIN_REFRESH_V1_INSTANCE = ChannelBuilder + private static final EventNetworkChannel SKIN_REFRESH_V1_INSTANCE = NetworkRegistry.ChannelBuilder .named(SkinShuffleSkinRefreshV1Payload.PACKET_ID) - .optional() - .eventNetworkChannel() - .addListener(SkinShufflePacketHandler::skinRefreshV1Listener); + .clientAcceptedVersions(NetworkRegistry.acceptMissingOr("")) + .serverAcceptedVersions(NetworkRegistry.acceptMissingOr("")) + .networkProtocolVersion(() -> "") + .eventNetworkChannel(); - private static final EventNetworkChannel SKIN_REFRESH_V2_INSTANCE = ChannelBuilder + private static final EventNetworkChannel SKIN_REFRESH_V2_INSTANCE = NetworkRegistry.ChannelBuilder .named(SkinShuffleSkinRefreshV2Payload.PACKET_ID) - .optional() - .eventNetworkChannel() - .addListener(SkinShufflePacketHandler::skinRefreshV2Listener); - + .clientAcceptedVersions(NetworkRegistry.acceptMissingOr("")) + .serverAcceptedVersions(NetworkRegistry.acceptMissingOr("")) + .networkProtocolVersion(() -> "") + .eventNetworkChannel(); + protected static void initialize() { - // NO-OP - } - - public static void sendHandshake(Connection connection) { - HANDSHAKE_INSTANCE.send(new FriendlyByteBuf(Unpooled.buffer(0, 0)), connection); + SKIN_REFRESH_V1_INSTANCE.addListener(SkinShufflePacketHandler::skinRefreshV1Listener); + SKIN_REFRESH_V2_INSTANCE.addListener(SkinShufflePacketHandler::skinRefreshV2Listener); } - private static void skinRefreshV1Listener(CustomPayloadEvent event) { + public static void sendHandshake(Connection connection) { + connection.send(new ClientboundCustomPayloadPacket(SkinShuffleHandshakePayload.PACKET_ID, new FriendlyByteBuf(Unpooled.buffer(0, 0)))); + } + + private static void skinRefreshV1Listener(NetworkEvent.ClientCustomPayloadEvent event) { var payload = SkinShuffleSkinRefreshV1Payload.decode(event.getPayload()); - handleSkinRefreshPacket(payload, event.getSource()); + handleSkinRefreshPacket(payload, event.getSource().get()); + event.getSource().get().setPacketHandled(true); } - - private static void skinRefreshV2Listener(CustomPayloadEvent event) { + + private static void skinRefreshV2Listener(NetworkEvent.ClientCustomPayloadEvent event) { var payload = SkinShuffleSkinRefreshV2Payload.decode(event.getPayload()); - handleSkinRefreshPacket(payload, event.getSource()); + handleSkinRefreshPacket(payload, event.getSource().get()); + event.getSource().get().setPacketHandled(true); } - - private static void handleSkinRefreshPacket(SkinShuffleSkinRefreshPayload payload, CustomPayloadEvent.Context context) { + + private static void handleSkinRefreshPacket(SkinShuffleSkinRefreshPayload payload, NetworkEvent.Context context) { var sender = context.getSender(); - if (!context.isServerSide() || sender == null) + if (!context.getDirection().getReceptionSide().isServer() || sender == null) return; SkinShuffleCompatibility.handleSkinRefresh(sender.getServer(), sender, payload); diff --git a/forge/src/main/java/net/lionarius/skinrestorer/forge/platform/ForgeCompatibilityHelper.java b/forge/src/main/java/net/lionarius/skinrestorer/forge/platform/ForgeCompatibilityHelper.java index f613a00..5f28056 100644 --- a/forge/src/main/java/net/lionarius/skinrestorer/forge/platform/ForgeCompatibilityHelper.java +++ b/forge/src/main/java/net/lionarius/skinrestorer/forge/platform/ForgeCompatibilityHelper.java @@ -8,6 +8,6 @@ public final class ForgeCompatibilityHelper implements CompatibilityHelper { @Override public void skinShuffle_sendHandshake(ServerPlayer player) { - SkinShufflePacketHandler.sendHandshake(player.connection.getConnection()); + SkinShufflePacketHandler.sendHandshake(player.connection.connection); } }