1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
package com.redstoner.bungeeBans;
import com.redstoner.bungeeBans.commands.*;
import com.redstoner.bungeeBans.json.IPBan;
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;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.NoSuchFileException;
public class Main extends Plugin {
private File playerBanFile = new File("banned-players.json");
private File ipBanFile = new File("banned-ips.json");
private BanManager<PlayerBan> playerBanManager = new BanManager<>(playerBanFile, PlayerBan.class);
private BanManager<IPBan> ipBanManager = new BanManager<>(ipBanFile, IPBan.class);
private boolean shouldSave = true;
@Override
public void onEnable() {
if (
loadBans("player", playerBanManager, playerBanFile) ||
loadBans("IP", ipBanManager, ipBanFile)
) {
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.registerCommand(this, new BanIPCommand(ipBanManager, this));
pm.registerCommand(this, new UnbanIPCommand(ipBanManager));
pm.registerCommand(this, new GetIPBanCommand(ipBanManager));
pm.registerListener(this, new BanJoinListener<>("player", playerBanManager));
pm.registerListener(this, new BanJoinListener<>("IP", ipBanManager));
}
@Override
public void onDisable() {
if (shouldSave) {
saveBans("player", playerBanManager);
saveBans("IP", ipBanManager);
}
}
private void disable() {
getLogger().severe("Players will not be able to join because of a severe error!!! Check the log output above!");
shouldSave = false;
getProxy().getPluginManager().registerListener(this, new DisableJoinListener());
}
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 | NoSuchFileException 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;
}
}
private void saveBans(String name, BanManager banManager) {
try {
playerBanManager.saveBans();
getLogger().info("Saved " + name + " bans to file!");
} catch (IOException e) {
getLogger().severe("Failed to save " + name + " bans: " + e.getMessage());
e.printStackTrace();
}
}
}
|