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) {