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;
}
}