Explorar el Código

Merge pull request #116 from RedstoneFuture/fix/standing-sign-support

Reworking sign check to support standing signs too
Daniel hace 1 año
padre
commit
40c980d95c

+ 8 - 3
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/signs/MWSign.java

@@ -32,6 +32,7 @@ import org.bukkit.Bukkit;
 import org.bukkit.Location;
 import org.bukkit.Location;
 import org.bukkit.block.Block;
 import org.bukkit.block.Block;
 import org.bukkit.block.Sign;
 import org.bukkit.block.Sign;
+import org.bukkit.block.data.BlockData;
 import org.bukkit.block.data.type.WallSign;
 import org.bukkit.block.data.type.WallSign;
 
 
 @Data
 @Data
@@ -45,7 +46,7 @@ public class MWSign {
     public boolean isValid() {
     public boolean isValid() {
         boolean worldExists = location.getWorld() != null;
         boolean worldExists = location.getWorld() != null;
         boolean lobbyValid = GameManager.getInstance().getGames().containsKey(lobby);
         boolean lobbyValid = GameManager.getInstance().getGames().containsKey(lobby);
-        boolean blockIsSign = (location.getBlock().getBlockData() instanceof WallSign);
+        boolean blockIsSign = isSign(location.getBlock().getBlockData());
 
 
         return worldExists && lobbyValid && blockIsSign;
         return worldExists && lobbyValid && blockIsSign;
     }
     }
@@ -75,8 +76,8 @@ public class MWSign {
 
 
     public void editSign(Location location, List<String> lines) {
     public void editSign(Location location, List<String> lines) {
         Block block = location.getBlock();
         Block block = location.getBlock();
-        if (!(block.getBlockData() instanceof WallSign)) {
-            Logger.WARN.log("Configured sign at: " + location + " is not a wall sign");
+        if (!(MWSign.isSign(block.getBlockData()))) {
+            Logger.WARN.log("Configured sign at: " + location + " is not a standing or wall sign");
             return;
             return;
         }
         }
         Sign sign = (Sign) block.getState();
         Sign sign = (Sign) block.getState();
@@ -111,4 +112,8 @@ public class MWSign {
         replaced = replaced.replace("%max_players%", Integer.toString(maxPlayers)).replace("%players%", Integer.toString(players));
         replaced = replaced.replace("%max_players%", Integer.toString(maxPlayers)).replace("%players%", Integer.toString(players));
         return replaced;
         return replaced;
     }
     }
+    
+    public static boolean isSign(BlockData blockData) {
+        return ((blockData instanceof org.bukkit.block.data.type.Sign) || (blockData instanceof WallSign));
+    }
 }
 }

+ 5 - 5
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/SignListener.java

@@ -24,9 +24,7 @@ import de.butzlabben.missilewars.game.Game;
 import de.butzlabben.missilewars.game.GameManager;
 import de.butzlabben.missilewars.game.GameManager;
 import de.butzlabben.missilewars.game.signs.MWSign;
 import de.butzlabben.missilewars.game.signs.MWSign;
 import de.butzlabben.missilewars.game.signs.SignRepository;
 import de.butzlabben.missilewars.game.signs.SignRepository;
-import java.util.Optional;
 import org.bukkit.block.Block;
 import org.bukkit.block.Block;
-import org.bukkit.block.data.type.WallSign;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.Listener;
 import org.bukkit.event.Listener;
@@ -35,6 +33,8 @@ import org.bukkit.event.block.BlockBreakEvent;
 import org.bukkit.event.block.SignChangeEvent;
 import org.bukkit.event.block.SignChangeEvent;
 import org.bukkit.event.player.PlayerInteractEvent;
 import org.bukkit.event.player.PlayerInteractEvent;
 
 
+import java.util.Optional;
+
 public class SignListener implements Listener {
 public class SignListener implements Listener {
 
 
     private static final String KEY_SIGN_HEADLINE = "[missilewars]";
     private static final String KEY_SIGN_HEADLINE = "[missilewars]";
@@ -44,7 +44,7 @@ public class SignListener implements Listener {
         if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
         if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
 
 
         Block block = event.getClickedBlock();
         Block block = event.getClickedBlock();
-        if (!(block.getBlockData() instanceof WallSign)) return;
+        if (!(MWSign.isSign(block.getBlockData()))) return;
 
 
         SignRepository repository = MissileWars.getInstance().getSignRepository();
         SignRepository repository = MissileWars.getInstance().getSignRepository();
         Optional<MWSign> optional = repository.getSign(block.getLocation());
         Optional<MWSign> optional = repository.getSign(block.getLocation());
@@ -60,7 +60,7 @@ public class SignListener implements Listener {
     @EventHandler
     @EventHandler
     public void onSignChange(SignChangeEvent event) {
     public void onSignChange(SignChangeEvent event) {
         Block block = event.getBlock();
         Block block = event.getBlock();
-        if (!(block.getBlockData() instanceof WallSign)) return;
+        if (!(MWSign.isSign(block.getBlockData()))) return;
 
 
         Player player = event.getPlayer();
         Player player = event.getPlayer();
         if (!hasManageSignPermission(player)) return;
         if (!hasManageSignPermission(player)) return;
@@ -89,7 +89,7 @@ public class SignListener implements Listener {
     @EventHandler
     @EventHandler
     public void onSignBreak(BlockBreakEvent event) {
     public void onSignBreak(BlockBreakEvent event) {
         Block block = event.getBlock();
         Block block = event.getBlock();
-        if (!(block.getBlockData() instanceof WallSign)) return;
+        if (!(MWSign.isSign(block.getBlockData()))) return;
 
 
         Player player = event.getPlayer();
         Player player = event.getPlayer();
         if (!hasManageSignPermission(player)) return;
         if (!hasManageSignPermission(player)) return;