package de.iani.treasurechest; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.logging.Level; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; public class PlayerTreasureChestContent { private TreasureChest plugin; private File file; private ArrayList<TreasureChestItem> items; private long online; public PlayerTreasureChestContent(TreasureChest plugin, File file) { this.plugin = plugin; this.file = file; try { if (file.exists()) { YamlConfiguration conf = YamlConfiguration.loadConfiguration(file); ConfigurationSection prices = conf.getConfigurationSection("prices"); if (prices != null) { for (String e : prices.getKeys(false)) { ConfigurationSection price = prices.getConfigurationSection(e); if (price != null) { ItemStack display = price.getItemStack("displayItem"); if (display == null) { display = new ItemStack(Material.BEDROCK); ItemMeta meta = display.getItemMeta(); meta.setDisplayName("Unset displayitem"); display.setItemMeta(meta); } int priceMoney = price.getInt("priceMoney"); ArrayList<ItemStack> priceItems = new ArrayList<>(); ConfigurationSection itemPricesSection = price.getConfigurationSection("itemPrices"); if (itemPricesSection != null) { for (String pricee : itemPricesSection.getKeys(false)) { ItemStack priceItem = itemPricesSection.getItemStack(pricee); if (priceItem != null) { priceItems.add(priceItem); } } } if (items == null) { items = new ArrayList<>(); } items.add(new TreasureChestItem(display, priceItems.toArray(new ItemStack[priceItems.size()]), priceMoney)); } } } } } catch (Exception e) { plugin.getLogger().log(Level.SEVERE, "Could not load user chest file: " + file.getName(), e); } } private void save() { file.getParentFile().mkdirs(); YamlConfiguration conf = new YamlConfiguration(); ConfigurationSection prices = conf.createSection("prices"); if (items != null) { int nr = 0; for (TreasureChestItem i : items) { ConfigurationSection price = prices.createSection(Integer.toString(nr++)); price.set("displayItem", i.getDisplayItem().clone()); price.set("priceMoney", i.getPriceMoney()); ConfigurationSection itemsSec = price.createSection("itemPrices"); if (i.getPriceItems() != null) { int nr2 = 0; for (ItemStack st : i.getPriceItems()) { itemsSec.set(Integer.toString(nr2++), st.clone()); } } } } try { conf.save(file); } catch (IOException e) { plugin.getLogger().log(Level.SEVERE, "Could not save user chest file: " + file.getName(), e); } } public void addItem(TreasureChestItem item) { item = item.clone(); if (items == null) { items = new ArrayList<>(); } items.add(item); save(); } public boolean removeItem(int pos) { if (items == null || items.size() <= pos || pos < 0) { return false; } items.remove(pos); if (items.size() == 0) { items = null; } save(); return true; } public boolean isEmpty() { return items == null || items.isEmpty(); } public List<TreasureChestItem> getItems() { return items == null ? Collections.EMPTY_LIST : Collections.unmodifiableList(items); } public TreasureChestItem getItem(int pos) { if (items == null || items.size() <= pos || pos < 0) { return null; } return items.get(pos); } public void setOnline(long t) { online = t; } public boolean isOnline(long t) { return online == t; } }