Update from Git Manager GUI

This commit is contained in:
2026-01-28 22:06:29 +01:00
parent 9d2a9908b4
commit 52fd35d9de
10 changed files with 645 additions and 250 deletions

View File

@@ -70,15 +70,21 @@ public class FatigueManager implements Listener {
double decrease = decreaseRate;
long time = player.getWorld().getTime();
boolean isNight = time >= 12000 && time < 24000;
// Night increases fatigue decrease
if (isNight) {
decrease *= nightMultiplier;
}
// Activity increases fatigue decrease
if (player.isSprinting() || player.isSwimming()) {
decrease *= activityMultiplier;
}
fatigue = Math.max(0, fatigue - (int) decrease);
fatigueLevels.put(playerId, fatigue);
// Critical fatigue (low energy)
if (fatigue <= criticalThreshold && fatigue > 0) {
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, slownessDuration, slownessAmplifier));
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, blurDuration, blurAmplifier));
@@ -87,7 +93,9 @@ public class FatigueManager implements Listener {
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
setLastMessageTime(playerId);
}
} else if (fatigue == 0 && deathEnabled && !deathTimers.containsKey(playerId)) {
}
// Zero fatigue - death warning
else if (fatigue == 0 && deathEnabled && !deathTimers.containsKey(playerId)) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("fatigue.warning", "§4Deine Erschöpfung wird dich umbringen!")));
player.getWorld().playSound(player.getLocation(), "entity.player.hurt", 1.0f, 1.0f);
deathTimers.put(playerId, new BukkitRunnable() {
@@ -99,14 +107,16 @@ public class FatigueManager implements Listener {
deathTimers.remove(playerId);
}
}.runTaskLater(plugin, 20L * deathDelay));
} else if (fatigue >= maxFatigue && canSendMessage(playerId) && !criticalMessageOnly) {
}
// Full fatigue (well rested)
else if (fatigue >= maxFatigue && canSendMessage(playerId) && !criticalMessageOnly) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((SurvivalMechanics) plugin).getLangConfig().getString("fatigue.rested", "§aDu erwachst erholt und voller Kraft!")));
player.getWorld().playSound(player.getLocation(), "entity.player.levelup", 1.0f, 1.0f);
setLastMessageTime(playerId);
}
}
}
}.runTaskTimer(plugin, 0L, 20L * 60); // Alle 60 Sekunden
}.runTaskTimer(plugin, 0L, 20L * 60); // Every 60 seconds
}
@EventHandler
@@ -114,10 +124,13 @@ public class FatigueManager implements Listener {
Player player = event.getPlayer();
UUID playerId = player.getUniqueId();
int fatigue = fatigueLevels.getOrDefault(playerId, maxFatigue);
// Climbing at high altitudes drains fatigue faster
if (player.isClimbing() && player.getLocation().getY() > climbingHeightThreshold) {
double heightFactor = 1 + ((player.getLocation().getY() - climbingHeightThreshold) * climbingHeightScaling);
fatigue = Math.max(0, fatigue - (int) (decreaseRate * climbingMultiplier * heightFactor));
fatigueLevels.put(playerId, fatigue);
if (fatigue <= criticalThreshold && fatigue > 0 && canSendMessage(playerId)) {
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, slownessDuration, slownessAmplifier));
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, blurDuration, blurAmplifier));
@@ -126,7 +139,11 @@ public class FatigueManager implements Listener {
setLastMessageTime(playerId);
}
}
((SurvivalMechanics) plugin).getStaminaManager().applyFatiguePenalty(playerId, staminaPenalty);
// Apply fatigue penalty to stamina
if (fatigue <= criticalThreshold) {
((SurvivalMechanics) plugin).getStaminaManager().applyFatiguePenalty(playerId, staminaPenalty);
}
}
private boolean canSendMessage(UUID playerId) {
@@ -144,4 +161,4 @@ public class FatigueManager implements Listener {
public void loadFatigue(UUID playerId, int fatigue) {
fatigueLevels.put(playerId, fatigue);
}
}
}