Add next-wave-delay per-arena setting.
This commit adds a new per-arena config-file setting, next-wave-delay. When a new wave is about to spawn, a positive next-wave-delay value will cause the spawning of the wave to be delayed by that amount of seconds, similar to how first-wave-delay delays the spawning of the first wave. By moving all of the actual spawning logic into a new method and simply referencing that as a Runnable, we can avoid having to set weird boolean flags and re-scheduling the MASpawnThread itself. Closes #449
This commit is contained in:
@@ -38,6 +38,7 @@ public class MASpawnThread implements Runnable
|
|||||||
private int playerCount, monsterLimit;
|
private int playerCount, monsterLimit;
|
||||||
private boolean waveClear, bossClear, preBossClear, wavesAsLevel;
|
private boolean waveClear, bossClear, preBossClear, wavesAsLevel;
|
||||||
private int waveInterval;
|
private int waveInterval;
|
||||||
|
private int nextWaveDelay;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new monster spawner for the input arena.
|
* Create a new monster spawner for the input arena.
|
||||||
@@ -70,6 +71,7 @@ public class MASpawnThread implements Runnable
|
|||||||
preBossClear = arena.getSettings().getBoolean("clear-wave-before-boss", false);
|
preBossClear = arena.getSettings().getBoolean("clear-wave-before-boss", false);
|
||||||
wavesAsLevel = arena.getSettings().getBoolean("display-waves-as-level", false);
|
wavesAsLevel = arena.getSettings().getBoolean("display-waves-as-level", false);
|
||||||
waveInterval = arena.getSettings().getInt("wave-interval", 3);
|
waveInterval = arena.getSettings().getInt("wave-interval", 3);
|
||||||
|
nextWaveDelay = arena.getSettings().getInt("next-wave-delay", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -104,6 +106,18 @@ public class MASpawnThread implements Runnable
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delay the next wave
|
||||||
|
if (nextWaveDelay > 0) {
|
||||||
|
arena.scheduleTask(this::spawnNextWave, nextWaveDelay * 20);
|
||||||
|
} else {
|
||||||
|
spawnNextWave();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void spawnNextWave() {
|
||||||
|
// Grab the wave number.
|
||||||
|
int nextWave = waveManager.getWaveNumber() + 1;
|
||||||
|
|
||||||
// Grant rewards (if any) for the wave that just ended
|
// Grant rewards (if any) for the wave that just ended
|
||||||
grantRewards(nextWave - 1);
|
grantRewards(nextWave - 1);
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ min-players: 0
|
|||||||
max-players: 0
|
max-players: 0
|
||||||
max-join-distance: 0
|
max-join-distance: 0
|
||||||
first-wave-delay: 5
|
first-wave-delay: 5
|
||||||
|
next-wave-delay: 0
|
||||||
wave-interval: 15
|
wave-interval: 15
|
||||||
final-wave: 0
|
final-wave: 0
|
||||||
monster-limit: 100
|
monster-limit: 100
|
||||||
|
|||||||
Reference in New Issue
Block a user