diff --git a/pom.xml b/pom.xml index 88e04d9..71f9571 100644 --- a/pom.xml +++ b/pom.xml @@ -103,13 +103,18 @@ 1.20.4-R0.1-SNAPSHOT provided - net.kyori adventure-text-minimessage 4.15.0 compile + + net.kyori + adventure-text-logger-slf4j + 4.15.0 + compile + net.kyori adventure-text-serializer-plain diff --git a/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java b/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java index ab8a764..1de7d67 100644 --- a/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java +++ b/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java @@ -1,7 +1,6 @@ package me.xginko.villageroptimizer; import com.tcoded.folialib.FoliaLib; -import com.tcoded.folialib.impl.ServerImplementation; import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.config.LanguageCache; @@ -20,7 +19,10 @@ import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.Locale; +import java.util.Set; import java.util.jar.JarFile; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -40,7 +42,7 @@ public final class VillagerOptimizer extends JavaPlugin { @Override public void onEnable() { instance = this; - logger = getComponentLogger(); + logger = ComponentLogger.logger(); foliaLib = new FoliaLib(this); logger.info(Component.text("╭────────────────────────────────────────────────────────────╮").style(plugin_style)); diff --git a/src/main/java/me/xginko/villageroptimizer/enums/Keyring.java b/src/main/java/me/xginko/villageroptimizer/enums/Keyring.java index 012827b..7278108 100644 --- a/src/main/java/me/xginko/villageroptimizer/enums/Keyring.java +++ b/src/main/java/me/xginko/villageroptimizer/enums/Keyring.java @@ -1,11 +1,11 @@ package me.xginko.villageroptimizer.enums; -import net.kyori.adventure.key.KeyPattern; import net.kyori.adventure.key.Namespaced; import org.bukkit.Keyed; import org.bukkit.NamespacedKey; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.plugin.Plugin; +import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NotNull; import java.util.Locale; @@ -13,18 +13,19 @@ import java.util.Locale; public class Keyring { public enum Spaces implements Namespaced { + VillagerOptimizer("VillagerOptimizer"), AntiVillagerLag("AntiVillagerLag"); - @KeyPattern.Namespace + @Pattern("[a-z0-9_\\-.]+") private final @NotNull String namespace; - Spaces(@NotNull @KeyPattern.Namespace String pluginName) { + Spaces(@NotNull @Pattern("[a-z0-9_\\-.]+") String pluginName) { this.namespace = pluginName.toLowerCase(Locale.ROOT); } @Override - @KeyPattern.Namespace + @Pattern("[a-z0-9_\\-.]+") public @NotNull String namespace() { return namespace; } @@ -42,11 +43,13 @@ public class Keyring { * @return a {@link NamespacedKey} that can be used to test for and read data stored by plugins * from a {@link PersistentDataContainer} */ + @SuppressWarnings("deprecation") public static NamespacedKey getKey(@NotNull String pluginName, @NotNull String key) { return new NamespacedKey(pluginName.toLowerCase(Locale.ROOT), key); } public enum VillagerOptimizer implements Keyed { + OPTIMIZATION_TYPE("optimization-type"), LAST_OPTIMIZE("last-optimize"), LAST_LEVELUP("last-levelup"), @@ -55,6 +58,7 @@ public class Keyring { private final @NotNull NamespacedKey key; + @SuppressWarnings("deprecation") VillagerOptimizer(@NotNull String key) { this.key = new NamespacedKey(Spaces.VillagerOptimizer.namespace(), key); } @@ -66,6 +70,7 @@ public class Keyring { } public enum AntiVillagerLag implements Keyed { + NEXT_OPTIMIZATION_SYSTIME_SECONDS("cooldown"), // Returns LONG -> (System.currentTimeMillis() / 1000) + cooldown seconds LAST_RESTOCK_WORLDFULLTIME("time"), // Returns LONG -> villager.getWorld().getFullTime() NEXT_LEVELUP_SYSTIME_SECONDS("levelCooldown"), // Returns LONG -> (System.currentTimeMillis() / 1000) + cooldown seconds @@ -75,6 +80,7 @@ public class Keyring { private final @NotNull NamespacedKey key; + @SuppressWarnings("deprecation") AntiVillagerLag(@NotNull String avlKey) { this.key = new NamespacedKey(Spaces.AntiVillagerLag.namespace(), avlKey); } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java index df3dbca..d03b3d8 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java @@ -15,6 +15,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerLeashEntityEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.inventory.ItemStack; public class EnableLeashingVillagers implements VillagerOptimizerModule, Listener { @@ -54,7 +55,8 @@ public class EnableLeashingVillagers implements VillagerOptimizerModule, Listene private void onLeash(PlayerInteractEntityEvent event) { if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return; final Player player = event.getPlayer(); - if (!player.getInventory().getItem(event.getHand()).getType().equals(Material.LEAD)) return; + final ItemStack handItem = player.getInventory().getItem(event.getHand()); + if (handItem == null || !handItem.getType().equals(Material.LEAD)) return; event.setCancelled(true); // Cancel the event, so we don't interact with the villager Villager villager = (Villager) event.getRightClicked(); diff --git a/src/main/java/me/xginko/villageroptimizer/utils/LogUtil.java b/src/main/java/me/xginko/villageroptimizer/utils/LogUtil.java index a98f375..b0bd781 100644 --- a/src/main/java/me/xginko/villageroptimizer/utils/LogUtil.java +++ b/src/main/java/me/xginko/villageroptimizer/utils/LogUtil.java @@ -7,7 +7,13 @@ import org.slf4j.event.Level; public class LogUtil { public static void moduleLog(Level logLevel, String path, String logMessage) { - VillagerOptimizer.getLog().atLevel(logLevel).log("(" + path + ") " + logMessage); + switch (logLevel) { // This is the safest way to do it while staying version compatible + case ERROR -> VillagerOptimizer.getLog().error("(" + path + ") " + logMessage); + case WARN -> VillagerOptimizer.getLog().warn("(" + path + ") " + logMessage); + case INFO -> VillagerOptimizer.getLog().info("(" + path + ") " + logMessage); + case DEBUG -> VillagerOptimizer.getLog().debug("(" + path + ") " + logMessage); + case TRACE -> VillagerOptimizer.getLog().trace("(" + path + ") " + logMessage); + } } public static void materialNotRecognized(String path, String material) {