Solved Checking the text on a sign in a BlockBreak event

Discussion in 'Plugin Development' started by robotballs, Oct 5, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    robotballs

    I need to check the text on a sign when the player breaks it. I assume it would be something like this.

    Code:
        @EventHandler
        public void onSignDestroy(BlockBreakEvent event) {
            if (event.getBlock().getType() == Material.SIGN){
               
                //if (sign.getLine(0).equals("Stuff")) {
                //do stuff
                //}
       
            } else {
                return;
    }
            
     
  2. Offline

    SuperSniper

    @robotballs Try this: (Not tested)

    Code:
              if(event.getBlock().getState() instanceof Sign) {
                    Sign sign = (Sign)event.getBlock().getState();
                   if (sign.getLine(0).equals("Stuff")) {
                   // Do Stuff
    }}
    }
    
     
  3. Offline

    robotballs

    This is my current code:
    Code:
        @EventHandler
        public void onFeedSignDestroy(BlockBreakEvent event) {
            Player player = event.getPlayer();
            if (event.getBlock().getType() == Material.SIGN){
                Sign sign = (Sign) event.getBlock().getState();
                if (sign.getLine(0).equals("§1[Feed]")) {
                    if (!(player.hasPermission("xcess.sign.destroy.feed"))) {
                        event.setCancelled(true);
                        player.sendMessage(ChatColor.AQUA + "You do not have permission to destroy a Feed sign.");
                    } else {
                        return;
                    }
            } else {
                return;
            }
            } else {
                return;
            }
        }
    If I don't have the permission xcess.sign.destroy.feed it still destroys the sign and I get no message.

    Code:
        @EventHandler
        public void onFeedSignDestroy(BlockBreakEvent event) {
            Player player = event.getPlayer();
            if (event.getBlock().getType() == Material.SIGN) {
                Sign sign = (Sign) event.getBlock().getState();
                if (sign.getLine(0).equals("§1[Feed]")) {
                    if (!(player.hasPermission("xcess.sign.destroy.feed"))) {
                        event.setCancelled(true);
                        player.sendMessage(ChatColor.AQUA + "You do not have permission to destroy a Feed sign.");
                    } else {
                        return;
                    }
                } else {
                    return;
                }
            } else {
                return;
            }
        }
    }
    
    EDIT: I fixed it, I added this:
    Code:
    if (event.getBlock().getType() == Material.SIGN || event.getBlock().getType() == Material.SIGN_POST || event.getBlock().getType() == Material.WALL_SIGN)
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Oct 29, 2015
  4. Offline

    boomboompower

    Because you have fixed your issue, can you please mark this thread as solved? Thanks -boom
     
Thread Status:
Not open for further replies.

Share This Page