package de.fanta.challenges.guis;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.utils.ChatUtil;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CheckItemsGUI implements Listener {
private static final Challenges plugin = Challenges.getPlugin();
private static final int JA_INDEX = 0;
private static final int ITEM_INDEX = 2;
private static final int NEIN_INDEX = 4;
public static final int INVENTORY_SIZE = 5;
private static final Map<Player, Inventory> InventoryperPlayer = new HashMap<>();
public static void createCheckItemGUI(Player p) {
if (plugin.getMaterials().isEmpty()) {
p.closeInventory();
ChatUtil.sendNormalMessage(p, "Lol fertig :>");
return;
}
Inventory TEMP_GUI = Bukkit.createInventory(null, InventoryType.HOPPER, plugin.getGUIPREFIX() + " >> geht das?? (" + plugin.getMaterials().size() + ")");
InventoryperPlayer.put(p, TEMP_GUI);
ItemStack stack = new ItemStack(plugin.getMaterials().get(0));
try {
TEMP_GUI.setItem(JA_INDEX, GUIUtils.createGuiItem(Material.LIME_CONCRETE, "Ja",true));
Bukkit.getLogger().info("" + stack);
TEMP_GUI.setItem(ITEM_INDEX, GUIUtils.createGuiItem(stack.getType(), stack.getI18NDisplayName(),false));
TEMP_GUI.setItem(NEIN_INDEX, GUIUtils.createGuiItem(Material.RED_CONCRETE, "Nein",true));
for (int i = 0; i < INVENTORY_SIZE; i++) {
ItemStack item = TEMP_GUI.getItem(i);
if (item == null || item.getType() == Material.AIR) {
TEMP_GUI.setItem(i, GUIUtils.EMPTY_ICON);
}
}
p.openInventory(TEMP_GUI);
} catch (Exception e) {
Bukkit.getLogger().info("Skip " + stack);
plugin.getMaterials().remove(stack.getType());
addItem(stack.getType());
createCheckItemGUI(p);
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
Player player = (Player) e.getWhoClicked();
if (InventoryperPlayer.get(player).equals(e.getClickedInventory())) {
int slot = e.getRawSlot();
if (slot == JA_INDEX) {
plugin.getMaterials().remove(e.getClickedInventory().getItem(ITEM_INDEX).getType());
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F);
createCheckItemGUI(player);
}
if (slot == NEIN_INDEX) {
Material material = e.getClickedInventory().getItem(ITEM_INDEX).getType();
addItem(material);
plugin.getMaterials().remove(material);
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1.0F, 2.0F);
createCheckItemGUI(player);
}
e.setCancelled(true);
}
}
public static void addItem(Material material) {
FileConfiguration config = Challenges.getPlugin().getItemConfig();
List<String> list = config.getStringList("items");
list.add(material.name());
config.set("items", list);
try {
Challenges.getPlugin().ItemConfig.save(Challenges.getPlugin().ItemConfigFile);
} catch (IOException e) {
e.printStackTrace();
}
}
}