package com.alttd.config; import com.alttd.objects.VillagerType; import com.alttd.util.Logger; 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.List; 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 DRIVER = "mysql"; public static String IP = "localhost"; public static String PORT = "3306"; public static String DATABASE_NAME = "VillagerShopUI"; public static String USERNAME = ""; public static String PASSWORD = ""; private static void loadDatabase() { DRIVER = config.getString("database.driver", DRIVER); IP = config.getString("database.ip", IP); PORT = config.getString("database.port", PORT); DATABASE_NAME = config.getString("database.name", DATABASE_NAME); USERNAME = config.getString("database.username", USERNAME); PASSWORD = config.getString("database.password", PASSWORD); } public static String INITIAL_VILLAGER_WINDOW = " points: "; public static String BUY_WINDOW = " points: "; public static String SELL_WINDOW = " points: "; 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 POINTS_MESSAGE = "Show points: /villagerui points [villagerType]"; public static String RELOAD_MESSAGE = "Reload configs: /villagerui reload"; public static String CREATE_VILLAGER_MESSAGE = "Create a new trading villager: /villagerui createvillager "; public static String REMOVE_VILLAGER_MESSAGE = "Removes all existing trading villagers in a 2 block radius: /villagerui removevillager"; private static void loadHelp() { HELP_MESSAGE_WRAPPER = config.getString("help.help-wrapper", HELP_MESSAGE_WRAPPER); HELP_MESSAGE = config.getString("help.help", HELP_MESSAGE); POINTS_MESSAGE = config.getString("help.points", POINTS_MESSAGE); RELOAD_MESSAGE = config.getString("help.reload", RELOAD_MESSAGE); CREATE_VILLAGER_MESSAGE = config.getString("help.create-villager", CREATE_VILLAGER_MESSAGE); REMOVE_VILLAGER_MESSAGE = config.getString("help.remove-villager", REMOVE_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 = ""; public static String CONFIRM_BUTTON = "Confirm"; public static String TRANSACTION_ITEM_NAME = ""; public static List TRANSACTION_ITEM_DESCRIPTION = List.of( "Amount: ", "Price: ", "Points: "); private static void guiText() { VILLAGER_NAME = config.getString("gui-text.villager-name", VILLAGER_NAME); CONFIRM_BUTTON = config.getString("gui-text.confirm-button", CONFIRM_BUTTON); TRANSACTION_ITEM_NAME = config.getString("gui-text.transaction-item-name", TRANSACTION_ITEM_NAME); TRANSACTION_ITEM_DESCRIPTION = config.getStringList("gui-text.transaction-item-description", TRANSACTION_ITEM_DESCRIPTION); } public static String NOT_ENOUGH_MONEY = "You only have $, you need at least $ for this purchase."; public static String NOT_ENOUGH_ITEMS = "You only have don't have enough you need at least ."; public static String NOT_ENOUGH_SPACE = "You only have free, you need at least ."; public static String PURCHASED_ITEM = "You bought for and got points for a total of " + " for !"; public static String SOLD_ITEM = "You sold for and got points for a total of " + " for !"; public static String REMOVED_VILLAGER = "Removed villager with uuid "; public static String POINTS_HEADER = "Villager points for : "; public static String POINTS_CONTENT = ": "; public static String BUY_ITEM_MESSAGE = " can be bought at spawn at the villager for $ and points per item " + "at your current amount of points ()."; public static String NO_BUY_AT_SPAWN = " can not be bought at spawn, try a player shop!"; public static String SELL_ITEM_MESSAGE = " can be sold to spawn at the villager for $ and points per item " + "at your current amount of points ()."; public static String NO_SELL_AT_SPAWN = " can not be sold to spawn, try a player shop!"; private static void loadMessages() { NOT_ENOUGH_MONEY = config.getString("messages.not-enough-money", NOT_ENOUGH_MONEY); NOT_ENOUGH_ITEMS = config.getString("messages.not-enough-items", NOT_ENOUGH_ITEMS); NOT_ENOUGH_SPACE = config.getString("messages.not-enough-space", NOT_ENOUGH_SPACE); PURCHASED_ITEM = config.getString("messages.purchased-item", PURCHASED_ITEM); SOLD_ITEM = config.getString("messages.sold-item", SOLD_ITEM); REMOVED_VILLAGER = config.getString("messages.removed-villager", REMOVED_VILLAGER); POINTS_HEADER = config.getString("messages.points-header", POINTS_HEADER); POINTS_CONTENT = config.getString("messages.points-content", POINTS_CONTENT); BUY_ITEM_MESSAGE = config.getString("messages.buy-item-message", BUY_ITEM_MESSAGE); NO_BUY_AT_SPAWN = config.getString("messages.no-buy-at-spawn", NO_BUY_AT_SPAWN); SELL_ITEM_MESSAGE = config.getString("messages.sell-item-message", SELL_ITEM_MESSAGE); NO_SELL_AT_SPAWN = config.getString("messages.no-sell-at-spawn", NO_SELL_AT_SPAWN); } public static boolean DEBUG = false; private static void loadSettings() { DEBUG = config.getBoolean("settings.debug", DEBUG); } private static void loadVillagerTypes() { VillagerType.clearVillagerTypes(); ConfigurationSection configurationSection = config.getConfigurationSection("villager-types"); if (configurationSection == null) { Logger.warning("No villager types found in config."); return; } Set keys = configurationSection.getKeys(false); if (keys.isEmpty()) Logger.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.getString("profession")) ); }); } 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) { Logger.warning("Invalid key in products -> " + item); return; } products.add(new ItemStack(material, productsSection.getInt(item))); }); return products; } }