rendered paste bodypackage signcopy;import org.bukkit.event.player.PlayerListener;import org.bukkit.event.block.Action;import org.bukkit.event.player.PlayerInteractEvent;import org.bukkit.Material;import org.bukkit.entity.Player;import org.bukkit.ChatColor;import org.bukkit.block.*;import org.bukkit.block.Sign;import org.bukkit.World;import org.bukkit.Location;import org.bukkit.plugin.*;public class SCPlayerListener extends PlayerListener { Player player; private SCProps props; private final SignCopy plugin; public SCPlayerListener(SignCopy instance, SCProps props) { plugin = instance; this.props = props; } Plugin permissionsPlugin; String[] lines; public void onPlayerInteract(PlayerInteractEvent event) { Location target = event.getPlayer().getLocation(); World world = target.getWorld(); Sign sign; permissionsPlugin = plugin.getServer().getPluginManager().getPlugin("Permissions"); if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { if (event.getPlayer().getItemInHand().getTypeId() == props.tool) { //if (plugin.permissionHandler.has(player, "sc.signcopy")) { if (SignCopy.selected.get(event.getPlayer().getName()+"_mode") == null) { final BlockState state = world.getBlockAt(new Location(world, event.getClickedBlock().getX(), event.getClickedBlock().getY(), event.getClickedBlock().getZ())).getState(); if (state instanceof Sign) { sign = (Sign)state; SignCopy.selected.put(event.getPlayer().getName()+"_mode",1); SignCopy.selected.put(event.getPlayer().getName()+"_x",null); SignCopy.selected.put(event.getPlayer().getName()+"_y",null); SignCopy.selected.put(event.getPlayer().getName()+"_z",null); lines = sign.getLines(); System.out.println(lines[1]); event.getPlayer().sendMessage(ChatColor.YELLOW + "[SignCopy] Sign selected."); } else { event.getPlayer().sendMessage(ChatColor.YELLOW + "[SignCopy] You need to select a sign!"); } } else if (SignCopy.selected.get(event.getPlayer().getName()+"_mode") == 1) { int test = event.getClickedBlock().getY() + 1; final Block block = world.getBlockAt(new Location(world, event.getClickedBlock().getX(), event.getClickedBlock().getY() + 1, event.getClickedBlock().getZ())); if (block.getType() != Material.AIR) { event.getPlayer().sendMessage(ChatColor.YELLOW + "[SignCopy] Error. You can't use that block as your target."); } else { SignCopy.selected.put(event.getPlayer().getName()+"_mode",2); block.setType(Material.SIGN_POST); final BlockState state = world.getBlockAt(new Location(world, event.getClickedBlock().getX(), event.getClickedBlock().getY() + 1, event.getClickedBlock().getZ())).getState(); if (state instanceof Sign) { sign = (Sign)state; for (int i=1; i<4; i++) { sign.setLine(i, lines[i]); } sign.update(true); event.getPlayer().sendMessage(ChatColor.YELLOW + "[SignCopy] Sign copied!"); } SignCopy.selected.put(event.getPlayer().getName()+"_x",event.getClickedBlock().getX()); SignCopy.selected.put(event.getPlayer().getName()+"_y",event.getClickedBlock().getY()); SignCopy.selected.put(event.getPlayer().getName()+"_z",event.getClickedBlock().getZ()); } } else if (SignCopy.selected.get(event.getPlayer().getName()+"_mode") == 2) { final BlockState state = world.getBlockAt(new Location(world, event.getClickedBlock().getX(), event.getClickedBlock().getY(), event.getClickedBlock().getZ())).getState(); if (state instanceof Sign) { sign = (Sign)state; SignCopy.selected.put(event.getPlayer().getName()+"_mode",1); SignCopy.selected.put(event.getPlayer().getName()+"_x",null); SignCopy.selected.put(event.getPlayer().getName()+"_y",null); SignCopy.selected.put(event.getPlayer().getName()+"_z",null); lines = sign.getLines(); event.getPlayer().sendMessage(ChatColor.YELLOW + "[SignCopy] Sign selected."); } else { event.getPlayer().sendMessage(ChatColor.YELLOW + "[SignCopy] You need to select a sign!"); } } //} } } } }