package tv.mineinthebox.essentials.events.signs; import org.bukkit.ChatColor; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; 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.block.SignChangeEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.PermissionKey; import tv.mineinthebox.essentials.interfaces.EventTemplate; public class FreeSignEvent extends EventTemplate implements Listener { public FreeSignEvent(xEssentials pl) { super(pl, "FreeSign"); } @EventHandler public void signCreate(SignChangeEvent e) { if(e.getLine(0).contains("[free]")) { if(e.getPlayer().hasPermission(PermissionKey.SIGN_FREE.getPermission())) { if(e.getLine(1).isEmpty()) { sendMessage(e.getPlayer(), ChatColor.GREEN + "you have successfully placed a free sign, now right click the sign with your selected block"); e.setLine(0, ChatColor.DARK_BLUE + e.getLine(0)); return; } else { sendMessage(e.getPlayer(), ChatColor.RED + "you have to leave the second line empty, and put the block with right click in the sign"); e.setCancelled(true); } } else { sendMessage(e.getPlayer(), ChatColor.RED + "you don't have permission to place these type signs"); e.setCancelled(true); } } else { return; } } @SuppressWarnings("deprecation") @EventHandler public void interact(PlayerInteractEvent e) { if(e.getAction() == Action.RIGHT_CLICK_BLOCK) { if(e.getClickedBlock().getType() == Material.SIGN || e.getClickedBlock().getType() == Material.SIGN_POST || e.getClickedBlock().getType() == Material.WALL_SIGN) { Sign sign = (Sign) e.getClickedBlock().getState(); if(sign.getLine(0).contains("[free]")) { if(!sign.getLine(1).isEmpty()) { try { Material mat = Material.valueOf(sign.getLine(1)); ItemStack item = new ItemStack(mat); item.setTypeId(mat.getId()); int bytevalue = Integer.parseInt(sign.getLine(2)); item.setDurability((byte) bytevalue); item.setAmount(1); Location loc = e.getPlayer().getLocation(); loc.setX(loc.getX() + 2); loc.setZ(loc.getZ() + 1); loc.setY(loc.getY() + 3); e.getPlayer().getWorld().playEffect(loc, Effect.MOBSPAWNER_FLAMES, 100); e.getPlayer().getWorld().dropItemNaturally(loc, item); e.setCancelled(true); } catch(Exception r) { sendMessage(e.getPlayer(), ChatColor.RED + "Error this item is not a vanilla item!, please show us your error in the console"); r.printStackTrace(); } } else { if(e.getClickedBlock().getType() == Material.SIGN || e.getClickedBlock().getType() == Material.SIGN_POST || e.getClickedBlock().getType() == Material.WALL_SIGN) { if(e.getPlayer().hasPermission(PermissionKey.SIGN_FREE.getPermission())) { //Sign sign = (Sign) e.getClickedBlock().getState(); if(sign.getLine(0).contains("[free]")) { if(sign.getLine(1).isEmpty()) { ItemStack itemInHand = new ItemStack(e.getPlayer().getInventory().getItemInHand()); sign.setLine(1, ""+itemInHand.getType()); sign.setLine(2, ""+itemInHand.getData().getData()); sign.update(); } } } } } } } } } }