Add functionality to toggle iron trapdoors

Method 'toggleTrapDoor' has been added to the RotateBlockEvent class. This function allows players to open and close trapdoors by left-clicking on them if the block is an instance of a TrapDoor. The original behavior of the block will be preserved when the player does not have build permissions.
This commit is contained in:
Teriuihi 2024-06-09 16:24:08 +02:00
parent 94ec002810
commit a95a7bc27b

View File

@ -9,6 +9,7 @@ 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.entity.Player;
import org.bukkit.event.EventHandler;
@ -69,6 +70,9 @@ 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()){
event.setCancelled(true);
toggleTrapDoor(block, player);
} else if (block.getBlockData() instanceof Directional directional) {
event.setCancelled(true);
rotateDirectionalBlock(block, directional, player);
@ -78,6 +82,18 @@ public class RotateBlockEvent implements Listener {
}
}
private void toggleTrapDoor(Block block, Player player) {
if (!(block instanceof TrapDoor trapDoor)) {
return;
}
if (cannotBuild(block, player)) {
return;
}
trapDoor.setOpen(!trapDoor.isOpen());
}
private void toggleRails(Block block, Player player) {
if (!(block instanceof Rail rail)) {
return;