Made Main file more generic + disabled joining on severe load error
This commit is contained in:
parent
df36c6d3d4
commit
0418d12414
@ -4,6 +4,8 @@ import com.redstoner.bungeeBans.commands.BanCommand;
|
|||||||
import com.redstoner.bungeeBans.commands.GetBanCommand;
|
import com.redstoner.bungeeBans.commands.GetBanCommand;
|
||||||
import com.redstoner.bungeeBans.commands.UnbanCommand;
|
import com.redstoner.bungeeBans.commands.UnbanCommand;
|
||||||
import com.redstoner.bungeeBans.json.PlayerBan;
|
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.Plugin;
|
||||||
import net.md_5.bungee.api.plugin.PluginManager;
|
import net.md_5.bungee.api.plugin.PluginManager;
|
||||||
|
|
||||||
@ -12,44 +14,17 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public class Main extends Plugin {
|
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;
|
private boolean shouldSave = true;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
try {
|
if (
|
||||||
getLogger().info("Loading bans...");
|
loadBans("player", playerBanManager, playerBanFile)
|
||||||
|
) {
|
||||||
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,16 +51,43 @@ public class Main extends Plugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void disable() {
|
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;
|
shouldSave = false;
|
||||||
this.onDisable();
|
getProxy().getPluginManager().registerListener(this, new DisableJoinListener());
|
||||||
|
|
||||||
PluginManager pm = getProxy().getPluginManager();
|
|
||||||
|
|
||||||
pm.unregisterListeners(this);
|
|
||||||
pm.unregisterCommands(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean loadBans(String name, BanManager banManager, File banFile) {
|
||||||
|
try {
|
||||||
|
getLogger().info("Loading " + name + " bans...");
|
||||||
|
banManager.loadBans();
|
||||||
|
getLogger().info("Loaded " + name + " bans!");
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.redstoner.bungeeBans;
|
package com.redstoner.bungeeBans.listeners;
|
||||||
|
|
||||||
import com.mojang.api.profiles.Profile;
|
import com.mojang.api.profiles.Profile;
|
||||||
|
import com.redstoner.bungeeBans.BanManager;
|
||||||
|
import com.redstoner.bungeeBans.Util;
|
||||||
import com.redstoner.bungeeBans.json.Ban;
|
import com.redstoner.bungeeBans.json.Ban;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
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 {
|
public class BanJoinListener<T extends Ban> implements Listener {
|
||||||
private BanManager<T> bm;
|
private BanManager<T> bm;
|
||||||
|
|
||||||
BanJoinListener(BanManager<T> bm) {
|
public BanJoinListener(BanManager<T> bm) {
|
||||||
this.bm = bm;
|
this.bm = bm;
|
||||||
}
|
}
|
||||||
|
|
@ -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()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user