From 034a270cfc3737f587ff43e205c9778b47d06138 Mon Sep 17 00:00:00 2001 From: xGinko Date: Sun, 28 Apr 2024 19:39:43 +0200 Subject: [PATCH] last round of optimizations before release --- .../villageroptimizer/VillagerOptimizer.java | 85 ++++++++++--------- .../VillagerOptimizerCmd.java | 8 +- .../subcommands/DisableSubCmd.java | 8 +- .../subcommands/ReloadSubCmd.java | 4 +- .../subcommands/VersionSubCmd.java | 6 +- .../modules/VillagerChunkLimit.java | 8 +- .../modules/VillagerOptimizerModule.java | 48 ++++++----- .../gameplay/LevelOptimizedProfession.java | 4 +- .../gameplay/RestockOptimizedTrades.java | 4 +- .../modules/optimization/OptimizeByBlock.java | 14 +-- .../optimization/OptimizeByNametag.java | 4 +- .../optimization/OptimizeByWorkstation.java | 20 ++--- .../utils/{GenericUtil.java => Util.java} | 6 +- 13 files changed, 115 insertions(+), 104 deletions(-) rename src/main/java/me/xginko/villageroptimizer/utils/{GenericUtil.java => Util.java} (94%) diff --git a/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java b/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java index df1e034..c10769f 100644 --- a/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java +++ b/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java @@ -5,7 +5,7 @@ import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.config.LanguageCache; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; @@ -18,6 +18,7 @@ import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; import java.io.File; +import java.io.FileNotFoundException; import java.nio.file.Files; import java.util.*; import java.util.jar.JarFile; @@ -45,6 +46,7 @@ public final class VillagerOptimizer extends JavaPlugin { audiences = BukkitAudiences.create(this); logger = ComponentLogger.logger(getLogger().getName()); bStats = new Metrics(this, 19954); + try { getDataFolder().mkdirs(); } catch (Exception e) { @@ -52,48 +54,48 @@ public final class VillagerOptimizer extends JavaPlugin { getServer().getPluginManager().disablePlugin(this); } - logger.info(Component.text("╭────────────────────────────────────────────────────────────╮").style(GenericUtil.STYLE)); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ _ __ _ __ __ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ | | / /(_)/ // /___ _ ___ _ ___ ____ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ | |/ // // // // _ `// _ `// -_)/ __/ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ |___//_//_//_/ \\_,_/ \\_, / \\__//_/ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ ____ __ _ /___/_ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ / __ \\ ___ / /_ (_)__ _ (_)___ ___ ____ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ / /_/ // _ \\/ __// // ' \\ / //_ // -_)/ __/ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ \\____// .__/\\__//_//_/_/_//_/ /__/\\__//_/ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ /_/ by xGinko │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); + logger.info(Component.text("╭────────────────────────────────────────────────────────────╮").style(Util.PL_STYLE)); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ _ __ _ __ __ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ | | / /(_)/ // /___ _ ___ _ ___ ____ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ | |/ // // // // _ `// _ `// -_)/ __/ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ |___//_//_//_/ \\_,_/ \\_, / \\__//_/ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ ____ __ _ /___/_ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ / __ \\ ___ / /_ (_)__ _ (_)___ ___ ____ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ / /_/ // _ \\/ __// // ' \\ / //_ // -_)/ __/ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ \\____// .__/\\__//_//_/_/_//_/ /__/\\__//_/ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ /_/ by xGinko │").style(Util.PL_STYLE)); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); logger.info(Component.text("│ ") - .style(GenericUtil.STYLE).append(Component.text("https://github.com/xGinko/VillagerOptimizer") - .color(NamedTextColor.GRAY)).append(Component.text(" │").style(GenericUtil.STYLE))); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); + .style(Util.PL_STYLE).append(Component.text("https://github.com/xGinko/VillagerOptimizer") + .color(NamedTextColor.GRAY)).append(Component.text(" │").style(Util.PL_STYLE))); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); logger.info(Component.text("│ ") - .style(GenericUtil.STYLE).append(Component.text(" ➤ Loading Translations...").style(GenericUtil.STYLE)) - .append(Component.text(" │").style(GenericUtil.STYLE))); - reloadLang(true); - - logger.info(Component.text("│ ") - .style(GenericUtil.STYLE).append(Component.text(" ➤ Loading Config...").style(GenericUtil.STYLE)) - .append(Component.text(" │").style(GenericUtil.STYLE))); + .style(Util.PL_STYLE).append(Component.text(" ➤ Loading Config...").style(Util.PL_STYLE)) + .append(Component.text(" │").style(Util.PL_STYLE))); reloadConfiguration(); logger.info(Component.text("│ ") - .style(GenericUtil.STYLE).append(Component.text(" ✓ Done.").color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD)) - .append(Component.text(" │").style(GenericUtil.STYLE))); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); - logger.info(Component.text("│ │").style(GenericUtil.STYLE)); - logger.info(Component.text("╰────────────────────────────────────────────────────────────╯").style(GenericUtil.STYLE)); + .style(Util.PL_STYLE).append(Component.text(" ➤ Loading Translations...").style(Util.PL_STYLE)) + .append(Component.text(" │").style(Util.PL_STYLE))); + reloadLang(true); + + logger.info(Component.text("│ ") + .style(Util.PL_STYLE).append(Component.text(" ✓ Done.").color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD)) + .append(Component.text(" │").style(Util.PL_STYLE))); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); + logger.info(Component.text("│ │").style(Util.PL_STYLE)); + logger.info(Component.text("╰────────────────────────────────────────────────────────────╯").style(Util.PL_STYLE)); } @Override public void onDisable() { - VillagerOptimizerModule.modules.forEach(VillagerOptimizerModule::disable); - VillagerOptimizerModule.modules.clear(); + VillagerOptimizerModule.MODULES.forEach(VillagerOptimizerModule::disable); + VillagerOptimizerModule.MODULES.clear(); if (foliaLib != null) { foliaLib.getImpl().cancelAllTasks(); foliaLib = null; @@ -166,17 +168,24 @@ public final class VillagerOptimizer extends JavaPlugin { private void reloadLang(boolean logFancy) { languageCacheMap = new HashMap<>(); try { - for (String localeString : getAvailableTranslations()) { - if (logFancy) logger.info(Component.text("│ ").style(GenericUtil.STYLE) + final SortedSet availableLocales = getAvailableTranslations(); + if (!config.auto_lang) { + final String defaultLang = config.default_lang.toString().replace("-", "_").toLowerCase(); + if (!availableLocales.contains(defaultLang)) + throw new FileNotFoundException("Could not find any translation file for language '" + config.default_lang + "'"); + availableLocales.removeIf(localeString -> !localeString.equalsIgnoreCase(defaultLang)); + } + for (String localeString : availableLocales) { + if (logFancy) logger.info(Component.text("│ ").style(Util.PL_STYLE) .append(Component.text(" "+localeString).color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD)) - .append(Component.text(" │").style(GenericUtil.STYLE))); + .append(Component.text(" │").style(Util.PL_STYLE))); else logger.info(String.format("Found language file for %s", localeString)); languageCacheMap.put(localeString, new LanguageCache(localeString)); } } catch (Throwable t) { - if (logFancy) logger.error(Component.text("│ ").style(GenericUtil.STYLE) + if (logFancy) logger.error(Component.text("│ ").style(Util.PL_STYLE) .append(Component.text("LANG ERROR").color(NamedTextColor.RED).decorate(TextDecoration.BOLD)) - .append(Component.text(" │").style(GenericUtil.STYLE)), t); + .append(Component.text(" │").style(Util.PL_STYLE)), t); else logger.error("Error while loading translation files!", t); } } diff --git a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/VillagerOptimizerCmd.java b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/VillagerOptimizerCmd.java index 4c903fd..b906156 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/VillagerOptimizerCmd.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/VillagerOptimizerCmd.java @@ -6,7 +6,7 @@ import me.xginko.villageroptimizer.commands.villageroptimizer.subcommands.Disabl import me.xginko.villageroptimizer.commands.villageroptimizer.subcommands.ReloadSubCmd; import me.xginko.villageroptimizer.commands.villageroptimizer.subcommands.VersionSubCmd; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; @@ -59,17 +59,17 @@ public class VillagerOptimizerCmd implements VillagerOptimizerCommand { private void sendCommandOverview(CommandSender sender) { if (!sender.hasPermission(Permissions.Commands.RELOAD.get()) && !sender.hasPermission(Permissions.Commands.VERSION.get())) return; KyoriUtil.sendMessage(sender, Component.text("-----------------------------------------------------").color(NamedTextColor.GRAY)); - KyoriUtil.sendMessage(sender, Component.text("VillagerOptimizer Commands").color(GenericUtil.COLOR)); + KyoriUtil.sendMessage(sender, Component.text("VillagerOptimizer Commands").color(Util.PL_COLOR)); KyoriUtil.sendMessage(sender, Component.text("-----------------------------------------------------").color(NamedTextColor.GRAY)); subCommands.forEach(subCommand -> KyoriUtil.sendMessage(sender, subCommand.getSyntax().append(Component.text(" - ").color(NamedTextColor.DARK_GRAY)).append(subCommand.getDescription()))); KyoriUtil.sendMessage(sender, - Component.text("/optimizevillagers ").color(GenericUtil.COLOR) + Component.text("/optimizevillagers ").color(Util.PL_COLOR) .append(Component.text(" - ").color(NamedTextColor.DARK_GRAY)) .append(Component.text("Optimize villagers in a radius").color(NamedTextColor.GRAY)) ); KyoriUtil.sendMessage(sender, - Component.text("/unoptmizevillagers ").color(GenericUtil.COLOR) + Component.text("/unoptmizevillagers ").color(Util.PL_COLOR) .append(Component.text(" - ").color(NamedTextColor.DARK_GRAY)) .append(Component.text("Unoptimize villagers in a radius").color(NamedTextColor.GRAY)) ); diff --git a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/DisableSubCmd.java b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/DisableSubCmd.java index d86535a..6eded4b 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/DisableSubCmd.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/DisableSubCmd.java @@ -4,7 +4,7 @@ import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.commands.SubCommand; import me.xginko.villageroptimizer.enums.Permissions; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; @@ -25,7 +25,7 @@ public class DisableSubCmd extends SubCommand { @Override public TextComponent getSyntax() { - return Component.text("/villageroptimizer disable").color(GenericUtil.COLOR); + return Component.text("/villageroptimizer disable").color(Util.PL_COLOR); } @Override @@ -36,8 +36,8 @@ public class DisableSubCmd extends SubCommand { } KyoriUtil.sendMessage(sender, Component.text("Disabling VillagerOptimizer...").color(NamedTextColor.RED)); - VillagerOptimizerModule.modules.forEach(VillagerOptimizerModule::disable); - VillagerOptimizerModule.modules.clear(); + VillagerOptimizerModule.MODULES.forEach(VillagerOptimizerModule::disable); + VillagerOptimizerModule.MODULES.clear(); VillagerOptimizer.getCache().cacheMap().clear(); KyoriUtil.sendMessage(sender, Component.text("Disabled all plugin listeners and tasks.").color(NamedTextColor.GREEN)); KyoriUtil.sendMessage(sender, Component.text("You can enable the plugin again using the reload command.").color(NamedTextColor.YELLOW)); diff --git a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/ReloadSubCmd.java b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/ReloadSubCmd.java index d3b269f..d3ea111 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/ReloadSubCmd.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/ReloadSubCmd.java @@ -3,7 +3,7 @@ package me.xginko.villageroptimizer.commands.villageroptimizer.subcommands; import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.commands.SubCommand; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; @@ -24,7 +24,7 @@ public class ReloadSubCmd extends SubCommand { @Override public TextComponent getSyntax() { - return Component.text("/villageroptimizer reload").color(GenericUtil.COLOR); + return Component.text("/villageroptimizer reload").color(Util.PL_COLOR); } @Override diff --git a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/VersionSubCmd.java b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/VersionSubCmd.java index a4b8146..55c6fa9 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/VersionSubCmd.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/villageroptimizer/subcommands/VersionSubCmd.java @@ -4,7 +4,7 @@ import io.papermc.paper.plugin.configuration.PluginMeta; import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.commands.SubCommand; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; @@ -27,7 +27,7 @@ public class VersionSubCmd extends SubCommand { @Override public TextComponent getSyntax() { - return Component.text("/villageroptimizer version").color(GenericUtil.COLOR); + return Component.text("/villageroptimizer version").color(Util.PL_COLOR); } @Override @@ -57,7 +57,7 @@ public class VersionSubCmd extends SubCommand { KyoriUtil.sendMessage(sender, Component.newline() .append( Component.text(name + " " + version) - .style(GenericUtil.STYLE) + .style(Util.PL_STYLE) .clickEvent(ClickEvent.openUrl(website)) ) .append(Component.text(" by ").color(NamedTextColor.GRAY)) diff --git a/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java b/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java index 0b4279d..9ac5742 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java @@ -5,7 +5,7 @@ import com.tcoded.folialib.wrapper.task.WrappedTask; import me.xginko.villageroptimizer.VillagerCache; import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.config.Config; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.LocationUtil; import org.bukkit.Chunk; import org.bukkit.Server; @@ -111,7 +111,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { this.periodic_chunk_check = scheduler.runTimer(() -> { for (World world : server.getWorlds()) { for (Chunk chunk : world.getLoadedChunks()) { - if (!skip_unloaded_entity_chunks || GenericUtil.isEntitiesLoaded(chunk)) { + if (!skip_unloaded_entity_chunks || Util.isEntitiesLoaded(chunk)) { this.manageVillagerCount(chunk); } } @@ -174,7 +174,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { scheduler.runAtEntity(villager, kill -> { villager.remove(); if (log_enabled) { - info("Removed unoptimized villager with profession '" + GenericUtil.formatEnum(villager.getProfession()) + "' at " + + info("Removed unoptimized villager with profession '" + Util.formatEnum(villager.getProfession()) + "' at " + LocationUtil.toString(villager.getLocation())); } }); @@ -196,7 +196,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { villager.remove(); if (log_enabled) { - info("Removed optimized villager with profession '" + GenericUtil.formatEnum(villager.getProfession()) + "' at " + + info("Removed optimized villager with profession '" + Util.formatEnum(villager.getProfession()) + "' at " + LocationUtil.toString(villager.getLocation())); } }); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java b/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java index 02b19d0..d6e9cdf 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java @@ -5,6 +5,8 @@ import me.xginko.villageroptimizer.modules.gameplay.*; import me.xginko.villageroptimizer.modules.optimization.OptimizeByBlock; import me.xginko.villageroptimizer.modules.optimization.OptimizeByNametag; import me.xginko.villageroptimizer.modules.optimization.OptimizeByWorkstation; +import me.xginko.villageroptimizer.utils.Util; +import net.kyori.adventure.text.Component; import java.util.HashSet; @@ -15,48 +17,48 @@ public interface VillagerOptimizerModule { void disable(); boolean shouldEnable(); - HashSet modules = new HashSet<>(); + HashSet MODULES = new HashSet<>(14); static void reloadModules() { - modules.forEach(VillagerOptimizerModule::disable); - modules.clear(); + MODULES.forEach(VillagerOptimizerModule::disable); + MODULES.clear(); - modules.add(new OptimizeByNametag()); - modules.add(new OptimizeByBlock()); - modules.add(new OptimizeByWorkstation()); + MODULES.add(new OptimizeByNametag()); + MODULES.add(new OptimizeByBlock()); + MODULES.add(new OptimizeByWorkstation()); - modules.add(new EnableLeashingVillagers()); - modules.add(new FixOptimisationAfterCure()); - modules.add(new RestockOptimizedTrades()); - modules.add(new LevelOptimizedProfession()); - modules.add(new VisuallyHighlightOptimized()); - modules.add(new MakeVillagersSpawnAdult()); - modules.add(new PreventUnoptimizedTrading()); - modules.add(new PreventOptimizedTargeting()); - modules.add(new PreventOptimizedDamage()); - modules.add(new UnoptimizeOnJobLoose()); + MODULES.add(new EnableLeashingVillagers()); + MODULES.add(new FixOptimisationAfterCure()); + MODULES.add(new RestockOptimizedTrades()); + MODULES.add(new LevelOptimizedProfession()); + MODULES.add(new VisuallyHighlightOptimized()); + MODULES.add(new MakeVillagersSpawnAdult()); + MODULES.add(new PreventUnoptimizedTrading()); + MODULES.add(new PreventOptimizedTargeting()); + MODULES.add(new PreventOptimizedDamage()); + MODULES.add(new UnoptimizeOnJobLoose()); - modules.add(new VillagerChunkLimit()); + MODULES.add(new VillagerChunkLimit()); - modules.forEach(module -> { + MODULES.forEach(module -> { if (module.shouldEnable()) module.enable(); }); } - default void trace(String message, Throwable throwable) { - VillagerOptimizer.getPrefixedLogger().trace(logPrefix() + message, throwable); + default void error(String message, Throwable t) { + VillagerOptimizer.getPrefixedLogger().error("{}{}", logPrefix(), message, t); } default void error(String message) { - VillagerOptimizer.getPrefixedLogger().error(logPrefix() + message); + VillagerOptimizer.getPrefixedLogger().error("{}{}", logPrefix(), message); } default void warn(String message) { - VillagerOptimizer.getPrefixedLogger().warn(logPrefix() + message); + VillagerOptimizer.getPrefixedLogger().warn("{}{}", logPrefix(), message); } default void info(String message) { - VillagerOptimizer.getPrefixedLogger().info(logPrefix() + message); + VillagerOptimizer.getPrefixedLogger().info(Component.text(logPrefix() + message).color(Util.PL_COLOR)); } default String logPrefix() { diff --git a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java index 85ce7e2..e94c5f6 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java @@ -6,7 +6,7 @@ import me.xginko.villageroptimizer.VillagerCache; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.wrapper.WrappedVillager; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.entity.Player; @@ -93,7 +93,7 @@ public class LevelOptimizedProfession implements VillagerOptimizerModule, Listen Player player = (Player) event.getPlayer(); final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(GenericUtil.formatDuration(Duration.ofMillis(wVillager.getLevelCooldownMillis(cooldown_millis)))) + .replacement(Util.formatDuration(Duration.ofMillis(wVillager.getLevelCooldownMillis(cooldown_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).villager_leveling_up .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft))); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java index 75b5544..b500e7a 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java @@ -7,7 +7,7 @@ import me.xginko.villageroptimizer.wrapper.WrappedVillager; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.Permissions; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.entity.EntityType; @@ -79,7 +79,7 @@ public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener if (notify_player && !player_bypassing) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(GenericUtil.formatDuration(Duration.ofMillis(wVillager.getRestockCooldownMillis(restock_delay_millis)))) + .replacement(Util.formatDuration(Duration.ofMillis(wVillager.getRestockCooldownMillis(restock_delay_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).trades_restocked .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft))); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java index 6b7acee..2103e8f 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java @@ -8,7 +8,7 @@ import me.xginko.villageroptimizer.enums.Permissions; import me.xginko.villageroptimizer.events.VillagerOptimizeEvent; import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import me.xginko.villageroptimizer.utils.LocationUtil; import me.xginko.villageroptimizer.wrapper.WrappedVillager; @@ -141,11 +141,11 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { if (notify_player) { final TextReplacementConfig vilProfession = TextReplacementConfig.builder() .matchLiteral("%vil_profession%") - .replacement(GenericUtil.formatEnum(closestOptimizableVillager.villager().getProfession())) + .replacement(Util.formatEnum(closestOptimizableVillager.villager().getProfession())) .build(); final TextReplacementConfig placedMaterial = TextReplacementConfig.builder() .matchLiteral("%blocktype%") - .replacement(GenericUtil.formatEnum(placed.getType())) + .replacement(Util.formatEnum(placed.getType())) .build(); VillagerOptimizer.getLang(player.locale()).block_optimize_success .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(vilProfession).replaceText(placedMaterial))); @@ -160,7 +160,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { if (notify_player) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(GenericUtil.formatDuration(Duration.ofMillis(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis)))) + .replacement(Util.formatDuration(Duration.ofMillis(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft))); @@ -206,18 +206,18 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { if (notify_player) { final TextReplacementConfig vilProfession = TextReplacementConfig.builder() .matchLiteral("%vil_profession%") - .replacement(GenericUtil.formatEnum(closestOptimizedVillager.villager().getProfession())) + .replacement(Util.formatEnum(closestOptimizedVillager.villager().getProfession())) .build(); final TextReplacementConfig brokenMaterial = TextReplacementConfig.builder() .matchLiteral("%blocktype%") - .replacement(GenericUtil.formatEnum(broken.getType())) + .replacement(Util.formatEnum(broken.getType())) .build(); VillagerOptimizer.getLang(player.locale()).block_unoptimize_success .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(vilProfession).replaceText(brokenMaterial))); } if (log_enabled) { - info(player.getName() + " unoptimized villager using " + GenericUtil.formatEnum(broken.getType()) + + info(player.getName() + " unoptimized villager using " + Util.formatEnum(broken.getType()) + LocationUtil.toString(closestOptimizedVillager.villager().getLocation())); } } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java index 43b1ea0..374410f 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java @@ -10,7 +10,7 @@ import me.xginko.villageroptimizer.enums.Permissions; import me.xginko.villageroptimizer.events.VillagerOptimizeEvent; import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.ChatColor; @@ -132,7 +132,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener { if (notify_player) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(GenericUtil.formatDuration(Duration.ofMillis(wVillager.getOptimizeCooldownMillis(cooldown)))) + .replacement(Util.formatDuration(Duration.ofMillis(wVillager.getOptimizeCooldownMillis(cooldown)))) .build(); VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft))); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java index 38287b8..aac3598 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java @@ -11,7 +11,7 @@ import me.xginko.villageroptimizer.enums.Permissions; import me.xginko.villageroptimizer.events.VillagerOptimizeEvent; import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; -import me.xginko.villageroptimizer.utils.GenericUtil; +import me.xginko.villageroptimizer.utils.Util; import me.xginko.villageroptimizer.utils.KyoriUtil; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.Location; @@ -88,7 +88,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) private void onBlockPlace(BlockPlaceEvent event) { final Block placed = event.getBlock(); - final Villager.Profession workstationProfession = GenericUtil.getWorkstationProfession(placed.getType()); + final Villager.Profession workstationProfession = Util.getWorkstationProfession(placed.getType()); if (workstationProfession == null) return; final Player player = event.getPlayer(); @@ -117,7 +117,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener if (notify_player) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(GenericUtil.formatDuration(Duration.ofMillis(wrapped.getOptimizeCooldownMillis(cooldown_millis)))) + .replacement(Util.formatDuration(Duration.ofMillis(wrapped.getOptimizeCooldownMillis(cooldown_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft))); @@ -141,18 +141,18 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener if (notify_player) { final TextReplacementConfig vilProfession = TextReplacementConfig.builder() .matchLiteral("%vil_profession%") - .replacement(GenericUtil.formatEnum(wrapped.villager().getProfession())) + .replacement(Util.formatEnum(wrapped.villager().getProfession())) .build(); final TextReplacementConfig placedWorkstation = TextReplacementConfig.builder() .matchLiteral("%blocktype%") - .replacement(GenericUtil.formatEnum(placed.getType())) + .replacement(Util.formatEnum(placed.getType())) .build(); VillagerOptimizer.getLang(player.locale()).workstation_optimize_success .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(vilProfession).replaceText(placedWorkstation))); } if (log_enabled) { - info(player.getName() + " optimized villager using workstation " + GenericUtil.formatEnum(placed.getType()) + " at " + + info(player.getName() + " optimized villager using workstation " + Util.formatEnum(placed.getType()) + " at " + LocationUtil.toString(wrapped.villager().getLocation())); } @@ -165,7 +165,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) private void onBlockBreak(BlockBreakEvent event) { final Block broken = event.getBlock(); - final Villager.Profession workstationProfession = GenericUtil.getWorkstationProfession(broken.getType()); + final Villager.Profession workstationProfession = Util.getWorkstationProfession(broken.getType()); if (workstationProfession == null) return; final Player player = event.getPlayer(); @@ -205,18 +205,18 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener if (notify_player) { final TextReplacementConfig vilProfession = TextReplacementConfig.builder() .matchLiteral("%vil_profession%") - .replacement(GenericUtil.formatEnum(closestOptimized.villager().getProfession())) + .replacement(Util.formatEnum(closestOptimized.villager().getProfession())) .build(); final TextReplacementConfig brokenWorkstation = TextReplacementConfig.builder() .matchLiteral("%blocktype%") - .replacement(GenericUtil.formatEnum(broken.getType())) + .replacement(Util.formatEnum(broken.getType())) .build(); VillagerOptimizer.getLang(player.locale()).workstation_unoptimize_success .forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(vilProfession).replaceText(brokenWorkstation))); } if (log_enabled) { - info(player.getName() + " unoptimized villager using workstation " + GenericUtil.formatEnum(broken.getType()) + " at " + + info(player.getName() + " unoptimized villager using workstation " + Util.formatEnum(broken.getType()) + " at " + LocationUtil.toString(closestOptimized.villager().getLocation())); } } diff --git a/src/main/java/me/xginko/villageroptimizer/utils/GenericUtil.java b/src/main/java/me/xginko/villageroptimizer/utils/Util.java similarity index 94% rename from src/main/java/me/xginko/villageroptimizer/utils/GenericUtil.java rename to src/main/java/me/xginko/villageroptimizer/utils/Util.java index bd4ed49..67d0727 100644 --- a/src/main/java/me/xginko/villageroptimizer/utils/GenericUtil.java +++ b/src/main/java/me/xginko/villageroptimizer/utils/Util.java @@ -12,10 +12,10 @@ import org.jetbrains.annotations.Nullable; import java.time.Duration; import java.util.Locale; -public class GenericUtil { +public class Util { - public static final @NotNull TextColor COLOR = TextColor.color(102,255,230); - public static final @NotNull Style STYLE = Style.style(COLOR, TextDecoration.BOLD); + public static final @NotNull TextColor PL_COLOR = TextColor.color(102,255,230); + public static final @NotNull Style PL_STYLE = Style.style(PL_COLOR, TextDecoration.BOLD); public static @NotNull String formatDuration(@NotNull Duration duration) { if (duration.isNegative()) duration = duration.negated();