package de.iani.treasurechest;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.UUID;
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 Converter {
private TreasureChest plugin;
public Converter(TreasureChest plugin) {
this.plugin = plugin;
}
public void convertAll() {
File chestContentFolder = new File(this.plugin.getDataFolder(), "content");
if (!chestContentFolder.isDirectory()) {
return;
}
File[] treasureChestFiles = chestContentFolder.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".yml");
}
});
plugin.getLogger().info("Konvertiere " + treasureChestFiles.length + " Dateien");
int i = 0;
for (File file : treasureChestFiles) {
try {
UUID owner = UUID.fromString(file.getName().substring(0, file.getName().length() - 4));
convertPlayer(owner, file);
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "Could not convert " + file.getName() + ": " + e.getMessage(), e);
}
i++;
if (i % 100 == 0) {
plugin.getLogger().info(i + "/" + treasureChestFiles.length);
}
}
if (chestContentFolder.listFiles().length == 0) {
chestContentFolder.delete();
}
plugin.getLogger().info(i + "/" + treasureChestFiles.length);
File uuidFile = new File(plugin.getDataFolder(), "playerUUIDs.yml");
if (uuidFile.exists()) {
uuidFile.delete();
}
}
public void convertPlayer(UUID owner, 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);
}
}
}
TreasureChestItem item = new TreasureChestItem(display, priceItems.toArray(new ItemStack[priceItems.size()]), priceMoney);
plugin.getDatabase().addItem(owner, item);
}
}
}
}
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "Could not load user chest file: " + file.getName(), e);
}
file.delete();
}
}