Avoid saved WorldGuard regions during allocation

This commit is contained in:
2026-09-27 08:24:03 -07:00
parent 60c3d41e50
commit 99f6195542
5 changed files with 118 additions and 2 deletions

View File

@@ -90,6 +90,7 @@ public class MetropolisPlugin extends JavaPlugin {
private HashMap<UUID, UserOverride> _userOverrides;
private List<HomePermissionOverride> _permissionOverrides;
private HashMap<UUID, Integer> _currentHomes;
private List<Cuboid> _savedWorldGuardBounds = List.of();
private PlayerJoinListener _playerJoinListener = null;
@@ -891,7 +892,7 @@ public class MetropolisPlugin extends JavaPlugin {
return true;
}
return false;
return WorldGuardRegionOccupancy.overlapsAny(cuboid, _savedWorldGuardBounds);
}
private boolean areBlocksOccupied(int row, int col, int i) {
@@ -911,6 +912,8 @@ public class MetropolisPlugin extends JavaPlugin {
}
private Cuboid findNextUnownedHomeRegion(int plotMultiplier) {
refreshSavedWorldGuardBounds();
int row = 0;
int col = 0;
int ring = 0;
@@ -995,6 +998,11 @@ public class MetropolisPlugin extends JavaPlugin {
return null;
}
private void refreshSavedWorldGuardBounds() {
_savedWorldGuardBounds =
WorldGuardRegionOccupancy.boundsToAvoid(regionManager.getRegions().values());
}
private boolean isAvailableSupportedPlot(int row, int col, int plotMultiplier, int level) {
return !areBlocksOccupied(row, col, plotMultiplier, level)
&& PlotLevelSupport.hasCompleteSupport(