diff --git a/src/main/java/dev/micle/loginprotection/data/ProtectedPlayerManager.java b/src/main/java/dev/micle/loginprotection/data/ProtectedPlayerManager.java index 764b60b..79bcd60 100755 --- a/src/main/java/dev/micle/loginprotection/data/ProtectedPlayerManager.java +++ b/src/main/java/dev/micle/loginprotection/data/ProtectedPlayerManager.java @@ -4,6 +4,7 @@ import dev.micle.loginprotection.LoginProtection; import dev.micle.loginprotection.network.NetworkManager; import dev.micle.loginprotection.network.ServerPlayerStatePacket; import dev.micle.loginprotection.setup.Config; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.player.Player; @@ -78,15 +79,21 @@ public class ProtectedPlayerManager { * @param playerUUID UUID of player to update the state of. */ public static void updateState(UUID playerUUID) { - ProtectedPlayer player = getPlayer(playerUUID); - + ProtectedPlayer protectedPlayer = getPlayer(playerUUID); + ServerPlayer player = LoginProtection.getProxy().getServer().getPlayerList().getPlayer(playerUUID); if (player == null) { + removePlayer(playerUUID); + return; + } + + if (protectedPlayer == null) { addPlayer(playerUUID); } else { - ProtectedPlayer.State currentState = player.getState(); + ProtectedPlayer.State currentState = protectedPlayer.getState(); if (currentState.equals(ProtectedPlayer.State.JOINING) || currentState.equals(ProtectedPlayer.State.AFK)) { // JOINING, AFK -> ACTIVE - player.setState(ProtectedPlayer.State.ACTIVE); + protectedPlayer.setState(ProtectedPlayer.State.ACTIVE); + protectedPlayer.setLastInputTick(player.tickCount); if (Config.Server.POST_GRACE_ENABLED.get()) { startGracePeriod(playerUUID); } else { @@ -94,18 +101,13 @@ public class ProtectedPlayerManager { } } else { // ACTIVE -> AFK - player.setState(ProtectedPlayer.State.AFK); + protectedPlayer.setState(ProtectedPlayer.State.AFK); } // Send state packet to player - try { - NetworkManager.getChannel().sendTo(new ServerPlayerStatePacket(player.getState()), - LoginProtection.getProxy().getServer().getPlayerList().getPlayer(playerUUID).connection.getConnection(), - NetworkDirection.PLAY_TO_CLIENT); - } catch (NullPointerException e) { - removePlayer(playerUUID); - } - + NetworkManager.getChannel().sendTo(new ServerPlayerStatePacket(protectedPlayer.getState()), + player.connection.getConnection(), + NetworkDirection.PLAY_TO_CLIENT); } }