fix_rotate #1
|
|
@ -17,14 +17,12 @@ import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.inventory.EquipmentSlot;
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class RotateBlockEvent implements Listener {
|
public class RotateBlockEvent implements Listener {
|
||||||
|
|
||||||
private static final org.slf4j.Logger log = LoggerFactory.getLogger(RotateBlockEvent.class);
|
|
||||||
private final HashSet<UUID> rotateEnabled = new HashSet<>();
|
private final HashSet<UUID> rotateEnabled = new HashSet<>();
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
private static final List<BlockFace> VALID_FOUR_STATES = List.of(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST);
|
private static final List<BlockFace> VALID_FOUR_STATES = List.of(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST);
|
||||||
|
|
@ -66,11 +64,9 @@ public class RotateBlockEvent implements Listener {
|
||||||
logger.debug(String.format("Material %s with action %s", type, event.getAction().isLeftClick() ? "left click" : "right click"));
|
logger.debug(String.format("Material %s with action %s", type, event.getAction().isLeftClick() ? "left click" : "right click"));
|
||||||
if (type.equals(Material.IRON_TRAPDOOR) && event.getAction().isLeftClick()) {
|
if (type.equals(Material.IRON_TRAPDOOR) && event.getAction().isLeftClick()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
logger.debug("Toggling trap door");
|
|
||||||
toggleTrapDoor(block, player);
|
toggleTrapDoor(block, player);
|
||||||
} else if (Tag.BIG_DRIPLEAF_PLACEABLE.isTagged(type) && event.getAction().isLeftClick()) {
|
} else if (type.equals(Material.BIG_DRIPLEAF) && event.getAction().isLeftClick()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
logger.debug("Toggling drip leaf");
|
|
||||||
toggleDripLeaf(block, player);
|
toggleDripLeaf(block, player);
|
||||||
} else if (Tag.STAIRS.isTagged(type)) {
|
} else if (Tag.STAIRS.isTagged(type)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
@ -94,7 +90,7 @@ public class RotateBlockEvent implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleDripLeaf(Block block, Player player) {
|
private void toggleDripLeaf(Block block, Player player) {
|
||||||
if (!(block instanceof BigDripleaf bigDripleaf)) {
|
if (!(block.getBlockData() instanceof BigDripleaf bigDripleaf)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,31 +101,25 @@ public class RotateBlockEvent implements Listener {
|
||||||
BigDripleaf.Tilt[] values = BigDripleaf.Tilt.values();
|
BigDripleaf.Tilt[] values = BigDripleaf.Tilt.values();
|
||||||
|
|
||||||
int ordinal = bigDripleaf.getTilt().ordinal();
|
int ordinal = bigDripleaf.getTilt().ordinal();
|
||||||
logger.debug("drip leaf is on tilt %d".formatted(ordinal));
|
|
||||||
if (++ordinal == values.length) {
|
if (++ordinal == values.length) {
|
||||||
ordinal = 0;
|
ordinal = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bigDripleaf.setTilt(values[ordinal]);
|
bigDripleaf.setTilt(values[ordinal]);
|
||||||
logger.debug("drip leaf set to tilt %d".formatted(ordinal));
|
|
||||||
block.setBlockAndForget(bigDripleaf);
|
block.setBlockAndForget(bigDripleaf);
|
||||||
logger.debug("drip leaf set");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleTrapDoor(Block block, Player player) {
|
private void toggleTrapDoor(Block block, Player player) {
|
||||||
if (!(block instanceof TrapDoor trapDoor)) {
|
if (!(block.getBlockData() instanceof TrapDoor trapDoor)) {
|
||||||
logger.debug("Trap door early return 1");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cannotBuild(block, player)) {
|
if (cannotBuild(block, player)) {
|
||||||
logger.debug("Trap door early return 2");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug("Trap door is %s".formatted(trapDoor.isOpen() ? "open" : "closed"));
|
|
||||||
trapDoor.setOpen(!trapDoor.isOpen());
|
trapDoor.setOpen(!trapDoor.isOpen());
|
||||||
logger.debug(String.format("Trap door set to %s", trapDoor.isOpen() ? "open" : "close"));
|
block.setBlockAndForget(trapDoor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleRails(Block block, Player player) {
|
private void toggleRails(Block block, Player player) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user