package de.fanta.challenges.guis.challengesettingsguis;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.guis.settingsgui.ChallengesGui;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.Config;
import de.fanta.challenges.utils.ItemUtils;
import de.iani.cubesideutils.bukkit.inventory.AbstractWindow;
import de.iani.cubesideutils.bukkit.items.CustomHeads;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
public class MLGSettingsGui extends AbstractWindow {
private static final Challenges plugin = Challenges.getPlugin();
private static final int RANDOM_BLOCK_INDEX = 1;
private static final int ADD_TIME_INDEX = 2;
private static final int TIME_INDEX = 5;
private static final int REMOVE_TIME_INDEX = 8;
private static final int BACK_INDEX = 6;
public MLGSettingsGui(Player player) {
super(player, Bukkit.createInventory(player, InventoryType.DISPENSER, plugin.getGuiPrefix().append(Component.text(" >> MLG Settings"))));
}
@Override
public void onItemClicked(InventoryClickEvent event) {
if (!mayAffectThisInventory(event)) {
return;
}
event.setCancelled(true);
if (!getInventory().equals(event.getClickedInventory())) {
return;
}
int slot = event.getSlot();
int time = Config.getInt("mlg.maxtime");
switch (slot) {
case RANDOM_BLOCK_INDEX -> {
if (Config.getBoolean("mlg.randommlgblock")) {
Config.setValue("mlg.randommlgblock", false);
ChatUtil.sendTitleToAll(Component.text("MLG Challenge"), Component.text("Wassereimer MLG", ChatUtil.GREEN));
} else {
Config.setValue("mlg.randommlgblock", true);
ChatUtil.sendTitleToAll(Component.text("MLG Challenge"), Component.text("Zufälliger MLG Block", ChatUtil.GREEN));
}
rebuildInventory();
}
case ADD_TIME_INDEX -> {
if (event.isShiftClick()) {
time = time + 10;
} else {
time = time + 100;
}
Config.setValue("mlg.maxtime", time);
rebuildInventory();
}
case REMOVE_TIME_INDEX -> {
if (event.isShiftClick()) {
time = time - 10;
} else {
time = time - 100;
}
if (time > 1) {
Config.setValue("mlg.maxtime", time);
rebuildInventory();
}
}
case BACK_INDEX -> new ChallengesGui(getPlayer()).open();
default -> {
}
}
}
@Override
protected void rebuildInventory() {
for (int i = 0; i < 9; i++) {
ItemStack item;
int time = Config.getInt("mlg.maxtime");
switch (i) {
case RANDOM_BLOCK_INDEX -> {
if (Config.getBoolean("mlg.randommlgblock")) {
item = ItemUtils.createGuiItem(Material.SLIME_BLOCK, Component.text("Zufälliger MLG Block", ChatUtil.GREEN), true, Component.text("Du bekommst ein Zufälligen Block.", ChatUtil.GREEN));
} else {
item = ItemUtils.createGuiItem(Material.WATER_BUCKET, Component.text("Wasser MLG", ChatUtil.GREEN), true, Component.text("Du bekommst einen Wassereimer.", ChatUtil.GREEN));
}
}
case ADD_TIME_INDEX ->
item = CustomHeads.RAINBOW_ARROW_UP.getHead(Component.text("Zeit hinzufügen", ChatUtil.GREEN), Component.text("Klick = +100 Sekunden", ChatUtil.GREEN), Component.text("Shift + Klick = +10 Sekunden", ChatUtil.GREEN));
case REMOVE_TIME_INDEX ->
item = CustomHeads.RAINBOW_ARROW_DOWN.getHead(Component.text("Zeit entfernen", ChatUtil.RED), Component.text("Klick = -100 Sekunden", ChatUtil.RED), Component.text("Shift + Klick = -10 Sekunden", ChatUtil.RED));
case TIME_INDEX -> {
ItemStack stack = new ItemStack(Material.CLOCK, Math.min(time, 64));
ItemMeta meta = stack.getItemMeta();
meta.displayName(Component.text(time + " Sekunden", ChatUtil.BLUE));
stack.setItemMeta(meta);
item = stack;
}
case BACK_INDEX ->
item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(Component.text("Zurück", ChatUtil.GREEN));
default -> item = ItemUtils.EMPTY_ICON;
}
this.getInventory().setItem(i, item);
}
}
}