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;
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