diff --git a/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java b/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java index 6a3a376..c5b23de 100644 --- a/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java +++ b/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java @@ -37,12 +37,6 @@ import java.util.logging.Level; public class MobArenaStatsPlugin extends JavaPlugin implements MobArenaStats { - // The sad state of affairs is that MobArena's command framework has no - // support for registering commands by instance, but only by class, which - // means that we can't properly inject dependencies and have to resort to - // the Singleton Pattern. - private static MobArenaStats instance; - private StatsStoreRegistry statsStoreRegistry; private Executor syncExecutor; @@ -78,8 +72,6 @@ public class MobArenaStatsPlugin extends JavaPlugin implements MobArenaStats { private void setup() { try { - instance = this; - createDataFolder(); createConfigFile(); setupExecutors(); @@ -128,14 +120,14 @@ public class MobArenaStatsPlugin extends JavaPlugin implements MobArenaStats { CommandHandler handler = (CommandHandler) command.getExecutor(); // User commands - handler.register(ArenaStatsCommand.class); - handler.register(GlobalStatsCommand.class); - handler.register(PlayerStatsCommand.class); + handler.register(new ArenaStatsCommand(this)); + handler.register(new GlobalStatsCommand(this)); + handler.register(new PlayerStatsCommand(this)); // Admin commands - handler.register(DeleteSessionStatsCommand.class); - handler.register(ExportCommand.class); - handler.register(ImportCommand.class); + handler.register(new DeleteSessionStatsCommand(this)); + handler.register(new ExportCommand(this)); + handler.register(new ImportCommand(this)); } private void setupMetrics() { @@ -207,8 +199,4 @@ public class MobArenaStatsPlugin extends JavaPlugin implements MobArenaStats { return statsStore; } - public static MobArenaStats getInstance() { - return instance; - } - } diff --git a/src/main/java/org/mobarena/stats/command/ArenaStatsCommand.java b/src/main/java/org/mobarena/stats/command/ArenaStatsCommand.java index 43b0061..048f97e 100644 --- a/src/main/java/org/mobarena/stats/command/ArenaStatsCommand.java +++ b/src/main/java/org/mobarena/stats/command/ArenaStatsCommand.java @@ -8,7 +8,6 @@ import com.garbagemule.MobArena.util.Slugs; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.mobarena.stats.MobArenaStats; -import org.mobarena.stats.MobArenaStatsPlugin; import org.mobarena.stats.store.ArenaStats; import org.mobarena.stats.store.StatsStore; @@ -29,11 +28,14 @@ import static org.bukkit.ChatColor.YELLOW; ) public class ArenaStatsCommand implements Command { + private final MobArenaStats plugin; + + public ArenaStatsCommand(MobArenaStats plugin) { + this.plugin = plugin; + } + @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // :( - MobArenaStats plugin = MobArenaStatsPlugin.getInstance(); - if (args.length < 1) { return false; } diff --git a/src/main/java/org/mobarena/stats/command/DeleteSessionStatsCommand.java b/src/main/java/org/mobarena/stats/command/DeleteSessionStatsCommand.java index 9a5b282..a816a25 100644 --- a/src/main/java/org/mobarena/stats/command/DeleteSessionStatsCommand.java +++ b/src/main/java/org/mobarena/stats/command/DeleteSessionStatsCommand.java @@ -8,7 +8,6 @@ import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.mobarena.stats.MobArenaStats; -import org.mobarena.stats.MobArenaStatsPlugin; import org.mobarena.stats.store.StatsStore; import java.util.List; @@ -23,11 +22,14 @@ import java.util.UUID; ) public class DeleteSessionStatsCommand implements Command { + private final MobArenaStats plugin; + + public DeleteSessionStatsCommand(MobArenaStats plugin) { + this.plugin = plugin; + } + @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // :( - MobArenaStats plugin = MobArenaStatsPlugin.getInstance(); - // TODO: check args, handle non-UUID input error UUID sessionId = UUID.fromString(args[0]); diff --git a/src/main/java/org/mobarena/stats/command/ExportCommand.java b/src/main/java/org/mobarena/stats/command/ExportCommand.java index 8e54ecd..b3274fe 100644 --- a/src/main/java/org/mobarena/stats/command/ExportCommand.java +++ b/src/main/java/org/mobarena/stats/command/ExportCommand.java @@ -7,7 +7,6 @@ import com.garbagemule.MobArena.framework.ArenaMaster; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.mobarena.stats.MobArenaStats; -import org.mobarena.stats.MobArenaStatsPlugin; import org.mobarena.stats.store.StatsExport; import org.mobarena.stats.store.StatsStore; import org.mobarena.stats.store.StatsStoreRegistry; @@ -21,11 +20,14 @@ import org.mobarena.stats.store.StatsStoreRegistry; ) public class ExportCommand implements Command { + private final MobArenaStats plugin; + + public ExportCommand(MobArenaStats plugin) { + this.plugin = plugin; + } + @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // :( - MobArenaStats plugin = MobArenaStatsPlugin.getInstance(); - StatsStore store = plugin.getStatsStore(); StatsStoreRegistry registry = plugin.getStatsStoreRegistry(); diff --git a/src/main/java/org/mobarena/stats/command/GlobalStatsCommand.java b/src/main/java/org/mobarena/stats/command/GlobalStatsCommand.java index fa9ff9f..8f65e0e 100644 --- a/src/main/java/org/mobarena/stats/command/GlobalStatsCommand.java +++ b/src/main/java/org/mobarena/stats/command/GlobalStatsCommand.java @@ -6,7 +6,6 @@ import com.garbagemule.MobArena.commands.CommandInfo; import com.garbagemule.MobArena.framework.ArenaMaster; import org.bukkit.command.CommandSender; import org.mobarena.stats.MobArenaStats; -import org.mobarena.stats.MobArenaStatsPlugin; import org.mobarena.stats.store.GlobalStats; import org.mobarena.stats.store.StatsStore; @@ -27,11 +26,14 @@ import static org.bukkit.ChatColor.YELLOW; ) public class GlobalStatsCommand implements Command { + private final MobArenaStats plugin; + + public GlobalStatsCommand(MobArenaStats plugin) { + this.plugin = plugin; + } + @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // :( - MobArenaStats plugin = MobArenaStatsPlugin.getInstance(); - Messenger messenger = am.getGlobalMessenger(); plugin.getAsyncExecutor().execute(() -> { StatsStore store = plugin.getStatsStore(); diff --git a/src/main/java/org/mobarena/stats/command/ImportCommand.java b/src/main/java/org/mobarena/stats/command/ImportCommand.java index ba973a4..4f72d1d 100644 --- a/src/main/java/org/mobarena/stats/command/ImportCommand.java +++ b/src/main/java/org/mobarena/stats/command/ImportCommand.java @@ -8,7 +8,6 @@ import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.mobarena.stats.MobArenaStats; -import org.mobarena.stats.MobArenaStatsPlugin; import org.mobarena.stats.store.StatsExport; import org.mobarena.stats.store.StatsImport; import org.mobarena.stats.store.StatsStore; @@ -30,15 +29,18 @@ import java.util.stream.Collectors; ) public class ImportCommand implements Command { + private final MobArenaStats plugin; + + public ImportCommand(MobArenaStats plugin) { + this.plugin = plugin; + } + @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (args.length < 1) { return false; } - // :( - MobArenaStats plugin = MobArenaStatsPlugin.getInstance(); - Path data = plugin.getDataFolder().toPath(); Path file = data.resolve(args[0]); if (!Files.exists(file)) { @@ -110,9 +112,6 @@ public class ImportCommand implements Command { return Collections.emptyList(); } - // :( - MobArenaStats plugin = MobArenaStatsPlugin.getInstance(); - String[] files = plugin.getDataFolder().list(); if (files == null || files.length == 0) { return Collections.emptyList(); diff --git a/src/main/java/org/mobarena/stats/command/PlayerStatsCommand.java b/src/main/java/org/mobarena/stats/command/PlayerStatsCommand.java index 445a25f..8a37967 100644 --- a/src/main/java/org/mobarena/stats/command/PlayerStatsCommand.java +++ b/src/main/java/org/mobarena/stats/command/PlayerStatsCommand.java @@ -7,7 +7,6 @@ import com.garbagemule.MobArena.framework.ArenaMaster; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.mobarena.stats.MobArenaStats; -import org.mobarena.stats.MobArenaStatsPlugin; import org.mobarena.stats.store.PlayerStats; import org.mobarena.stats.store.StatsStore; @@ -28,11 +27,14 @@ import static org.bukkit.ChatColor.YELLOW; ) public class PlayerStatsCommand implements Command { + private final MobArenaStats plugin; + + public PlayerStatsCommand(MobArenaStats plugin) { + this.plugin = plugin; + } + @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // :( - MobArenaStats plugin = MobArenaStatsPlugin.getInstance(); - String name; if (args.length == 0) { if (!(sender instanceof Player)) {