package de.fanta.challenges.guis.settingsgui;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.Config;
import de.fanta.challenges.utils.guiutils.AbstractWindow;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import de.iani.cubesideutils.bukkit.items.CustomHeads;
import org.bukkit.Bukkit;
import org.bukkit.Difficulty;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
public class ServerSettingsGui extends AbstractWindow {
private static final Challenges plugin = Challenges.getPlugin();
public static final int INVENTORY_SIZE = 36;
private static final int BACK_INDEX = 7;
private static final int CLOSE_IDEX = 8;
private static final int DIFFICULTY_INDEX = 19;
private static final int KEEP_INVENTORY_INDEX = 20;
private static final int NATURAL_REGENERATION_INDEX = 21;
private static final int ULTRA_HARDCORE_INDEX = 22;
private static final int ONE_LIFE_INDEX = 23;
private static final int RESPAWN_INDEX = 24;
private static final int PVP_INDEX = 25;
public ServerSettingsGui(Player player) {
super(player, Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Server Settings"));
}
@Override
public void onItemClicked(InventoryClickEvent event) {
Player player = getPlayer();
if (!mayAffectThisInventory(event)) {
return;
}
event.setCancelled(true);
if (!getInventory().equals(event.getClickedInventory())) {
return;
}
int slot = event.getSlot();
switch (slot) {
case DIFFICULTY_INDEX -> {
if (plugin.getDifficulty() == Difficulty.EASY) {
plugin.setDifficulty(Difficulty.NORMAL);
ChatUtil.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Mittel", ChatUtil.ORANGE);
} else if (plugin.getDifficulty() == Difficulty.NORMAL) {
plugin.setDifficulty(Difficulty.HARD);
ChatUtil.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Schwer", ChatUtil.RED);
} else if (plugin.getDifficulty() == Difficulty.HARD) {
plugin.setDifficulty(Difficulty.PEACEFUL);
ChatUtil.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Friedlich", ChatUtil.GREEN);
} else if (plugin.getDifficulty() == Difficulty.PEACEFUL) {
plugin.setDifficulty(Difficulty.EASY);
ChatUtil.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Leicht", ChatUtil.BLUE);
Config.setValue("editsettings", true);
}
}
case KEEP_INVENTORY_INDEX -> {
if (plugin.getKeepInventory()) {
plugin.setKeepInventory(false);
ChatUtil.sendTitleToAll("Server Einstellungen", "Keep Inventory deaktiviert", ChatUtil.RED);
} else {
plugin.setKeepInventory(true);
ChatUtil.sendTitleToAll("Server Einstellungen", "Keep Inventory aktiviert", ChatUtil.GREEN);
}
Config.setValue("editsettings", true);
}
case NATURAL_REGENERATION_INDEX -> {
if (plugin.getNaturalRegeneration()) {
plugin.setNaturalRegeneration(false);
ChatUtil.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration aktiviert", ChatUtil.GREEN);
} else {
plugin.setNaturalRegeneration(true);
ChatUtil.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration deaktiviert", ChatUtil.RED);
}
Config.setValue("editsettings", true);
}
case ULTRA_HARDCORE_INDEX -> {
if (Config.getBoolean("ultrahardcore")) {
Config.setValue("ultrahardcore", false);
ChatUtil.sendTitleToAll("Server Einstellungen", "Ultra Hardcore deaktiviert", ChatUtil.RED);
} else {
Config.setValue("ultrahardcore", true);
ChatUtil.sendTitleToAll("Server Einstellungen", "Ultra Hardcore aktiviert", ChatUtil.GREEN);
}
}
case ONE_LIFE_INDEX -> {
if (Config.getBoolean("onelife")) {
Config.setValue("onelife", false, false);
ChatUtil.sendTitleToAll("Server Einstellungen", "Ein Leben für alle deaktiviert", ChatUtil.RED);
} else {
Config.setValue("onelife", true, false);
ChatUtil.sendTitleToAll("Server Einstellungen", "Ein Leben für alle aktiviert", ChatUtil.GREEN);
}
}
case RESPAWN_INDEX -> {
if (Config.getBoolean("respawn")) {
Config.setValue("respawn", false);
ChatUtil.sendTitleToAll("Server Einstellungen", "Wiederbeleben deaktiviert", ChatUtil.RED);
} else {
Config.setValue("respawn", true);
ChatUtil.sendTitleToAll("Server Einstellungen", "Wiederbeleben aktiviert", ChatUtil.GREEN);
}
}
case PVP_INDEX -> {
if (plugin.getPvP()) {
plugin.setPvP(false);
Config.setValue("pvp", false);
ChatUtil.sendTitleToAll("Server Einstellungen", "PVP deaktiviert", ChatUtil.RED);
} else {
plugin.setPvP(true);
Config.setValue("pvp", true);
ChatUtil.sendTitleToAll("Server Einstellungen", "PVP aktiviert", ChatUtil.GREEN);
}
}
default -> {
}
}
rebuildInventory();
switch (slot) {
case BACK_INDEX -> new MainGui(player).open();
case CLOSE_IDEX -> player.closeInventory();
}
}
@Override
protected void rebuildInventory() {
for (int i = 0; i < INVENTORY_SIZE; i++) {
ItemStack item;
switch (i) {
case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.RED + "Zurück");
case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "Menü verlassen");
case DIFFICULTY_INDEX -> {
if (plugin.getDifficulty() == Difficulty.EASY) {
item = GUIUtils.createGuiItem(Material.IRON_SWORD, ChatUtil.BLUE + "Schwierigkeitsgrad Leicht");
} else if (plugin.getDifficulty() == Difficulty.NORMAL) {
item = GUIUtils.createGuiItem(Material.DIAMOND_SWORD, ChatUtil.ORANGE + "Schwierigkeitsgrad Mittel");
} else if (plugin.getDifficulty() == Difficulty.HARD) {
item = GUIUtils.createGuiItem(Material.NETHERITE_SWORD, ChatUtil.RED + "Schwierigkeitsgrad Schwer");
} else {
item = GUIUtils.createGuiItem(Material.POPPY, ChatUtil.GREEN + "Schwierigkeitsgrad Friedlich");
}
}
case KEEP_INVENTORY_INDEX -> {
if (plugin.getKeepInventory()) {
item = GUIUtils.createGuiItem(Material.CHEST_MINECART, ChatUtil.GREEN + "Keep Inventory aktiviert", true);
} else {
item = GUIUtils.createGuiItem(Material.CHEST_MINECART, ChatUtil.RED + "Keep Inventory deaktiviert");
}
}
case NATURAL_REGENERATION_INDEX -> {
if (plugin.getNaturalRegeneration()) {
item = GUIUtils.createGuiItem(Material.GOLDEN_APPLE, ChatUtil.GREEN + "Natürliche Regeneration aktiviert", true);
} else {
item = GUIUtils.createGuiItem(Material.GOLDEN_APPLE, ChatUtil.RED + "Natürliche Regeneration deaktiviert");
}
}
case ULTRA_HARDCORE_INDEX -> {
if (Config.getBoolean("ultrahardcore")) {
item = GUIUtils.createGuiItem(Material.SUSPICIOUS_STEW, ChatUtil.GREEN + "Ultra Hardcore aktiviert", true);
} else {
item = GUIUtils.createGuiItem(Material.SUSPICIOUS_STEW, ChatUtil.RED + "Ultra Hardcore deaktiviert");
}
}
case ONE_LIFE_INDEX -> {
if (Config.getBoolean("onelife")) {
item = GUIUtils.createGuiItem(Material.SUNFLOWER, ChatUtil.GREEN + "Ein Leben für alle aktiviert", true);
} else {
item = GUIUtils.createGuiItem(Material.SUNFLOWER, ChatUtil.RED + "Ein Leben für alle deaktiviert");
}
}
case RESPAWN_INDEX -> {
if (Config.getBoolean("respawn")) {
item = GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatUtil.GREEN + "Wiederbeleben aktiviert", true);
} else {
item = GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatUtil.RED + "Wiederbeleben deaktiviert");
}
}
case PVP_INDEX -> {
if (plugin.getServer().getWorld("world").getPVP()) {
item = GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatUtil.GREEN + "PVP aktiviert", true);
} else {
item = GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatUtil.RED + "PVP deaktiviert");
}
}
default -> item = GUIUtils.EMPTY_ICON;
}
this.getInventory().setItem(i, item);
}
}
}