Allows not generating initial home and requiring users to acquire one when they want.

This commit is contained in:
2026-09-27 05:10:05 -07:00
parent de3651f22c
commit 87b5efed8c
5 changed files with 42 additions and 8 deletions

View File

@@ -119,6 +119,7 @@ public class MetropolisPlugin extends JavaPlugin {
private int wallHeight = 128;
int _maxPlots = 1;
int _plotMultiplier = 1;
private int initialHomeCount = 1;
private Cuboid _spawnCuboid = null;
private Cuboid _cityCuboid = null;
@@ -199,6 +200,7 @@ public class MetropolisPlugin extends JavaPlugin {
worldName = safeGetStringFromConfig(config, "worldname");
_plotMultiplier = safeGetIntFromConfig(config, "plot.multiplier");
_maxPlots = safeGetIntFromConfig(config, "plot.maxPerPlayer");
initialHomeCount = normalizeInitialHomeCount(safeGetIntFromConfig(config, "plot.initial"));
buildUserOverrides();
_permissionOverrides =
@@ -556,6 +558,9 @@ public class MetropolisPlugin extends JavaPlugin {
setHome(playerId, existingHome.getNumber());
return existingHome;
}
if (!shouldAutoGenerateInitialHome()) {
return null;
}
if (DEBUG) {
getLogger().info(String.format("Creating home for player %s", player.getName()));
}
@@ -568,6 +573,26 @@ public class MetropolisPlugin extends JavaPlugin {
return home;
}
public static int normalizeInitialHomeCount(int count) {
return Math.max(0, count);
}
public static boolean shouldAutoGenerateInitialHome(int count) {
return count > 0;
}
public int getInitialHomeCount() {
return initialHomeCount;
}
public void setInitialHomeCount(int count) {
initialHomeCount = normalizeInitialHomeCount(count);
}
public boolean shouldAutoGenerateInitialHome() {
return shouldAutoGenerateInitialHome(initialHomeCount);
}
private void generateFloor(Cuboid plotCuboid) {
int x = 0;
int y = roadLevel;

View File

@@ -17,6 +17,7 @@ along with Metropolis. If not, see <https://www.gnu.org/licenses/agpl-3.0.txt>.
package com.majinnaibu.bukkitplugins.metropolis.commands;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
@@ -64,4 +65,14 @@ class MetropolisHomeAcquireTest {
verify(plugin, never()).acquireHome(player);
}
@Test
void supportsDisablingAutomaticInitialHomeAllocation() {
assertEquals(1, MetropolisPlugin.normalizeInitialHomeCount(1));
assertTrue(MetropolisPlugin.shouldAutoGenerateInitialHome(1));
int zero = MetropolisPlugin.normalizeInitialHomeCount(0);
assertEquals(0, zero);
assertFalse(MetropolisPlugin.shouldAutoGenerateInitialHome(zero));
}
}