Skip to content
This repository has been archived by the owner on Jan 21, 2024. It is now read-only.

Persistence + No More Singleton #44

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 65 additions & 38 deletions src/main/java/dansplugins/minifactions/MiniFactions.java
Original file line number Diff line number Diff line change
@@ -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.bstats.Metrics;
import dansplugins.minifactions.commands.DefaultCommand;
Expand All @@ -20,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;
Expand All @@ -41,32 +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();
territoryHandler = new TerritoryHandler();
api = new MiniFactionsAPI(this, persistentData);
factionHandler = new FactionHandler(this);
powerRecordHandler = new PowerRecordHandler(this);
territoryHandler = new TerritoryHandler(this);
handlebStatsIntegration();
}

Expand All @@ -75,7 +82,9 @@ public void onEnable() {
*/
@Override
public void onDisable() {

factionHandler.save();
powerRecordHandler.save();
territoryHandler.save();
}

/**
Expand All @@ -89,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);
}

Expand Down Expand Up @@ -122,7 +131,7 @@ public boolean isVersionMismatched() {
* @return Whether debug is enabled.
*/
public boolean isDebugEnabled() {
return LocalConfigService.getInstance().getBoolean("debugMode");
return configService.getBoolean("debugMode");
}

/**
Expand All @@ -134,6 +143,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.
*
Expand All @@ -148,7 +175,7 @@ private void initializeConfig() {
performCompatibilityChecks();
}
else {
LocalConfigService.getInstance().saveMissingConfigDefaultsIfNotPresent();
configService.saveMissingConfigDefaultsIfNotPresent();
}
}

Expand All @@ -158,7 +185,7 @@ private boolean configFileExists() {

private void performCompatibilityChecks() {
if (isVersionMismatched()) {
LocalConfigService.getInstance().saveMissingConfigDefaultsIfNotPresent();
configService.saveMissingConfigDefaultsIfNotPresent();
}
reloadConfig();
}
Expand All @@ -169,8 +196,8 @@ private void performCompatibilityChecks() {
private void registerEventHandlers() {
EventHandlerRegistry eventHandlerRegistry = new EventHandlerRegistry();
ArrayList<Listener> listeners = new ArrayList<>(Arrays.asList(
new JoinHandler(),
new DeathHandler()
new JoinListener(persistentData, persistentData.getPowerRecordFactory()),
new DeathListener(configService, persistentData)
));
eventHandlerRegistry.registerEventHandlers(listeners, this);
}
Expand All @@ -181,22 +208,22 @@ private void registerEventHandlers() {
*/
private void initializeCommandService() {
ArrayList<AbstractPluginCommand> 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.");
}

Expand Down
16 changes: 12 additions & 4 deletions src/main/java/dansplugins/minifactions/api/MiniFactionsAPI.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
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;
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;
Expand All @@ -19,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 PersistentData.getInstance().getFactionByPlayer(factionPlayer);
return miniFactions.getFactionHandler().getFactionByPlayer(factionPlayer);
}

public Faction getFactionByChunk(TerritoryChunk territoryChunk) throws Exception {
return PersistentData.getInstance().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")
Expand Down
Loading