Update from Git Manager GUI
This commit is contained in:
@@ -68,16 +68,23 @@ public class StaminaManager implements Listener {
|
||||
int hunger = ((SurvivalMechanics) plugin).getHungerManager().getHunger(playerId);
|
||||
int thirst = ((SurvivalMechanics) plugin).getThirstManager().getThirst(playerId);
|
||||
int fatigue = ((SurvivalMechanics) plugin).getFatigueManager().getFatigue(playerId);
|
||||
|
||||
double regen = regenRate;
|
||||
|
||||
// Low hunger or thirst reduces stamina regeneration
|
||||
if (hunger < criticalThreshold || thirst < criticalThreshold) {
|
||||
regen *= hungerThirstPenalty;
|
||||
}
|
||||
|
||||
// Low fatigue reduces stamina regeneration
|
||||
if (fatigue < criticalThreshold) {
|
||||
regen *= fatiguePenalty;
|
||||
}
|
||||
|
||||
stamina = Math.min(maxStamina, stamina + (int) regen);
|
||||
staminaLevels.put(playerId, stamina);
|
||||
|
||||
// Warning when stamina is too low to sprint
|
||||
if (stamina <= criticalThreshold && canSendMessage(playerId)) {
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("stamina.critical-sprint", "§4Du bist zu schwach, um zu sprinten!")));
|
||||
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
|
||||
@@ -85,7 +92,7 @@ public class StaminaManager implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(plugin, 0L, 20L * 60); // Alle 60 Sekunden
|
||||
}.runTaskTimer(plugin, 0L, 20L * 60); // Every 60 seconds
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -93,17 +100,22 @@ public class StaminaManager implements Listener {
|
||||
Player player = event.getPlayer();
|
||||
UUID playerId = player.getUniqueId();
|
||||
int stamina = staminaLevels.getOrDefault(playerId, maxStamina);
|
||||
if (event.isSprinting() && stamina < minToSprint) {
|
||||
event.setCancelled(true);
|
||||
if (canSendMessage(playerId)) {
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("stamina.critical-sprint", "§4Du bist zu schwach, um zu sprinten!")));
|
||||
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
|
||||
setLastMessageTime(playerId);
|
||||
|
||||
if (event.isSprinting()) {
|
||||
// Prevent sprinting if stamina is too low
|
||||
if (stamina < minToSprint) {
|
||||
event.setCancelled(true);
|
||||
if (canSendMessage(playerId)) {
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("stamina.critical-sprint", "§4Du bist zu schwach, um zu sprinten!")));
|
||||
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
|
||||
setLastMessageTime(playerId);
|
||||
}
|
||||
} else {
|
||||
// Drain stamina when sprinting
|
||||
stamina = Math.max(0, stamina - (int) (decreaseRate * sprintMultiplier));
|
||||
staminaLevels.put(playerId, stamina);
|
||||
applyVulnerabilityIncrease(playerId);
|
||||
}
|
||||
} else if (event.isSprinting()) {
|
||||
stamina = Math.max(0, stamina - (int) (decreaseRate * sprintMultiplier));
|
||||
staminaLevels.put(playerId, stamina);
|
||||
applyVulnerabilityIncrease(playerId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,19 +124,25 @@ public class StaminaManager implements Listener {
|
||||
Player player = event.getPlayer();
|
||||
UUID playerId = player.getUniqueId();
|
||||
int stamina = staminaLevels.getOrDefault(playerId, maxStamina);
|
||||
|
||||
// Jumping drains stamina
|
||||
if (player.getVelocity().getY() > 0 && !player.isOnGround()) {
|
||||
stamina = Math.max(0, stamina - (int) (decreaseRate * jumpMultiplier));
|
||||
staminaLevels.put(playerId, stamina);
|
||||
|
||||
if (stamina <= criticalThreshold && canSendMessage(playerId)) {
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("stamina.critical-jump", "§4Du bist zu schwach, um zu springen!")));
|
||||
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
|
||||
setLastMessageTime(playerId);
|
||||
}
|
||||
applyVulnerabilityIncrease(playerId);
|
||||
} else if (player.isClimbing() && player.getLocation().getY() > climbingHeightThreshold) {
|
||||
}
|
||||
// Climbing at high altitudes drains stamina faster
|
||||
else if (player.isClimbing() && player.getLocation().getY() > climbingHeightThreshold) {
|
||||
double heightFactor = 1 + ((player.getLocation().getY() - climbingHeightThreshold) * climbingHeightScaling);
|
||||
stamina = Math.max(0, stamina - (int) (decreaseRate * climbingMultiplier * heightFactor));
|
||||
staminaLevels.put(playerId, stamina);
|
||||
|
||||
if (stamina <= criticalThreshold && canSendMessage(playerId)) {
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("climbing.critical", "§4Das Klettern zehrt an deinen Kräften!")));
|
||||
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
|
||||
@@ -136,12 +154,16 @@ public class StaminaManager implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
|
||||
if (event.getEntity() instanceof Player) {
|
||||
Player player = (Player) event.getEntity();
|
||||
// When player attacks (is the damager)
|
||||
if (event.getDamager() instanceof Player) {
|
||||
Player player = (Player) event.getDamager();
|
||||
UUID playerId = player.getUniqueId();
|
||||
int stamina = staminaLevels.getOrDefault(playerId, maxStamina);
|
||||
|
||||
// Combat drains stamina
|
||||
stamina = Math.max(0, stamina - (int) (decreaseRate * combatMultiplier));
|
||||
staminaLevels.put(playerId, stamina);
|
||||
|
||||
if (stamina <= criticalThreshold && canSendMessage(playerId)) {
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("stamina.critical-combat", "§4Du bist zu schwach, um zu kämpfen!")));
|
||||
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
|
||||
|
||||
Reference in New Issue
Block a user