150 lines
7.7 KiB
Java
150 lines
7.7 KiB
Java
package net.t2code.commandguiv2.Spigot.gui;
|
|
|
|
import net.t2code.commandguiv2.Spigot.system.Permissions;
|
|
import net.t2code.commandguiv2.Spigot.useItem.Events;
|
|
import net.t2code.commandguiv2.Spigot.Main;
|
|
import net.t2code.commandguiv2.Spigot.objects.functions.Function;
|
|
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.objects.slots.Slot;
|
|
import net.t2code.commandguiv2.Spigot.sound.Sound;
|
|
import net.t2code.commandguiv2.Spigot.enums.SoundEnum;
|
|
import net.t2code.commandguiv2.Util;
|
|
import io.github.solyze.plugmangui.inventories.PluginListGUI;
|
|
import net.t2code.luckyBox.api.LuckyBoxAPI;
|
|
import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace;
|
|
import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
|
|
import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.bukkit.inventory.InventoryHolder;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.plugin.Plugin;
|
|
|
|
public class OpenGUI {
|
|
private static Plugin plugin = Main.getPlugin();
|
|
private static String prefix = Util.getPrefix();
|
|
|
|
public static void openGUI(Player player, String guiString, Boolean sound) {
|
|
Gui gui = Main.guiHashMap.get(guiString);
|
|
Long long_ = Long.valueOf(System.currentTimeMillis());
|
|
switch (guiString) {
|
|
//case "plugin.PlotSquaredGUI":
|
|
// if (Main.PlotSquaredGUI) {
|
|
// PlotSquaredGUIapi.openMainGUI(player);
|
|
// } else {
|
|
// if (player.hasPermission("commandgui.admin")) {
|
|
// send.player(player, prefix + " §4PlotSquaredGUI could not be found! §9Please download it here: " +
|
|
// "§6https://spigotmc.org/resources/plotsquaredgui.77506/");
|
|
// }
|
|
// }
|
|
// return; todo
|
|
case "plugin.PlugManGUI":
|
|
if (Main.PlugManGUI) {
|
|
player.openInventory((new PluginListGUI(54, 1)).getInventory());
|
|
} else {
|
|
if (player.hasPermission(Permissions.admin)) {
|
|
T2Csend.player(player, prefix + " §4PlugManGUI could not be found! §9Please download it here: " +
|
|
"§6https://spigotmc.org/resources/plugmangui.87599/");
|
|
}
|
|
}
|
|
return;
|
|
case "plugin.T2C-LuckyBox":
|
|
if (Main.LuckyBox) {
|
|
LuckyBoxAPI.openShop(player);
|
|
} else {
|
|
if (player.hasPermission(Permissions.admin)) {
|
|
T2Csend.player(player, prefix + " §4T2C-LuckyBox could not be found! §9Please download it here: " +
|
|
"§6https://www.spigotmc.org/resources/luckybox.98154/");
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (T2CmcVersion.isMc1_13()) {
|
|
GUIListener.GUICode = "";
|
|
} else GUIListener.GUICode = "§6§8§9§r";
|
|
if (gui.guiEnable || player.hasPermission(Permissions.updatemsg)) {
|
|
Inventory inventory;
|
|
if (Main.PaPi) {
|
|
inventory = Bukkit.createInventory((InventoryHolder) null, 9 * gui.guiLines, (T2Creplace.replace(prefix, player, GUIListener.GUICode + gui.guiName)));
|
|
} else inventory = Bukkit.createInventory((InventoryHolder) null, 9 * gui.guiLines, (T2Creplace.replace(prefix, GUIListener.GUICode + gui.guiName)));
|
|
|
|
if (gui.guiFillItemEnable) {
|
|
GuiBuilder.fillItem(inventory, gui);
|
|
}
|
|
for (Slot slot : gui.slots) {
|
|
try {
|
|
Function function = Main.functionHashMap.get(slot.function);
|
|
if (function == null) {
|
|
T2Csend.error(Main.getPlugin(), "The Function " + slot.function + " in the GUI " + gui.key + " does not exist!");
|
|
continue;
|
|
}
|
|
if (slot.permission && !player.hasPermission(slot.permissionToSee)) continue;
|
|
if (slot.slot < 0 || slot.slot > gui.guiLines * 9) continue;
|
|
|
|
if (slot.enable) {
|
|
if (function.empty) {
|
|
ItemStack air = new ItemStack(Material.AIR);
|
|
inventory.setItem(slot.slot, air);
|
|
} else {
|
|
if (function.togglePermission) {
|
|
if (player.hasPermission(function.togglePermissionPerm)) {
|
|
toggleOn(function, slot, player, inventory);
|
|
} else {
|
|
toggleOff(function, slot, player, inventory);
|
|
}
|
|
} else if (function.toggleUseItem) {
|
|
if (Events.useItemHashMap.get(player.getName())) {
|
|
toggleOn(function, slot, player, inventory);
|
|
} else {
|
|
toggleOff(function, slot, player, inventory);
|
|
}
|
|
} else {
|
|
if (function.playerHead_Enable) {
|
|
if (function.base64_Enable) {
|
|
GuiBuilder.base64(slot, player, inventory);
|
|
} else {
|
|
if (function.playerWhoHasOpenedTheGUI) {
|
|
GuiBuilder.playerHead(slot, player, inventory, player.getName());
|
|
} else {
|
|
GuiBuilder.playerHead(slot, player, inventory, function.playerName);
|
|
}
|
|
}
|
|
} else {
|
|
GuiBuilder.item(slot, player, inventory);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch (Exception ex) {
|
|
ex.printStackTrace();
|
|
ItemStack air = new ItemStack(Material.AIR);
|
|
inventory.setItem(slot.slot, air);
|
|
}
|
|
|
|
}
|
|
if (sound) {
|
|
Sound.play(player, SoundEnum.OpenInventory);
|
|
}
|
|
player.openInventory(inventory);
|
|
T2Csend.debug(plugin, "§6" + player.getName() + " §5Open §6" + T2Creplace.replace(prefix, gui.guiName) + " §5" + " §7- §e" + (System.currentTimeMillis() - long_.longValue()) + "ms");
|
|
} else T2Csend.player(player, SelectMessages.GUIIsDisabled.replace("[gui]", T2Creplace.replace(prefix, gui.guiName)));
|
|
}
|
|
|
|
private static void toggleOn(Function function, Slot slot, Player player, Inventory inventory) {
|
|
if (SelectConfig.getToggleItemOnOrYesBase64()) {
|
|
GuiBuilder.base64(SelectConfig.getToggleItemOnOrYesBase64Value(), slot, player, inventory);
|
|
} else GuiBuilder.item(SelectConfig.getToggleItemOnOrYesMaterial(), slot, player, inventory);
|
|
}
|
|
|
|
private static void toggleOff(Function function, Slot slot, Player player, Inventory inventory) {
|
|
if (SelectConfig.getToggleItemOffOrNoBase64()) {
|
|
GuiBuilder.base64(SelectConfig.getToggleItemOffOrNoBase64Value(), slot, player, inventory);
|
|
} else GuiBuilder.item(SelectConfig.getToggleItemOffOrNoMaterial(), slot, player, inventory);
|
|
}
|
|
}
|