diff --git a/src/main/java/net/minestom/server/instance/GeneratorImpl.java b/src/main/java/net/minestom/server/instance/GeneratorImpl.java index 28020bc5b..e4169b8d9 100644 --- a/src/main/java/net/minestom/server/instance/GeneratorImpl.java +++ b/src/main/java/net/minestom/server/instance/GeneratorImpl.java @@ -184,10 +184,12 @@ final class GeneratorImpl { public void fork(@NotNull Consumer consumer) { DynamicFork dynamicFork = new DynamicFork(); consumer.accept(dynamicFork); + final Point startSection = dynamicFork.minSection; + if (startSection == null) + return; // No block has been placed final int width = dynamicFork.width; final int height = dynamicFork.height; final int depth = dynamicFork.depth; - final Point startSection = dynamicFork.minSection; final List sections = dynamicFork.sections; registerFork(startSection, sections, width, height, depth); } diff --git a/src/test/java/net/minestom/server/instance/GeneratorForkConsumerIntegrationTest.java b/src/test/java/net/minestom/server/instance/GeneratorForkConsumerIntegrationTest.java index d94f0d96c..51ac7bade 100644 --- a/src/test/java/net/minestom/server/instance/GeneratorForkConsumerIntegrationTest.java +++ b/src/test/java/net/minestom/server/instance/GeneratorForkConsumerIntegrationTest.java @@ -8,6 +8,7 @@ import org.junit.jupiter.api.Test; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -15,6 +16,23 @@ import static org.junit.jupiter.api.Assertions.assertNull; @EnvTest public class GeneratorForkConsumerIntegrationTest { + @Test + public void empty(Env env) { + var manager = env.process().instance(); + var instance = manager.createInstanceContainer(); + AtomicReference failed = new AtomicReference<>(); + instance.setGenerator(unit -> { + try { + unit.fork(setter -> { + }); + } catch (Exception e) { + failed.set(e); + } + }); + instance.loadChunk(0, 0).join(); + assertNull(failed.get(), "Failed: " + failed.get()); + } + @Test public void local(Env env) { var manager = env.process().instance();