CustomGUI/src/me/jacobculley/customgui/Main.java

2315 lines
89 KiB
Java

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<String> list = new ArrayList<String>();
list.add("&aCustomGUI Commands");
list.add("&7-----------------------------------");
list.add("&e/customgui reload &7- Reloads the config file");
list.add("&e/customgui open <GUI Command> &7- Opens the specified GUI");
list.add("&e/customgui setitem <GUI Name> <Click Type> &7- Binds your item to the specified GUI");
list.add("&e/customgui deleteitem <GUI Name> &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<String> 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<String> strlConsoleCommands = this.getConfig()
.getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem
+ ".ConsoleCommands");
final List<String> strlPlayerCommands = this.getConfig().getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".PlayerCommands");
final List<String> strlPlayerMessages = this.getConfig().getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName + "." + guiItem + ".PlayerMessages");
final List<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> list = new ArrayList<String>();
list.add("RIGHT");
list.add("LEFT");
list.add("BOTH");
final Iterator<String> 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<String> strGUI = this.getConfig().getConfigurationSection("GUI")
.getKeys(false);
for (final String guiName : strGUI) {
final Iterator<String> 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<String> 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<String> 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<String> strlOPItemLore = this.getConfig()
.getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName
+ ".OPItem.Lore");
final List<String> 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<String> strlPermissionItemLore = this
.getConfig().getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName
+ ".PermissionItem.Lore");
final List<String> 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<String> strlBalanceItemLore = this
.getConfig().getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName
+ ".BalanceItem.Lore");
final List<String> 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<String> stringList10 = this.getConfig()
.getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName
+ ".EXPItem.Lore");
final List<String> 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<String> stringList12 = this.getConfig()
.getStringList(
"GUI." + guiName + ".GUIItems." + guiItemName
+ ".DefaultItem.Lore");
final List<String> 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<String> lore = new ArrayList<String>();
if (!strlOPItemLore.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore2 = new ArrayList<String>();
if (!strlOPItemLore.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore3 = new ArrayList<String>();
if (!strlPermissionItemLore.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore4 = new ArrayList<String>();
if (!strlPermissionItemLore.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore5 = new ArrayList<String>();
if (!strlBalanceItemLore.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore6 = new ArrayList<String>();
if (!strlBalanceItemLore.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore7 = new ArrayList<String>();
if (!stringList10.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore8 = new ArrayList<String>();
if (!stringList10.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore9 = new ArrayList<String>();
if (!stringList12.isEmpty()) {
final Iterator<String> 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<String> 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<String> lore10 = new ArrayList<String>();
if (!stringList12.isEmpty()) {
final Iterator<String> 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<String> 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;
}
}