package de.mviper.adventskalender; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import java.time.LocalDate; import java.time.Month; import java.util.ArrayList; import java.util.List; import java.util.Map; public class AdventInventory { public static void openCalendar(org.bukkit.entity.Player player) { String title = LanguageManager.getString("gui.title"); Inventory inv = Bukkit.createInventory(null, 54, title); for (int i = 0; i < 24; i++) { int day = i + 1; ItemStack item = getCalendarItem(player, day); inv.setItem(i, item); } ItemStack filler = new ItemStack(Material.GRAY_STAINED_GLASS_PANE); ItemMeta fillerMeta = filler.getItemMeta(); fillerMeta.setDisplayName(" "); filler.setItemMeta(fillerMeta); for (int i = 24; i < 54; i++) { inv.setItem(i, filler); } player.openInventory(inv); } public static ItemStack getCalendarItem(org.bukkit.entity.Player player, int day) { LocalDate today = LocalDate.now(); String prefix = LanguageManager.getString("prefix"); if (today.getMonth() != Month.DECEMBER || today.getDayOfMonth() < day) { ItemStack item = new ItemStack(Material.BARRIER); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(prefix + "§cTag " + day); List lore = new ArrayList<>(); lore.add(prefix + "§7Noch nicht verfügbar."); lore.add(prefix + "§7Komme am " + day + ". Dezember wieder."); meta.setLore(lore); item.setItemMeta(meta); return item; } if (CalendarData.hasClaimed(player, day)) { ItemStack item = new ItemStack(Material.GREEN_STAINED_GLASS_PANE); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(prefix + "§aTag " + day + " - Geöffnet"); List lore = new ArrayList<>(); lore.add(prefix + LanguageManager.getString("messages.day_already_claimed")); meta.setLore(lore); item.setItemMeta(meta); return item; } ItemStack item = new ItemStack(Material.CHEST); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(prefix + "§eTag " + day + " - Noch zu holen!"); List lore = new ArrayList<>(); lore.add(prefix + "§7Klicke, um dein Geschenk zu erhalten."); meta.setLore(lore); item.setItemMeta(meta); return item; } public static ItemStack getRewardItem(int day) { String path = "rewards." + day; if (!Adventskalender.getInstance().getConfig().contains(path)) { return new ItemStack(Material.AIR); } String materialName = Adventskalender.getInstance().getConfig().getString(path + ".material"); int amount = Adventskalender.getInstance().getConfig().getInt(path + ".amount"); String key = Adventskalender.getInstance().getConfig().getString(path + ".key"); Material material = Material.getMaterial(materialName); if (material == null) { Adventskalender.getInstance().getLogger().warning("Material '" + materialName + "' für Tag " + day + " nicht gefunden!"); return new ItemStack(Material.BARRIER); } ItemStack item = new ItemStack(material, amount); ItemMeta meta = item.getItemMeta(); String namePath = key + ".name"; String lorePath = key + ".lore"; meta.setDisplayName(LanguageManager.getString(namePath)); meta.setLore(LanguageManager.getStringList(lorePath)); List> enchantmentList = Adventskalender.getInstance().getConfig().getMapList(path + ".enchantments"); if (enchantmentList != null) { for (Map enchantmentMap : enchantmentList) { String enchantName = (String) enchantmentMap.get("type"); int level = (int) enchantmentMap.get("level"); Enchantment enchantment = Enchantment.getByName(enchantName); if (enchantment != null) { meta.addEnchant(enchantment, level, true); } } } meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); item.setItemMeta(meta); return item; } }