summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Panić <david@panic.tk>2019-04-07 20:44:13 +0200
committerDavid Panić <david@panic.tk>2019-04-07 20:44:13 +0200
commit0418d124148fce1fc352a92806eedc2414b8a005 (patch)
tree05d3768355554b24aa53c87aaf53e247a07c6c82
parentdf36c6d3d431179f4be5f081424c506b4d415029 (diff)
Made Main file more generic + disabled joining on severe load error
-rw-r--r--src/main/java/com/redstoner/bungeeBans/Main.java78
-rw-r--r--src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java (renamed from src/main/java/com/redstoner/bungeeBans/BanJoinListener.java)6
-rw-r--r--src/main/java/com/redstoner/bungeeBans/listeners/DisableJoinListener.java20
3 files changed, 64 insertions, 40 deletions
diff --git a/src/main/java/com/redstoner/bungeeBans/Main.java b/src/main/java/com/redstoner/bungeeBans/Main.java
index 3b847e4..5df9486 100644
--- a/src/main/java/com/redstoner/bungeeBans/Main.java
+++ b/src/main/java/com/redstoner/bungeeBans/Main.java
@@ -4,6 +4,8 @@ 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 com.redstoner.bungeeBans.listeners.BanJoinListener;
+import com.redstoner.bungeeBans.listeners.DisableJoinListener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginManager;
@@ -12,44 +14,17 @@ import java.io.FileNotFoundException;
import java.io.IOException;
public class Main extends Plugin {
- private File bansFile = new File("banned-players.json");
+ private File playerBanFile = new File("banned-players.json");
- private BanManager<PlayerBan> playerBanManager = new BanManager<>(bansFile, PlayerBan.class);
+ private BanManager<PlayerBan> playerBanManager = new BanManager<>(playerBanFile, 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();
+ if (
+ loadBans("player", playerBanManager, playerBanFile)
+ ) {
return;
}
@@ -76,16 +51,43 @@ public class Main extends Plugin {
}
private void disable() {
- getLogger().severe("Disabling plugin!");
+ getLogger().severe("Players will not be able to join because of a severe error!!! Check the log output above!");
shouldSave = false;
- this.onDisable();
+ getProxy().getPluginManager().registerListener(this, new DisableJoinListener());
+ }
- PluginManager pm = getProxy().getPluginManager();
+ private boolean loadBans(String name, BanManager banManager, File banFile) {
+ try {
+ getLogger().info("Loading " + name + " bans...");
+ banManager.loadBans();
+ getLogger().info("Loaded " + name + " bans!");
- pm.unregisterListeners(this);
- pm.unregisterCommands(this);
- }
+ return false;
+ } catch (FileNotFoundException e) {
+ getLogger().warning("Ban file (" + name + ") does not exist! Creating!");
+ try {
+ if (banFile.createNewFile()) {
+ getLogger().info("Ban file (" + name + ") created! Retrying load...");
+ onEnable();
+ return false;
+ }
+ } catch (IOException e2) {
+ getLogger().severe(e2.getMessage());
+ e2.printStackTrace();
+ }
+
+ getLogger().severe("Ban file (" + name + ") could not be created!");
+ disable();
+ return true;
+ } catch (Exception e) {
+ getLogger().severe("Failed to load " + name + " bans: " + e.getMessage());
+ e.printStackTrace();
+
+ disable();
+ return true;
+ }
+ }
}
diff --git a/src/main/java/com/redstoner/bungeeBans/BanJoinListener.java b/src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java
index c868c4b..22dd212 100644
--- a/src/main/java/com/redstoner/bungeeBans/BanJoinListener.java
+++ b/src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java
@@ -1,6 +1,8 @@
-package com.redstoner.bungeeBans;
+package com.redstoner.bungeeBans.listeners;
import com.mojang.api.profiles.Profile;
+import com.redstoner.bungeeBans.BanManager;
+import com.redstoner.bungeeBans.Util;
import com.redstoner.bungeeBans.json.Ban;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ComponentBuilder;
@@ -13,7 +15,7 @@ import net.md_5.bungee.event.EventPriority;
public class BanJoinListener<T extends Ban> implements Listener {
private BanManager<T> bm;
- BanJoinListener(BanManager<T> bm) {
+ public BanJoinListener(BanManager<T> bm) {
this.bm = bm;
}
diff --git a/src/main/java/com/redstoner/bungeeBans/listeners/DisableJoinListener.java b/src/main/java/com/redstoner/bungeeBans/listeners/DisableJoinListener.java
new file mode 100644
index 0000000..df4a325
--- /dev/null
+++ b/src/main/java/com/redstoner/bungeeBans/listeners/DisableJoinListener.java
@@ -0,0 +1,20 @@
+package com.redstoner.bungeeBans.listeners;
+
+import net.md_5.bungee.api.ChatColor;
+import net.md_5.bungee.api.chat.ComponentBuilder;
+import net.md_5.bungee.api.event.PreLoginEvent;
+import net.md_5.bungee.api.plugin.Listener;
+import net.md_5.bungee.event.EventHandler;
+import net.md_5.bungee.event.EventPriority;
+
+public class DisableJoinListener implements Listener {
+ @EventHandler (priority = EventPriority.HIGHEST)
+ public void onJoin(PreLoginEvent event) {
+ event.setCancelled(true);
+
+ event.setCancelReason(
+ new ComponentBuilder(ChatColor.RED + "Joining is disabled because of a bungee error! Please notify an admin ASAP!")
+ .create()
+ );
+ }
+}