From 0d1b4239bd38b3ffaa49a8f62f23618de9ded66b Mon Sep 17 00:00:00 2001 From: Laura Date: Sun, 9 Aug 2026 15:03:52 +0200 Subject: [PATCH] Migrate from SQL classes to homeAPI package structure --- pom.xml | 16 +++- src/main/java/com/softwarerat/SQL/Homes.java | 64 --------------- .../{Main.java => homeAPI/HomesAPI.java} | 10 ++- .../com/softwarerat/homeAPI/SQL/Homes.java | 79 +++++++++++++++++++ .../{ => homeAPI}/SQL/PlayerHome.java | 2 +- .../softwarerat/{ => homeAPI}/SQL/Yaml.java | 2 +- 6 files changed, 102 insertions(+), 71 deletions(-) delete mode 100644 src/main/java/com/softwarerat/SQL/Homes.java rename src/main/java/com/softwarerat/{Main.java => homeAPI/HomesAPI.java} (59%) create mode 100644 src/main/java/com/softwarerat/homeAPI/SQL/Homes.java rename src/main/java/com/softwarerat/{ => homeAPI}/SQL/PlayerHome.java (85%) rename src/main/java/com/softwarerat/{ => homeAPI}/SQL/Yaml.java (97%) diff --git a/pom.xml b/pom.xml index 137d1e8..170701d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,17 @@ com.softwarerat HomesAPI - 1.1-SNAPSHOT + 1.3-SNAPSHOT + + + + + + forgejo + Forgejo Maven + http://heimserver.local:36107/api/packages/minecraft/maven + + 18 @@ -32,5 +42,9 @@ papermc-repo https://repo.papermc.io/repository/maven-public/ + + gitea + http://heimserver.local:36107/api/packages/minecraft/maven + diff --git a/src/main/java/com/softwarerat/SQL/Homes.java b/src/main/java/com/softwarerat/SQL/Homes.java deleted file mode 100644 index 17e0e7e..0000000 --- a/src/main/java/com/softwarerat/SQL/Homes.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.softwarerat.SQL; - -import java.util.ArrayList; -import java.util.List; - -public class Homes { - - - private final Yaml yaml; - - public Homes(Yaml yaml) { - this.yaml = yaml; - } - - // Add or update a player home - public void addHome(String name, String uuid, String world, int x, int y, int z) { - String basePath = "homes." + name; - yaml.set(basePath + ".UUID", uuid); - yaml.set(basePath + ".World", world); - yaml.set(basePath + ".x", x); - yaml.set(basePath + ".y", y); - yaml.set(basePath + ".z", z); - } - - // Get a PlayerHome by name - public PlayerHome getHomeByName(String name) { - String basePath = "homes." + name; - if (!yaml.getConfig().contains(basePath)) return null; - - String uuid = yaml.getString(basePath + ".UUID"); - String world = yaml.getString(basePath + ".World"); - int x = yaml.getInt(basePath + ".x"); - int y = yaml.getInt(basePath + ".y"); - int z = yaml.getInt(basePath + ".z"); - - return new PlayerHome(name, uuid, world, x, y, z); - } - - // Get all homes for a player by UUID - public List getPlayerHomes(String uuid) { - List homes = new ArrayList<>(); - if (!yaml.getConfig().contains("homes")) return homes; - - for (String homeName : yaml.getConfig().getConfigurationSection("homes").getKeys(false)) { - String homeUUID = yaml.getString("homes." + homeName + ".UUID"); - if (homeUUID != null && homeUUID.equals(uuid)) { - homes.add(getHomeByName(homeName)); - } - } - return homes; - } - - // Delete a home by name - public void deleteHome(String name) { - if (yaml.getConfig().contains("homes." + name)) { - yaml.set("homes." + name, null); - } - } - - // Check if a home exists - public boolean homeExists(String name) { - return yaml.getConfig().contains("homes." + name); - } -} \ No newline at end of file diff --git a/src/main/java/com/softwarerat/Main.java b/src/main/java/com/softwarerat/homeAPI/HomesAPI.java similarity index 59% rename from src/main/java/com/softwarerat/Main.java rename to src/main/java/com/softwarerat/homeAPI/HomesAPI.java index ef001d3..8e5cdce 100644 --- a/src/main/java/com/softwarerat/Main.java +++ b/src/main/java/com/softwarerat/homeAPI/HomesAPI.java @@ -1,15 +1,17 @@ -package com.softwarerat; +package com.softwarerat.homeAPI; -import com.softwarerat.SQL.Homes; -import com.softwarerat.SQL.Yaml; +import com.softwarerat.homeAPI.SQL.Homes; +import com.softwarerat.homeAPI.SQL.Yaml; import lombok.Getter; @Getter -public class Main { +public class HomesAPI { Yaml yaml; Homes homes; + + public void enableAPI(String path, String filename){ yaml = new Yaml(path, filename); homes = new Homes(yaml); diff --git a/src/main/java/com/softwarerat/homeAPI/SQL/Homes.java b/src/main/java/com/softwarerat/homeAPI/SQL/Homes.java new file mode 100644 index 0000000..3c239b6 --- /dev/null +++ b/src/main/java/com/softwarerat/homeAPI/SQL/Homes.java @@ -0,0 +1,79 @@ +package com.softwarerat.homeAPI.SQL; + +import java.util.ArrayList; +import java.util.List; + +public class Homes { + + + private final Yaml yaml; + + public Homes(Yaml yaml) { + this.yaml = yaml; + } + + /** + * Retrieves a specific home by name for a specific player. + */ +/** + * Retrieves a home by name only. + * In this version, the Name is the unique identifier. + */ + public PlayerHome getHomeByName(String name) { + if (!yaml.getConfig().contains(name)) { + return null; + } + + // The path is now just "Name.key" + String uuid = yaml.getConfig().getString(name + ".uuid"); + String world = yaml.getConfig().getString(name + ".world"); + int x = yaml.getConfig().getInt(name + ".x"); + int y = yaml.getConfig().getInt(name + ".y"); + int z = yaml.getConfig().getInt(name + ".z"); + + return new PlayerHome(name, uuid, world, x, y, z); + } + + /** + * Saves a new home or updates an existing one. + */ + public void createNewHome(PlayerHome playerHome) { + String path = playerHome.getUUID() + "." + playerHome.getName(); + + yaml.getConfig().set(path + ".world", playerHome.getWorld()); + yaml.getConfig().set(path + ".x", playerHome.getX()); + yaml.getConfig().set(path + ".y", playerHome.getY()); + yaml.getConfig().set(path + ".z", playerHome.getZ()); + + yaml.save(); // Write changes to disk + } + + /** + * Removes a home from the YAML file. + */ + public void deleteHome(String uuid, String name) { + String path = uuid + "." + name; + if (yaml.getConfig().contains(path)) { + yaml.getConfig().set(path, null); // Setting to null removes the key + yaml.save(); + } + } + + /** + * Gets all homes associated with a specific Player UUID. + */ + public List getPlayerHomes(String uuid) { + List homes = new ArrayList<>(); + + // Loop through every top-level key (every home name in the file) + for (String homeName : yaml.getConfig().getKeys(false)) { + String ownerUUID = yaml.getConfig().getString(homeName + ".uuid"); + + if (uuid.equals(ownerUUID)) { + homes.add(getHomeByName(homeName)); + } + } + + return homes; + } +} \ No newline at end of file diff --git a/src/main/java/com/softwarerat/SQL/PlayerHome.java b/src/main/java/com/softwarerat/homeAPI/SQL/PlayerHome.java similarity index 85% rename from src/main/java/com/softwarerat/SQL/PlayerHome.java rename to src/main/java/com/softwarerat/homeAPI/SQL/PlayerHome.java index 6420bc5..cc6ec67 100644 --- a/src/main/java/com/softwarerat/SQL/PlayerHome.java +++ b/src/main/java/com/softwarerat/homeAPI/SQL/PlayerHome.java @@ -1,4 +1,4 @@ -package com.softwarerat.SQL; +package com.softwarerat.homeAPI.SQL; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/softwarerat/SQL/Yaml.java b/src/main/java/com/softwarerat/homeAPI/SQL/Yaml.java similarity index 97% rename from src/main/java/com/softwarerat/SQL/Yaml.java rename to src/main/java/com/softwarerat/homeAPI/SQL/Yaml.java index 2e0d24c..5cb3b1c 100644 --- a/src/main/java/com/softwarerat/SQL/Yaml.java +++ b/src/main/java/com/softwarerat/homeAPI/SQL/Yaml.java @@ -1,4 +1,4 @@ -package com.softwarerat.SQL; +package com.softwarerat.homeAPI.SQL;