From 9093966c07bf3fc67388d1e730769edf4c9e75b3 Mon Sep 17 00:00:00 2001 From: Micle Date: Sun, 22 May 2022 03:15:47 +0100 Subject: [PATCH] Created new packet for sending the player state to the client. --- .../network/ServerPlayerStatePacket.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/java/dev/micle/loginprotection/network/ServerPlayerStatePacket.java diff --git a/src/main/java/dev/micle/loginprotection/network/ServerPlayerStatePacket.java b/src/main/java/dev/micle/loginprotection/network/ServerPlayerStatePacket.java new file mode 100644 index 0000000..ac2c6e1 --- /dev/null +++ b/src/main/java/dev/micle/loginprotection/network/ServerPlayerStatePacket.java @@ -0,0 +1,34 @@ +package dev.micle.loginprotection.network; + +import dev.micle.loginprotection.data.ProtectedPlayer; +import dev.micle.loginprotection.proxy.Proxy; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; + +import java.util.function.Supplier; + +public class ServerPlayerStatePacket { + private final ProtectedPlayer.State state; + + public ServerPlayerStatePacket(ProtectedPlayer.State state) { + this.state = state; + } + + public static void encode(final ServerPlayerStatePacket packet, final FriendlyByteBuf buffer) { + NetworkManager.writeVersionInfo(buffer, true); + buffer.writeUtf(packet.state.toString()); + } + + public static ServerPlayerStatePacket decode(final FriendlyByteBuf buffer) { + NetworkManager.checkVersion(buffer); + return new ServerPlayerStatePacket(ProtectedPlayer.State.valueOf(buffer.readUtf())); + } + + public static void handle(final ServerPlayerStatePacket packet, final Supplier contextSupplier) { + final NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + Proxy.Client.setPlayerState(packet.state); + }); + context.setPacketHandled(true); + } +}