Merge remote-tracking branch 'origin/develop-bloodmoon' into develop-bloodmoon

# Conflicts:
#	craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/bloodmoon/Bloodmoon.java
This commit is contained in:
2025-11-01 17:32:36 +01:00
2 changed files with 19 additions and 12 deletions

View File

@@ -78,7 +78,7 @@ public class Bloodmoon extends Appliance {
); );
private final boolean hordesEnabled = true; private final boolean hordesEnabled = true;
private final int hordeSpawnRateTicks = 800; private final int hordeSpawnRateTicks = 800;
private final int hordeSpawnRateVariationTicks = 100; private final int hordeSpawnRateVariationTicks = 800;
private final int hordeMinPopulation = 3; private final int hordeMinPopulation = 3;
private final int hordeMaxPopulation = 10; private final int hordeMaxPopulation = 10;
private final int hordeSpawnDistance = 10; private final int hordeSpawnDistance = 10;
@@ -87,6 +87,7 @@ public class Bloodmoon extends Appliance {
EntityType.SKELETON, EntityType.SKELETON,
EntityType.SPIDER EntityType.SPIDER
); );
private final Map<Player, @Nullable BukkitTask> hordeSpawnTasks = new HashMap<>();
private @Nullable BukkitTask hordeSpawnTask = null; private @Nullable BukkitTask hordeSpawnTask = null;
public final int bloodmoonLength = 12000; public final int bloodmoonLength = 12000;
public final int ticksPerDay = 24000; public final int ticksPerDay = 24000;
@@ -133,12 +134,17 @@ public class Bloodmoon extends Appliance {
} }
private int getRandomHordeSpawnDelay() { private int getRandomHordeSpawnDelay() {
return this.hordeSpawnRateTicks + ThreadLocalRandom.current().nextInt(-this.hordeSpawnRateVariationTicks, this.hordeSpawnRateVariationTicks); return this.hordeSpawnRateTicks + ThreadLocalRandom.current().nextInt(this.hordeSpawnRateVariationTicks);
} }
private void startHordeSpawning(int delay) { private void startHordeSpawning(int delay) {
if(this.hordeSpawnTask != null) this.hordeSpawnTask.cancel(); Bukkit.getOnlinePlayers().forEach(player -> this.startHordeSpawning(delay, player));
this.hordeSpawnTask = Bukkit.getScheduler().runTaskLater( }
private void startHordeSpawning(int delay, Player player) {
@Nullable BukkitTask task = this.hordeSpawnTasks.get(player);
if(task != null) task.cancel();
task = Bukkit.getScheduler().runTaskLater(
Main.instance(), Main.instance(),
() -> { () -> {
if(!this.bloodmoonIsActive()) return; if(!this.bloodmoonIsActive()) return;
@@ -147,6 +153,7 @@ public class Bloodmoon extends Appliance {
}, },
delay delay
); );
this.hordeSpawnTasks.put(player, task);
} }
public void addPlayerToBossBar(Player player) { public void addPlayerToBossBar(Player player) {

View File

@@ -29,7 +29,7 @@ public class BloodmoonSetting extends BoolSetting implements CategorizedSetting
@Override @Override
protected String description() { protected String description() {
return "Kämpfe während dem Blutmond mit stärkeren Monstern mit besseren Drops. Kann nicht während dem Blutmond geändert werden!"; return "Kämpfe während dem Blutmond gegen stärkere Monster mit besseren Drops. Kann nicht während dem Blutmond geändert werden!";
} }
@Override @Override