From a5f5472853acc6a1e6353a1d9415c9c8467c0f73 Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Fri, 26 Apr 2019 11:16:53 +0200 Subject: [PATCH] Fix sign and banner placement in paperpatch --- .../protocol1_9to1_8/PaperPatch.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/PaperPatch.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/PaperPatch.java index 9330e822d..e05c24e8d 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/PaperPatch.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/listeners/protocol1_9to1_8/PaperPatch.java @@ -25,15 +25,16 @@ public class PaperPatch extends ViaBukkitListener { @EventHandler(ignoreCancelled = true) public void onPlace(BlockPlaceEvent e) { if (isOnPipe(e.getPlayer())) { - Location diff = e.getPlayer().getLocation().subtract(e.getBlock().getLocation().add(0.5D, 0, 0.5D)); + Location location = e.getPlayer().getLocation(); + Location diff = location.subtract(e.getBlock().getLocation().add(0.5D, 0, 0.5D)); Material block = e.getBlockPlaced().getType(); - if (!block.isSolid()) { + if (isPlacable(block)) { return; } - if (e.getPlayer().getLocation().getBlock().equals(e.getBlock())) { + if (location.getBlock().equals(e.getBlock())) { e.setCancelled(true); } else { - if (e.getPlayer().getLocation().getBlock().getRelative(BlockFace.UP).equals(e.getBlock())) { + if (location.getBlock().getRelative(BlockFace.UP).equals(e.getBlock())) { e.setCancelled(true); } else { // Within radius of block @@ -55,4 +56,18 @@ public class PaperPatch extends ViaBukkitListener { } } } + + private boolean isPlacable(Material material) { + if (!material.isSolid()) return true; + // signs and banners + switch (material.getId()) { + case 63: + case 68: + case 176: + case 177: + return true; + default: + return false; + } + } }