From ce3c334ac5bc8de773a7d4a27d19867b44b43661 Mon Sep 17 00:00:00 2001 From: Vatuu <21113232+Vatuu@users.noreply.github.com> Date: Wed, 27 Jul 2022 19:35:18 +0200 Subject: [PATCH] Fixed vines and derivatives not placing properly in objects. --- .../volmit/iris/engine/object/IrisObject.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObject.java b/src/main/java/com/volmit/iris/engine/object/IrisObject.java index 13a724aae..adbfdfc7c 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisObject.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisObject.java @@ -47,9 +47,11 @@ import lombok.experimental.Accessors; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.block.TileState; import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.MultipleFacing; import org.bukkit.block.data.Waterlogged; import org.bukkit.block.data.type.Leaves; import org.bukkit.util.BlockVector; @@ -803,6 +805,16 @@ public class IrisObject extends IrisRegistrant { ((Waterlogged) data).setWaterlogged(true); } + if(B.isVineBlock(data)) { + MultipleFacing f = (MultipleFacing)data; + for(BlockFace face : f.getAllowedFaces()) { + BlockData facingBlock = placer.get(xx + face.getModX(), yy + face.getModY(), zz + face.getModZ()); + if(B.isSolid(facingBlock) && !B.isVineBlock(facingBlock)) { + f.setFace(face, true); + } + } + } + if(listener != null) { listener.accept(new BlockPosition(xx, yy, zz)); } @@ -895,8 +907,20 @@ public class IrisObject extends IrisRegistrant { if(settings.getYMax() != 0) lowerBound -= Math.min(config.getStiltSettings().getYMax() - (lowest + y - highest), 0); } - for(int j = lowest + y; j > lowerBound; j--) + for(int j = lowest + y; j > lowerBound; j--) { + if(B.isVineBlock(d)) { + MultipleFacing f = (MultipleFacing)d; + for(BlockFace face : f.getAllowedFaces()) { + BlockData facingBlock = placer.get(xx + face.getModX(), j + face.getModY(), zz + face.getModZ()); + Iris.warn(facingBlock.getAsString()); + if(B.isSolid(facingBlock) && !B.isVineBlock(facingBlock)) { + f.setFace(face, true); + } + } + } placer.set(xx, j, zz, d); + } + } readLock.unlock();