package me.jacobculley.customgui; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import me.clip.placeholderapi.PlaceholderAPI; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; public class Main extends JavaPlugin implements Listener { public static Economy econ; public static Permission perms; File Messages; YamlConfiguration messagesFile; static { Main.econ = null; Main.perms = null; } public Main() { this.Messages = new File(this.getDataFolder(), "messages.yml"); this.messagesFile = YamlConfiguration.loadConfiguration(this.Messages); } @Override public void onEnable() { this.getServer().getPluginManager().registerEvents(this, this); this.getLogger().info("CustomGUI has been enabled!"); this.saveDefaultConfig(); this.reloadConfig(); this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); if (!this.Messages.exists()) { try { this.Messages.createNewFile(); final ArrayList list = new ArrayList(); list.add("&aCustomGUI Commands"); list.add("&7-----------------------------------"); list.add("&e/customgui reload &7- Reloads the config file"); list.add("&e/customgui open &7- Opens the specified GUI"); list.add("&e/customgui setitem &7- Binds your item to the specified GUI"); list.add("&e/customgui deleteitem &7- Unbinds your item from the specified GUI"); this.messagesFile.set("HelpFormat", list); this.messagesFile.set("NoPermsCommandMessage", "&cYou do not have permission to execute this command!"); this.messagesFile.set("NoPermsItemMessage", "&cYou do not have permission to use this item!"); this.messagesFile.set("InsufficientFundsMessage", "&c&cYou need $%COMMANDSCOST% to use this item!"); this.messagesFile.set("WhitelistedWorldMessage", "&cYou cannot use this GUI in your current world!"); this.messagesFile.set("InvalidGUIMessage", "&cPlease specify a valid GUI!"); this.messagesFile.set("ItemAddedMessage", "&aThe item has been added to the %GUI% inventory item list!"); this.messagesFile.set("ItemRemovedMessage", "&aThis item has been removed from the %GUI% inventory item list!"); this.messagesFile.set("ItemDoesExistMessage", "&cThis item already exists in the %GUI% inventory item list!"); this.messagesFile.set("ItemDoesntExistMessage", "&cThis item does not exist in the %GUI% inventory item list!"); this.messagesFile.set("UnknownClickMethod", "&cPlease specify right, left, or both as the click method!"); this.messagesFile.set("UnknownCommandMessage", "&cPlease enter /customgui help for a list of commands!"); this.messagesFile.set("ReloadMessage", "&aCustomGUI has been reloaded!"); } catch (IOException ex2) { this.getLogger().severe( String.format("[%s] - CustomGUI could not generate messages.yml", this .getDescription().getName())); } } try { this.messagesFile.save(this.Messages); } catch (IOException ex) { ex.printStackTrace(); } if (this.setupEconomy()) { this.getLogger().severe( String.format("[%s] - CustomGUI has hooked into Vault", this.getDescription() .getName())); return; } if (this.setupAPI()) { this.getLogger().severe( String.format("[%s] - CustomGUI has hooked into PlaceholderAPI", this .getDescription().getName())); return; } this.setupPermissions(); } @Override public void onDisable() { this.getLogger().info("CustomGUI has been disabled!"); } private boolean setupAPI() { return this.getServer().getPluginManager().getPlugin("PlaceholderAPI") != null; } private boolean setupPermissions() { Main.perms = (Permission) this.getServer().getServicesManager() .getRegistration((Class) Permission.class).getProvider(); return Main.perms != null; } private boolean setupEconomy() { if (this.getServer().getPluginManager().getPlugin("Vault") == null) { return false; } final RegisteredServiceProvider registration = this.getServer().getServicesManager() .getRegistration((Class) Economy.class); if (registration == null) { return false; } Main.econ = (Economy) registration.getProvider(); return Main.econ != null; } public String sendMessage(final Player player, String setPlaceholders) { return setPlaceholders = PlaceholderAPI.setPlaceholders(player, setPlaceholders); } @EventHandler( priority = EventPriority.HIGHEST) public void commandProcess(final PlayerCommandPreprocessEvent playerCommandPreprocessEvent) { final Player player = playerCommandPreprocessEvent.getPlayer(); final Iterator commands = this.getConfig().getConfigurationSection("GUI") .getKeys(false).iterator(); while (commands.hasNext()) { for (final String s : this.getConfig().getStringList( "GUI." + commands.next() + ".GUICommand")) { if (playerCommandPreprocessEvent.getMessage().equalsIgnoreCase("/" + s)) { player.performCommand("customgui open " + s); playerCommandPreprocessEvent.setCancelled(true); } } } } @SuppressWarnings("deprecation") @EventHandler public void onInventoryClick(final InventoryClickEvent inventoryClickEvent) { final Player player = (Player) inventoryClickEvent.getWhoClicked(); for (final String guiName : this.getConfig().getConfigurationSection("GUI").getKeys(false)) { final String guiChestName = this.getConfig().getString("GUI." + guiName + ".ChestName", ""); for (final String guiItemName : this.getConfig() .getConfigurationSection("GUI." + guiName + ".GUIItems").getKeys(false)) { if (inventoryClickEvent .getInventory() .getTitle() .contentEquals( ChatColor.translateAlternateColorCodes( '&', guiChestName.replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()).toString())))) { if (inventoryClickEvent.getRawSlot() == this.getConfig().getInt( "GUI." + guiName + ".GUIItems." + guiItemName + ".ItemSlot")) { for (final String guiItem : this.getConfig() .getConfigurationSection("GUI." + guiName + ".GUIItems." + guiItemName) .getKeys(false)) { final String strPermission = this.getConfig().getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".Permission", ""); final List strlConsoleCommands = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".ConsoleCommands"); final List strlPlayerCommands = this.getConfig().getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".PlayerCommands"); final List strlPlayerMessages = this.getConfig().getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".PlayerMessages"); final List strlBroadcastMessages = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".BroadcastMessages"); final String strClickSound = this .getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".ClickSound", "").toUpperCase(); final String strNoPermsClickSound = this .getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".NoPermsClickSound", "").toUpperCase(); final boolean boolCloseOnClick = this.getConfig().getBoolean( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".CloseOnClick"); final double dblCommandsCost = this.getConfig().getInt( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".CommandsCost"); if (inventoryClickEvent .getCurrentItem() .getItemMeta() .getDisplayName() .contentEquals( ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, this.getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".Name", "") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()))))) { if (player.hasPermission(strPermission) || strPermission.isEmpty()) { if (Main.econ.getBalance(player) >= dblCommandsCost || dblCommandsCost == 0.0) { if (boolCloseOnClick) { player.closeInventory(); } else { inventoryClickEvent.setCancelled(true); } if (!strClickSound.isEmpty()) { final float n2 = 1.0f; player.playSound(player.getLocation(), Sound.valueOf(strClickSound), n2, n2); } if (dblCommandsCost != 0.0) { Main.econ.withdrawPlayer(player, dblCommandsCost); } for (final String consoleCommand : strlConsoleCommands) { if (consoleCommand.contains("[RIGHT-CLICK]")) { if (!inventoryClickEvent.isRightClick()) { continue; } this.getServer() .dispatchCommand( Bukkit.getConsoleSender(), this.sendMessage(player, consoleCommand) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", "")); } else if (consoleCommand.contains("[LEFT-CLICK]")) { if (!inventoryClickEvent.isLeftClick()) { continue; } this.getServer() .dispatchCommand( Bukkit.getConsoleSender(), this.sendMessage(player, consoleCommand) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", "")); } else { if (consoleCommand.contains("[RIGHT-CLICK]") && consoleCommand.contains("[LEFT-CLICK]")) { continue; } this.getServer() .dispatchCommand( Bukkit.getConsoleSender(), this.sendMessage(player, consoleCommand) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", "")); } } for (final String playerCommand : strlPlayerCommands) { if (playerCommand.contains("[RIGHT-CLICK]")) { if (!inventoryClickEvent.isRightClick()) { continue; } this.getServer() .dispatchCommand( player, this.sendMessage(player, playerCommand) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", "")); } else if (playerCommand.contains("[LEFT-CLICK]")) { if (!inventoryClickEvent.isLeftClick()) { continue; } this.getServer() .dispatchCommand( player, this.sendMessage(player, playerCommand) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", "")); } else { if (playerCommand.contains("[RIGHT-CLICK]") && playerCommand.contains("[LEFT-CLICK]")) { continue; } this.getServer() .dispatchCommand( player, this.sendMessage(player, playerCommand) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", "")); } } for (final String playerMessage : strlPlayerMessages) { if (playerMessage.contains("[RIGHT-CLICK]")) { if (!inventoryClickEvent.isRightClick()) { continue; } player.sendMessage(ChatColor .translateAlternateColorCodes( '&', this.sendMessage(player, playerMessage) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", ""))); } else if (playerMessage.contains("[LEFT-CLICK]")) { if (!inventoryClickEvent.isLeftClick()) { continue; } player.sendMessage(ChatColor .translateAlternateColorCodes( '&', this.sendMessage(player, playerMessage) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", ""))); } else { if (playerMessage.contains("[RIGHT-CLICK]") && playerMessage.contains("[LEFT-CLICK]")) { continue; } player.sendMessage(ChatColor .translateAlternateColorCodes( '&', this.sendMessage(player, playerMessage) .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace("[RIGHT-CLICK]", "") .replace("[LEFT-CLICK]", ""))); } } for (final String broadcastMessage : strlBroadcastMessages) { if (broadcastMessage.contains("[RIGHT-CLICK]")) { if (!inventoryClickEvent.isRightClick()) { continue; } this.getServer() .broadcastMessage( ChatColor .translateAlternateColorCodes( '&', this.sendMessage( player, broadcastMessage) .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace( "[RIGHT-CLICK]", "") .replace( "[LEFT-CLICK]", ""))); } else if (broadcastMessage.contains("[LEFT-CLICK]")) { if (!inventoryClickEvent.isLeftClick()) { continue; } this.getServer() .broadcastMessage( ChatColor .translateAlternateColorCodes( '&', this.sendMessage( player, broadcastMessage) .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace( "[RIGHT-CLICK]", "") .replace( "[LEFT-CLICK]", ""))); } else { if (broadcastMessage.contains("[RIGHT-CLICK]") && broadcastMessage.contains("[LEFT-CLICK]")) { continue; } this.getServer() .broadcastMessage( ChatColor .translateAlternateColorCodes( '&', this.sendMessage( player, broadcastMessage) .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString()) .replace( "[RIGHT-CLICK]", "") .replace( "[LEFT-CLICK]", ""))); } } if (!this.getConfig().getBoolean("GUI." + guiName + ".Bungee") || this.getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".SendToServer", "") .isEmpty()) { continue; } final ByteArrayDataOutput dataOutput = ByteStreams .newDataOutput(); dataOutput.writeUTF("Connect"); dataOutput.writeUTF(this.getConfig().getString( "GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".SendToServer", "")); Bukkit.getPlayer(player.getName()).sendPluginMessage(this, "BungeeCord", dataOutput.toByteArray()); } else { player.closeInventory(); player.sendMessage(this.sendMessage( player, ChatColor .translateAlternateColorCodes( '&', this.messagesFile .getString( "InsufficientFundsMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString())))); if (strNoPermsClickSound.isEmpty()) { continue; } final float fSoundTime = 1.0f; player.playSound(player.getLocation(), Sound.valueOf(strNoPermsClickSound), fSoundTime, fSoundTime); } } else { player.closeInventory(); player.sendMessage(this.sendMessage( player, ChatColor .translateAlternateColorCodes( '&', this.messagesFile .getString("NoPermsItemMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(dblCommandsCost) .toString())))); if (strNoPermsClickSound.isEmpty()) { continue; } final float fSoundTime = 1.0f; player.playSound(player.getLocation(), Sound.valueOf(strNoPermsClickSound), fSoundTime, fSoundTime); } } } inventoryClickEvent.setCancelled(true); } inventoryClickEvent.setCancelled(true); } else { if (this.getConfig().getBoolean("GUI." + guiName + ".InventoryGUIItemMovement")) { continue; } final List strlInventoryGUIItems = this.getConfig().getStringList( "GUI." + guiName + ".InventoryGUIItems"); for (int i = 0; i < strlInventoryGUIItems.size(); ++i) { final String[] itemInfo = strlInventoryGUIItems.get(i).split(";"); if (inventoryClickEvent.getCurrentItem().getType() == Material .getMaterial(itemInfo[1]) && inventoryClickEvent.getCurrentItem().getData().getData() == (byte) Integer .parseInt(itemInfo[2]) && inventoryClickEvent .getCurrentItem() .getItemMeta() .getDisplayName() .contentEquals( ChatColor.translateAlternateColorCodes('&', itemInfo[0])) && inventoryClickEvent.getCurrentItem().getEnchantments() .toString().contentEquals(itemInfo[3])) { inventoryClickEvent.setCancelled(true); } } } } } } @SuppressWarnings("deprecation") @EventHandler public void playerDropEvent(final PlayerDropItemEvent playerDropItemEvent) { for (final String guiName : this.getConfig().getConfigurationSection("GUI").getKeys(false)) { if (!this.getConfig().getBoolean("GUI." + guiName + ".InventoryGUIItemMovement")) { final List strlInventoryGUIItems = this.getConfig().getStringList( "GUI." + guiName + ".InventoryGUIItems"); for (int i = 0; i < strlInventoryGUIItems.size(); ++i) { final String[] itemInfo = strlInventoryGUIItems.get(i).split(";"); if (playerDropItemEvent.getItemDrop().getItemStack().getType() == Material .getMaterial(itemInfo[1]) && playerDropItemEvent.getItemDrop().getItemStack().getData().getData() == (byte) Integer .parseInt(itemInfo[2]) && playerDropItemEvent .getItemDrop() .getItemStack() .getItemMeta() .getDisplayName() .contentEquals( ChatColor.translateAlternateColorCodes('&', itemInfo[0])) && playerDropItemEvent.getItemDrop().getItemStack().getEnchantments() .toString().contentEquals(itemInfo[3])) { playerDropItemEvent.setCancelled(true); } } } } } @SuppressWarnings("deprecation") @EventHandler public void playerInteract(final PlayerInteractEvent playerInteractEvent) { if (playerInteractEvent.getAction() == Action.RIGHT_CLICK_BLOCK || playerInteractEvent.getAction() == Action.RIGHT_CLICK_AIR) { final Player player = playerInteractEvent.getPlayer(); for (final String guiName : this.getConfig().getConfigurationSection("GUI").getKeys(false)) { final List strlInventoryGUIItems = this.getConfig().getStringList( "GUI." + guiName + ".InventoryGUIItems"); for (int i = 0; i < strlInventoryGUIItems.size(); ++i) { final String[] itemInfo = strlInventoryGUIItems.get(i).split(";"); if ((itemInfo[4].equalsIgnoreCase("both") || itemInfo[4].equalsIgnoreCase("right")) && playerInteractEvent.getItem().getType() == Material .getMaterial(itemInfo[1]) && playerInteractEvent.getItem().getData().getData() == (byte) Integer .parseInt(itemInfo[2]) && playerInteractEvent .getItem() .getItemMeta() .getDisplayName() .contentEquals( ChatColor.translateAlternateColorCodes('&', itemInfo[0])) && playerInteractEvent.getItem().getEnchantments().toString() .contentEquals(itemInfo[3])) { player.performCommand("customgui open " + this.getConfig().getStringList("GUI." + guiName + ".GUICommand").get(0)); playerInteractEvent.setCancelled(true); } } } } if (playerInteractEvent.getAction() == Action.LEFT_CLICK_BLOCK || playerInteractEvent.getAction() == Action.LEFT_CLICK_AIR) { final Player player = playerInteractEvent.getPlayer(); for (final String guiName : this.getConfig().getConfigurationSection("GUI").getKeys(false)) { final List strlInventoryGUIItems = this.getConfig().getStringList( "GUI." + guiName + ".InventoryGUIItems"); for (int j = 0; j < strlInventoryGUIItems.size(); ++j) { final String[] itemInfo = strlInventoryGUIItems.get(j).split(";"); if ((itemInfo[4].equalsIgnoreCase("both") || itemInfo[4].equalsIgnoreCase("left")) && playerInteractEvent.getItem().getType() == Material .getMaterial(itemInfo[1]) && playerInteractEvent.getItem().getData().getData() == (byte) Integer .parseInt(itemInfo[2]) && playerInteractEvent .getItem() .getItemMeta() .getDisplayName() .contentEquals( ChatColor.translateAlternateColorCodes('&', itemInfo[0])) && playerInteractEvent.getItem().getEnchantments().toString() .contentEquals(itemInfo[3])) { player.performCommand("customgui open " + this.getConfig().getStringList("GUI." + guiName + ".GUICommand") .get(0)); playerInteractEvent.setCancelled(true); } } } } } @SuppressWarnings("deprecation") @Override public boolean onCommand(final CommandSender commandSender, final Command command, final String s, final String[] args) { if (command.getName().equalsIgnoreCase("customgui")) { final Player player = (Player) commandSender; if (args.length == 0) { if (player.hasPermission("customgui.help")) { final Iterator iterator = this.messagesFile.getStringList("HelpFormat") .iterator(); while (iterator.hasNext()) { player.sendMessage(ChatColor.translateAlternateColorCodes('&', iterator.next())); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("NoPermsCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()) .toString())))); } return false; } if (args[0].equalsIgnoreCase("reload")) { if (player.hasPermission("customgui.reload")) { this.reloadConfig(); try { this.messagesFile.load(this.Messages); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex2) { ex2.printStackTrace(); } catch (InvalidConfigurationException ex3) { ex3.printStackTrace(); } this.getLogger().info("CustomGUI has been reloaded!"); player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("ReloadMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()) .toString())))); } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("NoPermsCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()) .toString())))); } } else if (args[0].equalsIgnoreCase("help")) { if (player.hasPermission("customgui.help")) { final Iterator iterator2 = this.messagesFile .getStringList("HelpFormat").iterator(); while (iterator2.hasNext()) { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this.sendMessage(player, iterator2.next()))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("NoPermsCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()) .toString())))); } } else if (args[0].equalsIgnoreCase("setitem") && args.length == 3) { if (player.hasPermission("customgui.setitem")) { if (this.getConfig().getConfigurationSection("GUI").getKeys(false) .contains(args[1])) { if (args[2].equalsIgnoreCase("both") || args[2].equalsIgnoreCase("right") || args[2].equalsIgnoreCase("left")) { final List strlInventoryGUIItems = this.getConfig() .getStringList("GUI." + args[1] + ".InventoryGUIItems"); final String displayName = player.getItemInHand().getItemMeta() .getDisplayName(); final String ench = player.getItemInHand().getEnchantments() .toString(); final String itemtype = player.getItemInHand().getType().name(); final byte itemdata = player.getItemInHand().getData().getData(); if (!strlInventoryGUIItems.contains(String.valueOf(displayName) + ";" + itemtype + ";" + itemdata + ";" + ench + ";" + args[2].toUpperCase())) { strlInventoryGUIItems.add(String.valueOf(displayName) + ";" + itemtype + ";" + itemdata + ";" + ench + ";" + args[2].toUpperCase()); this.getConfig().set("GUI." + args[1] + ".InventoryGUIItems", strlInventoryGUIItems); this.saveConfig(); player.sendMessage(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, this.messagesFile .getString("ItemAddedMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()) .toString()) .replace("%GUI%", args[1])))); } else { player.sendMessage(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, this.messagesFile .getString("ItemDoesExistMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()) .toString()) .replace("%GUI%", args[1])))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("UnknownClickMethod") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()).toString())))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("InvalidGUIMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()).toString())))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes( '&', this.messagesFile .getString("NoPermsCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()) .toString()))); } } else if (args[0].equalsIgnoreCase("deleteitem") && args.length == 2) { if (player.hasPermission("customgui.deleteitem")) { if (this.getConfig().getConfigurationSection("GUI").getKeys(false) .contains(args[1])) { final List strlInventoryGUIItems = this.getConfig().getStringList( "GUI." + args[1] + ".InventoryGUIItems"); final String displayName = player.getItemInHand().getItemMeta() .getDisplayName(); final String ench = player.getItemInHand().getEnchantments().toString(); final String itemtype = player.getItemInHand().getType().name(); final byte itemdata = player.getItemInHand().getData().getData(); if (strlInventoryGUIItems.contains(String.valueOf(displayName) + ";" + itemtype + ";" + itemdata + ";" + ench + ";" + "RIGHT") || strlInventoryGUIItems.contains(String.valueOf(displayName) + ";" + itemtype + ";" + itemdata + ";" + ench + ";" + "LEFT") || strlInventoryGUIItems.contains(String.valueOf(displayName) + ";" + itemtype + ";" + itemdata + ";" + ench + ";" + "BOTH")) { final ArrayList list = new ArrayList(); list.add("RIGHT"); list.add("LEFT"); list.add("BOTH"); final Iterator iterator3 = list.iterator(); while (iterator3.hasNext()) { strlInventoryGUIItems.remove(String.valueOf(displayName) + ";" + itemtype + ";" + itemdata + ";" + ench + ";" + iterator3.next()); this.getConfig().set("GUI." + args[1] + ".InventoryGUIItems", strlInventoryGUIItems); this.saveConfig(); } player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("ItemRemovedMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()).toString()) .replace("%GUI%", args[1])))); } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("ItemDoesntExistMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()).toString()) .replace("%GUI%", args[1])))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("InvalidGUIMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()).toString())))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this .sendMessage( player, this.messagesFile .getString("NoPermsCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append( Main.econ.getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()) .toString())))); } } else if (args[0].equalsIgnoreCase("open") && args.length == 2) { final Set strGUI = this.getConfig().getConfigurationSection("GUI") .getKeys(false); for (final String guiName : strGUI) { final Iterator iGUICommand = this.getConfig() .getStringList("GUI." + guiName + ".GUICommand").iterator(); while (iGUICommand.hasNext()) { if (args[1].equalsIgnoreCase(iGUICommand.next())) { if (strGUI.contains(guiName)) { final String strGUIPermission = this.getConfig().getString( "GUI." + guiName + ".GUIPermission", ""); final List strlWhitelistedWorlds = this.getConfig() .getStringList("GUI." + guiName + ".WhitelistedWorlds"); if (strlWhitelistedWorlds.contains(player.getWorld().getName()) || strlWhitelistedWorlds == null || strlWhitelistedWorlds.isEmpty()) { if (player.hasPermission(strGUIPermission)) { final String strChestName = this.getConfig().getString( "GUI." + guiName + ".ChestName", ""); final int intChestSize = this.getConfig().getInt( "GUI." + guiName + ".ChestSize"); final Set strGUIItems = this.getConfig() .getConfigurationSection("GUI." + guiName + ".GUIItems") .getKeys(false); final Inventory inventory = Bukkit .createInventory( (InventoryHolder) null, intChestSize, ChatColor .translateAlternateColorCodes( '&', strChestName.replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()))); for (final String guiItemName : strGUIItems) { final Double value = this.getConfig().getDouble( "GUI." + guiName + ".GUIItems." + guiItemName + ".OPItem.CommandsCost"); final Double value2 = this.getConfig().getDouble( "GUI." + guiName + ".GUIItems." + guiItemName + ".PermissionItem.CommandsCost"); final Double value3 = this.getConfig().getDouble( "GUI." + guiName + ".GUIItems." + guiItemName + ".BalanceItem.CommandsCost"); final Double value4 = this.getConfig().getDouble( "GUI." + guiName + ".GUIItems." + guiItemName + ".EXPItem.CommandsCost"); final Double value5 = this.getConfig().getDouble( "GUI." + guiName + ".GUIItems." + guiItemName + ".DefaultItem.CommandsCost"); final String[] split = this .getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".OPItem.Item", "") .toUpperCase().split(";"); final String string5 = this.getConfig().getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".OPItem.Name", ""); final List strlOPItemLore = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".OPItem.Lore"); final List strlOPItemEnchant = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".OPItem.Enchant"); final String strPermissionItemPermission = this .getConfig().getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".PermissionItem.Permission", ""); final String[] splPermissionItemItem = this .getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".PermissionItem.Item", "") .toUpperCase().split(";"); final String strPermissionItemName = this.getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".PermissionItem.Name", ""); final List strlPermissionItemLore = this .getConfig().getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".PermissionItem.Lore"); final List strlPermissionItemEnchant = this .getConfig().getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".PermissionItem.Enchant"); final int intBalanceItemBalance = this.getConfig() .getInt("GUI." + guiName + ".GUIItems." + guiItemName + ".BalanceItem.Balance"); final String[] splBalanceItemItem = this .getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".BalanceItem.Item", "") .toUpperCase().split(";"); final String strBalanceItemName = this.getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".BalanceItem.Name", ""); final List strlBalanceItemLore = this .getConfig().getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".BalanceItem.Lore"); final List stringList9 = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".BalanceItem.Enchant"); final int int3 = this.getConfig().getInt( "GUI." + guiName + ".GUIItems." + guiItemName + ".EXPItem.Level"); final String[] split4 = this .getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".EXPItem.Item", "") .toUpperCase().split(";"); final String string9 = this.getConfig().getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".EXPItem.Name", ""); final List stringList10 = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".EXPItem.Lore"); final List stringList11 = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".EXPItem.Enchant"); final String[] split5 = this .getConfig() .getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".DefaultItem.Item", "") .toUpperCase().split(";"); final String string10 = this.getConfig().getString( "GUI." + guiName + ".GUIItems." + guiItemName + ".DefaultItem.Name", ""); final List stringList12 = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".DefaultItem.Lore"); final List stringList13 = this.getConfig() .getStringList( "GUI." + guiName + ".GUIItems." + guiItemName + ".DefaultItem.Enchant"); final int int4 = this.getConfig().getInt( "GUI." + guiName + ".GUIItems." + guiItemName + ".ItemSlot"); if (player.isOp() && this.getConfig().getBoolean( "GUI." + guiName + ".OPItem")) { if (split[0].equalsIgnoreCase("SKULL_ITEM")) { final ItemStack itemStack = new ItemStack( Material.SKULL_ITEM, Integer.parseInt(split[1]), (short) 3); final SkullMeta itemMeta = (SkullMeta) itemStack .getItemMeta(); itemMeta.setOwner(split[2].replace("%PLAYER%", player.getName())); itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, string5.replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value) .toString())))); final ArrayList lore = new ArrayList(); if (!strlOPItemLore.isEmpty()) { final Iterator iterator7 = strlOPItemLore .iterator(); while (iterator7.hasNext()) { lore.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator7 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value) .toString())))); } } itemMeta.setLore(lore); itemStack.setItemMeta(itemMeta); if (!strlOPItemEnchant.isEmpty()) { final Iterator iterator8 = strlOPItemEnchant .iterator(); while (iterator8.hasNext()) { final String[] split6 = iterator8 .next().toUpperCase() .split(";"); itemStack.addUnsafeEnchantment( Enchantment .getByName(split6[0]), Integer.parseInt(split6[1])); } } inventory.setItem(int4, itemStack); } else { final ItemStack itemStack2 = new ItemStack( Material.getMaterial(split[0]), Integer.parseInt(split[1]), (byte) Integer.parseInt(split[2])); final ItemMeta itemMeta2 = itemStack2 .getItemMeta(); itemMeta2 .setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, string5.replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value) .toString())))); final ArrayList lore2 = new ArrayList(); if (!strlOPItemLore.isEmpty()) { final Iterator iterator9 = strlOPItemLore .iterator(); while (iterator9.hasNext()) { lore2.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator9 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value) .toString())))); } } itemMeta2.setLore(lore2); itemStack2.setItemMeta(itemMeta2); if (!strlOPItemEnchant.isEmpty()) { final Iterator iterator10 = strlOPItemEnchant .iterator(); while (iterator10.hasNext()) { final String[] split7 = iterator10 .next().toUpperCase() .split(";"); itemStack2.addUnsafeEnchantment( Enchantment .getByName(split7[0]), Integer.parseInt(split7[1])); } } inventory.setItem(int4, itemStack2); } } else if (player .hasPermission(strPermissionItemPermission) && !player.isOp() && this.getConfig().getBoolean( "GUI." + guiName + ".PermissionItem")) { if (splPermissionItemItem[0] .equalsIgnoreCase("SKULL_ITEM")) { final ItemStack itemStack3 = new ItemStack( Material.SKULL_ITEM, Integer.parseInt(splPermissionItemItem[1]), (short) 3); final SkullMeta itemMeta3 = (SkullMeta) itemStack3 .getItemMeta(); itemMeta3.setOwner(splPermissionItemItem[2] .replace("%PLAYER%", player.getName())); itemMeta3 .setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, strPermissionItemName .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value2) .toString())))); final ArrayList lore3 = new ArrayList(); if (!strlPermissionItemLore.isEmpty()) { final Iterator iterator11 = strlPermissionItemLore .iterator(); while (iterator11.hasNext()) { lore3.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator11 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value2) .toString())))); } } itemMeta3.setLore(lore3); itemStack3.setItemMeta(itemMeta3); if (!strlPermissionItemEnchant.isEmpty()) { final Iterator iterator12 = strlPermissionItemEnchant .iterator(); while (iterator12.hasNext()) { final String[] split8 = iterator12 .next().toUpperCase() .split(";"); itemStack3.addUnsafeEnchantment( Enchantment .getByName(split8[0]), Integer.parseInt(split8[1])); } } inventory.setItem(int4, itemStack3); } else { final ItemStack itemStack4 = new ItemStack( Material.getMaterial(splPermissionItemItem[0]), Integer.parseInt(splPermissionItemItem[1]), (byte) Integer .parseInt(splPermissionItemItem[2])); final ItemMeta itemMeta4 = itemStack4 .getItemMeta(); itemMeta4 .setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, strPermissionItemName .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value2) .toString())))); final ArrayList lore4 = new ArrayList(); if (!strlPermissionItemLore.isEmpty()) { final Iterator iterator13 = strlPermissionItemLore .iterator(); while (iterator13.hasNext()) { lore4.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator13 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value2) .toString())))); } } itemMeta4.setLore(lore4); itemStack4.setItemMeta(itemMeta4); if (!strlPermissionItemEnchant.isEmpty()) { final Iterator iterator14 = strlPermissionItemEnchant .iterator(); while (iterator14.hasNext()) { final String[] split9 = iterator14 .next().toUpperCase() .split(";"); itemStack4.addUnsafeEnchantment( Enchantment .getByName(split9[0]), Integer.parseInt(split9[1])); } } inventory.setItem(int4, itemStack4); } } else if (Main.econ.getBalance(player) >= intBalanceItemBalance && this.getConfig().getBoolean( "GUI." + guiName + ".BalanceItem") && intBalanceItemBalance != 0 && this.getServer().getPluginManager() .getPlugin("Vault") != null) { if (splBalanceItemItem[0] .equalsIgnoreCase("SKULL_ITEM")) { final ItemStack itemStack5 = new ItemStack( Material.SKULL_ITEM, Integer.parseInt(splBalanceItemItem[1]), (short) 3); final SkullMeta itemMeta5 = (SkullMeta) itemStack5 .getItemMeta(); itemMeta5.setOwner(splBalanceItemItem[2] .replace("%PLAYER%", player.getName())); itemMeta5 .setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, strBalanceItemName .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value3) .toString())))); final ArrayList lore5 = new ArrayList(); if (!strlBalanceItemLore.isEmpty()) { final Iterator iterator15 = strlBalanceItemLore .iterator(); while (iterator15.hasNext()) { lore5.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator15 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value3) .toString())))); } } itemMeta5.setLore(lore5); itemStack5.setItemMeta(itemMeta5); if (!stringList9.isEmpty()) { final Iterator iterator16 = stringList9 .iterator(); while (iterator16.hasNext()) { final String[] split10 = iterator16 .next().toUpperCase() .split(";"); itemStack5.addUnsafeEnchantment( Enchantment .getByName(split10[0]), Integer.parseInt(split10[1])); } } inventory.setItem(int4, itemStack5); } else { final ItemStack itemStack6 = new ItemStack( Material.getMaterial(splBalanceItemItem[0]), Integer.parseInt(splBalanceItemItem[1]), (byte) Integer .parseInt(splBalanceItemItem[2])); final ItemMeta itemMeta6 = itemStack6 .getItemMeta(); itemMeta6 .setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, strBalanceItemName .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value3) .toString())))); final ArrayList lore6 = new ArrayList(); if (!strlBalanceItemLore.isEmpty()) { final Iterator iterator17 = strlBalanceItemLore .iterator(); while (iterator17.hasNext()) { lore6.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator17 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value3) .toString())))); } } itemMeta6.setLore(lore6); itemStack6.setItemMeta(itemMeta6); if (!stringList9.isEmpty()) { final Iterator iterator18 = stringList9 .iterator(); while (iterator18.hasNext()) { final String[] split11 = iterator18 .next().toUpperCase() .split(";"); itemStack6.addUnsafeEnchantment( Enchantment .getByName(split11[0]), Integer.parseInt(split11[1])); } } inventory.setItem(int4, itemStack6); } } else if (player.getLevel() >= int3 && this.getConfig().getBoolean( "GUI." + guiName + ".EXPItem")) { if (split4[0].equalsIgnoreCase("SKULL_ITEM")) { final ItemStack itemStack7 = new ItemStack( Material.SKULL_ITEM, Integer.parseInt(split4[1]), (short) 3); final SkullMeta itemMeta7 = (SkullMeta) itemStack7 .getItemMeta(); itemMeta7.setOwner(split4[2].replace( "%PLAYER%", player.getName())); itemMeta7 .setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, string9.replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value4) .toString())))); final ArrayList lore7 = new ArrayList(); if (!stringList10.isEmpty()) { final Iterator iterator19 = stringList10 .iterator(); while (iterator19.hasNext()) { lore7.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator19 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value4) .toString())))); } } itemMeta7.setLore(lore7); itemStack7.setItemMeta(itemMeta7); if (!stringList11.isEmpty()) { final Iterator iterator20 = stringList11 .iterator(); while (iterator20.hasNext()) { final String[] split12 = iterator20 .next().toUpperCase() .split(";"); itemStack7.addUnsafeEnchantment( Enchantment .getByName(split12[0]), Integer.parseInt(split12[1])); } } inventory.setItem(int4, itemStack7); } else { final ItemStack itemStack8 = new ItemStack( Material.getMaterial(split4[0]), Integer.parseInt(split4[1]), (byte) Integer.parseInt(split4[2])); final ItemMeta itemMeta8 = itemStack8 .getItemMeta(); itemMeta8 .setDisplayName(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, string9.replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value4) .toString())))); final ArrayList lore8 = new ArrayList(); if (!stringList10.isEmpty()) { final Iterator iterator21 = stringList10 .iterator(); while (iterator21.hasNext()) { lore8.add(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, iterator21 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value4) .toString())))); } } itemMeta8.setLore(lore8); itemStack8.setItemMeta(itemMeta8); if (!stringList11.isEmpty()) { final Iterator iterator22 = stringList11 .iterator(); while (iterator22.hasNext()) { final String[] split13 = iterator22 .next().toUpperCase() .split(";"); itemStack8.addUnsafeEnchantment( Enchantment .getByName(split13[0]), Integer.parseInt(split13[1])); } } inventory.setItem(int4, itemStack8); } } else if (split5[0].equalsIgnoreCase("SKULL_ITEM")) { final ItemStack itemStack9 = new ItemStack( Material.SKULL_ITEM, Integer.parseInt(split5[1]), (short) 3); final SkullMeta itemMeta9 = (SkullMeta) itemStack9 .getItemMeta(); itemMeta9.setOwner(split5[2].replace("%PLAYER%", player.getName())); itemMeta9 .setDisplayName(ChatColor .translateAlternateColorCodes( '&', this.sendMessage( player, string10.replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value5) .toString())))); final ArrayList lore9 = new ArrayList(); if (!stringList12.isEmpty()) { final Iterator iterator23 = stringList12 .iterator(); while (iterator23.hasNext()) { lore9.add(ChatColor .translateAlternateColorCodes( '&', this.sendMessage( player, iterator23 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value5) .toString())))); } } itemMeta9.setLore(lore9); itemStack9.setItemMeta(itemMeta9); if (!stringList13.isEmpty()) { final Iterator iterator24 = stringList13 .iterator(); while (iterator24.hasNext()) { final String[] split14 = iterator24.next() .toUpperCase().split(";"); itemStack9.addUnsafeEnchantment( Enchantment.getByName(split14[0]), Integer.parseInt(split14[1])); } } inventory.setItem(int4, itemStack9); } else { final ItemStack itemStack10 = new ItemStack( Material.getMaterial(split5[0]), Integer.parseInt(split5[1]), (byte) Integer.parseInt(split5[2])); final ItemMeta itemMeta10 = itemStack10 .getItemMeta(); itemMeta10 .setDisplayName(ChatColor .translateAlternateColorCodes( '&', this.sendMessage( player, string10.replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value5) .toString())))); final ArrayList lore10 = new ArrayList(); if (!stringList12.isEmpty()) { final Iterator iterator25 = stringList12 .iterator(); while (iterator25.hasNext()) { lore10.add(ChatColor .translateAlternateColorCodes( '&', this.sendMessage( player, iterator25 .next() .replace( "%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder() .append(player .getLevel()) .toString()) .replace( "%COMMANDSCOST%", new StringBuilder() .append(value5) .toString())))); } } itemMeta10.setLore(lore10); itemStack10.setItemMeta(itemMeta10); if (!stringList13.isEmpty()) { final Iterator iterator26 = stringList13 .iterator(); while (iterator26.hasNext()) { final String[] split15 = iterator26.next() .toUpperCase().split(";"); itemStack10.addUnsafeEnchantment( Enchantment.getByName(split15[0]), Integer.parseInt(split15[1])); } } inventory.setItem(int4, itemStack10); } } player.openInventory(inventory); final String upperCase = this.getConfig() .getString("GUI." + guiName + ".OpenSound", "") .toUpperCase(); if (upperCase.isEmpty() || upperCase == null) { continue; } final float n = 1.0f; player.playSound(player.getLocation(), Sound.valueOf(upperCase), n, n); } else { player.sendMessage(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, this.messagesFile .getString("NoPermsCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()) .toString())))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, this.messagesFile .getString("WhitelistedWorldMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()) .toString())))); } } else { player.sendMessage(ChatColor.translateAlternateColorCodes( '&', this.sendMessage( player, this.messagesFile .getString("InvalidGUIMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder() .append(Main.econ .getBalance(player)) .toString()) .replace( "%PLAYERLEVEL%", new StringBuilder().append( player.getLevel()) .toString())))); } } } } } else if (player.hasPermission("customgui.help")) { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this.sendMessage( player, this.messagesFile .getString("UnknownCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append(Main.econ.getBalance(player)) .toString()) .replace("%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()).toString())))); } else { player.sendMessage(ChatColor.translateAlternateColorCodes('&', this.sendMessage( player, this.messagesFile .getString("NoPermsCommandMessage") .replace("%PLAYER%", player.getName()) .replace( "%BALANCE%", new StringBuilder().append(Main.econ.getBalance(player)) .toString()) .replace("%PLAYERLEVEL%", new StringBuilder().append(player.getLevel()).toString())))); } } return false; } }