diff --git a/src/main/java/world/bentobox/caveblock/CaveBlock.java b/src/main/java/world/bentobox/caveblock/CaveBlock.java index d414b04..22dacc5 100644 --- a/src/main/java/world/bentobox/caveblock/CaveBlock.java +++ b/src/main/java/world/bentobox/caveblock/CaveBlock.java @@ -80,6 +80,11 @@ public void onReload() { super.onReload(); this.loadSettings(); + // Refresh the generators so reloaded settings (world depth, materials, etc.) + // apply to newly generated chunks without a server restart. + this.chunkNormalGenerator.reload(); + this.chunkNetherGenerator.reload(); + this.chunkEndGenerator.reload(); } diff --git a/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java b/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java index 229aed4..e7680bc 100644 --- a/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java +++ b/src/main/java/world/bentobox/caveblock/generators/ChunkGeneratorWorld.java @@ -40,7 +40,7 @@ public class ChunkGeneratorWorld extends ChunkGenerator { // ------------------------------------------------------------------------- private final CaveBlock addon; - private final Settings settings; + private Settings settings; private final World.Environment environment; private final List blockPopulators; @@ -65,9 +65,13 @@ public ChunkGeneratorWorld(CaveBlock addon, World.Environment environment) { // ------------------------------------------------------------------------- /** - * Called when config is reloaded. Rebuilds block populators. + * Called when config is reloaded. Re-reads the live settings (a reload replaces + * the {@link Settings} instance) and rebuilds block populators so that changes + * such as world depth, roof/floor and main blocks take effect on newly + * generated chunks without a full server restart. */ public void reload() { + this.settings = addon.getSettings(); this.blockPopulators.clear(); // Overworld uses vanilla decorations (shouldGenerateDecorations = true). // Nether and End use NewMaterialPopulator for ore/block placement. diff --git a/src/test/java/world/bentobox/caveblock/CaveBlockTest.java b/src/test/java/world/bentobox/caveblock/CaveBlockTest.java index fe01c91..1b893ad 100644 --- a/src/test/java/world/bentobox/caveblock/CaveBlockTest.java +++ b/src/test/java/world/bentobox/caveblock/CaveBlockTest.java @@ -155,6 +155,8 @@ void testOnEnable() { */ @Test void testOnReload() { + // onReload refreshes the generators, which are created in onLoad(). + addon.onLoad(); addon.onReload(); File check = new File("addons/CaveBlock", "config.yml"); assertTrue(check.exists());