Setting last input tick of a player when a player becomes active.

This commit is contained in:
2022-05-24 00:29:39 +01:00
parent 64a4c3331f
commit fa0794bf13

View File

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