package com.alttd.config; import com.alttd.VillagerUI; import com.alttd.objects.VillagerType; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; import java.io.File; import java.util.HashSet; import java.util.Set; public final class Config extends AbstractConfig { static Config config; static int version; public Config() { super(new File(System.getProperty("user.home") + File.separator + "share" + File.separator + "configs" + File.separator + "VillagerShopUI"), "config.yml"); } public static void reload() { config = new Config(); version = config.getInt("config-version", 1); config.set("config-version", 1); config.readConfig(Config.class, null); } public static String INITIAL_VILLAGER_WINDOW = " price: %"; public static String BUY_WINDOW = " price: %"; public static String SELL_WINDOW = " price: %"; private static void loadUI() { INITIAL_VILLAGER_WINDOW = config.getString("ui.initial-window-name", INITIAL_VILLAGER_WINDOW); BUY_WINDOW = config.getString("ui.buy-window-name", BUY_WINDOW); SELL_WINDOW = config.getString("ui.sell-window-name", SELL_WINDOW); } public static String HELP_MESSAGE_WRAPPER = "VillagerShopUI help:\n"; public static String HELP_MESSAGE = "Show this menu: /villagerui help"; public static String RELOAD_MESSAGE = "Reload configs: /villagerui reload"; public static String CREATE_VILLAGER_MESSAGE = "Create a new trading villager: /villagerui createvillager "; private static void loadHelp() { HELP_MESSAGE_WRAPPER = config.getString("help.help-wrapper", HELP_MESSAGE_WRAPPER); HELP_MESSAGE = config.getString("help.help", HELP_MESSAGE); RELOAD_MESSAGE = config.getString("help.reload", RELOAD_MESSAGE); CREATE_VILLAGER_MESSAGE = config.getString("help.create-villager", CREATE_VILLAGER_MESSAGE); } public static String NO_PERMISSION = "You do not have permission to do that."; public static String NO_CONSOLE = "You cannot use this command from console."; private static void loadGeneric() { NO_PERMISSION = config.getString("generic.no-permission", NO_PERMISSION); NO_CONSOLE = config.getString("generic.no-console", NO_CONSOLE); } public static String VILLAGER_NAME = ""; private static void loadIDKYET() {//TODO rename VILLAGER_NAME = config.getString("idkyet.villager-name", VILLAGER_NAME); //TODO change path } private static void loadVillagerTypes() { VillagerType.clearVillagerTypes(); ConfigurationSection configurationSection = config.getConfigurationSection("villager-types"); if (configurationSection == null) { VillagerUI.getInstance().getLogger().warning("No villager types found in config."); return; } Set keys = configurationSection.getKeys(false); if (keys.isEmpty()) VillagerUI.getInstance().getLogger().warning("No villager types found in config."); keys.forEach(key -> { ConfigurationSection villagerType = configurationSection.getConfigurationSection(key); if (villagerType == null) return; VillagerType.addVillagerType(new VillagerType( key, villagerType.getString("name"), loadProducts(villagerType.getConfigurationSection("buying")), loadProducts(villagerType.getConfigurationSection("selling")), villagerType.getDouble("price-modifier")) ); }); } private static HashSet loadProducts(ConfigurationSection productsSection) { HashSet products = new HashSet<>(); if (productsSection == null) return products; productsSection.getKeys(false).forEach(item -> { Material material = Material.getMaterial(item); if (material == null) { VillagerUI.getInstance().getLogger().warning("Invalid key in products -> " + item); return; } products.add(new ItemStack(material, productsSection.getInt(item))); }); return products; } }