summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/bungeeBans/Main.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/redstoner/bungeeBans/Main.java')
-rw-r--r--src/main/java/com/redstoner/bungeeBans/Main.java91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/bungeeBans/Main.java b/src/main/java/com/redstoner/bungeeBans/Main.java
new file mode 100644
index 0000000..3b847e4
--- /dev/null
+++ b/src/main/java/com/redstoner/bungeeBans/Main.java
@@ -0,0 +1,91 @@
+package com.redstoner.bungeeBans;
+
+import com.redstoner.bungeeBans.commands.BanCommand;
+import com.redstoner.bungeeBans.commands.GetBanCommand;
+import com.redstoner.bungeeBans.commands.UnbanCommand;
+import com.redstoner.bungeeBans.json.PlayerBan;
+import net.md_5.bungee.api.plugin.Plugin;
+import net.md_5.bungee.api.plugin.PluginManager;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+public class Main extends Plugin {
+ private File bansFile = new File("banned-players.json");
+
+ private BanManager<PlayerBan> playerBanManager = new BanManager<>(bansFile, PlayerBan.class);
+
+ private boolean shouldSave = true;
+
+ @Override
+ public void onEnable() {
+ try {
+ getLogger().info("Loading bans...");
+
+ playerBanManager.loadBans();
+
+ getLogger().info("Loaded bans!");
+ } catch (FileNotFoundException e) {
+ getLogger().warning("Bans file does not exist! Creating!");
+
+ try {
+ if (bansFile.createNewFile()) {
+ getLogger().info("File created! Retrying load...");
+ onEnable();
+ return;
+ } else {
+ getLogger().severe("File could not be created! Disabling!");
+ }
+ } catch (IOException e2) {
+ getLogger().severe("File could not be created! Disabling!");
+ getLogger().severe(e2.getMessage());
+ e2.printStackTrace();
+ }
+
+ disable();
+ return;
+ } catch (Exception e) {
+ getLogger().severe("Failed to load bans: " + e.getMessage());
+ e.printStackTrace();
+
+ disable();
+ return;
+ }
+
+ PluginManager pm = getProxy().getPluginManager();
+
+ pm.registerCommand(this, new BanCommand(playerBanManager, this));
+ pm.registerCommand(this, new UnbanCommand(playerBanManager));
+ pm.registerCommand(this, new GetBanCommand(playerBanManager));
+
+ pm.registerListener(this, new BanJoinListener<>(playerBanManager));
+ }
+
+ @Override
+ public void onDisable() {
+ if (shouldSave) {
+ try {
+ playerBanManager.saveBans();
+ getLogger().info("Saved bans to file!");
+ } catch (IOException e) {
+ getLogger().severe("Failed to save bans: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private void disable() {
+ getLogger().severe("Disabling plugin!");
+
+ shouldSave = false;
+ this.onDisable();
+
+ PluginManager pm = getProxy().getPluginManager();
+
+ pm.unregisterListeners(this);
+ pm.unregisterCommands(this);
+ }
+
+
+}