From 32b3b4cd3f2a4ff291b56c881c50e54a36459104 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 5 Jan 2021 02:00:01 -0700 Subject: [PATCH] fix StructureScript return issues --- .../structures/script/StructureScript.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index c5bdc61ab..8de232bb2 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -102,22 +102,25 @@ public class StructureScript { } public boolean execute(Location location, Chunk chunk, Random random, Rotation rotation) { - StructureBuffer buffer = cache.computeIfAbsent(location, loc -> { - StructureBuffer buf = new StructureBuffer(loc); - Block.ReturnInfo level = block.apply(new TerraImplementationArguments(buf, rotation, random, 0)); - buf.setSucceeded(!level.getLevel().equals(Block.ReturnLevel.FAIL)); - return buf; - }); + StructureBuffer buffer = computeBuffer(location, random, rotation); buffer.paste(chunk); return buffer.succeeded(); } public boolean test(Location location, Random random, Rotation rotation) { - StructureBuffer buffer = new StructureBuffer(location); - block.apply(new TerraImplementationArguments(buffer, rotation, random, 0)); + StructureBuffer buffer = computeBuffer(location, random, rotation); return buffer.succeeded(); } + private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) { + return cache.computeIfAbsent(location, loc -> { + StructureBuffer buf = new StructureBuffer(loc); + Block.ReturnInfo level = block.apply(new TerraImplementationArguments(buf, rotation, random, 0)); + buf.setSucceeded(!level.getLevel().equals(Block.ReturnLevel.FAIL)); + return buf; + }); + } + public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) { return !block.apply(new TerraImplementationArguments(buffer, rotation, random, recursions)).getLevel().equals(Block.ReturnLevel.FAIL); }