Add leave-buffer-distance to tolerate knockback at region edges
build / build (push) Successful in 2m6s
build / draft (push) Skipped

This commit is contained in:
Michael Burgess
2026-08-06 23:23:24 -04:00
parent d1eb4191e9
commit 344c9ca6ca
4 changed files with 11 additions and 1 deletions
@@ -134,6 +134,7 @@ public class ArenaImpl implements Arena
private Map<Integer, ThingPicker> everyWaveMap, afterWaveMap, waveTiersMap; private Map<Integer, ThingPicker> everyWaveMap, afterWaveMap, waveTiersMap;
private double spawnpointMinDistanceSquared; private double spawnpointMinDistanceSquared;
private double spawnpointMaxDistanceSquared; private double spawnpointMaxDistanceSquared;
private int leaveBufferDistance;
// Misc // Misc
private ArenaListener eventListener; private ArenaListener eventListener;
@@ -220,6 +221,7 @@ public class ArenaImpl implements Arena
this.waveTiersMap = MAUtils.getArenaRewardMap(plugin, section, name, "tiers"); this.waveTiersMap = MAUtils.getArenaRewardMap(plugin, section, name, "tiers");
this.spawnpointMinDistanceSquared = Math.pow(settings.getDouble("spawnpoint-min-distance", 0), 2); this.spawnpointMinDistanceSquared = Math.pow(settings.getDouble("spawnpoint-min-distance", 0), 2);
this.spawnpointMaxDistanceSquared = Math.pow(settings.getDouble("spawnpoint-max-distance", 15), 2); this.spawnpointMaxDistanceSquared = Math.pow(settings.getDouble("spawnpoint-max-distance", 15), 2);
this.leaveBufferDistance = settings.getInt("leave-buffer-distance", 3);
// Misc // Misc
this.eventListener = new ArenaListener(this, plugin); this.eventListener = new ArenaListener(this, plugin);
@@ -403,6 +405,11 @@ public class ArenaImpl implements Arena
return spawnpointMaxDistanceSquared; return spawnpointMaxDistanceSquared;
} }
@Override
public int getLeaveBufferDistance() {
return leaveBufferDistance;
}
@Override @Override
public WaveManager getWaveManager() { public WaveManager getWaveManager() {
return waveManager; return waveManager;
@@ -345,7 +345,7 @@ public class MASpawnThread implements Runnable
private void removeCheatingPlayers() { private void removeCheatingPlayers() {
List<Player> players = new ArrayList<>(arena.getPlayersInArena()); List<Player> players = new ArrayList<>(arena.getPlayersInArena());
for (Player p : players) { for (Player p : players) {
if (region.contains(p.getLocation())) { if (region.contains(p.getLocation(), arena.getLeaveBufferDistance())) {
continue; continue;
} }
@@ -86,6 +86,8 @@ public interface Arena
double getSpawnpointMaxDistanceSquared(); double getSpawnpointMaxDistanceSquared();
int getLeaveBufferDistance();
WaveManager getWaveManager(); WaveManager getWaveManager();
ArenaListener getEventListener(); ArenaListener getEventListener();
+1
View File
@@ -29,6 +29,7 @@ wave-interval: 15
final-wave: 0 final-wave: 0
spawnpoint-min-distance: 0 spawnpoint-min-distance: 0
spawnpoint-max-distance: 15 spawnpoint-max-distance: 15
leave-buffer-distance: 3
monster-limit: 100 monster-limit: 100
monster-exp: false monster-exp: false
keep-exp: false keep-exp: false