diff --git a/src/main/java/emu/grasscutter/game/managers/StaminaManager/StaminaManager.java b/src/main/java/emu/grasscutter/game/managers/StaminaManager/StaminaManager.java index 5065b12b3..5947880e7 100644 --- a/src/main/java/emu/grasscutter/game/managers/StaminaManager/StaminaManager.java +++ b/src/main/java/emu/grasscutter/game/managers/StaminaManager/StaminaManager.java @@ -29,9 +29,7 @@ public class StaminaManager { private Position previousCoordinates = new Position(0, 0, 0); private MotionState currentState = MotionState.MOTION_STANDBY; private MotionState previousState = MotionState.MOTION_STANDBY; - private final Timer sustainedStaminaHandlerTimer = new Timer(); - private final SustainedStaminaHandler handleSustainedStamina = new SustainedStaminaHandler(); - private boolean timerRunning = false; + private Timer sustainedStaminaHandlerTimer; private GameSession cachedSession = null; private GameEntity cachedEntity = null; private int staminaRecoverDelay = 0; @@ -136,21 +134,21 @@ public class StaminaManager { entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP)); entity.getWorld().broadcastPacket(new PacketLifeStateChangeNotify(0, entity, LifeState.LIFE_DEAD)); player.getScene().removeEntity(entity); - ((EntityAvatar)entity).onDeath(dieType, 0); + ((EntityAvatar) entity).onDeath(dieType, 0); } public void startSustainedStaminaHandler() { - if (!player.isPaused() && !timerRunning) { - timerRunning = true; - sustainedStaminaHandlerTimer.scheduleAtFixedRate(handleSustainedStamina, 0, 200); + if (!player.isPaused() && sustainedStaminaHandlerTimer == null) { + sustainedStaminaHandlerTimer = new Timer(); + sustainedStaminaHandlerTimer.scheduleAtFixedRate(new SustainedStaminaHandler(), 0, 200); // Grasscutter.getLogger().debug("[MovementManager] SustainedStaminaHandlerTimer started"); } } public void stopSustainedStaminaHandler() { - if (timerRunning) { - timerRunning = false; + if (sustainedStaminaHandlerTimer != null) { sustainedStaminaHandlerTimer.cancel(); + sustainedStaminaHandlerTimer = null; // Grasscutter.getLogger().debug("[MovementManager] SustainedStaminaHandlerTimer stopped"); } }