From c8ce8925ba998a3733270512caeab1445eec6e0c Mon Sep 17 00:00:00 2001 From: dmccoystephenson Date: Sat, 16 Apr 2022 10:45:24 -0600 Subject: [PATCH 1/4] Created FactionHandler and PowerRecordHandler classes. --- .../minifactions/MiniFactions.java | 28 +++- .../api/data/handlers/FactionHandler.java | 122 ++++++++++++++++++ .../api/data/handlers/PowerRecordHandler.java | 122 ++++++++++++++++++ .../api/data/handlers/TerritoryHandler.java | 71 ++++++---- .../api/exceptions/FactionFileException.java | 15 +++ .../exceptions/PowerRecordFileException.java | 15 +++ 6 files changed, 346 insertions(+), 27 deletions(-) create mode 100644 src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java create mode 100644 src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java create mode 100644 src/main/java/dansplugins/minifactions/api/exceptions/FactionFileException.java create mode 100644 src/main/java/dansplugins/minifactions/api/exceptions/PowerRecordFileException.java diff --git a/src/main/java/dansplugins/minifactions/MiniFactions.java b/src/main/java/dansplugins/minifactions/MiniFactions.java index b33bdcf..c4a3c2c 100644 --- a/src/main/java/dansplugins/minifactions/MiniFactions.java +++ b/src/main/java/dansplugins/minifactions/MiniFactions.java @@ -1,6 +1,8 @@ package dansplugins.minifactions; import dansplugins.minifactions.api.MiniFactionsAPI; +import dansplugins.minifactions.api.data.handlers.FactionHandler; +import dansplugins.minifactions.api.data.handlers.PowerRecordHandler; import dansplugins.minifactions.api.data.handlers.TerritoryHandler; import dansplugins.minifactions.commands.DefaultCommand; import dansplugins.minifactions.commands.HelpCommand; @@ -44,6 +46,8 @@ public class MiniFactions extends PonderBukkitPlugin { private final String pluginVersion = "v" + getDescription().getVersion(); private final CommandService commandService = new CommandService(getPonder()); private MiniFactionsAPI api; + private FactionHandler factionHandler; + private PowerRecordHandler powerRecordHandler; private TerritoryHandler territoryHandler; /** @@ -64,6 +68,8 @@ public void onEnable() { registerEventHandlers(); initializeCommandService(); api = new MiniFactionsAPI(); + factionHandler = new FactionHandler(); + powerRecordHandler = new PowerRecordHandler(); territoryHandler = new TerritoryHandler(); } @@ -72,7 +78,9 @@ public void onEnable() { */ @Override public void onDisable() { - + factionHandler.save(); + powerRecordHandler.save(); + territoryHandler.save(); } /** @@ -131,6 +139,24 @@ public MiniFactionsAPI getMiniFactionsAPI() { return api; } + /** + * Method to obtain the FactionHandler. + * + * @return {@link #factionHandler}. + */ + public FactionHandler getFactionHandler() { + return factionHandler; + } + +/** + * Method to obtain the PowerRecordHandler. + * + * @return {@link #powerRecordHandler}. + */ + public PowerRecordHandler getPowerRecordHandler() { + return powerRecordHandler; + } + /** * Method to obtain the TerritoryHandler. * diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java new file mode 100644 index 0000000..2161e0c --- /dev/null +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java @@ -0,0 +1,122 @@ +package dansplugins.minifactions.api.data.handlers; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.stream.JsonReader; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.api.data.JsonFaction; +import dansplugins.minifactions.api.definitions.core.Faction; +import dansplugins.minifactions.api.exceptions.FactionFileException; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * @author Daniel McCoy Stephenson + * @since April 16th, 2022 + */ +public class FactionHandler { + + /** + * File linked to the faction data. + */ + private final File file; + + /** + * Data from the file. + */ + private HashMap data = null; + + /** + * Constructor to initialise {@link #file} and then populate {@link #data}. + * + * @see #load() + */ + public FactionHandler() { + file = new File(MiniFactions.getInstance().getDataFolder(), "factions.json"); + try { + if (!file.exists()) { + if (!file.createNewFile()) { + System.out.println("Failed to load '" + file.getName() + "'!"); + throw new FactionFileException("Unable to create new file."); + } + } + } catch (IOException exception) { + throw new FactionFileException("IOException experienced:\t" + exception.getMessage()); + } + load(); + } + + /** + * Method to obtain a faction from its Id. + *

+ * Due to the nature of Json and GSON specifically, unchecked is dampened + * we hard-cast the data to a 'String:String' data-set. + *

+ * + * @param factionId to get a faction for. + * @return {@link Faction} if found, or {@code null} if it isn't. + */ + @SuppressWarnings("unchecked") + @Nullable + public Faction getFaction(@NotNull UUID factionId) { + if (!data.containsKey(factionId) && !data.containsKey(factionId.toString())) { + return null; + } + + Object object = data.getOrDefault(factionId, null); + if (object == null) { + data.getOrDefault(factionId.toString(), null); + } + if (object == null) { + return null; + } + + final Faction faction = new JsonFaction(); + faction.fromJSON((Map) object); + + return faction; + } + + /** + * + */ + public void save() { + // TODO: implement + } + + /** + * Method to load the data for faction handling. + */ + private void load() { + try { + final FileInputStream fileInputStream = new FileInputStream(file); + final InputStreamReader inputStream = new InputStreamReader(fileInputStream); + final JsonReader reader = new JsonReader(inputStream); + final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + final Object jsonData = gson.fromJson(reader, HashMap.class); + + if (!(jsonData instanceof HashMap)) { + return; + } + + this.data = ((HashMap) jsonData); + + // Close the Readers ♥ + reader.close(); + inputStream.close(); + fileInputStream.close(); + } catch (Exception ex) { + ex.printStackTrace(); + this.data = new HashMap<>(); + } + } +} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java new file mode 100644 index 0000000..f627b5a --- /dev/null +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java @@ -0,0 +1,122 @@ +package dansplugins.minifactions.api.data.handlers; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.stream.JsonReader; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.api.data.JsonPowerRecord; +import dansplugins.minifactions.api.definitions.PowerRecord; +import dansplugins.minifactions.api.exceptions.PowerRecordFileException; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * @author Daniel McCoy Stephenson + * @since April 16th, 2022 + */ +public class PowerRecordHandler { + + /** + * File linked to the power record data. + */ + private final File file; + + /** + * Data from the file. + */ + private HashMap data = null; + + /** + * Constructor to initialise {@link #file} and then populate {@link #data}. + * + * @see #load() + */ + public PowerRecordHandler() { + file = new File(MiniFactions.getInstance().getDataFolder(), "powerRecords.json"); + try { + if (!file.exists()) { + if (!file.createNewFile()) { + System.out.println("Failed to load '" + file.getName() + "'!"); + throw new PowerRecordFileException("Unable to create new file."); + } + } + } catch (IOException exception) { + throw new PowerRecordFileException("IOException experienced:\t" + exception.getMessage()); + } + load(); + } + + /** + * Method to obtain a powerrecord from its Id. + *

+ * Due to the nature of Json and GSON specifically, unchecked is dampened + * we hard-cast the data to a 'String:String' data-set. + *

+ * + * @param powerRecordId to get a powerrecord for. + * @return {@link PowerRecord} if found, or {@code null} if it isn't. + */ + @SuppressWarnings("unchecked") + @Nullable + public PowerRecord getPowerRecord(@NotNull UUID powerRecordId) { + if (!data.containsKey(powerRecordId) && !data.containsKey(powerRecordId.toString())) { + return null; + } + + Object object = data.getOrDefault(powerRecordId, null); + if (object == null) { + data.getOrDefault(powerRecordId.toString(), null); + } + if (object == null) { + return null; + } + + final PowerRecord powerrecord = new JsonPowerRecord(powerRecordId); + powerrecord.fromJSON((Map) object); + + return powerrecord; + } + + /** + * + */ + public void save() { + // TODO: implement + } + + /** + * Method to load the data for powerrecord handling. + */ + private void load() { + try { + final FileInputStream fileInputStream = new FileInputStream(file); + final InputStreamReader inputStream = new InputStreamReader(fileInputStream); + final JsonReader reader = new JsonReader(inputStream); + final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + final Object jsonData = gson.fromJson(reader, HashMap.class); + + if (!(jsonData instanceof HashMap)) { + return; + } + + this.data = ((HashMap) jsonData); + + // Close the Readers ♥ + reader.close(); + inputStream.close(); + fileInputStream.close(); + } catch (Exception ex) { + ex.printStackTrace(); + this.data = new HashMap<>(); + } + } +} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java index 26d5ded..1dd320f 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java @@ -40,7 +40,7 @@ public class TerritoryHandler { * @see #load() */ public TerritoryHandler() { - file = new File(MiniFactions.getInstance().getDataFolder(), "territory.json"); + file = new File(MiniFactions.getInstance().getDataFolder(), "territoryChunks.json"); try { if (!file.exists()) { if (!file.createNewFile()) { @@ -54,6 +54,44 @@ public TerritoryHandler() { load(); } + /** + * Method to obtain a chunk from its Id. + *

+ * Due to the nature of Json and GSON specifically, unchecked is dampened + * we hard-cast the data to a 'String:String' data-set. + *

+ * + * @param chunkId to get a chunk for. + * @return {@link TerritoryChunk} if found, or {@code null} if it isn't. + */ + @SuppressWarnings("unchecked") + @Nullable + public TerritoryChunk getChunk(@NotNull UUID chunkId) { + if (!data.containsKey(chunkId) && !data.containsKey(chunkId.toString())) { + return null; + } + + Object object = data.getOrDefault(chunkId, null); + if (object == null) { + data.getOrDefault(chunkId.toString(), null); + } + if (object == null) { + return null; + } + + final TerritoryChunk chunk = new JsonTerritoryChunk(); + chunk.fromJSON((Map) object); + + return chunk; + } + + /** + * + */ + public void save() { + // TODO: implement + } + /** * Method to load the data for territory handling. */ @@ -64,7 +102,11 @@ private void load() { final JsonReader reader = new JsonReader(inputStream); final Gson gson = new GsonBuilder().setPrettyPrinting().create(); final Object jsonData = gson.fromJson(reader, HashMap.class); - if (!(jsonData instanceof HashMap)) return; + + if (!(jsonData instanceof HashMap)) { + return; + } + this.data = ((HashMap) jsonData); // Close the Readers ♥ @@ -76,27 +118,4 @@ private void load() { this.data = new HashMap<>(); } } - - /** - * Method to obtain a chunk from its Id. - *

- * Due to the nature of Json and GSON specifically, unchecked is dampened - * we hard-cast the data to a 'String:String' data-set. - *

- * - * @param chunkId to get a chunk for. - * @return {@link TerritoryChunk} if found, or {@code null} if it isn't. - */ - @SuppressWarnings("unchecked") - @Nullable - public TerritoryChunk getChunk(@NotNull UUID chunkId) { - if (!data.containsKey(chunkId) && !data.containsKey(chunkId.toString())) return null; - Object object = data.getOrDefault(chunkId, null); - if (object == null) data.getOrDefault(chunkId.toString(), null); - if (object == null) return null; - final TerritoryChunk chunk = new JsonTerritoryChunk(); - chunk.fromJSON((Map) object); - return chunk; - } - -} +} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/api/exceptions/FactionFileException.java b/src/main/java/dansplugins/minifactions/api/exceptions/FactionFileException.java new file mode 100644 index 0000000..24f759e --- /dev/null +++ b/src/main/java/dansplugins/minifactions/api/exceptions/FactionFileException.java @@ -0,0 +1,15 @@ +package dansplugins.minifactions.api.exceptions; + +/** + * @author Daniel McCoy Stephenson + * @since April 16th, 2022 + */ +public class FactionFileException extends RuntimeException { + + /** + * This is thrown when the Faction file is unable to be loaded properly. + */ + public FactionFileException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/api/exceptions/PowerRecordFileException.java b/src/main/java/dansplugins/minifactions/api/exceptions/PowerRecordFileException.java new file mode 100644 index 0000000..2a86130 --- /dev/null +++ b/src/main/java/dansplugins/minifactions/api/exceptions/PowerRecordFileException.java @@ -0,0 +1,15 @@ +package dansplugins.minifactions.api.exceptions; + +/** + * @author Daniel McCoy Stephenson + * @since April 16th, 2022 + */ +public class PowerRecordFileException extends RuntimeException { + + /** + * This is thrown when the PowerRecord file is unable to be loaded properly. + */ + public PowerRecordFileException(String message) { + super(message); + } +} \ No newline at end of file From 8abdb5992d1b963c8901c327f8c771f836328b04 Mon Sep 17 00:00:00 2001 From: dmccoystephenson Date: Fri, 22 Apr 2022 00:40:47 -0600 Subject: [PATCH 2/4] Data handler classes now implement data interfaces. --- .../api/data/handlers/FactionHandler.java | 54 ++++++++++++++++++- .../api/data/handlers/PowerRecordHandler.java | 28 +++++++++- .../api/data/handlers/TerritoryHandler.java | 54 ++++++++++++++++++- 3 files changed, 133 insertions(+), 3 deletions(-) diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java index 2161e0c..1bdbc44 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java @@ -5,7 +5,10 @@ import com.google.gson.stream.JsonReader; import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.data.JsonFaction; +import dansplugins.minifactions.api.data.abs.FactionData; import dansplugins.minifactions.api.definitions.core.Faction; +import dansplugins.minifactions.api.definitions.core.FactionPlayer; +import dansplugins.minifactions.api.definitions.core.TerritoryChunk; import dansplugins.minifactions.api.exceptions.FactionFileException; import org.jetbrains.annotations.NotNull; @@ -16,6 +19,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -23,7 +27,7 @@ * @author Daniel McCoy Stephenson * @since April 16th, 2022 */ -public class FactionHandler { +public class FactionHandler implements FactionData { /** * File linked to the faction data. @@ -119,4 +123,52 @@ private void load() { this.data = new HashMap<>(); } } + + @Override + public Faction getFaction(String name) throws Exception { + // TODO: implement + return null; + } + + @Override + public boolean addFaction(Faction faction) { + // TODO: implement + return false; + } + + @Override + public Faction getFactionByPlayer(FactionPlayer factionPlayer) { + // TODO: implement + return null; + } + + @Override + public Faction getFactionByChunk(TerritoryChunk territoryChunk) { + // TODO: implement + return null; + } + + @Override + public boolean removeFaction(Faction faction) { + // TODO: implement + return false; + } + + @Override + public String getFactionList() { + // TODO: implement + return null; + } + + @Override + public List> getFactionsAsJson() { + // TODO: implement + return null; + } + + @Override + public void clearFactions() { + // TODO: implement + + } } \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java index f627b5a..11bb94c 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java @@ -5,6 +5,7 @@ import com.google.gson.stream.JsonReader; import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.data.JsonPowerRecord; +import dansplugins.minifactions.api.data.abs.PowerData; import dansplugins.minifactions.api.definitions.PowerRecord; import dansplugins.minifactions.api.exceptions.PowerRecordFileException; @@ -16,6 +17,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -23,7 +25,7 @@ * @author Daniel McCoy Stephenson * @since April 16th, 2022 */ -public class PowerRecordHandler { +public class PowerRecordHandler implements PowerData { /** * File linked to the power record data. @@ -119,4 +121,28 @@ private void load() { this.data = new HashMap<>(); } } + + @Override + public boolean addPowerRecord(PowerRecord powerRecord) { + // TODO: implement + return false; + } + + @Override + public boolean hasPowerRecord(UUID playerUUID) { + // TODO: implement + return false; + } + + @Override + public List> getPowerRecordsAsJson() { + // TODO: implement + return null; + } + + @Override + public void clearPowerRecords() { + // TODO: implement + + } } \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java index 1dd320f..3a65d42 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java @@ -5,8 +5,11 @@ import com.google.gson.stream.JsonReader; import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.data.JsonTerritoryChunk; +import dansplugins.minifactions.api.data.abs.TerritoryData; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; import dansplugins.minifactions.api.exceptions.TerritoryFileException; + +import org.bukkit.Chunk; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,6 +18,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -22,7 +26,7 @@ * @author Callum Johnson * @since 11/12/2021 - 21:57 */ -public class TerritoryHandler { +public class TerritoryHandler implements TerritoryData { /** * File linked to the territory data. @@ -118,4 +122,52 @@ private void load() { this.data = new HashMap<>(); } } + + @Override + public boolean addTerritoryChunk(TerritoryChunk territoryChunk) { + // TODO: implement + return false; + } + + @Override + public TerritoryChunk getTerritoryChunk(UUID territoryChunkUUID) { + // TODO: implement + return null; + } + + @Override + public TerritoryChunk getTerritoryChunk(Chunk chunk) { + // TODO: implement + return null; + } + + @Override + public TerritoryChunk getTerritoryChunk(int x, int z, UUID worldUUID) { + // TODO: implement + return null; + } + + @Override + public boolean doesTerritoryChunkExist(Chunk chunk) { + // TODO: implement + return false; + } + + @Override + public boolean isTerritoryChunkClaimed(TerritoryChunk territoryChunk) { + // TODO: implement + return false; + } + + @Override + public List> getTerritoryChunksAsJson() { + // TODO: implement + return null; + } + + @Override + public void clearTerritoryChunks() { + // TODO: implement + + } } \ No newline at end of file From 041c664b11ad42c70da8db44fac2459ebf4377bf Mon Sep 17 00:00:00 2001 From: dmccoystephenson Date: Sat, 23 Apr 2022 23:32:54 -0600 Subject: [PATCH 3/4] The FactionHandler class is now being used to access faction data instead of the PersistentData class. --- .../minifactions/api/MiniFactionsAPI.java | 5 +- .../api/data/handlers/FactionHandler.java | 81 +++++++++++++---- .../config/force/ForceClaimCommand.java | 3 +- .../config/force/ForceDisbandCommand.java | 6 +- .../config/force/ForceInviteCommand.java | 4 +- .../config/force/ForceJoinCommand.java | 4 +- .../config/force/ForceUnclaimCommand.java | 3 +- .../commands/social/DisbandCommand.java | 4 +- .../commands/social/InfoCommand.java | 4 +- .../commands/social/JoinCommand.java | 4 +- .../commands/social/LeaveCommand.java | 4 +- .../commands/social/ListCommand.java | 4 +- .../commands/territory/CheckClaimCommand.java | 3 +- .../minifactions/data/PersistentData.java | 87 +------------------ .../factories/FactionFactory.java | 6 +- 15 files changed, 93 insertions(+), 129 deletions(-) diff --git a/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java b/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java index d51d323..a060289 100644 --- a/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java +++ b/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java @@ -1,5 +1,6 @@ package dansplugins.minifactions.api; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.data.JsonFactionPlayer; import dansplugins.minifactions.api.definitions.PowerRecord; import dansplugins.minifactions.api.definitions.core.Faction; @@ -21,11 +22,11 @@ public class MiniFactionsAPI { public Faction getFactionByPlayer(FactionPlayer factionPlayer) { - return PersistentData.getInstance().getFactionByPlayer(factionPlayer); + return MiniFactions.getInstance().getFactionHandler().getFactionByPlayer(factionPlayer); } public Faction getFactionByChunk(TerritoryChunk territoryChunk) throws Exception { - return PersistentData.getInstance().getFaction(territoryChunk.getFactionUUID()); + return MiniFactions.getInstance().getFactionHandler().getFaction(territoryChunk.getFactionUUID()); } public PowerRecord getPlayerPowerRecord(UUID id) { diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java index 1bdbc44..27a9d6c 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java @@ -10,14 +10,20 @@ import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; import dansplugins.minifactions.api.exceptions.FactionFileException; +import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -37,7 +43,7 @@ public class FactionHandler implements FactionData { /** * Data from the file. */ - private HashMap data = null; + private HashMap data = new HashMap<>(); /** * Constructor to initialise {@link #file} and then populate {@link #data}. @@ -94,7 +100,23 @@ public Faction getFaction(@NotNull UUID factionId) { * */ public void save() { - // TODO: implement + final File file = new File(MiniFactions.getInstance().getDataFolder(), "factions.json"); + final OutputStreamWriter outputStreamWriter; + try { + outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8); + } catch (FileNotFoundException e) { + e.printStackTrace(); + // TODO: log error + return; + } + final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + try { + outputStreamWriter.write(gson.toJson(this.data)); + outputStreamWriter.close(); + } catch (IOException e) { + // TODO: log error + e.printStackTrace(); + } } /** @@ -112,7 +134,7 @@ private void load() { return; } - this.data = ((HashMap) jsonData); + this.data = ((HashMap) jsonData); // Close the Readers ♥ reader.close(); @@ -120,55 +142,76 @@ private void load() { fileInputStream.close(); } catch (Exception ex) { ex.printStackTrace(); + // TODO: log error this.data = new HashMap<>(); } } @Override public Faction getFaction(String name) throws Exception { - // TODO: implement - return null; + for (Object key : data.keySet()) { + Faction faction = getFaction((@NotNull UUID) key); + if (faction.getName() == name) { + return faction; + } + } + throw new FactionNotFoundException(name); } @Override public boolean addFaction(Faction faction) { - // TODO: implement - return false; + return data.put(faction.getId(), faction) != null; } @Override public Faction getFactionByPlayer(FactionPlayer factionPlayer) { - // TODO: implement - return null; + for (Object key : data.keySet()) { + Faction faction = getFaction((@NotNull UUID) key); + if (faction.isMember(factionPlayer)) { + return faction; + } + } + throw new FactionNotFoundException(factionPlayer); } @Override public Faction getFactionByChunk(TerritoryChunk territoryChunk) { - // TODO: implement - return null; + for (Object key : data.keySet()) { + Faction faction = getFaction((@NotNull UUID) key); + if (faction.ownsChunk(territoryChunk)) { + return faction; + } + } + throw new FactionNotFoundException(territoryChunk); } @Override public boolean removeFaction(Faction faction) { - // TODO: implement - return false; + return data.remove(faction.getId()) != null; } @Override public String getFactionList() { - // TODO: implement - return null; + String toReturn = "=== Factions ===" + "\n"; + for (Object key : data.keySet()) { + Faction faction = getFaction((@NotNull UUID) key); + toReturn += faction.getName() + "\n"; + } + return toReturn; } @Override public List> getFactionsAsJson() { - // TODO: implement - return null; + List> toReturn = new ArrayList<>(); + for (Object key : data.keySet()) { + Faction faction = getFaction((@NotNull UUID) key); + toReturn.add(faction.toJSON()); + } + return toReturn; } @Override public void clearFactions() { - // TODO: implement - + data = new HashMap<>(); } } \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java index 7e93996..c1ba75e 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java @@ -6,6 +6,7 @@ import org.bukkit.Chunk; import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; @@ -39,7 +40,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[0]; Faction faction; try { - faction = PersistentData.getInstance().getFaction(factionName); + faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { sender.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java index 304533b..4954033 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java @@ -5,10 +5,10 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; public class ForceDisbandCommand extends AbstractMFCommand { @@ -27,7 +27,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[0]; Faction faction; try { - faction = PersistentData.getInstance().getFaction(factionName); + faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { sender.sendMessage("That faction wasn't found."); return false; @@ -38,7 +38,7 @@ public boolean execute(CommandSender sender, String[] args) { faction.sendMessage("The faction is forcefully getting disbanded."); - boolean success = PersistentData.getInstance().removeFaction(faction); + boolean success = MiniFactions.getInstance().getFactionHandler().removeFaction(faction); if (success) { sender.sendMessage("That faction has been disbanded."); } diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java index bb36fd1..71f580f 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java @@ -6,11 +6,11 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; import dansplugins.minifactions.objects.FactionPlayerImpl; public class ForceInviteCommand extends AbstractMFCommand { @@ -43,7 +43,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[1]; Faction faction; try { - faction = PersistentData.getInstance().getFaction(factionName); + faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { factionPlayer.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java index d28382e..35db3cd 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java @@ -6,11 +6,11 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; import dansplugins.minifactions.objects.FactionPlayerImpl; public class ForceJoinCommand extends AbstractMFCommand { @@ -43,7 +43,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[1]; Faction faction; try { - faction = PersistentData.getInstance().getFaction(factionName); + faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { factionPlayer.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java index a8e1a71..9de57c6 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java @@ -6,6 +6,7 @@ import org.bukkit.Chunk; import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; @@ -38,7 +39,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[0]; Faction faction; try { - faction = PersistentData.getInstance().getFaction(factionName); + faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { sender.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java b/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java index 21912aa..7b4475f 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java @@ -5,12 +5,12 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; /** * @author Daniel McCoy Stephenson @@ -41,7 +41,7 @@ public boolean execute(CommandSender commandSender) { faction.sendMessage(player.getName() + " is disbanding the faction."); - boolean success = PersistentData.getInstance().removeFaction(faction); + boolean success = MiniFactions.getInstance().getFactionHandler().removeFaction(faction); if (success) { player.sendMessage("Your faction has been disbanded."); } diff --git a/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java b/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java index 6d65349..42f2942 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java @@ -5,12 +5,12 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; /** * @author Daniel McCoy Stephenson @@ -55,7 +55,7 @@ public boolean execute(CommandSender commandSender, String[] args) { String factionName = args[1]; Faction faction; try { - faction = PersistentData.getInstance().getFaction(factionName); + faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { player.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java b/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java index 0046b6d..254fa98 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java @@ -2,12 +2,12 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; import java.util.ArrayList; import java.util.Arrays; @@ -46,7 +46,7 @@ public boolean execute(CommandSender commandSender, String[] args) { Faction faction; try { - faction = PersistentData.getInstance().getFaction(factionName); + faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); } catch (Exception e) { player.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java b/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java index 67308a4..70c48cf 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java @@ -2,12 +2,12 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; import java.util.ArrayList; import java.util.Arrays; @@ -46,7 +46,7 @@ public boolean execute(CommandSender commandSender) { return false; } else { - PersistentData.getInstance().removeFaction(faction); + MiniFactions.getInstance().getFactionHandler().removeFaction(faction); player.sendMessage("Your faction has been disbanded since you were the only member."); return true; } diff --git a/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java b/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java index 820a20f..14d0764 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java @@ -2,8 +2,8 @@ import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; import java.util.ArrayList; import java.util.Arrays; @@ -19,7 +19,7 @@ public ListCommand() { @Override public boolean execute(CommandSender commandSender) { - commandSender.sendMessage(PersistentData.getInstance().getFactionList()); + commandSender.sendMessage(MiniFactions.getInstance().getFactionHandler().getFactionList()); return true; } diff --git a/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java b/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java index 1ac42df..9b810fd 100644 --- a/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java @@ -3,6 +3,7 @@ import org.bukkit.Chunk; import org.bukkit.command.CommandSender; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; @@ -51,7 +52,7 @@ public boolean execute(CommandSender commandSender) { UUID landholderUUID = territoryChunk.getFactionUUID(); Faction landholder; try { - landholder = PersistentData.getInstance().getFaction(landholderUUID); + landholder = MiniFactions.getInstance().getFactionHandler().getFaction(landholderUUID); } catch (Exception e) { // this shouldn't happen return false; diff --git a/src/main/java/dansplugins/minifactions/data/PersistentData.java b/src/main/java/dansplugins/minifactions/data/PersistentData.java index 7dd665c..37de8a0 100644 --- a/src/main/java/dansplugins/minifactions/data/PersistentData.java +++ b/src/main/java/dansplugins/minifactions/data/PersistentData.java @@ -8,14 +8,10 @@ import org.bukkit.Chunk; -import dansplugins.minifactions.api.data.abs.FactionData; import dansplugins.minifactions.api.data.abs.PowerData; import dansplugins.minifactions.api.data.abs.TerritoryData; import dansplugins.minifactions.api.definitions.PowerRecord; -import dansplugins.minifactions.api.definitions.core.Faction; -import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; -import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.api.exceptions.PowerRecordNotFoundException; import dansplugins.minifactions.api.exceptions.TerritoryChunkNotFoundException; import dansplugins.minifactions.factories.PowerRecordFactory; @@ -24,9 +20,8 @@ * @author Daniel McCoy Stephenson * @since April 13th, 2022 */ -public class PersistentData implements FactionData, PowerData, TerritoryData { +public class PersistentData implements PowerData, TerritoryData { private static PersistentData instance; - private HashSet factions = new HashSet<>(); private HashSet powerRecords = new HashSet<>(); private HashSet territoryChunks = new HashSet<>(); @@ -41,66 +36,6 @@ public static PersistentData getInstance() { return instance; } - @Override - public Faction getFaction(String name) throws Exception { - for (Faction faction : factions) { - if (faction.getName().equals(name)) { - return faction; - } - } - throw new FactionNotFoundException(null); - } - - @Override - public Faction getFaction(UUID factionUUID) throws Exception { - for (Faction faction : factions) { - if (faction.getId().equals(factionUUID)) { - return faction; - } - } - throw new FactionNotFoundException(null); - } - - @Override - public boolean addFaction(Faction faction) { - return factions.add(faction); - } - - @Override - public Faction getFactionByPlayer(FactionPlayer factionPlayer) { - for (Faction faction : factions) { - if (faction.isMember(factionPlayer)) { - return faction; - } - } - throw new FactionNotFoundException(null); - } - - @Override - public Faction getFactionByChunk(TerritoryChunk territoryChunk) { - for (Faction faction : factions) { - if (faction.getId().equals(territoryChunk.getFaction().getId())) { - return faction; - } - } - throw new FactionNotFoundException(null); - } - - @Override - public boolean removeFaction(Faction faction) { - faction.unclaimAllChunks(); - return factions.remove(faction); - } - - @Override - public String getFactionList() { - String toReturn = "=== Factions ===" + "\n"; - for (Faction faction : factions) { - toReturn += faction.getName() + "\n"; - } - return toReturn; - } - @Override public boolean addPowerRecord(PowerRecord powerRecord) { return powerRecords.add(powerRecord); @@ -174,23 +109,10 @@ public boolean doesTerritoryChunkExist(Chunk chunk) { @Override public boolean isTerritoryChunkClaimed(TerritoryChunk territoryChunk) { - for (Faction faction : factions) { - if (faction.ownsChunk(territoryChunk)) { - return true; - } - } + // TODO: implement return false; } - @Override - public List> getFactionsAsJson() { - List> data = new ArrayList<>(); - for (Faction faction : factions) { - data.add(faction.toJSON()); - } - return data; - } - @Override public List> getPowerRecordsAsJson() { List> data = new ArrayList<>(); @@ -209,11 +131,6 @@ public List> getTerritoryChunksAsJson() { return data; } - @Override - public void clearFactions() { - factions.clear(); - } - @Override public void clearPowerRecords() { powerRecords.clear(); diff --git a/src/main/java/dansplugins/minifactions/factories/FactionFactory.java b/src/main/java/dansplugins/minifactions/factories/FactionFactory.java index 78d9ecb..ddf217f 100644 --- a/src/main/java/dansplugins/minifactions/factories/FactionFactory.java +++ b/src/main/java/dansplugins/minifactions/factories/FactionFactory.java @@ -2,8 +2,8 @@ import java.util.UUID; +import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; -import dansplugins.minifactions.data.PersistentData; import dansplugins.minifactions.objects.FactionImpl; public class FactionFactory { @@ -25,13 +25,13 @@ public boolean createFaction(String name, UUID creatorUUID) { return false; } Faction faction = new FactionImpl(name, creatorUUID); - PersistentData.getInstance().addFaction(faction); + MiniFactions.getInstance().getFactionHandler().addFaction(faction); return true; } private boolean isNameTaken(String name) { try { - PersistentData.getInstance().getFaction(name); + MiniFactions.getInstance().getFactionHandler().getFaction(name); return true; } catch (Exception e) { return false; From aa081145846968782030e8218904b5198f98eb6b Mon Sep 17 00:00:00 2001 From: dmccoystephenson Date: Wed, 29 Jun 2022 22:00:19 -0600 Subject: [PATCH 4/4] Started the transition to a singleton-less project. --- .../minifactions/MiniFactions.java | 79 ++++++++++--------- .../minifactions/api/MiniFactionsAPI.java | 15 +++- .../api/data/handlers/FactionHandler.java | 9 ++- .../api/data/handlers/PowerRecordHandler.java | 5 +- .../api/data/handlers/TerritoryHandler.java | 7 +- .../api/definitions/FactionEntity.java | 2 +- .../minifactions/commands/DefaultCommand.java | 11 ++- .../minifactions/commands/HelpCommand.java | 5 +- .../commands/abs/AbstractMFCommand.java | 13 +-- .../commands/config/ConfigCommand.java | 11 +-- .../commands/config/ForceCommand.java | 29 +++++-- .../config/force/ForceClaimCommand.java | 25 +++--- .../config/force/ForceDisbandCommand.java | 13 +-- .../config/force/ForceHelpCommand.java | 5 +- .../config/force/ForceInviteCommand.java | 11 ++- .../config/force/ForceJoinCommand.java | 11 ++- .../config/force/ForceKickCommand.java | 5 +- .../config/force/ForceUnclaimCommand.java | 19 +++-- .../commands/social/CreateCommand.java | 11 ++- .../commands/social/DisbandCommand.java | 11 ++- .../commands/social/InfoCommand.java | 11 ++- .../commands/social/InviteCommand.java | 5 +- .../commands/social/JoinCommand.java | 11 ++- .../commands/social/KickCommand.java | 5 +- .../commands/social/LeaveCommand.java | 11 ++- .../commands/social/ListCommand.java | 11 ++- .../commands/social/TransferCommand.java | 5 +- .../commands/territory/CheckClaimCommand.java | 17 ++-- .../commands/territory/ClaimCommand.java | 33 +++++--- .../commands/territory/PowerCommand.java | 13 +-- .../commands/territory/UnclaimCommand.java | 12 ++- .../minifactions/data/PersistentData.java | 23 +++--- .../eventhandlers/DeathHandler.java | 27 ------- .../eventhandlers/JoinHandler.java | 23 ------ .../factories/FactionFactory.java | 22 +++--- .../factories/PowerRecordFactory.java | 21 ++--- .../factories/TerritoryChunkFactory.java | 15 +--- .../minifactions/listeners/DeathListener.java | 34 ++++++++ .../minifactions/listeners/JoinListener.java | 30 +++++++ .../minifactions/objects/FactionImpl.java | 12 ++- ...lConfigService.java => ConfigService.java} | 26 +++--- .../minifactions/utils/MFLogger.java | 17 ++-- 42 files changed, 385 insertions(+), 296 deletions(-) delete mode 100644 src/main/java/dansplugins/minifactions/eventhandlers/DeathHandler.java delete mode 100644 src/main/java/dansplugins/minifactions/eventhandlers/JoinHandler.java create mode 100644 src/main/java/dansplugins/minifactions/listeners/DeathListener.java create mode 100644 src/main/java/dansplugins/minifactions/listeners/JoinListener.java rename src/main/java/dansplugins/minifactions/services/{LocalConfigService.java => ConfigService.java} (88%) diff --git a/src/main/java/dansplugins/minifactions/MiniFactions.java b/src/main/java/dansplugins/minifactions/MiniFactions.java index f6fbe8c..929c282 100644 --- a/src/main/java/dansplugins/minifactions/MiniFactions.java +++ b/src/main/java/dansplugins/minifactions/MiniFactions.java @@ -22,9 +22,13 @@ import dansplugins.minifactions.commands.territory.ClaimCommand; import dansplugins.minifactions.commands.territory.PowerCommand; import dansplugins.minifactions.commands.territory.UnclaimCommand; -import dansplugins.minifactions.eventhandlers.DeathHandler; -import dansplugins.minifactions.eventhandlers.JoinHandler; -import dansplugins.minifactions.services.LocalConfigService; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.factories.FactionFactory; +import dansplugins.minifactions.factories.TerritoryChunkFactory; +import dansplugins.minifactions.listeners.DeathListener; +import dansplugins.minifactions.listeners.JoinListener; +import dansplugins.minifactions.services.ConfigService; +import dansplugins.minifactions.utils.MFLogger; import preponderous.ponder.minecraft.bukkit.abs.AbstractPluginCommand; import preponderous.ponder.minecraft.bukkit.abs.PonderBukkitPlugin; import preponderous.ponder.minecraft.bukkit.services.CommandService; @@ -43,36 +47,33 @@ * @since 10/25/2021 */ public class MiniFactions extends PonderBukkitPlugin { - private static MiniFactions instance; public static final boolean debug_mode = false; private final String pluginVersion = "v" + getDescription().getVersion(); + private final CommandService commandService = new CommandService(getPonder()); + private final MFLogger mfLogger = new MFLogger(this); + private final ConfigService configService = new ConfigService(this); + private final PersistentData persistentData = new PersistentData(configService); + private final FactionFactory factionFactory = new FactionFactory(this, persistentData); + private final TerritoryChunkFactory territoryChunkFactory = new TerritoryChunkFactory(persistentData); + private MiniFactionsAPI api; private FactionHandler factionHandler; private PowerRecordHandler powerRecordHandler; private TerritoryHandler territoryHandler; - /** - * This can be used to get the instance of the main class that is managed by itself. - * @return The managed instance of the main class. - */ - public static MiniFactions getInstance() { - return instance; - } - /** * This runs when the server starts. */ @Override public void onEnable() { - instance = this; initializeConfig(); registerEventHandlers(); initializeCommandService(); - api = new MiniFactionsAPI(); - factionHandler = new FactionHandler(); - powerRecordHandler = new PowerRecordHandler(); - territoryHandler = new TerritoryHandler(); + api = new MiniFactionsAPI(this, persistentData); + factionHandler = new FactionHandler(this); + powerRecordHandler = new PowerRecordHandler(this); + territoryHandler = new TerritoryHandler(this); handlebStatsIntegration(); } @@ -97,7 +98,7 @@ public void onDisable() { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (args.length == 0) { - DefaultCommand defaultCommand = new DefaultCommand(); + DefaultCommand defaultCommand = new DefaultCommand(mfLogger, this); return defaultCommand.execute(sender); } @@ -130,7 +131,7 @@ public boolean isVersionMismatched() { * @return Whether debug is enabled. */ public boolean isDebugEnabled() { - return LocalConfigService.getInstance().getBoolean("debugMode"); + return configService.getBoolean("debugMode"); } /** @@ -174,7 +175,7 @@ private void initializeConfig() { performCompatibilityChecks(); } else { - LocalConfigService.getInstance().saveMissingConfigDefaultsIfNotPresent(); + configService.saveMissingConfigDefaultsIfNotPresent(); } } @@ -184,7 +185,7 @@ private boolean configFileExists() { private void performCompatibilityChecks() { if (isVersionMismatched()) { - LocalConfigService.getInstance().saveMissingConfigDefaultsIfNotPresent(); + configService.saveMissingConfigDefaultsIfNotPresent(); } reloadConfig(); } @@ -195,8 +196,8 @@ private void performCompatibilityChecks() { private void registerEventHandlers() { EventHandlerRegistry eventHandlerRegistry = new EventHandlerRegistry(); ArrayList listeners = new ArrayList<>(Arrays.asList( - new JoinHandler(), - new DeathHandler() + new JoinListener(persistentData, persistentData.getPowerRecordFactory()), + new DeathListener(configService, persistentData) )); eventHandlerRegistry.registerEventHandlers(listeners, this); } @@ -207,22 +208,22 @@ private void registerEventHandlers() { */ private void initializeCommandService() { ArrayList commands = new ArrayList<>(); - commands.add(new HelpCommand()); - commands.add(new CreateCommand()); - commands.add(new InfoCommand()); - commands.add(new DisbandCommand()); - commands.add(new ListCommand()); - commands.add(new InviteCommand()); - commands.add(new JoinCommand()); - commands.add(new KickCommand()); - commands.add(new LeaveCommand()); - commands.add(new TransferCommand()); - commands.add(new PowerCommand()); - commands.add(new ClaimCommand()); - commands.add(new CheckClaimCommand()); - commands.add(new UnclaimCommand()); - commands.add(new ConfigCommand()); - commands.add(new ForceCommand()); + commands.add(new HelpCommand(mfLogger)); + commands.add(new CreateCommand(mfLogger, factionFactory)); + commands.add(new InfoCommand(mfLogger, this)); + commands.add(new DisbandCommand(mfLogger, this)); + commands.add(new ListCommand(mfLogger, this)); + commands.add(new InviteCommand(mfLogger)); + commands.add(new JoinCommand(mfLogger, this)); + commands.add(new KickCommand(mfLogger)); + commands.add(new LeaveCommand(mfLogger, this)); + commands.add(new TransferCommand(mfLogger)); + commands.add(new PowerCommand(mfLogger, persistentData)); + commands.add(new ClaimCommand(mfLogger, persistentData, configService, territoryChunkFactory)); + commands.add(new CheckClaimCommand(mfLogger, persistentData, this)); + commands.add(new UnclaimCommand(mfLogger, persistentData)); + commands.add(new ConfigCommand(configService)); + commands.add(new ForceCommand(mfLogger, this, persistentData, territoryChunkFactory)); commandService.initialize(commands, "That command wasn't found."); } diff --git a/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java b/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java index a060289..cfc757b 100644 --- a/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java +++ b/src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java @@ -7,8 +7,8 @@ import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; import dansplugins.minifactions.api.exceptions.FactionPlayerRetrievalException; -import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.data.PersistentData; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.jetbrains.annotations.NotNull; @@ -20,17 +20,24 @@ * @since 08/11/2021 - 08:08 */ public class MiniFactionsAPI { + private final MiniFactions miniFactions; + private final PersistentData persistentData; + + public MiniFactionsAPI(MiniFactions miniFactions, PersistentData persistentData) { + this.miniFactions = miniFactions; + this.persistentData = persistentData; + } public Faction getFactionByPlayer(FactionPlayer factionPlayer) { - return MiniFactions.getInstance().getFactionHandler().getFactionByPlayer(factionPlayer); + return miniFactions.getFactionHandler().getFactionByPlayer(factionPlayer); } public Faction getFactionByChunk(TerritoryChunk territoryChunk) throws Exception { - return MiniFactions.getInstance().getFactionHandler().getFaction(territoryChunk.getFactionUUID()); + return miniFactions.getFactionHandler().getFaction(territoryChunk.getFactionUUID()); } public PowerRecord getPlayerPowerRecord(UUID id) { - return PersistentData.getInstance().getPowerRecord(id); + return persistentData.getPowerRecord(id); } @SuppressWarnings("deprecation") diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java index 27a9d6c..afecc2f 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/FactionHandler.java @@ -34,6 +34,7 @@ * @since April 16th, 2022 */ public class FactionHandler implements FactionData { + private final MiniFactions miniFactions; /** * File linked to the faction data. @@ -49,9 +50,11 @@ public class FactionHandler implements FactionData { * Constructor to initialise {@link #file} and then populate {@link #data}. * * @see #load() + * @param miniFactions */ - public FactionHandler() { - file = new File(MiniFactions.getInstance().getDataFolder(), "factions.json"); + public FactionHandler(MiniFactions miniFactions) { + this.miniFactions = miniFactions; + file = new File(this.miniFactions.getDataFolder(), "factions.json"); try { if (!file.exists()) { if (!file.createNewFile()) { @@ -100,7 +103,7 @@ public Faction getFaction(@NotNull UUID factionId) { * */ public void save() { - final File file = new File(MiniFactions.getInstance().getDataFolder(), "factions.json"); + final File file = new File(miniFactions.getDataFolder(), "factions.json"); final OutputStreamWriter outputStreamWriter; try { outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8); diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java index 11bb94c..2b64596 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/PowerRecordHandler.java @@ -41,9 +41,10 @@ public class PowerRecordHandler implements PowerData { * Constructor to initialise {@link #file} and then populate {@link #data}. * * @see #load() + * @param miniFactions */ - public PowerRecordHandler() { - file = new File(MiniFactions.getInstance().getDataFolder(), "powerRecords.json"); + public PowerRecordHandler(MiniFactions miniFactions) { + file = new File(miniFactions.getDataFolder(), "powerRecords.json"); try { if (!file.exists()) { if (!file.createNewFile()) { diff --git a/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java b/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java index 3a65d42..cdef1dc 100644 --- a/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java +++ b/src/main/java/dansplugins/minifactions/api/data/handlers/TerritoryHandler.java @@ -27,6 +27,7 @@ * @since 11/12/2021 - 21:57 */ public class TerritoryHandler implements TerritoryData { + private final MiniFactions miniFactions; /** * File linked to the territory data. @@ -42,9 +43,11 @@ public class TerritoryHandler implements TerritoryData { * Constructor to initialise {@link #file} and then populate {@link #data}. * * @see #load() + * @param miniFactions */ - public TerritoryHandler() { - file = new File(MiniFactions.getInstance().getDataFolder(), "territoryChunks.json"); + public TerritoryHandler(MiniFactions miniFactions) { + this.miniFactions = miniFactions; + file = new File(this.miniFactions.getDataFolder(), "territoryChunks.json"); try { if (!file.exists()) { if (!file.createNewFile()) { diff --git a/src/main/java/dansplugins/minifactions/api/definitions/FactionEntity.java b/src/main/java/dansplugins/minifactions/api/definitions/FactionEntity.java index a0090ff..f428b20 100644 --- a/src/main/java/dansplugins/minifactions/api/definitions/FactionEntity.java +++ b/src/main/java/dansplugins/minifactions/api/definitions/FactionEntity.java @@ -27,7 +27,7 @@ public interface FactionEntity extends Jsonify { * @return {@link MiniFactionsAPI} instance. */ default MiniFactionsAPI getAPI() { - return MiniFactions.getInstance().getMiniFactionsAPI(); + return miniFactions.getMiniFactionsAPI(); // TODO: figure out another way to get the API } } diff --git a/src/main/java/dansplugins/minifactions/commands/DefaultCommand.java b/src/main/java/dansplugins/minifactions/commands/DefaultCommand.java index 031d8ff..7264901 100644 --- a/src/main/java/dansplugins/minifactions/commands/DefaultCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/DefaultCommand.java @@ -1,8 +1,9 @@ package dansplugins.minifactions.commands; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.commands.abs.AbstractMFCommand; @@ -13,14 +14,16 @@ * @author Daniel McCoy Stephenson */ public class DefaultCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public DefaultCommand() { - super(new ArrayList<>(Arrays.asList("default")), new ArrayList<>(Arrays.asList("mf.default"))); + public DefaultCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("default")), new ArrayList<>(Arrays.asList("mf.default")), mfLogger); + this.miniFactions = miniFactions; } @Override public boolean execute(CommandSender commandSender) { - commandSender.sendMessage("MiniFactions " + MiniFactions.getInstance().getVersion()); + commandSender.sendMessage("MiniFactions " + miniFactions.getVersion()); commandSender.sendMessage("Developed by: Daniel Stephenson, Callum Johnson"); commandSender.sendMessage("Wiki: https://github.com/Dans-Plugins/MiniFactions/wiki"); return true; diff --git a/src/main/java/dansplugins/minifactions/commands/HelpCommand.java b/src/main/java/dansplugins/minifactions/commands/HelpCommand.java index 60e4594..61e5ca3 100644 --- a/src/main/java/dansplugins/minifactions/commands/HelpCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/HelpCommand.java @@ -1,5 +1,6 @@ package dansplugins.minifactions.commands; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.commands.abs.AbstractMFCommand; @@ -13,8 +14,8 @@ */ public class HelpCommand extends AbstractMFCommand { - public HelpCommand() { - super(new ArrayList<>(Arrays.asList("help")), new ArrayList<>(Arrays.asList("mf.help"))); + public HelpCommand(MFLogger mfLogger) { + super(new ArrayList<>(Arrays.asList("help")), new ArrayList<>(Arrays.asList("mf.help")), mfLogger); } @Override diff --git a/src/main/java/dansplugins/minifactions/commands/abs/AbstractMFCommand.java b/src/main/java/dansplugins/minifactions/commands/abs/AbstractMFCommand.java index 6e5d5f4..4c15391 100644 --- a/src/main/java/dansplugins/minifactions/commands/abs/AbstractMFCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/abs/AbstractMFCommand.java @@ -19,11 +19,14 @@ * @author Daniel McCoy Stephenson */ public abstract class AbstractMFCommand extends AbstractPluginCommand { - private static MiniFactionsAPI api = new MiniFactionsAPI(); + private final MFLogger mfLogger; + + private static MiniFactionsAPI api = new MiniFactionsAPI(miniFactions, persistentData); private UUIDChecker uuidChecker = new UUIDChecker(); - public AbstractMFCommand(ArrayList names, ArrayList permissions) { + public AbstractMFCommand(ArrayList names, ArrayList permissions, MFLogger mfLogger) { super(names, permissions); + this.mfLogger = mfLogger; } abstract public boolean execute(CommandSender commandSender); @@ -56,14 +59,14 @@ public void sendMessageToPlayerByUUID(UUID playerUUID, String message) { } public void print(String message) { - MFLogger.getInstance().print(message); + mfLogger.print(message); } public void debug(String message) { - MFLogger.getInstance().debug(message); + mfLogger.debug(message); } public void error(String message) { - MFLogger.getInstance().error(message); + mfLogger.error(message); } } \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/commands/config/ConfigCommand.java b/src/main/java/dansplugins/minifactions/commands/config/ConfigCommand.java index d87ef89..a1549b3 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/ConfigCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/ConfigCommand.java @@ -1,10 +1,9 @@ package dansplugins.minifactions.commands.config; +import dansplugins.minifactions.services.ConfigService; import preponderous.ponder.minecraft.bukkit.abs.AbstractPluginCommand; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.services.LocalConfigService; - import java.util.ArrayList; import java.util.Arrays; @@ -13,9 +12,11 @@ * @since April 15th, 2022 */ public class ConfigCommand extends AbstractPluginCommand { + private final ConfigService configService; - public ConfigCommand() { + public ConfigCommand(ConfigService configService) { super(new ArrayList<>(Arrays.asList("config")), new ArrayList<>(Arrays.asList("mf.config"))); + this.configService = configService; } @Override @@ -26,7 +27,7 @@ public boolean execute(CommandSender sender) { public boolean execute(CommandSender sender, String[] args) { if (args[0].equalsIgnoreCase("show")) { - LocalConfigService.getInstance().sendConfigList(sender); + configService.sendConfigList(sender); return true; } else if (args[0].equalsIgnoreCase("set")) { @@ -36,7 +37,7 @@ else if (args[0].equalsIgnoreCase("set")) { } String option = args[1]; String value = args[2]; - LocalConfigService.getInstance().setConfigOption(option, value, sender); + configService.setConfigOption(option, value, sender); return true; } else { diff --git a/src/main/java/dansplugins/minifactions/commands/config/ForceCommand.java b/src/main/java/dansplugins/minifactions/commands/config/ForceCommand.java index b4252cb..9295b28 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/ForceCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/ForceCommand.java @@ -1,5 +1,9 @@ package dansplugins.minifactions.commands.config; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.factories.TerritoryChunkFactory; +import dansplugins.minifactions.utils.MFLogger; import preponderous.ponder.minecraft.bukkit.abs.AbstractPluginCommand; import preponderous.ponder.minecraft.bukkit.services.CommandService; @@ -23,10 +27,19 @@ * @since April 15th, 2022 */ public class ForceCommand extends AbstractPluginCommand { + private final MFLogger mfLogger; + private final MiniFactions miniFactions; + private final PersistentData persistentData; + private final TerritoryChunkFactory territoryChunkFactory; + private CommandService commandService; - public ForceCommand() { + public ForceCommand(MFLogger mfLogger, MiniFactions miniFactions, PersistentData persistentData, TerritoryChunkFactory territoryChunkFactory) { super(new ArrayList<>(Arrays.asList("force")), new ArrayList<>(Arrays.asList("mf.force"))); + this.mfLogger = mfLogger; + this.miniFactions = miniFactions; + this.persistentData = persistentData; + this.territoryChunkFactory = territoryChunkFactory; initializeCommandService(); } @@ -51,13 +64,13 @@ public void initializeCommandService() { commandService = new CommandService(coreCommands); ArrayList commands = new ArrayList<>(); - commands.add(new ForceHelpCommand()); - commands.add(new ForceJoinCommand()); - commands.add(new ForceInviteCommand()); - commands.add(new ForceDisbandCommand()); - commands.add(new ForceKickCommand()); - commands.add(new ForceClaimCommand()); - commands.add(new ForceUnclaimCommand()); + commands.add(new ForceHelpCommand(mfLogger)); + commands.add(new ForceJoinCommand(mfLogger, miniFactions)); + commands.add(new ForceInviteCommand(mfLogger, miniFactions)); + commands.add(new ForceDisbandCommand(mfLogger, miniFactions)); + commands.add(new ForceKickCommand(mfLogger)); + commands.add(new ForceClaimCommand(mfLogger, miniFactions, persistentData, territoryChunkFactory)); + commands.add(new ForceUnclaimCommand(mfLogger, miniFactions, persistentData)); commandService.initialize(commands, "That command wasn't found."); } } diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java index c1ba75e..f4b9a77 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceClaimCommand.java @@ -3,23 +3,30 @@ import java.util.ArrayList; import java.util.Arrays; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.factories.TerritoryChunkFactory; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.Chunk; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; -import dansplugins.minifactions.factories.TerritoryChunkFactory; public class ForceClaimCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; + private final PersistentData persistentData; + private final TerritoryChunkFactory territoryChunkFactory; - public ForceClaimCommand() { - super(new ArrayList<>(Arrays.asList("claim")), new ArrayList<>(Arrays.asList("mf.force.claim"))); + public ForceClaimCommand(MFLogger mfLogger, MiniFactions miniFactions, PersistentData persistentData, TerritoryChunkFactory territoryChunkFactory) { + super(new ArrayList<>(Arrays.asList("claim")), new ArrayList<>(Arrays.asList("mf.force.claim")), mfLogger); + this.miniFactions = miniFactions; + this.persistentData = persistentData; + this.territoryChunkFactory = territoryChunkFactory; } @Override @@ -40,7 +47,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[0]; Faction faction; try { - faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); + faction = miniFactions.getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { sender.sendMessage("That faction wasn't found."); return false; @@ -50,8 +57,8 @@ public boolean execute(CommandSender sender, String[] args) { } Chunk chunk = player.getPlayer().getLocation().getChunk(); - if (PersistentData.getInstance().doesTerritoryChunkExist(chunk)) { - TerritoryChunk territoryChunk = PersistentData.getInstance().getTerritoryChunk(chunk); + if (persistentData.doesTerritoryChunkExist(chunk)) { + TerritoryChunk territoryChunk = persistentData.getTerritoryChunk(chunk); if (territoryChunk.isClaimed()) { player.sendMessage("This territory is already claimed by " + territoryChunk.getFaction().getName() + "."); return false; @@ -59,7 +66,7 @@ public boolean execute(CommandSender sender, String[] args) { territoryChunk.setFactionUUID(faction.getId()); } else { - TerritoryChunkFactory.getInstance().createTerritoryChunk(chunk, faction); + territoryChunkFactory.createTerritoryChunk(chunk, faction); } player.sendMessage("Claimed."); return true; diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java index 4954033..972af68 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceDisbandCommand.java @@ -3,17 +3,20 @@ import java.util.ArrayList; import java.util.Arrays; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; public class ForceDisbandCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public ForceDisbandCommand() { - super(new ArrayList<>(Arrays.asList("disband")), new ArrayList<>(Arrays.asList("mf.force.disband"))); + public ForceDisbandCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("disband")), new ArrayList<>(Arrays.asList("mf.force.disband")), mfLogger); + this.miniFactions = miniFactions; } @Override @@ -27,7 +30,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[0]; Faction faction; try { - faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); + faction = miniFactions.getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { sender.sendMessage("That faction wasn't found."); return false; @@ -38,7 +41,7 @@ public boolean execute(CommandSender sender, String[] args) { faction.sendMessage("The faction is forcefully getting disbanded."); - boolean success = MiniFactions.getInstance().getFactionHandler().removeFaction(faction); + boolean success = miniFactions.getFactionHandler().removeFaction(faction); if (success) { sender.sendMessage("That faction has been disbanded."); } diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceHelpCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceHelpCommand.java index ca2369b..8555c14 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceHelpCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceHelpCommand.java @@ -3,14 +3,15 @@ import java.util.ArrayList; import java.util.Arrays; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.commands.abs.AbstractMFCommand; public class ForceHelpCommand extends AbstractMFCommand { - public ForceHelpCommand() { - super(new ArrayList<>(Arrays.asList("help")), new ArrayList<>(Arrays.asList("mf.force.help"))); + public ForceHelpCommand(MFLogger mfLogger) { + super(new ArrayList<>(Arrays.asList("help")), new ArrayList<>(Arrays.asList("mf.force.help")), mfLogger); } @Override diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java index 71f580f..e789fb6 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceInviteCommand.java @@ -4,9 +4,10 @@ import java.util.Arrays; import java.util.UUID; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; @@ -14,9 +15,11 @@ import dansplugins.minifactions.objects.FactionPlayerImpl; public class ForceInviteCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public ForceInviteCommand() { - super(new ArrayList<>(Arrays.asList("invite")), new ArrayList<>(Arrays.asList("mf.force.invite"))); + public ForceInviteCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("invite")), new ArrayList<>(Arrays.asList("mf.force.invite")), mfLogger); + this.miniFactions = miniFactions; } @Override @@ -43,7 +46,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[1]; Faction faction; try { - faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); + faction = miniFactions.getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { factionPlayer.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java index 35db3cd..13aeedc 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceJoinCommand.java @@ -4,9 +4,10 @@ import java.util.Arrays; import java.util.UUID; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; @@ -14,9 +15,11 @@ import dansplugins.minifactions.objects.FactionPlayerImpl; public class ForceJoinCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public ForceJoinCommand() { - super(new ArrayList<>(Arrays.asList("join")), new ArrayList<>(Arrays.asList("mf.force.join"))); + public ForceJoinCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("join")), new ArrayList<>(Arrays.asList("mf.force.join")), mfLogger); + this.miniFactions = miniFactions; } @Override @@ -43,7 +46,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[1]; Faction faction; try { - faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); + faction = miniFactions.getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { factionPlayer.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceKickCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceKickCommand.java index 36e6ad3..71c6f54 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceKickCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceKickCommand.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.UUID; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.api.definitions.core.Faction; @@ -14,8 +15,8 @@ public class ForceKickCommand extends AbstractMFCommand { - public ForceKickCommand() { - super(new ArrayList<>(Arrays.asList("kick")), new ArrayList<>(Arrays.asList("mf.force.kick"))); + public ForceKickCommand(MFLogger mfLogger) { + super(new ArrayList<>(Arrays.asList("kick")), new ArrayList<>(Arrays.asList("mf.force.kick")), mfLogger); } @Override diff --git a/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java b/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java index 9de57c6..a6aff9d 100644 --- a/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/config/force/ForceUnclaimCommand.java @@ -3,22 +3,27 @@ import java.util.ArrayList; import java.util.Arrays; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.Chunk; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; public class ForceUnclaimCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; + private final PersistentData persistentData; - public ForceUnclaimCommand() { - super(new ArrayList<>(Arrays.asList("unclaim")), new ArrayList<>(Arrays.asList("mf.force.unclaim"))); + public ForceUnclaimCommand(MFLogger mfLogger, MiniFactions miniFactions, PersistentData persistentData) { + super(new ArrayList<>(Arrays.asList("unclaim")), new ArrayList<>(Arrays.asList("mf.force.unclaim")), mfLogger); + this.miniFactions = miniFactions; + this.persistentData = persistentData; } @Override @@ -39,7 +44,7 @@ public boolean execute(CommandSender sender, String[] args) { String factionName = args[0]; Faction faction; try { - faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); + faction = miniFactions.getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { sender.sendMessage("That faction wasn't found."); return false; @@ -49,12 +54,12 @@ public boolean execute(CommandSender sender, String[] args) { } Chunk chunk = player.getPlayer().getLocation().getChunk(); - if (!PersistentData.getInstance().doesTerritoryChunkExist(chunk)) { + if (!persistentData.doesTerritoryChunkExist(chunk)) { player.sendMessage("This territory has never been claimed."); return false; } - TerritoryChunk territoryChunk = PersistentData.getInstance().getTerritoryChunk(chunk); + TerritoryChunk territoryChunk = persistentData.getTerritoryChunk(chunk); if (!territoryChunk.isClaimed()) { player.sendMessage("This territory is not claimed by " + territoryChunk.getFaction().getName() + "."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/social/CreateCommand.java b/src/main/java/dansplugins/minifactions/commands/social/CreateCommand.java index 724d38f..c9071a2 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/CreateCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/CreateCommand.java @@ -1,12 +1,13 @@ package dansplugins.minifactions.commands.social; +import dansplugins.minifactions.factories.FactionFactory; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.factories.FactionFactory; import java.util.ArrayList; import java.util.Arrays; @@ -16,9 +17,11 @@ * @since April 13th, 2022 */ public class CreateCommand extends AbstractMFCommand { + private final FactionFactory factionFactory; - public CreateCommand() { - super(new ArrayList<>(Arrays.asList("create")), new ArrayList<>(Arrays.asList("mf.create"))); + public CreateCommand(MFLogger mfLogger, FactionFactory factionFactory) { + super(new ArrayList<>(Arrays.asList("create")), new ArrayList<>(Arrays.asList("mf.create")), mfLogger); + this.factionFactory = factionFactory; } @Override @@ -44,7 +47,7 @@ public boolean execute(CommandSender commandSender, String[] args) { String name = args[0]; - boolean success = FactionFactory.getInstance().createFaction(name, player.getId()); + boolean success = factionFactory.createFaction(name, player.getId()); if (success) { commandSender.sendMessage("Faction created."); } diff --git a/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java b/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java index 7b4475f..ad119a1 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/DisbandCommand.java @@ -3,9 +3,10 @@ import java.util.ArrayList; import java.util.Arrays; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; @@ -17,9 +18,11 @@ * @since April 13th, 2022 */ public class DisbandCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public DisbandCommand() { - super(new ArrayList<>(Arrays.asList("disband")), new ArrayList<>(Arrays.asList("mf.disband"))); + public DisbandCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("disband")), new ArrayList<>(Arrays.asList("mf.disband")), mfLogger); + this.miniFactions = miniFactions; } @Override @@ -41,7 +44,7 @@ public boolean execute(CommandSender commandSender) { faction.sendMessage(player.getName() + " is disbanding the faction."); - boolean success = MiniFactions.getInstance().getFactionHandler().removeFaction(faction); + boolean success = miniFactions.getFactionHandler().removeFaction(faction); if (success) { player.sendMessage("Your faction has been disbanded."); } diff --git a/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java b/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java index 42f2942..aa2759d 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/InfoCommand.java @@ -3,9 +3,10 @@ import java.util.ArrayList; import java.util.Arrays; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; @@ -17,9 +18,11 @@ * @since April 13th, 2022 */ public class InfoCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public InfoCommand() { - super(new ArrayList<>(Arrays.asList("info")), new ArrayList<>(Arrays.asList("mf.info"))); + public InfoCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("info")), new ArrayList<>(Arrays.asList("mf.info")), mfLogger); + this.miniFactions = miniFactions; } @Override @@ -55,7 +58,7 @@ public boolean execute(CommandSender commandSender, String[] args) { String factionName = args[1]; Faction faction; try { - faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); + faction = miniFactions.getFactionHandler().getFaction(factionName); } catch (FactionNotFoundException e) { player.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/social/InviteCommand.java b/src/main/java/dansplugins/minifactions/commands/social/InviteCommand.java index bc17cdd..a4e4a3e 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/InviteCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/InviteCommand.java @@ -1,5 +1,6 @@ package dansplugins.minifactions.commands.social; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.api.definitions.core.Faction; @@ -18,8 +19,8 @@ */ public class InviteCommand extends AbstractMFCommand { - public InviteCommand() { - super(new ArrayList<>(Arrays.asList("invite")), new ArrayList<>(Arrays.asList("mf.invite"))); + public InviteCommand(MFLogger mfLogger) { + super(new ArrayList<>(Arrays.asList("invite")), new ArrayList<>(Arrays.asList("mf.invite")), mfLogger); } @Override diff --git a/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java b/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java index 254fa98..8ab13a1 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/JoinCommand.java @@ -1,8 +1,9 @@ package dansplugins.minifactions.commands.social; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; @@ -16,9 +17,11 @@ * @author Daniel McCoy Stephenson */ public class JoinCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public JoinCommand() { - super(new ArrayList<>(Arrays.asList("join")), new ArrayList<>(Arrays.asList("mf.join"))); + public JoinCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("join")), new ArrayList<>(Arrays.asList("mf.join")), mfLogger); + this.miniFactions = miniFactions; } @Override @@ -46,7 +49,7 @@ public boolean execute(CommandSender commandSender, String[] args) { Faction faction; try { - faction = MiniFactions.getInstance().getFactionHandler().getFaction(factionName); + faction = miniFactions.getFactionHandler().getFaction(factionName); } catch (Exception e) { player.sendMessage("That faction wasn't found."); return false; diff --git a/src/main/java/dansplugins/minifactions/commands/social/KickCommand.java b/src/main/java/dansplugins/minifactions/commands/social/KickCommand.java index 66e7e5c..6e1c069 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/KickCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/KickCommand.java @@ -1,5 +1,6 @@ package dansplugins.minifactions.commands.social; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.api.definitions.core.Faction; @@ -18,8 +19,8 @@ */ public class KickCommand extends AbstractMFCommand { - public KickCommand() { - super(new ArrayList<>(Arrays.asList("kick")), new ArrayList<>(Arrays.asList("mf.kick"))); + public KickCommand(MFLogger mfLogger) { + super(new ArrayList<>(Arrays.asList("kick")), new ArrayList<>(Arrays.asList("mf.kick")), mfLogger); } @Override diff --git a/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java b/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java index 70c48cf..e819a43 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/LeaveCommand.java @@ -1,8 +1,9 @@ package dansplugins.minifactions.commands.social; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; @@ -17,9 +18,11 @@ * @since April 14th, 2022 */ public class LeaveCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public LeaveCommand() { - super(new ArrayList<>(Arrays.asList("leave")), new ArrayList<>(Arrays.asList("mf.leave"))); + public LeaveCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("leave")), new ArrayList<>(Arrays.asList("mf.leave")), mfLogger); + this.miniFactions = miniFactions; } @Override @@ -46,7 +49,7 @@ public boolean execute(CommandSender commandSender) { return false; } else { - MiniFactions.getInstance().getFactionHandler().removeFaction(faction); + miniFactions.getFactionHandler().removeFaction(faction); player.sendMessage("Your faction has been disbanded since you were the only member."); return true; } diff --git a/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java b/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java index 14d0764..5f3771a 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/ListCommand.java @@ -1,8 +1,9 @@ package dansplugins.minifactions.commands.social; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.commands.abs.AbstractMFCommand; import java.util.ArrayList; @@ -12,14 +13,16 @@ * @author Daniel McCoy Stephenson */ public class ListCommand extends AbstractMFCommand { + private final MiniFactions miniFactions; - public ListCommand() { - super(new ArrayList<>(Arrays.asList("list")), new ArrayList<>(Arrays.asList("mf.list"))); + public ListCommand(MFLogger mfLogger, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("list")), new ArrayList<>(Arrays.asList("mf.list")), mfLogger); + this.miniFactions = miniFactions; } @Override public boolean execute(CommandSender commandSender) { - commandSender.sendMessage(MiniFactions.getInstance().getFactionHandler().getFactionList()); + commandSender.sendMessage(miniFactions.getFactionHandler().getFactionList()); return true; } diff --git a/src/main/java/dansplugins/minifactions/commands/social/TransferCommand.java b/src/main/java/dansplugins/minifactions/commands/social/TransferCommand.java index 15a7cc3..6167946 100644 --- a/src/main/java/dansplugins/minifactions/commands/social/TransferCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/social/TransferCommand.java @@ -1,5 +1,6 @@ package dansplugins.minifactions.commands.social; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.api.definitions.core.Faction; @@ -18,8 +19,8 @@ */ public class TransferCommand extends AbstractMFCommand { - public TransferCommand() { - super(new ArrayList<>(Arrays.asList("transfer")), new ArrayList<>(Arrays.asList("mf.transfer"))); + public TransferCommand(MFLogger mfLogger) { + super(new ArrayList<>(Arrays.asList("transfer")), new ArrayList<>(Arrays.asList("mf.transfer")), mfLogger); } @Override diff --git a/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java b/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java index 9b810fd..8bba225 100644 --- a/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/territory/CheckClaimCommand.java @@ -1,16 +1,17 @@ package dansplugins.minifactions.commands.territory; +import dansplugins.minifactions.MiniFactions; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.Chunk; import org.bukkit.command.CommandSender; -import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.definitions.core.TerritoryChunk; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.api.exceptions.TerritoryChunkNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; import java.util.ArrayList; import java.util.Arrays; @@ -20,9 +21,13 @@ * @author Daniel McCoy Stephenson */ public class CheckClaimCommand extends AbstractMFCommand { + private final PersistentData persistentData; + private final MiniFactions miniFactions; - public CheckClaimCommand() { - super(new ArrayList<>(Arrays.asList("checkclaim", "cc")), new ArrayList<>(Arrays.asList("mf.checkclaim"))); + public CheckClaimCommand(MFLogger mfLogger, PersistentData persistentData, MiniFactions miniFactions) { + super(new ArrayList<>(Arrays.asList("checkclaim", "cc")), new ArrayList<>(Arrays.asList("mf.checkclaim")), mfLogger); + this.persistentData = persistentData; + this.miniFactions = miniFactions; } @Override @@ -38,7 +43,7 @@ public boolean execute(CommandSender commandSender) { TerritoryChunk territoryChunk; try { - territoryChunk = PersistentData.getInstance().getTerritoryChunk(chunk); + territoryChunk = persistentData.getTerritoryChunk(chunk); } catch(TerritoryChunkNotFoundException e) { player.sendMessage("This territory has never been claimed."); return true; @@ -52,7 +57,7 @@ public boolean execute(CommandSender commandSender) { UUID landholderUUID = territoryChunk.getFactionUUID(); Faction landholder; try { - landholder = MiniFactions.getInstance().getFactionHandler().getFaction(landholderUUID); + landholder = miniFactions.getFactionHandler().getFaction(landholderUUID); } catch (Exception e) { // this shouldn't happen return false; diff --git a/src/main/java/dansplugins/minifactions/commands/territory/ClaimCommand.java b/src/main/java/dansplugins/minifactions/commands/territory/ClaimCommand.java index cdf37a9..8b623c2 100644 --- a/src/main/java/dansplugins/minifactions/commands/territory/ClaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/territory/ClaimCommand.java @@ -1,5 +1,9 @@ package dansplugins.minifactions.commands.territory; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.factories.TerritoryChunkFactory; +import dansplugins.minifactions.services.ConfigService; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.Chunk; import org.bukkit.command.CommandSender; @@ -11,9 +15,6 @@ import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.api.exceptions.TerritoryChunkNotClaimedException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; -import dansplugins.minifactions.factories.TerritoryChunkFactory; -import dansplugins.minifactions.services.LocalConfigService; import java.util.ArrayList; import java.util.Arrays; @@ -22,9 +23,15 @@ * @author Daniel McCoy Stephenson */ public class ClaimCommand extends AbstractMFCommand { + private final PersistentData persistentData; + private final ConfigService configService; + private final TerritoryChunkFactory territoryChunkFactory; - public ClaimCommand() { - super(new ArrayList<>(Arrays.asList("claim")), new ArrayList<>(Arrays.asList("mf.claim"))); + public ClaimCommand(MFLogger mfLogger, PersistentData persistentData, ConfigService configService, TerritoryChunkFactory territoryChunkFactory) { + super(new ArrayList<>(Arrays.asList("claim")), new ArrayList<>(Arrays.asList("mf.claim")), mfLogger); + this.persistentData = persistentData; + this.configService = configService; + this.territoryChunkFactory = territoryChunkFactory; } @Override @@ -50,13 +57,13 @@ public boolean execute(CommandSender commandSender) { } Chunk chunk = player.getPlayer().getLocation().getChunk(); - if (PersistentData.getInstance().doesTerritoryChunkExist(chunk)) { - TerritoryChunk territoryChunk = PersistentData.getInstance().getTerritoryChunk(chunk); + if (persistentData.doesTerritoryChunkExist(chunk)) { + TerritoryChunk territoryChunk = persistentData.getTerritoryChunk(chunk); if (territoryChunk.isClaimed()) { sendPlayerOwnerInfo(territoryChunk, player, faction); return false; } - if (LocalConfigService.getInstance().getBoolean("territoryCostsPower")) { + if (configService.getBoolean("territoryCostsPower")) { boolean success = handlePowerCost(player); if (!success) { return false; @@ -65,13 +72,13 @@ public boolean execute(CommandSender commandSender) { territoryChunk.setFactionUUID(faction.getId()); } else { - if (LocalConfigService.getInstance().getBoolean("territoryCostsPower")) { // TODO: fix duplication here + if (configService.getBoolean("territoryCostsPower")) { // TODO: fix duplication here boolean success = handlePowerCost(player); if (!success) { return false; } } - TerritoryChunkFactory.getInstance().createTerritoryChunk(chunk, faction); + territoryChunkFactory.createTerritoryChunk(chunk, faction); } player.sendMessage("Claimed."); return true; @@ -84,7 +91,7 @@ public boolean execute(CommandSender commandSender, String[] strings) { private boolean handlePowerCost(FactionPlayer player) { double powerCost = getPowerCost(player); - PowerRecord powerRecord = PersistentData.getInstance().getPowerRecord(player.getId()); + PowerRecord powerRecord = persistentData.getPowerRecord(player.getId()); if (powerRecord.hasEnoughPower(powerCost)) { powerRecord.removePower(powerCost); player.sendMessage("You have lost " + powerCost + " power."); @@ -102,9 +109,9 @@ private boolean handlePowerCost(FactionPlayer player) { * @return */ private double getPowerCost(FactionPlayer player) { - double minimum = LocalConfigService.getInstance().getDouble("minimumPowerCost"); + double minimum = configService.getDouble("minimumPowerCost"); int numTerritoryChunks = player.getFaction().getNumTerritoryChunks(); - double chunkRequirementFactor = LocalConfigService.getInstance().getDouble("chunkRequirementFactor"); + double chunkRequirementFactor = configService.getDouble("chunkRequirementFactor"); double cost = numTerritoryChunks * chunkRequirementFactor; if (cost < minimum) { cost = minimum; diff --git a/src/main/java/dansplugins/minifactions/commands/territory/PowerCommand.java b/src/main/java/dansplugins/minifactions/commands/territory/PowerCommand.java index 665630b..aa35686 100644 --- a/src/main/java/dansplugins/minifactions/commands/territory/PowerCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/territory/PowerCommand.java @@ -1,12 +1,13 @@ package dansplugins.minifactions.commands.territory; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.command.CommandSender; import dansplugins.minifactions.api.definitions.PowerRecord; import dansplugins.minifactions.api.definitions.core.FactionPlayer; import dansplugins.minifactions.api.exceptions.CommandSenderNotPlayerException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; import java.util.ArrayList; import java.util.Arrays; @@ -16,9 +17,11 @@ * @author Daniel McCoy Stephenson */ public class PowerCommand extends AbstractMFCommand { + private final PersistentData persistentData; - public PowerCommand() { - super(new ArrayList<>(Arrays.asList("power")), new ArrayList<>(Arrays.asList("mf.power"))); + public PowerCommand(MFLogger mfLogger, PersistentData persistentData) { + super(new ArrayList<>(Arrays.asList("power")), new ArrayList<>(Arrays.asList("mf.power")), mfLogger); + this.persistentData = persistentData; } @Override @@ -30,7 +33,7 @@ public boolean execute(CommandSender commandSender) { return false; } - PowerRecord powerRecord = PersistentData.getInstance().getPowerRecord(player.getId()); + PowerRecord powerRecord = persistentData.getPowerRecord(player.getId()); player.sendMessage("Your current power is " + powerRecord.getPower()); return true; } @@ -45,7 +48,7 @@ public boolean execute(CommandSender sender, String[] args) { return false; } - PowerRecord powerRecord = PersistentData.getInstance().getPowerRecord(targetUUID); + PowerRecord powerRecord = persistentData.getPowerRecord(targetUUID); sender.sendMessage("That player's current power is " + powerRecord.getPower()); return true; diff --git a/src/main/java/dansplugins/minifactions/commands/territory/UnclaimCommand.java b/src/main/java/dansplugins/minifactions/commands/territory/UnclaimCommand.java index 4afe667..db90b8c 100644 --- a/src/main/java/dansplugins/minifactions/commands/territory/UnclaimCommand.java +++ b/src/main/java/dansplugins/minifactions/commands/territory/UnclaimCommand.java @@ -1,5 +1,7 @@ package dansplugins.minifactions.commands.territory; +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.utils.MFLogger; import org.bukkit.Chunk; import org.bukkit.command.CommandSender; @@ -10,7 +12,7 @@ import dansplugins.minifactions.api.exceptions.FactionNotFoundException; import dansplugins.minifactions.api.exceptions.TerritoryChunkNotFoundException; import dansplugins.minifactions.commands.abs.AbstractMFCommand; -import dansplugins.minifactions.data.PersistentData; + import java.util.ArrayList; import java.util.Arrays; @@ -18,9 +20,11 @@ * @author Daniel McCoy Stephenson */ public class UnclaimCommand extends AbstractMFCommand { + private final PersistentData persistentData; - public UnclaimCommand() { - super(new ArrayList<>(Arrays.asList("unclaim")), new ArrayList<>(Arrays.asList("mf.unclaim"))); + public UnclaimCommand(MFLogger mfLogger, PersistentData persistentData) { + super(new ArrayList<>(Arrays.asList("unclaim")), new ArrayList<>(Arrays.asList("mf.unclaim")), mfLogger); + this.persistentData = persistentData; } @Override @@ -48,7 +52,7 @@ public boolean execute(CommandSender commandSender) { Chunk chunk = player.getPlayer().getLocation().getChunk(); TerritoryChunk territoryChunk; try { - territoryChunk = PersistentData.getInstance().getTerritoryChunk(chunk); + territoryChunk = persistentData.getTerritoryChunk(chunk); } catch(TerritoryChunkNotFoundException e) { player.sendMessage("This territory has never been claimed."); return false; diff --git a/src/main/java/dansplugins/minifactions/data/PersistentData.java b/src/main/java/dansplugins/minifactions/data/PersistentData.java index 37de8a0..4b37e13 100644 --- a/src/main/java/dansplugins/minifactions/data/PersistentData.java +++ b/src/main/java/dansplugins/minifactions/data/PersistentData.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.UUID; +import dansplugins.minifactions.services.ConfigService; import org.bukkit.Chunk; import dansplugins.minifactions.api.data.abs.PowerData; @@ -21,19 +22,13 @@ * @since April 13th, 2022 */ public class PersistentData implements PowerData, TerritoryData { - private static PersistentData instance; - private HashSet powerRecords = new HashSet<>(); - private HashSet territoryChunks = new HashSet<>(); + private final PowerRecordFactory powerRecordFactory; - private PersistentData() { + private final HashSet powerRecords = new HashSet<>(); + private final HashSet territoryChunks = new HashSet<>(); - } - - public static PersistentData getInstance() { - if (instance == null) { - instance = new PersistentData(); - } - return instance; + public PersistentData(ConfigService configService) { + powerRecordFactory = new PowerRecordFactory(configService, this); } @Override @@ -48,7 +43,7 @@ public PowerRecord getPowerRecord(UUID playerUUID) { return powerRecord; } } - PowerRecordFactory.getInstance().createPowerRecord(playerUUID); + powerRecordFactory.createPowerRecord(playerUUID); return getPowerRecord(playerUUID); } @@ -140,4 +135,8 @@ public void clearPowerRecords() { public void clearTerritoryChunks() { territoryChunks.clear(); } + + public PowerRecordFactory getPowerRecordFactory() { + return powerRecordFactory; + } } \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/eventhandlers/DeathHandler.java b/src/main/java/dansplugins/minifactions/eventhandlers/DeathHandler.java deleted file mode 100644 index 9fdc332..0000000 --- a/src/main/java/dansplugins/minifactions/eventhandlers/DeathHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package dansplugins.minifactions.eventhandlers; - -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.PlayerDeathEvent; - -import dansplugins.minifactions.api.definitions.PowerRecord; -import dansplugins.minifactions.data.PersistentData; -import dansplugins.minifactions.services.LocalConfigService; - -/** - * @author Daniel McCoy Stephenson - * @since April 15th, 2022 - */ -public class DeathHandler implements Listener { - - @EventHandler() - public void handle(PlayerDeathEvent event) { - if (LocalConfigService.getInstance().getBoolean("losePowerOnDeath")) { - double percentagePowerLostOnDeath = LocalConfigService.getInstance().getDouble("percentagePowerLostOnDeath"); - PowerRecord powerRecord = PersistentData.getInstance().getPowerRecord(event.getEntity().getUniqueId()); - double powerLost = powerRecord.getPower() * percentagePowerLostOnDeath; - powerRecord.removePower(powerLost); - event.getEntity().sendMessage("You have lost " + powerLost + " power."); - } - } -} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/eventhandlers/JoinHandler.java b/src/main/java/dansplugins/minifactions/eventhandlers/JoinHandler.java deleted file mode 100644 index 667ffab..0000000 --- a/src/main/java/dansplugins/minifactions/eventhandlers/JoinHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -package dansplugins.minifactions.eventhandlers; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -import dansplugins.minifactions.data.PersistentData; -import dansplugins.minifactions.factories.PowerRecordFactory; - -/** - * @author Daniel McCoy Stephenson - */ -public class JoinHandler implements Listener { - - @EventHandler() - public void handle(PlayerJoinEvent event) { - Player player = event.getPlayer(); - if (!PersistentData.getInstance().hasPowerRecord(player.getUniqueId())) { - PowerRecordFactory.getInstance().createPowerRecord(player.getUniqueId()); - } - } -} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/factories/FactionFactory.java b/src/main/java/dansplugins/minifactions/factories/FactionFactory.java index ddf217f..1a051a9 100644 --- a/src/main/java/dansplugins/minifactions/factories/FactionFactory.java +++ b/src/main/java/dansplugins/minifactions/factories/FactionFactory.java @@ -4,34 +4,30 @@ import dansplugins.minifactions.MiniFactions; import dansplugins.minifactions.api.definitions.core.Faction; +import dansplugins.minifactions.data.PersistentData; import dansplugins.minifactions.objects.FactionImpl; public class FactionFactory { - private static FactionFactory instance; + private final MiniFactions miniFactions; + private final PersistentData persistentData; - private FactionFactory() { - - } - - public static FactionFactory getInstance() { - if (instance == null) { - instance = new FactionFactory(); - } - return instance; + public FactionFactory(MiniFactions miniFactions, PersistentData persistentData) { + this.miniFactions = miniFactions; + this.persistentData = persistentData; } public boolean createFaction(String name, UUID creatorUUID) { if (isNameTaken(name)) { return false; } - Faction faction = new FactionImpl(name, creatorUUID); - MiniFactions.getInstance().getFactionHandler().addFaction(faction); + Faction faction = new FactionImpl(name, creatorUUID, persistentData); + miniFactions.getFactionHandler().addFaction(faction); return true; } private boolean isNameTaken(String name) { try { - MiniFactions.getInstance().getFactionHandler().getFaction(name); + miniFactions.getFactionHandler().getFaction(name); return true; } catch (Exception e) { return false; diff --git a/src/main/java/dansplugins/minifactions/factories/PowerRecordFactory.java b/src/main/java/dansplugins/minifactions/factories/PowerRecordFactory.java index bcab990..3fee66b 100644 --- a/src/main/java/dansplugins/minifactions/factories/PowerRecordFactory.java +++ b/src/main/java/dansplugins/minifactions/factories/PowerRecordFactory.java @@ -5,25 +5,20 @@ import dansplugins.minifactions.api.definitions.PowerRecord; import dansplugins.minifactions.data.PersistentData; import dansplugins.minifactions.objects.PowerRecordImpl; -import dansplugins.minifactions.services.LocalConfigService; +import dansplugins.minifactions.services.ConfigService; public class PowerRecordFactory { - private static PowerRecordFactory instance; + private final ConfigService configService; + private final PersistentData persistentData; - private PowerRecordFactory() { - - } - - public static PowerRecordFactory getInstance() { - if (instance == null) { - instance = new PowerRecordFactory(); - } - return instance; + public PowerRecordFactory(ConfigService configService, PersistentData persistentData) { + this.configService = configService; + this.persistentData = persistentData; } public boolean createPowerRecord(UUID playerUUID) { - double initialPower = LocalConfigService.getInstance().getDouble("initialPower"); + double initialPower = configService.getDouble("initialPower"); PowerRecord powerRecord = new PowerRecordImpl(playerUUID, initialPower); - return PersistentData.getInstance().addPowerRecord(powerRecord); + return persistentData.addPowerRecord(powerRecord); } } \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/factories/TerritoryChunkFactory.java b/src/main/java/dansplugins/minifactions/factories/TerritoryChunkFactory.java index 2abf928..fcc054a 100644 --- a/src/main/java/dansplugins/minifactions/factories/TerritoryChunkFactory.java +++ b/src/main/java/dansplugins/minifactions/factories/TerritoryChunkFactory.java @@ -8,22 +8,15 @@ import dansplugins.minifactions.objects.TerritoryChunkImpl; public class TerritoryChunkFactory { - private static TerritoryChunkFactory instance; + private final PersistentData persistentData; - private TerritoryChunkFactory() { - - } - - public static TerritoryChunkFactory getInstance() { - if (instance == null) { - instance = new TerritoryChunkFactory(); - } - return instance; + public TerritoryChunkFactory(PersistentData persistentData) { + this.persistentData = persistentData; } public boolean createTerritoryChunk(Chunk chunk, Faction faction) { TerritoryChunk territoryChunk = new TerritoryChunkImpl(chunk, faction.getId()); - boolean success = PersistentData.getInstance().addTerritoryChunk(territoryChunk); + boolean success = persistentData.addTerritoryChunk(territoryChunk); faction.claimChunk(territoryChunk); return success; } diff --git a/src/main/java/dansplugins/minifactions/listeners/DeathListener.java b/src/main/java/dansplugins/minifactions/listeners/DeathListener.java new file mode 100644 index 0000000..8be8d4a --- /dev/null +++ b/src/main/java/dansplugins/minifactions/listeners/DeathListener.java @@ -0,0 +1,34 @@ +package dansplugins.minifactions.listeners; + +import dansplugins.minifactions.data.PersistentData; +import dansplugins.minifactions.services.ConfigService; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; + +import dansplugins.minifactions.api.definitions.PowerRecord; + +/** + * @author Daniel McCoy Stephenson + * @since April 15th, 2022 + */ +public class DeathListener implements Listener { + private final ConfigService configService; + private final PersistentData persistentData; + + public DeathListener(ConfigService configService, PersistentData persistentData) { + this.configService = configService; + this.persistentData = persistentData; + } + + @EventHandler() + public void handle(PlayerDeathEvent event) { + if (configService.getBoolean("losePowerOnDeath")) { + double percentagePowerLostOnDeath = configService.getDouble("percentagePowerLostOnDeath"); + PowerRecord powerRecord = persistentData.getPowerRecord(event.getEntity().getUniqueId()); + double powerLost = powerRecord.getPower() * percentagePowerLostOnDeath; + powerRecord.removePower(powerLost); + event.getEntity().sendMessage("You have lost " + powerLost + " power."); + } + } +} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/listeners/JoinListener.java b/src/main/java/dansplugins/minifactions/listeners/JoinListener.java new file mode 100644 index 0000000..ae8927d --- /dev/null +++ b/src/main/java/dansplugins/minifactions/listeners/JoinListener.java @@ -0,0 +1,30 @@ +package dansplugins.minifactions.listeners; + +import dansplugins.minifactions.factories.PowerRecordFactory; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +import dansplugins.minifactions.data.PersistentData; + +/** + * @author Daniel McCoy Stephenson + */ +public class JoinListener implements Listener { + private final PersistentData persistentData; + private final PowerRecordFactory powerRecordFactory; + + public JoinListener(PersistentData persistentData, PowerRecordFactory powerRecordFactory) { + this.persistentData = persistentData; + this.powerRecordFactory = powerRecordFactory; + } + + @EventHandler() + public void handle(PlayerJoinEvent event) { + Player player = event.getPlayer(); + if (!persistentData.hasPowerRecord(player.getUniqueId())) { + powerRecordFactory.createPowerRecord(player.getUniqueId()); + } + } +} \ No newline at end of file diff --git a/src/main/java/dansplugins/minifactions/objects/FactionImpl.java b/src/main/java/dansplugins/minifactions/objects/FactionImpl.java index 1dde860..3c7a225 100644 --- a/src/main/java/dansplugins/minifactions/objects/FactionImpl.java +++ b/src/main/java/dansplugins/minifactions/objects/FactionImpl.java @@ -19,6 +19,8 @@ * @since April 13th, 2022 */ public class FactionImpl implements Faction { + private final PersistentData persistentData; + private UUID factionUUID; private String name; private UUID leaderUUID; @@ -26,14 +28,16 @@ public class FactionImpl implements Faction { private HashSet invitedPlayerUUIDs = new HashSet<>(); private HashSet territoryChunkUUIDs = new HashSet<>(); - public FactionImpl(String name, UUID leaderUUID) { + public FactionImpl(String name, UUID leaderUUID, PersistentData persistentData) { + this.persistentData = persistentData; setName(name); setLeader(leaderUUID); addMember(leaderUUID); this.factionUUID = UUID.randomUUID(); } - public FactionImpl(Map factionData) { + public FactionImpl(Map factionData, PersistentData persistentData) { + this.persistentData = persistentData; fromJSON(factionData); } @@ -125,7 +129,7 @@ public boolean unclaimChunk(@NotNull TerritoryChunk territoryChunk) { @Override public void unclaimAllChunks() { for (UUID territoryChunkUUID : territoryChunkUUIDs) { - TerritoryChunk territoryChunk = PersistentData.getInstance().getTerritoryChunk(territoryChunkUUID); + TerritoryChunk territoryChunk = persistentData.getTerritoryChunk(territoryChunkUUID); territoryChunk.setFactionUUID(null); } territoryChunkUUIDs.clear(); @@ -155,7 +159,7 @@ public int getNumMembers() { public double getPower() { double sum = 0; for (UUID memberUUID : memberUUIDs) { - PowerRecord powerRecord = PersistentData.getInstance().getPowerRecord(memberUUID); + PowerRecord powerRecord = persistentData.getPowerRecord(memberUUID); if (powerRecord.getId().equals(memberUUID)) { sum += powerRecord.getPower(); } diff --git a/src/main/java/dansplugins/minifactions/services/LocalConfigService.java b/src/main/java/dansplugins/minifactions/services/ConfigService.java similarity index 88% rename from src/main/java/dansplugins/minifactions/services/LocalConfigService.java rename to src/main/java/dansplugins/minifactions/services/ConfigService.java index b21c024..ebf824e 100644 --- a/src/main/java/dansplugins/minifactions/services/LocalConfigService.java +++ b/src/main/java/dansplugins/minifactions/services/ConfigService.java @@ -16,27 +16,21 @@ /** * @author Daniel McCoy Stephenson */ -public class LocalConfigService { - private static LocalConfigService instance; - private boolean altered = false; - - private LocalConfigService() { +public class ConfigService { + private final MiniFactions miniFactions; - } + private boolean altered = false; - public static LocalConfigService getInstance() { - if (instance == null) { - instance = new LocalConfigService(); - } - return instance; + public ConfigService(MiniFactions miniFactions) { + this.miniFactions = miniFactions; } public void saveMissingConfigDefaultsIfNotPresent() { // set version if (!getConfig().isString("version")) { - getConfig().addDefault("version", MiniFactions.getInstance().getVersion()); + getConfig().addDefault("version", miniFactions.getVersion()); } else { - getConfig().set("version", MiniFactions.getInstance().getVersion()); + getConfig().set("version", miniFactions.getVersion()); } // save config options @@ -49,7 +43,7 @@ public void saveMissingConfigDefaultsIfNotPresent() { if (!isSet("chunkRequirementFactor")) { getConfig().set("chunkRequirementFactor", 0.10); } getConfig().options().copyDefaults(true); - MiniFactions.getInstance().saveConfig(); + miniFactions.saveConfig(); } public void setConfigOption(String option, String value, CommandSender sender) { @@ -77,7 +71,7 @@ public void setConfigOption(String option, String value, CommandSender sender) { } // save - MiniFactions.getInstance().saveConfig(); + miniFactions.saveConfig(); altered = true; } else { sender.sendMessage(ChatColor.RED + "That config option wasn't found."); @@ -102,7 +96,7 @@ public boolean hasBeenAltered() { } public FileConfiguration getConfig() { - return MiniFactions.getInstance().getConfig(); + return miniFactions.getConfig(); } public boolean isSet(String option) { diff --git a/src/main/java/dansplugins/minifactions/utils/MFLogger.java b/src/main/java/dansplugins/minifactions/utils/MFLogger.java index 30367a6..5e4ad69 100644 --- a/src/main/java/dansplugins/minifactions/utils/MFLogger.java +++ b/src/main/java/dansplugins/minifactions/utils/MFLogger.java @@ -10,18 +10,13 @@ * @since April 17th, 2022 */ public class MFLogger { - private static MFLogger instance; - private static Logger logger = MiniFactions.getInstance().getLogger(); + private final MiniFactions miniFactions; - private MFLogger() { - - } + private static Logger logger; - public static MFLogger getInstance() { - if (instance == null) { - instance = new MFLogger(); - } - return instance; + public MFLogger(MiniFactions miniFactions) { + this.miniFactions = miniFactions; + logger = miniFactions.getLogger(); } public void print(String message) { @@ -29,7 +24,7 @@ public void print(String message) { } public void debug(String message) { - if (MiniFactions.getInstance().isDebugEnabled()) { + if (miniFactions.isDebugEnabled()) { logger.info("[MF] [DEBUG]" + message); } }