Search code examples
javaeclipsepluginsminecraftbukkit

Replace the block behind a sign


Recently I started working on a new plugin and I'm having problems finding how can I replace the block a sign is attached to.. I tried a few methods from the internet none was working Any ideas for how can I do such a thing? ( I have the object "type :Sign name: sign"witch is the sign I want to replace the block behind him)

Thank you very much for reading

FIXED EDIT: Somewhere inside main method :

e.getPlayer().sendMessage("DETECTED");
                Block sb = sign.getBlock();// "sign " is type Sign imported from org.bukkit.block.Sign
            Block b =  RedstoneSign.getblock(sb);
            b.setType(Material.REDSTONE_BLOCK);

main method imports:

    import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

getblock method:

public static Block getblock (Block b){

    if (b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST)
    { 
        Sign s = (Sign) b.getState().getData();//in this case "s" is type "Sign" imported from org.bukkit.material.Sign
        return b.getRelative(s.getAttachedFace());
    }
    else {
        return null;
    }
}

getblock imports:

 import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.material.Sign;

Solution

  •  Sign s = (Sign) block.getState().getData();
     Block attachedBlock = b.getRelative(s.getAttachedFace());
     attachedBlock.setType(Material.DIRT);
    

    The import must be org.bukkit.material.Sign NOT org.bukkit.block.Sign