From e35bc71f962b694fdd34ec4a982f171f567b8052 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sun, 9 Jun 2024 17:09:11 +0200 Subject: [PATCH] Add Big Dripleaf toggle functionality The import statements were simplified to import all block data types at once. On block click, the event listener now checks if the block being clicked is a Big Dripleaf and toggles its tilt accordingly if it is. It also ensures player permissions to build before attempting the toggle action. --- .../event_listeners/RotateBlockEvent.java | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java b/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java index 2a592fd..b6cdb08 100644 --- a/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java +++ b/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java @@ -7,10 +7,7 @@ import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.data.*; -import org.bukkit.block.data.type.Fence; -import org.bukkit.block.data.type.Stairs; -import org.bukkit.block.data.type.TrapDoor; -import org.bukkit.block.data.type.Wall; +import org.bukkit.block.data.type.*; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -70,9 +67,12 @@ public class RotateBlockEvent implements Listener { } else if(Tag.RAILS.isTagged(type)) { event.setCancelled(true); toggleRails(block, player); - } else if (type.equals(Material.IRON_TRAPDOOR) && event.getAction().isLeftClick()){ + } else if (type.equals(Material.IRON_TRAPDOOR) && event.getAction().isLeftClick()) { event.setCancelled(true); toggleTrapDoor(block, player); + } else if (Tag.BIG_DRIPLEAF_PLACEABLE.isTagged(type) && event.getAction().isLeftClick()) { + event.setCancelled(true); + toggleDripLeaf(block, player); } else if (block.getBlockData() instanceof Directional directional) { event.setCancelled(true); rotateDirectionalBlock(block, directional, player); @@ -82,6 +82,28 @@ public class RotateBlockEvent implements Listener { } } + private void toggleDripLeaf(Block block, Player player) { + if (!(block instanceof BigDripleaf bigDripleaf)) { + return; + } + + if (cannotBuild(block, player)) { + return; + } + + BigDripleaf.Tilt[] values = BigDripleaf.Tilt.values(); + + int ordinal = bigDripleaf.getTilt().ordinal(); + if (ordinal == values.length) { + ordinal = 0; + } else { + ordinal++; + } + + bigDripleaf.setTilt(values[ordinal]); + block.setBlockAndForget(bigDripleaf); + } + private void toggleTrapDoor(Block block, Player player) { if (!(block instanceof TrapDoor trapDoor)) { return;