diff --git a/pom.xml b/pom.xml index 78d7f21..44c792c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ tsp.headdb HeadDB - 2.4.0 + 2.4.1 jar HeadDB @@ -92,8 +92,8 @@ maven-compiler-plugin 3.8.1 - 16 - 16 + 1.8 + 1.8 diff --git a/src/main/java/tsp/headdb/HeadDB.java b/src/main/java/tsp/headdb/HeadDB.java index 3bfb3f6..e2b639e 100644 --- a/src/main/java/tsp/headdb/HeadDB.java +++ b/src/main/java/tsp/headdb/HeadDB.java @@ -11,7 +11,6 @@ import tsp.headdb.listener.MenuListener; import tsp.headdb.util.Log; import tsp.headdb.util.Metrics; import tsp.headdb.util.Storage; -import tsp.headdb.util.Utils; import org.bukkit.plugin.RegisteredServiceProvider; import net.milkbowl.vault.economy.Economy; @@ -48,9 +47,6 @@ public class HeadDB extends JavaPlugin { } } - Log.debug("Starting metrics..."); - new Metrics(this, Utils.METRICS_ID); - Log.debug("Registering listeners..."); new PagedPaneListener(this); new MenuListener(this); @@ -59,6 +55,8 @@ public class HeadDB extends JavaPlugin { Log.debug("Registering commands..."); getCommand("headdb").setExecutor(new Command_headdb()); + Log.debug("Starting metrics..."); + new Metrics(this, 9152); Log.info("Done!"); } diff --git a/src/main/java/tsp/headdb/database/HeadDatabase.java b/src/main/java/tsp/headdb/database/HeadDatabase.java index eec0107..e37dadd 100644 --- a/src/main/java/tsp/headdb/database/HeadDatabase.java +++ b/src/main/java/tsp/headdb/database/HeadDatabase.java @@ -1,6 +1,5 @@ package tsp.headdb.database; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.plugin.java.JavaPlugin; import org.json.simple.JSONArray; @@ -8,8 +7,8 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import tsp.headdb.api.Head; -import tsp.headdb.event.HeadDatabaseUpdateEvent; import tsp.headdb.util.Log; +import tsp.headdb.util.Utils; import java.io.BufferedReader; import java.io.IOException; @@ -164,10 +163,11 @@ public class HeadDatabase { for (Object o : array) { JSONObject obj = (JSONObject) o; String uuid = obj.get("uuid").toString(); + Log.debug(!Utils.isValid(uuid) + "Invalid UUID: " + uuid); Head head = new Head(id) .withName(obj.get("name").toString()) - .withUniqueId(uuid.isEmpty() ? UUID.randomUUID() : UUID.fromString(uuid)) + .withUniqueId(Utils.isValid(uuid) ? UUID.fromString(uuid) : UUID.randomUUID()) .withValue(obj.get("value").toString()) .withTags(obj.get("tags") != null ? obj.get("tags").toString() : "None") .withCategory(category); @@ -207,7 +207,6 @@ public class HeadDatabase { for (Map.Entry> entry : heads.entrySet()) { HEADS.put(entry.getKey(), entry.getValue()); } - Bukkit.getPluginManager().callEvent(new HeadDatabaseUpdateEvent(this)); return true; } diff --git a/src/main/java/tsp/headdb/event/HeadDatabaseUpdateEvent.java b/src/main/java/tsp/headdb/event/HeadDatabaseUpdateEvent.java deleted file mode 100644 index abf3c2f..0000000 --- a/src/main/java/tsp/headdb/event/HeadDatabaseUpdateEvent.java +++ /dev/null @@ -1,38 +0,0 @@ -package tsp.headdb.event; - -import org.bukkit.event.Cancellable; -import org.bukkit.event.Event; -import org.bukkit.event.HandlerList; -import org.jetbrains.annotations.NotNull; -import tsp.headdb.database.HeadDatabase; - -public class HeadDatabaseUpdateEvent extends Event implements Cancellable { - - private final HandlerList handlerList = new HandlerList(); - private boolean cancelled; - private final HeadDatabase database; - - public HeadDatabaseUpdateEvent(HeadDatabase database) { - this.database = database; - } - - public HeadDatabase getDatabase() { - return database; - } - - @Override - public boolean isCancelled() { - return cancelled; - } - - @Override - public void setCancelled(boolean b) { - this.cancelled = b; - } - - @Override - public @NotNull HandlerList getHandlers() { - return handlerList; - } - -} diff --git a/src/main/java/tsp/headdb/listener/JoinListener.java b/src/main/java/tsp/headdb/listener/JoinListener.java index 7322f81..2ecdd2a 100644 --- a/src/main/java/tsp/headdb/listener/JoinListener.java +++ b/src/main/java/tsp/headdb/listener/JoinListener.java @@ -8,7 +8,10 @@ import tsp.headdb.HeadDB; public class JoinListener implements Listener { public JoinListener(HeadDB plugin) { - plugin.getServer().getPluginManager().registerEvents(this, plugin); + // If local heads are disabled, there is no need for this listener. + if (HeadDB.getInstance().getConfiguration().getBoolean("localHeads")) { + plugin.getServer().getPluginManager().registerEvents(this, plugin); + } } @EventHandler diff --git a/src/main/java/tsp/headdb/util/Utils.java b/src/main/java/tsp/headdb/util/Utils.java index 73a2c3f..b49d990 100644 --- a/src/main/java/tsp/headdb/util/Utils.java +++ b/src/main/java/tsp/headdb/util/Utils.java @@ -3,9 +3,17 @@ package tsp.headdb.util; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class Utils { - public static final int METRICS_ID = 9152; + public static final Pattern UUID_PATTERN = Pattern.compile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"); + + public static boolean isValid(String uuid) { + Matcher matcher = UUID_PATTERN.matcher(uuid); + return matcher.find(); + } public static void sendMessage(CommandSender sender, String message) { sender.sendMessage(colorize(message)); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 4f33ee5..a29feea 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -7,6 +7,9 @@ asyncStartup: false # If the cached heads are older than these amount of seconds, the plugin will refresh the database refresh: 3600 +# If local heads should be enabled. Only keeps track of joined players when enabled! +localHeads: true + # Economy options economy: enable: false