Update from Git Manager GUI
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user