diff --git a/pom.xml b/pom.xml
index be2b865..f834f6d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,13 +60,6 @@
-
-
- mysql
- mysql-connector-java
- 8.0.33
-
-
com.sk89q.worldedit
@@ -100,6 +93,12 @@
1.18.30
provided
+
+
+ org.yaml
+ snakeyaml
+ 2.0
+
diff --git a/src/main/java/org/modularsoft/PlayerHeadHunt/HeadChatController.java b/src/main/java/org/modularsoft/PlayerHeadHunt/HeadChatController.java
index a545a0f..d1320e1 100644
--- a/src/main/java/org/modularsoft/PlayerHeadHunt/HeadChatController.java
+++ b/src/main/java/org/modularsoft/PlayerHeadHunt/HeadChatController.java
@@ -9,13 +9,13 @@
import java.util.List;
-import static org.modularsoft.PlayerHeadHunt.HeadQuery.foundHeadsAlreadyCount;
-
public class HeadChatController {
private final PlayerHeadHuntMain plugin;
+ private final HeadQuery headQuery;
- public HeadChatController(PlayerHeadHuntMain plugin) {
+ public HeadChatController(PlayerHeadHuntMain plugin, HeadQuery headQuery) {
this.plugin = plugin;
+ this.headQuery = headQuery;
}
public void headFoundResponse(Player player, boolean hasAlreadyBeenFound, int headCount, int x, int y, int z) {
@@ -28,7 +28,8 @@ public void headFoundResponse(Player player, boolean hasAlreadyBeenFound, int he
player.playSound(player.getLocation(), plugin.config().getHeadFoundSound(), 1, 1);
}
- int otherPlayerFoundHead = foundHeadsAlreadyCount(plugin, x, y, z) - 1;
+ // Get the number of other players who have found this head
+ int otherPlayerFoundHead = Math.max(0, headQuery.foundHeadsAlreadyCount(x, y, z) - 1);
String otherPlayersHaveFoundSuffix;
if (otherPlayerFoundHead == 0) {
@@ -39,18 +40,18 @@ public void headFoundResponse(Player player, boolean hasAlreadyBeenFound, int he
}
} else if (otherPlayerFoundHead == 1) {
otherPlayersHaveFoundSuffix = plugin.config().getLangHeadNotFirstFinderSingle()
- .replace("%OTHERPLAYERSFOUNDHEAD%", "" + otherPlayerFoundHead);
+ .replace("%OTHERPLAYERSFOUNDHEAD%", String.valueOf(otherPlayerFoundHead));
} else {
otherPlayersHaveFoundSuffix = plugin.config().getLangHeadNotFirstFinderMultiple()
- .replace("%OTHERPLAYERSFOUNDHEAD%", "" + otherPlayerFoundHead);
+ .replace("%OTHERPLAYERSFOUNDHEAD%", String.valueOf(otherPlayerFoundHead));
}
+ // Replace placeholders in the message
String message = baseMessage
- .replace("%FOUNDHEADS%", "" + headCount)
- .replace("%NUMBEROFHEADS%", "" + plugin.config().getTotalHeads())
+ .replace("%FOUNDHEADS%", String.valueOf(headCount))
+ .replace("%NUMBEROFHEADS%", String.valueOf(plugin.config().getTotalHeads()))
.replace("%ALREADYFOUNDHEADS%", otherPlayersHaveFoundSuffix);
- // Play sound for a Player Head that is found.
player.sendMessage(message);
}
@@ -100,9 +101,9 @@ public void newPlayerJoinsTheHunt(Player player) {
}
public void playersOwnHeadCountResponse(Player player) {
- // Players wants to see their own head count
+ // Use the instance of HeadQuery to call the method
player.sendMessage(plugin.config().getLangHeadCount()
- .replace("%FOUNDHEADS%", "" + HeadQuery.foundHeadsCount(plugin, player))
+ .replace("%FOUNDHEADS%", "" + headQuery.foundHeadsCount(player))
.replace("%NUMBEROFHEADS%", "" + plugin.config().getTotalHeads()));
}
diff --git a/src/main/java/org/modularsoft/PlayerHeadHunt/HeadQuery.java b/src/main/java/org/modularsoft/PlayerHeadHunt/HeadQuery.java
index af057aa..56b1c0f 100644
--- a/src/main/java/org/modularsoft/PlayerHeadHunt/HeadQuery.java
+++ b/src/main/java/org/modularsoft/PlayerHeadHunt/HeadQuery.java
@@ -2,217 +2,177 @@
import lombok.Getter;
import org.bukkit.entity.Player;
+import org.modularsoft.PlayerHeadHunt.helpers.YamlFileManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class HeadQuery {
+ private final YamlFileManager yamlFileManager;
+
+ public HeadQuery(YamlFileManager yamlFileManager) {
+ this.yamlFileManager = yamlFileManager;
+ }
+
public record HeadHunter(@Getter String name, @Getter int headsCollected) { }
- /**
- * @param plugin The PlayerHeadHunt main plugin
- * @param player The player to check
- * @return Returns the number of heads found by the player
- */
- public static int foundHeadsCount(PlayerHeadHuntMain plugin, Player player) {
- String playerUUID = "" + player.getUniqueId();
-
- try {
- // Check how many heads the player has collected.
- PreparedStatement foundHeadsCount = plugin.getConnection().prepareStatement(
- "SELECT headsCollected AS 'heads' FROM playerdata WHERE uuid=?");
- foundHeadsCount.setString(1, playerUUID);
- ResultSet results = foundHeadsCount.executeQuery();
-
- if (results.next()) return results.getInt("heads");
- } catch (SQLException e) {
- e.printStackTrace();
- player.sendMessage(plugin.config().getLangDatabaseConnectionError());
+ public int foundHeadsCount(Player player) {
+ String playerUUID = player.getUniqueId().toString();
+ Map data = yamlFileManager.getData();
+ Map playerData = (Map) data.get(playerUUID);
+
+ if (playerData == null) {
+ return 0; // No data for the player, so no heads collected
+ }
+
+ List