diff --git a/src/main/java/dev/micle/loginprotection/network/C2SKeyPress.java b/src/main/java/dev/micle/loginprotection/network/C2SKeyPress.java deleted file mode 100755 index 7c0ce44..0000000 --- a/src/main/java/dev/micle/loginprotection/network/C2SKeyPress.java +++ /dev/null @@ -1,55 +0,0 @@ -package dev.micle.loginprotection.network; - -import dev.micle.loginprotection.LoginProtection; -import dev.micle.loginprotection.setup.Config; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -public class C2SKeyPress { - public C2SKeyPress() { } - - public static void encode(final C2SKeyPress msg, final FriendlyByteBuf packet_buffer) { } - - public static C2SKeyPress decode(final FriendlyByteBuf packet_buffer) { - return new C2SKeyPress(); - } - - public static void handle(final C2SKeyPress msg, final Supplier context_supplier) { - final NetworkEvent.Context context = context_supplier.get(); - context.enqueueWork(() -> { - final ServerPlayer sender = context.getSender(); - if (sender == null) { return; } - if (LoginProtection.protected_players.getPlayer(sender.getUUID()) == null) { return; } - if (!LoginProtection.protected_players.getPlayer(sender.getUUID()).isLoading()) { return; } - - if (!Config.Server.POST_GRACE_ENABLED.get()) { - LoginProtection.protected_players.removePlayer(sender.getUUID()); - sender.sendMessage(new TextComponent("[LoginProtection] You are now seen as active."), sender.getUUID()); - } else { - LoginProtection.protected_players.getPlayer(sender.getUUID()).setLoading(false); - sender.sendMessage(new TextComponent("[LoginProtection] Grace period started!"), sender.getUUID()); - } - if (sender.isInWater()) { - if (Config.Server.POST_REFILL_AIR_ENABLED.get()) { - sender.setAirSupply(sender.getMaxAirSupply()); - } - if (Config.Server.POST_WATER_ENABLED.get()) { - sender.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, Config.Server.POST_WATER_DURATION.get()*20, 0)); - } - } - if (sender.isInLava() && Config.Server.POST_LAVA_ENABLED.get()) { - sender.addEffect(new MobEffectInstance(MobEffects.FIRE_RESISTANCE, Config.Server.POST_LAVA_DURATION.get()*20, 0)); - } - if (sender.isOnFire() && Config.Server.POST_FIRE_ENABLED.get()) { - sender.addEffect(new MobEffectInstance(MobEffects.FIRE_RESISTANCE, Config.Server.POST_FIRE_DURATION.get()*20, 0)); - } - }); - context.setPacketHandled(true); - } -} diff --git a/src/main/java/dev/micle/loginprotection/network/ClientInputPacket.java b/src/main/java/dev/micle/loginprotection/network/ClientInputPacket.java new file mode 100755 index 0000000..28d8f71 --- /dev/null +++ b/src/main/java/dev/micle/loginprotection/network/ClientInputPacket.java @@ -0,0 +1,45 @@ +package dev.micle.loginprotection.network; + +import dev.micle.loginprotection.data.ProtectedPlayer; +import dev.micle.loginprotection.data.ProtectedPlayerManager; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkEvent; + +import java.util.function.Supplier; + +public class ClientInputPacket { + public ClientInputPacket() {} + + public static void encode(final ClientInputPacket packet, final FriendlyByteBuf buffer) { + NetworkManager.writeVersionInfo(buffer, false); + } + + public static ClientInputPacket decode(final FriendlyByteBuf buffer) { + NetworkManager.checkVersion(buffer); + return new ClientInputPacket(); + } + + public static void handle(final ClientInputPacket packet, final Supplier contextSupplier) { + final NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + // Get sender + ServerPlayer sender = context.getSender(); + if (sender == null) { + return; + } + + // Get protected player + ProtectedPlayer protectedPlayer = ProtectedPlayerManager.getPlayer(sender.getUUID()); + if (protectedPlayer == null) { + return; + } + + // Update player state if they are not active + if (!protectedPlayer.getState().equals(ProtectedPlayer.State.ACTIVE)) { + ProtectedPlayerManager.updateState(protectedPlayer.getPlayerUUID()); + } + }); + context.setPacketHandled(true); + } +}