From 1a29ea302e14d97934ba30e1845596fe9b4f7ff9 Mon Sep 17 00:00:00 2001 From: Vatuu <21113232+Vatuu@users.noreply.github.com> Date: Tue, 30 Aug 2022 18:06:17 +0200 Subject: [PATCH] Fixed vines not properly generating using decorators. --- .../iris/engine/modifier/IrisPostModifier.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java index 3b2a50b04..580f258fe 100644 --- a/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java +++ b/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java @@ -28,6 +28,7 @@ import com.volmit.iris.util.scheduling.PrecisionStopwatch; import org.bukkit.Material; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Levelled; +import org.bukkit.block.data.MultipleFacing; import org.bukkit.block.data.Waterlogged; import org.bukkit.block.data.type.Slab; @@ -221,6 +222,16 @@ public class IrisPostModifier extends EngineAssignedModifier { // Foliage b = getPostBlock(x, h + 1, z, currentPostX, currentPostZ, currentData); + if(B.isVineBlock(b) && b instanceof MultipleFacing f) { + int finalH = h + 1; + + f.getAllowedFaces().forEach(face -> { + BlockData d = getPostBlock(x + face.getModX(), finalH + face.getModY(), z + face.getModZ(), currentPostX, currentPostZ, currentData); + f.setFace(face, !B.isAir(d) && !B.isVineBlock(d)); + }); + setPostBlock(x, h + 1, z, b, currentPostX, currentPostZ, currentData); + } + if(B.isFoliage(b) || b.getMaterial().equals(Material.DEAD_BUSH)) { Material onto = getPostBlock(x, h, z, currentPostX, currentPostZ, currentData).getMaterial(); @@ -242,7 +253,7 @@ public class IrisPostModifier extends EngineAssignedModifier { public boolean isSolid(int x, int y, int z, int currentPostX, int currentPostZ, Hunk currentData) { BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData); - return d.getMaterial().isSolid(); + return d.getMaterial().isSolid() && !B.isVineBlock(d); } public boolean isSolidNonSlab(int x, int y, int z, int currentPostX, int currentPostZ, Hunk currentData) {