375 lines
18 KiB
Java
375 lines
18 KiB
Java
package net.t2code.commandguiv2.Spigot.gui;
|
|
|
|
import net.t2code.commandguiv2.Spigot.cmdManagement.Help;
|
|
import net.t2code.commandguiv2.Spigot.listener.ServerChange;
|
|
import net.t2code.commandguiv2.Spigot.useItem.Events;
|
|
import net.t2code.commandguiv2.Spigot.objects.functions.Function;
|
|
import net.t2code.commandguiv2.Spigot.cmdManagement.Commands;
|
|
import net.t2code.commandguiv2.Spigot.objects.slots.Slot;
|
|
import net.t2code.commandguiv2.Spigot.listener.Bungee_Sender_Reciver;
|
|
import net.t2code.commandguiv2.Spigot.config.languages.SelectMessages;
|
|
import net.t2code.commandguiv2.Spigot.objects.guis.Gui;
|
|
import net.t2code.commandguiv2.Spigot.config.config.SelectConfig;
|
|
import net.t2code.commandguiv2.Spigot.Main;
|
|
import net.t2code.commandguiv2.Spigot.system.Placeholder;
|
|
import net.t2code.commandguiv2.Spigot.sound.Sound;
|
|
import net.t2code.commandguiv2.Spigot.enums.SoundEnum;
|
|
import net.t2code.commandguiv2.Util;
|
|
import net.t2code.t2codelib.SPIGOT.api.eco.T2Ceco;
|
|
import net.t2code.t2codelib.SPIGOT.api.items.T2CitemVersion;
|
|
import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace;
|
|
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
|
|
import net.t2code.t2codelib.SPIGOT.system.config.config.SelectLibConfig;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.configuration.file.YamlConfiguration;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.inventory.ClickType;
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.plugin.Plugin;
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
public class GUIListener implements Listener {
|
|
|
|
private static String prefix = Util.getPrefix();
|
|
public static String GUICode;
|
|
private static Plugin plugin = Main.getPlugin();
|
|
|
|
@EventHandler
|
|
public void onInventoryClick(InventoryClickEvent e) {
|
|
Player player = (Player) e.getWhoClicked();
|
|
if (e.getInventory() == null) return;
|
|
if (e.getCurrentItem() == null) return;
|
|
for (Gui gui : Main.guiHashMap.values()) {
|
|
if (player.getOpenInventory().getTitle().equals(T2Creplace.replace(prefix, GUICode + gui.guiName))
|
|
|| (Main.PaPi && player.getOpenInventory().getTitle().equals(T2Creplace.replace(prefix, player, GUICode + gui.guiName)))) {
|
|
e.setCancelled(true);
|
|
if (player.getOpenInventory().getTopInventory() != e.getClickedInventory()) {
|
|
continue;
|
|
}
|
|
for (Slot slot : gui.slots) {
|
|
execute(e, slot, player, gui);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void execute(InventoryClickEvent e, Slot slot, Player player, Gui gui) {
|
|
if (e.getSlot() != slot.slot) return;
|
|
Function function = Main.functionHashMap.get(slot.function);
|
|
if (slot.permission && !player.hasPermission(slot.permissionToSee)) return;
|
|
if (slot.permission && !player.hasPermission(slot.permissionToUse)) {
|
|
if (function.noPermMessageEnable) {
|
|
if (function.customNoPermMessage == null || function.customNoPermMessage.equals("")) {
|
|
T2Csend.player(player, SelectMessages.NoPermissionForItem.replace("[item]", T2Creplace.replace(prefix, function.name))
|
|
.replace("[perm]", slot.permissionToUse));
|
|
} else T2Csend.player(player, function.customNoPermMessage.replace("[item]", T2Creplace.replace(prefix, function.name))
|
|
.replace("[perm]", slot.permissionToUse));
|
|
|
|
}
|
|
return;
|
|
}
|
|
if (e.getCurrentItem().getType() == T2CitemVersion.getHead() || e.getCurrentItem().getType() == T2CitemVersion.getGreenWool().getType() ||
|
|
e.getCurrentItem().getType() == T2CitemVersion.getRedWool().getType() ||
|
|
e.getCurrentItem().getType() == Material.valueOf(function.item.toUpperCase().replace(".", "_"))) {
|
|
if (!slot.enable) return;
|
|
if (function.cost_Enable) {
|
|
if (functions(function)) {
|
|
eco(e, slot, player, gui, function);
|
|
}
|
|
} else {
|
|
execute(function, slot, player, e, gui);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static boolean functions(Function function) {
|
|
if (function.togglePermission) return true;
|
|
if (function.toggleUseItem) return true;
|
|
if (function.command_Enable) return true;
|
|
if (function.openGUI_Enable) return true;
|
|
if (function.message_Enable) return true;
|
|
if (function.serverChange) return true;
|
|
if (function.setConfigEnable) return true;
|
|
if (function.functionVotePoints) return true;
|
|
return function.functionItem;
|
|
}
|
|
|
|
private static void execute(Function function, Slot slot, Player player, InventoryClickEvent e, Gui gui) {
|
|
if (function.togglePermission) togglePerm(function, gui, player);
|
|
if (function.toggleUseItem) toggleUseItem(player, gui);
|
|
if (function.command_Enable) command(function, player);
|
|
if (function.openGUI_Enable) openGUI(function, player);
|
|
if (function.message_Enable) message(function, player);
|
|
if (function.serverChange) serverChange(function, player);
|
|
if (function.setConfigEnable) setConfig(function, player, e);
|
|
if (function.functionVotePoints) votePoints(e, function, player);
|
|
if (function.functionItem) item(function, player);
|
|
Sound.play(player, SoundEnum.Click, function, slot, gui);
|
|
}
|
|
|
|
private static void command(Function slot, Player player) {
|
|
player.closeInventory();
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
if (slot.command_BungeeCommand) {
|
|
if (SelectLibConfig.getBungee()) {
|
|
for (String cmd : slot.command) {
|
|
Bungee_Sender_Reciver.sendToBungee(player, cmd.replace("[player]", player.getName()), slot.commandAsConsole);
|
|
}
|
|
} else {
|
|
T2Csend.console(prefix + " §4To use bungee commands, enable the Bungee option in the config.");
|
|
T2Csend.player(player, prefix + " §4To use bungee commands, enable the Bungee option in the config.");
|
|
}
|
|
} else {
|
|
for (String cmd : slot.command) {
|
|
if (slot.commandAsConsole) {
|
|
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), cmd.replace("[player]", player.getName()));
|
|
} else player.chat("/" + cmd.replace("[player]", player.getName()));
|
|
}
|
|
}
|
|
}
|
|
}.runTaskLater(plugin, 2L);
|
|
}
|
|
|
|
private static void openGUI(Function slot, Player player) {
|
|
player.closeInventory();
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
OpenGUI.openGUI(player, slot.openGUI, true);
|
|
}
|
|
}.runTaskLater(plugin, 1L);
|
|
}
|
|
|
|
private static void message(Function slot, Player player) {
|
|
player.closeInventory();
|
|
for (String msg : slot.message) {
|
|
if (Main.PaPi) {
|
|
if (slot.cost_Enable) {
|
|
T2Csend.player(player, T2Creplace.replacePrice(prefix, player, Placeholder.replace(msg, player), slot.price + " " + SelectConfig.getCurrency()));
|
|
} else T2Csend.player(player, T2Creplace.replace(prefix, player, Placeholder.replace(msg, player)));
|
|
} else {
|
|
if (slot.cost_Enable) {
|
|
T2Csend.player(player, T2Creplace.replacePrice(prefix, Placeholder.replace(msg, player), slot.price + " " + SelectConfig.getCurrency()));
|
|
} else T2Csend.player(player, T2Creplace.replace(prefix, Placeholder.replace(msg, player)));
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void serverChange(Function slot, Player player) {
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
}
|
|
}.runTaskLater(plugin, 1L);
|
|
T2Csend.player(player, SelectMessages.onServerChange.replace("[server]", slot.serverChangeServer));
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
ServerChange.send(player, slot.serverChangeServer);
|
|
}
|
|
}.runTaskLater(Main.getPlugin(), 20L);
|
|
}
|
|
|
|
private static void setConfig(Function slot, Player player, InventoryClickEvent e) {
|
|
File config = new File(slot.configFilePath);
|
|
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
|
|
|
|
if (e.getClick() == ClickType.LEFT) {
|
|
switch (slot.configOptionPremat) {
|
|
case "String":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configStringValueLeft);
|
|
break;
|
|
case "Boolean":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configBooleanValueLeft);
|
|
break;
|
|
case "Integer":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configIntegerValueLeft);
|
|
break;
|
|
case "Double":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configDoubleValueLeft);
|
|
break;
|
|
case "List":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configListValueLeft);
|
|
break;
|
|
default:
|
|
T2Csend.player(player, "§cCheck the Option §6SetConfig/Option/Premat"); //todo
|
|
|
|
break;
|
|
}
|
|
}
|
|
if (e.getClick() == ClickType.RIGHT) {
|
|
switch (slot.configOptionPremat) {
|
|
case "String":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configStringValueRight);
|
|
break;
|
|
case "Boolean":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configBooleanValueRight);
|
|
break;
|
|
case "Integer":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configIntegerValueRight);
|
|
break;
|
|
case "Double":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configDoubleValueRight);
|
|
break;
|
|
case "List":
|
|
yamlConfiguration.set(slot.configOptionPath.replace("/", "."), slot.configListValueRight);
|
|
break;
|
|
default:
|
|
T2Csend.player(player, "§cCheck the Option §6SetConfig/Option/Premat"); //todo
|
|
|
|
break;
|
|
}
|
|
}
|
|
try {
|
|
yamlConfiguration.save(config);
|
|
} catch (IOException tac) {
|
|
tac.printStackTrace();
|
|
}
|
|
if (slot.pluginReloadEnable) {
|
|
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), slot.pluginReloadCommand);
|
|
}
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
}
|
|
}.runTaskLater(plugin, 1L);
|
|
}
|
|
|
|
private static void togglePerm(Function function, Gui gui, Player player) {
|
|
if (player.hasPermission(function.togglePermissionPerm)) {
|
|
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), SelectConfig.getTogglePermFalse().replace("[player]", player.getName()).replace("[perm]", function.togglePermissionPerm));
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
OpenGUI.openGUI(player, gui.key, false);
|
|
}
|
|
}.runTaskLater(plugin, 4L);
|
|
} else
|
|
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), SelectConfig.getTogglePermTrue().replace("[player]", player.getName()).replace("[perm]", function.togglePermissionPerm));
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
OpenGUI.openGUI(player, gui.key, false);
|
|
}
|
|
}.runTaskLater(plugin, 4L);
|
|
}
|
|
|
|
private static void toggleUseItem(Player player, Gui gui) {
|
|
if (!SelectConfig.getUseItem_AllowToggle()) {
|
|
T2Csend.sender(player, "§4UseItem toggle is disabled!");
|
|
return;
|
|
}
|
|
if (Events.useItemHashMap.get(player.getName())) {
|
|
Commands.itemOff(player);
|
|
} else {
|
|
Commands.itemOn(player);
|
|
}
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
OpenGUI.openGUI(player, gui.key, false);
|
|
}
|
|
}.runTaskLater(plugin, 2L);
|
|
}
|
|
|
|
private static void votePoints(InventoryClickEvent e, Function function, Player player) {
|
|
player.closeInventory();
|
|
switch (function.functionVotePointsMode) {
|
|
case ADD:
|
|
T2Ceco.votePointsAdd(prefix, player, function.functionVotePointsAmount);
|
|
T2Csend.player(player, SelectMessages.functionVoteAdd.replace("[amount]", function.functionVotePointsAmount.toString()));
|
|
break;
|
|
case REMOVE:
|
|
if (T2Ceco.votePointsRemove(prefix, player, function.functionVotePointsAmount)) {
|
|
T2Csend.player(player, SelectMessages.functionVoteRemove.replace("[amount]", function.functionVotePointsAmount.toString()));
|
|
} else T2Csend.player(player, SelectMessages.functionVoteRemoveError.replace("[amount]", function.functionVotePointsAmount.toString()));
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static void item(Function function, Player player) {
|
|
String[] item = function.functionItemItem.split(";");
|
|
player.closeInventory();
|
|
switch (function.functionItemMode) {
|
|
case ADD:
|
|
T2Ceco.itemAdd(player, new ItemStack(Material.valueOf(item[0])), Integer.parseInt(item[1]));
|
|
T2Csend.player(player, SelectMessages.functionItemAdd.replace("[amount]", item[1]).replace("[item]", item[0]));
|
|
break;
|
|
case REMOVE:
|
|
if (T2Ceco.itemRemove(player, item[0], Integer.parseInt(item[1]))) {
|
|
T2Csend.player(player, SelectMessages.functionItemRemove.replace("[amount]", item[1]).replace("[item]", item[0]));
|
|
|
|
} else T2Csend.player(player, SelectMessages.functionItemRemoveError.replace("[amount]", item[1]));
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static void eco(InventoryClickEvent e, Slot slot, Player player, Gui gui, Function function) {
|
|
switch (function.ecoModule) {
|
|
case ITEM:
|
|
String[] item = function.ecoItem.split(";");
|
|
if (!T2Ceco.itemRemove(player, item[0], Integer.parseInt(item[1]))) {
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
}
|
|
}.runTaskLater(plugin, 1L);
|
|
T2Csend.player(player, SelectMessages.noMoneyItem.replace("[item]", item[0]).replace("[amount]", item[1]));
|
|
Sound.play(player, SoundEnum.NoMoney);
|
|
} else {
|
|
T2Csend.player(player, SelectMessages.Buy_msg.replace("[itemname]", T2Creplace.replace(prefix, function.name))
|
|
.replace("[price]", item[1] + " " + item[0]));
|
|
execute(function, slot, player, e, gui);
|
|
}
|
|
break;
|
|
case VOTEPOINTS:
|
|
if (!T2Ceco.votePointsRemove(prefix, player, function.votePoints)) {
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
}
|
|
}.runTaskLater(plugin, 1L);
|
|
T2Csend.player(player, SelectMessages.noMoneyVote.replace("[amount]", function.votePoints.toString()));
|
|
Sound.play(player, SoundEnum.NoMoney);
|
|
} else {
|
|
T2Csend.player(player, SelectMessages.Buy_msg.replace("[itemname]", T2Creplace.replace(prefix, function.name))
|
|
.replace("[price]", function.votePoints + " VotePoints"));
|
|
execute(function, slot, player, e, gui);
|
|
}
|
|
break;
|
|
case VAULT:
|
|
case MONEY:
|
|
if (!T2Ceco.moneyRemove(prefix, player, function.price)) {
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
player.closeInventory();
|
|
}
|
|
}.runTaskLater(plugin, 1L);
|
|
T2Csend.player(player, T2Creplace.replacePrice(prefix, SelectMessages.noMoney, String.valueOf(function.price)));
|
|
Sound.play(player, SoundEnum.NoMoney);
|
|
} else {
|
|
T2Csend.player(player, SelectMessages.Buy_msg.replace("[itemname]", T2Creplace.replace(prefix, function.name))
|
|
.replace("[price]", function.price + " " + SelectConfig.getCurrency()));
|
|
execute(function, slot, player, e, gui);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
} |