diff --git a/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java b/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java index 8482a888..791a665a 100644 --- a/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java +++ b/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java @@ -2,8 +2,8 @@ import com.google.gson.Gson; import me.teakivy.teakstweaks.craftingtweaks.CraftingRegister; -import me.teakivy.teakstweaks.packs.hermitcraft.tag.Tag; import me.teakivy.teakstweaks.utils.*; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.gui.GUIListener; import me.teakivy.teakstweaks.utils.lang.Translatable; import me.teakivy.teakstweaks.utils.metrics.Metrics; @@ -20,8 +20,6 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; -import java.util.Objects; import static me.teakivy.teakstweaks.utils.metrics.CustomMetrics.registerCustomMetrics; @@ -31,16 +29,11 @@ public final class TeaksTweaks extends JavaPlugin implements Listener { private Register register; - public Tag tagListener; - private static boolean devMode; - /** * Called when the plugin is enabled */ @Override public void onEnable() { - devMode = getConfig().getBoolean("config.dev-mode"); - // Credits createCredits(); @@ -48,9 +41,8 @@ public void onEnable() { Metrics metrics = new Metrics(this, 12001); registerCustomMetrics(metrics); - // Update Config.yml - updateConfig(); - + // Initialize & Update Config + Config.init(); // Language Translatable.init(getConfig().getString("settings.language")); @@ -61,18 +53,12 @@ public void onEnable() { Bukkit.getScheduler().runTaskLater(this, UpdateChecker::sendUpdateMessage, 20L * 3); - // Crafting Tweaks CraftingRegister.registerAll(); // Commands Register.registerCommands(); - // Config - this.saveDefaultConfig(); - - tagListener = new Tag(); - // Plugin startup logic Logger.info(newText(" ")); Logger.info(Translatable.get("startup.plugin.started", Placeholder.parsed("version", this.getDescription().getVersion()))); @@ -82,6 +68,7 @@ public void onEnable() { register = new Register(); register.registerAll(); + // Remove legacy data.yml file removeDataFile(); } @@ -149,15 +136,6 @@ public static TeaksTweaks getInstance() { return getPlugin(TeaksTweaks.class); } - /** - * Get the config section for a pack - * @param pack Pack name - * @return config: packs.[pack] - */ - public static ConfigurationSection getPackConfig(String pack) { - return getInstance().getConfig().getConfigurationSection("packs." + pack); - } - /** * Create the credits file */ @@ -168,24 +146,6 @@ private void createCredits() { } } - /** - * Update the config.yml file - */ - private void updateConfig() { - String configVersion = this.getConfig().getString("config.version"); - String pluginConfigVersion = Objects.requireNonNull(this.getConfig().getDefaults()).getString("config.version"); - - if (!devMode && !configVersion.equalsIgnoreCase(pluginConfigVersion)) return; - - try { - ConfigUpdater.update(this, "config.yml", new File(this.getDataFolder(), "config.yml"), Collections.emptyList(), true); - } catch (IOException e) { - e.printStackTrace(); - } - - Logger.info(newText("Updated Plugin Config")); - } - /** * Get the Gson instance from JsonManager * @return Gson instance @@ -204,14 +164,6 @@ private void removeDataFile() { } } - /** - * Check if the plugin is in dev mode - * @return Boolean - */ - public static boolean isDevMode() { - return devMode; - } - public static Component newText(String text) { return MiniMessage.miniMessage().deserialize(text); } diff --git a/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java b/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java index 706a818b..b1e28d68 100644 --- a/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java +++ b/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java @@ -5,6 +5,7 @@ import me.teakivy.teakstweaks.utils.command.Arg; import me.teakivy.teakstweaks.utils.command.CommandEvent; import me.teakivy.teakstweaks.utils.command.CommandType; +import me.teakivy.teakstweaks.utils.config.Config; import java.util.Arrays; @@ -40,9 +41,9 @@ public void sendInfoMessage() { sendMessage("info.title", insert("version", TeaksTweaks.getInstance().getDescription().getVersion())); sendText(""); sendMessage("info.author", insert("author", get("plugin.author"))); - sendMessage("info.config_version", insert("config_version", getConfig().getString("config.version"))); - sendMessage("info.config_generated", insert("config_generated", getConfig().getString("config.created-version"))); - if (TeaksTweaks.getInstance().getConfig().getBoolean("config.dev-mode")) { + sendMessage("info.config_version", insert("config_version", Config.getVersion())); + sendMessage("info.config_generated", insert("config_generated", Config.getCreatedVersion())); + if (Config.isDevMode()) { sendMessage("info.dev_mode_enabled"); } sendMessage("info.support", insert("discord", get("plugin.discord"))); diff --git a/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractRecipe.java b/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractRecipe.java index 7f2768f5..e8e68ef4 100644 --- a/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractRecipe.java +++ b/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractRecipe.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextDecoration; @@ -76,7 +77,7 @@ public void init() { * Register the pack */ public void register() { - if (TeaksTweaks.getInstance().getConfig().getBoolean("crafting-tweaks." + path + ".enabled")) init(); + if (Config.isCraftingTweakEnabled(path)) init(); } /** diff --git a/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java b/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java index 7ad55e01..7f81ce53 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextDecoration; @@ -45,7 +46,7 @@ public BasePack(String path, PackType packType, Material material) { this.name = Translatable.getString(this.translatableKey + ".name"); this.path = path; this.packType = packType; - this.config = teaksTweaks.getConfig().getConfigurationSection("packs." + path); + this.config = Config.getPackConfig(path); this.permission = "teakstweaks." + path; String[] description = Translatable.getString(this.translatableKey + ".description").split(""); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/experimental/chunkloaders/Loader.java b/src/main/java/me/teakivy/teakstweaks/packs/experimental/chunkloaders/Loader.java index 379621a7..1faa80aa 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/experimental/chunkloaders/Loader.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/experimental/chunkloaders/Loader.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.config.Config; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.Particle; @@ -48,7 +49,7 @@ public void run() { marker.setRadius(.001F); marker.addScoreboardTag("loaded"); - if (teaksTweaks.getConfig().getBoolean("packs.chunk-loaders.show-particles")) { + if (Config.getBoolean("packs.chunk-loaders.show-particles")) { marker.getWorld().spawnParticle(Particle.FLAME, item.getLocation(), 100, 0, 0, 0, .5); } item.remove(); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java b/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java index c532f3ca..72a06277 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.config.Config; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -39,7 +40,7 @@ public void init() { public void registerRecipe() { if (getConfig().getBoolean("allow-smelting")) { FurnaceRecipe recipe = new FurnaceRecipe(new ItemStack(Material.GLASS_BOTTLE), Material.EXPERIENCE_BOTTLE); - recipe.setExperience(teaksTweaks.getConfig().getInt("packs.xp-management.take-xp-amount")); + recipe.setExperience(Config.getInt("packs.xp-management.take-xp-amount")); Bukkit.addRecipe(recipe); } } @@ -126,10 +127,10 @@ public void bottleXP(PlayerInteractEvent event) { } PersistentDataContainer data = xpMeta.getPersistentDataContainer(); - data.set(Key.get("xp_amount"), PersistentDataType.INTEGER, teaksTweaks.getConfig().getInt("packs.xp-management.return-xp-amount")); + data.set(Key.get("xp_amount"), PersistentDataType.INTEGER, Config.getInt("packs.xp-management.return-xp-amount")); xpBottle.setItemMeta(xpMeta); - data.set(Key.get("xp_smelt_amount"), PersistentDataType.INTEGER, teaksTweaks.getConfig().getInt("packs.xp-management.take-xp-amount")); + data.set(Key.get("xp_smelt_amount"), PersistentDataType.INTEGER, Config.getInt("packs.xp-management.take-xp-amount")); xpBottle.setItemMeta(xpMeta); if (getConfig().getBoolean("sneak-to-bottle-all") && player.isSneaking()) { diff --git a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java index e4e9ce76..12eef1b5 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java @@ -4,6 +4,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import org.bukkit.*; import org.bukkit.configuration.ConfigurationSection; @@ -81,7 +82,7 @@ public void run() { } public static void startThunder(Player player, Location loc) { - ConfigurationSection config = TeaksTweaks.getInstance().getConfig().getConfigurationSection("packs.thunder-shrine"); + ConfigurationSection config = Config.get().getConfigurationSection("packs.thunder-shrine"); World world = player.getWorld(); if (config.getBoolean("summoning.strike-lightning")) { world.strikeLightning(loc.add(0, +1, 0)); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java index 1d868055..1b812534 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java @@ -3,6 +3,7 @@ import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.config.Config; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Material; @@ -25,7 +26,7 @@ public MiniBlockTrade(String name, String texture, Material material) { } public MerchantRecipe getTrade() { - MerchantRecipe recipe = new MerchantRecipe(getSkull(), TeaksTweaks.getInstance().getConfig().getInt("packs.wandering-trades.mini-blocks.per-trade")); + MerchantRecipe recipe = new MerchantRecipe(getSkull(), Config.getInt("packs.wandering-trades.mini-blocks.per-trade")); recipe.addIngredient(new ItemStack(Material.EMERALD, 1)); recipe.addIngredient(new ItemStack(material)); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlocks.java b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlocks.java index 726a5bfd..2a5d8f10 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlocks.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlocks.java @@ -3,6 +3,7 @@ import com.google.gson.internal.LinkedTreeMap; import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.JsonManager; +import me.teakivy.teakstweaks.utils.config.Config; import org.bukkit.Material; import org.bukkit.inventory.MerchantRecipe; @@ -49,12 +50,12 @@ public static void load() { public static List getBlockTrades() { List recipes = new ArrayList<>(); - int amount = TeaksTweaks.getInstance().getConfig().getInt("packs.wandering-trades.mini-blocks.amount-of-trades"); + int amount = Config.getInt("packs.wandering-trades.mini-blocks.amount-of-trades"); List numbers = new ArrayList<>(); - if (!TeaksTweaks.getInstance().getConfig().getBoolean("packs.wandering-trades.mini-blocks.has-mini-blocks")) return recipes; + if (!Config.getBoolean("packs.wandering-trades.mini-blocks.has-mini-blocks")) return recipes; - if (TeaksTweaks.getInstance().getConfig().getBoolean("config.dev-mode")) { + if (Config.isDevMode()) { for (MiniBlockTrade miniBlock : miniBlocks) { recipes.add(miniBlock.getTrade()); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/Trades.java b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/Trades.java index b9dff13a..8f59ea20 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/Trades.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/Trades.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.config.Config; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.OfflinePlayer; @@ -56,7 +57,7 @@ private List getHeadTrades() { } } - if (teaksTweaks.getConfig().getBoolean("config.dev-mode")) { + if (Config.isDevMode()) { for (String player : players) { trades.add(newHeadRecipe(player)); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/largerphantoms/Phantoms.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/largerphantoms/Phantoms.java index 472df6dd..53e0a0d4 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/largerphantoms/Phantoms.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/largerphantoms/Phantoms.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.config.Config; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Statistic; @@ -24,7 +25,7 @@ public Phantoms() { @EventHandler public void onSpawn(CreatureSpawnEvent event) { Entity entity = event.getEntity(); - if (entity.getType() != EntityType.PHANTOM || (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.NATURAL && !teaksTweaks.getConfig().getBoolean("config.dev-mode"))) return; + if (entity.getType() != EntityType.PHANTOM || (event.getSpawnReason() != CreatureSpawnEvent.SpawnReason.NATURAL && !Config.isDevMode())) return; Phantom phantom = (Phantom) entity; Player player = null; double distance = Integer.MAX_VALUE; diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java index 097be9b6..bad80fc1 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java @@ -5,6 +5,7 @@ import com.mojang.authlib.properties.PropertyMap; import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.ReflectionUtils; +import me.teakivy.teakstweaks.utils.config.Config; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; import org.apache.commons.lang3.text.WordUtils; @@ -62,7 +63,7 @@ public void onDeath(EntityDeathEvent event) { } public boolean dropHead(EntityDeathEvent event) { - if (TeaksTweaks.getInstance().getConfig().getBoolean("config.dev-mode")) return true; + if (Config.isDevMode()) return true; return shouldDrop(event.getEntity().getKiller()); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java index 53d7375d..5cf1b7e4 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; @@ -133,31 +134,31 @@ public static void unAFK(Player player) { public static void displayAFKMessage(Player player, Boolean isAFK) { if (isAFK) { - if (teaksTweaks.getConfig().getBoolean("packs.afk-display.message.display-to-self")) { + if (Config.getBoolean("packs.afk-display.message.display-to-self")) { player.sendMessage(Translatable.get("afk_display.self_now_afk")); } - if (teaksTweaks.getConfig().getBoolean("packs.afk-display.message.display-to-everyone")) { + if (Config.getBoolean("packs.afk-display.message.display-to-everyone")) { for (Player player1 : Bukkit.getOnlinePlayers()) { if (player1.getUniqueId() != player.getUniqueId()) { player1.sendMessage(Translatable.get("afk_display.other_now_afk", insert("player", player.getName()))); } } } - if (teaksTweaks.getConfig().getBoolean("packs.afk-display.message.display-to-console")) { + if (Config.getBoolean("packs.afk-display.message.display-to-console")) { Logger.info(Translatable.get("afk_display.other_now_afk", insert("player", player.getName()))); } } else { - if (teaksTweaks.getConfig().getBoolean("packs.afk-display.message.display-to-self")) { + if (Config.getBoolean("packs.afk-display.message.display-to-self")) { player.sendMessage(Translatable.get("afk_display.self_not_afk")); } - if (teaksTweaks.getConfig().getBoolean("packs.afk-display.message.display-to-everyone")) { + if (Config.getBoolean("packs.afk-display.message.display-to-everyone")) { for (Player player1 : Bukkit.getOnlinePlayers()) { if (player1.getUniqueId() != player.getUniqueId()) { player1.sendMessage(Translatable.get("afk_display.other_not_afk", insert("player", player.getName()))); } } } - if (teaksTweaks.getConfig().getBoolean("packs.afk-display.message.display-to-console")) { + if (Config.getBoolean("packs.afk-display.message.display-to-console")) { Logger.info(Translatable.get("afk_display.other_not_afk", insert("player", player.getName()))); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java index 727448de..4f61a50e 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java @@ -1,6 +1,7 @@ package me.teakivy.teakstweaks.packs.survival.coordshud; import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.config.Config; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Bukkit; @@ -16,14 +17,14 @@ public class DisplayHud { public static void init() { hudMessage = "XYZ: "; - world = Bukkit.getWorld(TeaksTweaks.getInstance().getConfig().getString("packs.coords-hud.time-world")); + world = Bukkit.getWorld(Config.getString("packs.coords-hud.time-world")); if (world == null) world = Bukkit.getWorlds().get(0); } public static void showHud(Player player) { Bukkit.getScheduler().runTaskAsynchronously(TeaksTweaks.getInstance(), () -> { Location loc = player.getLocation().getBlock().getLocation(); - if (TeaksTweaks.getInstance().getConfig().getBoolean("packs.coords-hud.use-player-position")) { + if (Config.getBoolean("packs.coords-hud.use-player-position")) { loc = player.getLocation(); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/HUD.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/HUD.java index e631a9e8..f319a6de 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/HUD.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/HUD.java @@ -4,9 +4,11 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.config.Config; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -62,14 +64,14 @@ public static boolean isEnabled(Player player) { if (data.has(Key.get("ch_enabled"), PersistentDataType.BOOLEAN)) { return data.get(Key.get("ch_enabled"), PersistentDataType.BOOLEAN); } - FileConfiguration config = TeaksTweaks.getInstance().getConfig(); - setEnabled(player, config.getBoolean("packs.coords-hud.auto-enable") || config.getBoolean("packs.coords-hud.force-enable")); + setEnabled(player, Config.getBoolean("packs.coords-hud.auto-enable") || + Config.getBoolean("packs.coords-hud.force-enable")); return isEnabled(player); } public static void setEnabled(Player player, boolean enabled) { - if (TeaksTweaks.getInstance().getConfig().getBoolean("force-enable")) enabled = true; + if (Config.getBoolean("packs.coords-hud.force-enable")) enabled = true; PersistentDataContainer data = player.getPersistentDataContainer(); data.set(Key.get("ch_enabled"), PersistentDataType.BOOLEAN, enabled); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java index 568d34e9..2b006fbe 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.title.TitlePart; @@ -93,7 +94,7 @@ public void onItemUse(PlayerItemDamageEvent event) { pingPlayer(player, item, durability); } } - pingCooldown.put(player.getUniqueId(), System.currentTimeMillis() + (teaksTweaks.getConfig().getInt("packs.durability-ping.ping-cooldown") * 1000L)); + pingCooldown.put(player.getUniqueId(), System.currentTimeMillis() + (Config.getInt("packs.durability-ping.ping-cooldown") * 1000L)); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveCreator.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveCreator.java index cf9206cc..cc566220 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveCreator.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveCreator.java @@ -8,6 +8,7 @@ import me.teakivy.teakstweaks.utils.Key; import me.teakivy.teakstweaks.utils.Logger; import me.teakivy.teakstweaks.utils.ReflectionUtils; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.*; @@ -27,7 +28,7 @@ public class GraveCreator { - public static ConfigurationSection config = TeaksTweaks.getInstance().getConfig().getConfigurationSection("packs.graves"); + public static ConfigurationSection config = Config.getPackConfig("graves"); public static Location findGraveLocation(Location loc) { Location ogLoc = loc.clone(); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/HomesPack.java b/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/HomesPack.java index 3536fcd8..893acb46 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/HomesPack.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/HomesPack.java @@ -4,6 +4,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.config.Config; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.NamespacedKey; @@ -95,7 +96,7 @@ public static boolean onCooldown(Player player) { } public static int getCooldown(Player player) { - long cooldownTime = TeaksTweaks.getInstance().getConfig().getInt("packs.homes.teleport-cooldown") * 1000L; + long cooldownTime = Config.getInt("packs.homes.teleport-cooldown") * 1000L; if (!cooldowns.containsKey(player.getUniqueId())) { return 0; } diff --git a/src/main/java/me/teakivy/teakstweaks/utils/Register.java b/src/main/java/me/teakivy/teakstweaks/utils/Register.java index 70cf5882..03b54a37 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/Register.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/Register.java @@ -63,6 +63,7 @@ import me.teakivy.teakstweaks.packs.utilities.spectatorconduitpower.ConduitPower; import me.teakivy.teakstweaks.packs.utilities.spectatornightvision.NightVision; import me.teakivy.teakstweaks.utils.command.AbstractCommand; +import me.teakivy.teakstweaks.utils.config.Config; import java.util.*; import java.util.stream.Collectors; @@ -154,10 +155,9 @@ public void registerAll() { * @param bypassEnabled If true, will register all packs regardless of if they are enabled or not */ public void registerAll(boolean bypassEnabled) { - TeaksTweaks teaksTweaks = TeaksTweaks.getInstance(); unregisterAll(); - for (String pack : Objects.requireNonNull(teaksTweaks.getConfig().getConfigurationSection("packs")).getKeys(false)) { - if (teaksTweaks.getConfig().getBoolean("packs." + pack + ".enabled") || bypassEnabled) { + for (String pack : Objects.requireNonNull(Config.get().getConfigurationSection("packs")).getKeys(false)) { + if (Config.isPackEnabled(pack) || bypassEnabled) { registerPack(pack); } } @@ -175,10 +175,9 @@ public void unregisterAll() { * @param bypassEnabled If true, will unregister all packs regardless of if they are enabled or not */ public void unregisterAll(boolean bypassEnabled) { - TeaksTweaks teaksTweaks = TeaksTweaks.getInstance(); - teaksTweaks.clearPacks(); - for (String pack : Objects.requireNonNull(teaksTweaks.getConfig().getConfigurationSection("packs")).getKeys(false)) { - if (teaksTweaks.getConfig().getBoolean("packs." + pack + ".enabled") || bypassEnabled) { + TeaksTweaks.getInstance().clearPacks(); + for (String pack : Objects.requireNonNull(Config.get().getConfigurationSection("packs")).getKeys(false)) { + if (Config.isPackEnabled(pack) || bypassEnabled) { unregisterPack(pack); } } @@ -249,8 +248,7 @@ public static void registerCommands() { * @return A set of all packs */ public Set getAllPacks() { - TeaksTweaks teaksTweaks = TeaksTweaks.getInstance(); - return Objects.requireNonNull(teaksTweaks.getConfig().getConfigurationSection("packs")).getKeys(false); + return Objects.requireNonNull(Config.get().getConfigurationSection("packs")).getKeys(false); } /** diff --git a/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java b/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java index 101606b1..3107dc6a 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.ErrorType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -143,10 +144,10 @@ public AbstractCommand(CommandType type, String parentPack, String command, Stri * Register the command */ public void register() { - if (this.command.equals("mechanics") && !getConfig().getBoolean("settings.mechanics-command")) return; - if (this.command.equals("test") && !TeaksTweaks.isDevMode()) return; + if (this.command.equals("mechanics") && !Config.getBoolean("settings.mechanics-command")) return; + if (this.command.equals("test") && !Config.isDevMode()) return; - if (this.parentPack != null && !TeaksTweaks.getPackConfig(parentPack).getBoolean("enabled")) return; + if (this.parentPack != null && !Config.getPackConfig(parentPack).getBoolean("enabled")) return; ReflectCommand cmd = new ReflectCommand(this.command); if (this.alias != null) cmd.setAliases(this.alias); @@ -412,11 +413,11 @@ public void sendUsage() { } public ConfigurationSection getPackConfig() { - return TeaksTweaks.getInstance().getConfig().getConfigurationSection("packs." + parentPack); + return Config.getPackConfig(parentPack); } - public FileConfiguration getConfig() { - return TeaksTweaks.getInstance().getConfig(); + public ConfigurationSection getConfig() { + return Config.get(); } public void setCooldownTime(int time) { diff --git a/src/main/java/me/teakivy/teakstweaks/utils/config/Config.java b/src/main/java/me/teakivy/teakstweaks/utils/config/Config.java new file mode 100644 index 00000000..450469a5 --- /dev/null +++ b/src/main/java/me/teakivy/teakstweaks/utils/config/Config.java @@ -0,0 +1,71 @@ +package me.teakivy.teakstweaks.utils.config; + +import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.Logger; +import net.kyori.adventure.text.minimessage.MiniMessage; +import org.bukkit.configuration.ConfigurationSection; + +import java.io.File; +import java.io.IOException; +import java.util.Collections; +import java.util.Objects; + +public class Config { + public static void init() { + TeaksTweaks.getInstance().saveDefaultConfig(); + updateConfig(); + } + + public static ConfigurationSection get() { + return TeaksTweaks.getInstance().getConfig(); + } + + public static boolean isPackEnabled(String pack) { + return getBoolean("packs." + pack + ".enabled"); + } + + public static boolean isCraftingTweakEnabled(String tweak) { + return getBoolean("crafting-tweaks." + tweak + ".enabled"); + } + + public static ConfigurationSection getPackConfig(String pack) { + return get().getConfigurationSection("packs." + pack); + } + + public static boolean isDevMode() { + return getBoolean("config.dev-mode"); + } + + public static String getVersion() { + return getString("config.version"); + } + + public static String getCreatedVersion() { + return getString("config.created-version"); + } + + private static void updateConfig() { + String configVersion = getString("config.version"); + String pluginConfigVersion = Objects.requireNonNull(TeaksTweaks.getInstance().getConfig().getDefaults()).getString("config.version"); + + if (!TeaksTweaks.getInstance().getConfig().getBoolean("config.dev-mode") && !configVersion.equalsIgnoreCase(pluginConfigVersion)) return; + + try { + ConfigUpdater.update(TeaksTweaks.getInstance(), "config.yml", new File(TeaksTweaks.getInstance().getDataFolder(), "config.yml"), Collections.emptyList(), true); + } catch (IOException ignored) {} + + Logger.info(MiniMessage.miniMessage().deserialize("Updated Plugin Config")); + } + + public static int getInt(String path) { + return get().getInt(path); + } + + public static boolean getBoolean(String path) { + return get().getBoolean(path); + } + + public static String getString(String path) { + return get().getString(path); + } +} diff --git a/src/main/java/me/teakivy/teakstweaks/utils/ConfigUpdater.java b/src/main/java/me/teakivy/teakstweaks/utils/config/ConfigUpdater.java similarity index 99% rename from src/main/java/me/teakivy/teakstweaks/utils/ConfigUpdater.java rename to src/main/java/me/teakivy/teakstweaks/utils/config/ConfigUpdater.java index 88565835..22b5039c 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/ConfigUpdater.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/config/ConfigUpdater.java @@ -1,4 +1,4 @@ -package me.teakivy.teakstweaks.utils; +package me.teakivy.teakstweaks.utils.config; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; diff --git a/src/main/java/me/teakivy/teakstweaks/utils/lang/TranslatableLanguage.java b/src/main/java/me/teakivy/teakstweaks/utils/lang/TranslatableLanguage.java index 7cb84e08..44d10eea 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/lang/TranslatableLanguage.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/lang/TranslatableLanguage.java @@ -2,6 +2,8 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.config.Config; +import net.kyori.adventure.text.minimessage.MiniMessage; import java.io.*; import java.util.LinkedHashMap; @@ -131,12 +133,12 @@ public void update() { newMap.put(key, map.get(key)); } - newMap.put("meta.version", TeaksTweaks.getInstance().getConfig().getString("config.version")); + newMap.put("meta.version", Config.getVersion()); map = newMap; save(map); - Logger.info("Updated language file: " + this.getFileName()); + Logger.info(MiniMessage.miniMessage().deserialize("Updated language file: " + this.getFileName())); } /** diff --git a/src/main/java/me/teakivy/teakstweaks/utils/metrics/CustomMetrics.java b/src/main/java/me/teakivy/teakstweaks/utils/metrics/CustomMetrics.java index f36338e6..e56986cc 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/metrics/CustomMetrics.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/metrics/CustomMetrics.java @@ -1,6 +1,7 @@ package me.teakivy.teakstweaks.utils.metrics; import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.config.Config; import java.util.HashMap; import java.util.Map; @@ -96,7 +97,7 @@ public Map call() throws Exception { } public static int getPack(String pack) { - if (TeaksTweaks.getPackConfig(pack).getBoolean("enabled")) return 1; + if (Config.isPackEnabled(pack)) return 1; return 0; } @@ -147,7 +148,7 @@ public Map call() throws Exception { } public static int getCraftingTweak(String tweak) { - if (TeaksTweaks.getInstance().getConfig().getBoolean("crafting-tweaks." + tweak + ".enabled")) return 1; + if (Config.isCraftingTweakEnabled(tweak)) return 1; return 0; } @@ -156,7 +157,7 @@ public static void registerFirstUsedMetrics(Metrics metrics) { @Override public Map call() throws Exception { Map valueMap = new HashMap<>(); - valueMap.put(TeaksTweaks.getInstance().getConfig().getString("config.created-version"), 1); + valueMap.put(Config.getCreatedVersion(), 1); return valueMap; } @@ -168,10 +169,9 @@ public static void registerDevModeMetrics(Metrics metrics) { @Override public Map call() throws Exception { Map valueMap = new HashMap<>(); - if (TeaksTweaks.getInstance().getConfig().getBoolean("config.dev-mode")) { + if (Config.isDevMode()) { valueMap.put("Enabled", 1); - } - else { + } else { valueMap.put("Disabled", 1); } diff --git a/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateChecker.java b/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateChecker.java index 4d80dee5..aa0ea1e0 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateChecker.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateChecker.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.apache.commons.io.IOUtils; @@ -20,17 +21,14 @@ public class UpdateChecker { * @return The latest version of the plugin */ public static String getLatestVersion() { - if (TeaksTweaks.getInstance().getConfig().getBoolean("settings.disable-update-checker")) return null; + if (Config.getBoolean("settings.disable-update-checker")) return null; String url = "https://api.spiget.org/v2/resources/" + resourceId + "/versions/latest"; try { - @SuppressWarnings("deprecation") String nameJson = IOUtils.toString(new URL(url)); JSONObject latest = (JSONObject) JSONValue.parseWithException(nameJson); return latest.get("name").toString(); - } catch (IOException | ParseException e) { - e.printStackTrace(); - } + } catch (IOException | ParseException ignored) {} return null; } diff --git a/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java b/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java index 8d8ec24d..324578dc 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java @@ -1,6 +1,7 @@ package me.teakivy.teakstweaks.utils.update; import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -25,7 +26,8 @@ public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); if (!player.hasPermission("teakstweaks.manage")) return; - if (!TeaksTweaks.getInstance().getConfig().getBoolean("settings.alert-on-new-version")) return; + if (!Config.getBoolean("settings.alert-on-new-version")) return; + if (!UpdateChecker.hasUpdate()) return; String message = Translatable.getString("startup.update.join_alert"); message = "" + message;