diff --git a/src/main/java/emu/lunarcore/Config.java b/src/main/java/emu/lunarcore/Config.java index 2b153e9..e244b18 100644 --- a/src/main/java/emu/lunarcore/Config.java +++ b/src/main/java/emu/lunarcore/Config.java @@ -85,7 +85,17 @@ public class Config { public static class ServerOptions { public int entitySceneLimit = 2000; public boolean spendStamina = true; + public int staminaRecoveryRate = 5 * 60; + public int staminaReserveRecoveryRate = 18 * 60; public Set defaultPermissions = Set.of("*"); + + public int getStaminaRecoveryRate() { + return staminaRecoveryRate > 0 ? staminaRecoveryRate : 1; + } + + public int getStaminaReserveRecoveryRate() { + return staminaReserveRecoveryRate > 0 ? staminaReserveRecoveryRate : 1; + } } @Getter diff --git a/src/main/java/emu/lunarcore/game/player/Player.java b/src/main/java/emu/lunarcore/game/player/Player.java index db627a7..f60d5c3 100644 --- a/src/main/java/emu/lunarcore/game/player/Player.java +++ b/src/main/java/emu/lunarcore/game/player/Player.java @@ -398,7 +398,8 @@ public class Player { this.stamina += 1; hasChanged = true; } else if (this.stamina < GameConstants.MAX_STAMINA_RESERVE) { - double amount = (time - this.nextStaminaRecover) / (18D * 60D * 1000D); + double rate = LunarCore.getConfig().getServerOptions().getStaminaReserveRecoveryRate(); + double amount = (time - this.nextStaminaRecover) / (rate * 1000D); this.staminaReserve = Math.min(this.staminaReserve + amount, GameConstants.MAX_STAMINA_RESERVE); hasChanged = true; } @@ -408,7 +409,7 @@ public class Player { this.nextStaminaRecover = time; } - this.nextStaminaRecover += 5 * 60 * 1000; + this.nextStaminaRecover += LunarCore.getConfig().getServerOptions().getStaminaRecoveryRate() * 1000; } // Send packet