· 4 years ago · Jan 08, 2021, 01:36 AM
1package cz.devfire.bcore.Spigot;
2
3import com.google.common.collect.Lists;
4import cz.devfire.bcore.Spigot.Access.AccessCommandHandler;
5import cz.devfire.bcore.Spigot.Access.Listeners.AccessJoinListener;
6import cz.devfire.bcore.Spigot.Access.Listeners.AccessVanillaCommandListener;
7import cz.devfire.bcore.Spigot.Afk.AfkCommand;
8import cz.devfire.bcore.Spigot.Afk.AfkListener;
9import cz.devfire.bcore.Spigot.CPS.CPSCommand;
10import cz.devfire.bcore.Spigot.CPS.CPSListener;
11import cz.devfire.bcore.Spigot.Commands.*;
12import cz.devfire.bcore.Spigot.Core.API.CoreAPI;
13import cz.devfire.bcore.Spigot.Core.CoreCommandHandler;
14import cz.devfire.bcore.Spigot.Core.Discord.Commands.DiscordClearGrouplCommand;
15import cz.devfire.bcore.Spigot.Core.Discord.Commands.DiscordLinkCommand;
16import cz.devfire.bcore.Spigot.Core.Discord.Commands.DiscordPingCommand;
17import cz.devfire.bcore.Spigot.Core.Discord.Commands.DiscordUnLinkCommand;
18import cz.devfire.bcore.Spigot.Core.TeamSpeak.Command.TeamSpeakLinkCommand;
19import cz.devfire.bcore.Spigot.Core.TeamSpeak.Command.TeamSpeakUnLinkCommand;
20import cz.devfire.bcore.Spigot.Core.TeamSpeak.TeamSpeakListener;
21import cz.devfire.bcore.Spigot.Core.Updater.NetworkStatusUpdater;
22import cz.devfire.bcore.Spigot.Core.Updater.ServerStatusUpdater;
23import cz.devfire.bcore.Spigot.Fly.FlyCommand;
24import cz.devfire.bcore.Spigot.Fly.FlyListener;
25import cz.devfire.bcore.Spigot.Gamemode.GamemodeCommand;
26import cz.devfire.bcore.Spigot.Gamemode.GamemodeListener;
27import cz.devfire.bcore.Spigot.Invsee.InvseeCommand;
28import cz.devfire.bcore.Spigot.Invsee.InvseeListener;
29import cz.devfire.bcore.Spigot.Listeners.*;
30import cz.devfire.bcore.Spigot.Listeners.Message.MessageJoinListener;
31import cz.devfire.bcore.Spigot.Listeners.Message.MessageListener;
32import cz.devfire.bcore.Spigot.Listeners.Message.MessageQuitListener;
33import cz.devfire.bcore.Spigot.Listeners.PlayerData.PlayerDataListener;
34import cz.devfire.bcore.Spigot.Other.*;
35import cz.devfire.bcore.Spigot.Other.ConfigUtils.Config;
36import cz.devfire.bcore.Spigot.Other.ConfigUtils.Data;
37import cz.devfire.bcore.Spigot.Other.SQL.Database;
38import cz.devfire.bcore.Spigot.Other.SQL.DatabaseKeepAlive;
39import cz.devfire.bcore.Spigot.Tokens.Listeners.TokenShopConfirmListener;
40import cz.devfire.bcore.Spigot.Tokens.Listeners.TokenShopListener;
41import cz.devfire.bcore.Spigot.Tokens.TokenCommandHandler;
42import cz.devfire.bcore.Spigot.VersionRestrict.VersionRestrictCommand;
43import cz.devfire.bcore.Spigot.VersionRestrict.VersionRestrictListener;
44import cz.devfire.bcore.Spigot.Vote.Listeners.VoteClaimListener;
45import cz.devfire.bcore.Spigot.Vote.Listeners.VoteReceiveListener;
46import cz.devfire.bcore.Spigot.Vote.VoteCommandHandler;
47import org.bukkit.Bukkit;
48import org.bukkit.plugin.java.JavaPlugin;
49import org.bukkit.scheduler.BukkitRunnable;
50
51import java.util.ArrayList;
52
53public class Loader extends JavaPlugin {
54 public static Loader plugin;
55 private CoreAPI api;
56
57 private Config cfg;
58 private Data lang;
59
60 private Redis redisListen;
61 private Redis redisSend;
62
63 private static Database db_core;
64 private static Database db_data;
65
66 private final ArrayList<BCommand> coreCommands = Lists.newArrayList();
67 private final ArrayList<BEvent> coreEvents = Lists.newArrayList();
68 private final ArrayList<BScheduler> coreSchedulers = Lists.newArrayList();
69
70 private Vault vault;
71
72 @Override
73 public void onEnable() {
74 plugin = this;
75
76 Bukkit.getConsoleSender().sendMessage(" _ _____");
77 Bukkit.getConsoleSender().sendMessage("| | / __ \\");
78 Bukkit.getConsoleSender().sendMessage("| |__ | / \\/ ___ _ __ ___");
79 Bukkit.getConsoleSender().sendMessage("| '_ \\| | / _ \\| '__/ _ \\");
80 Bukkit.getConsoleSender().sendMessage("| |_) | \\__/\\ (_) | | | __/");
81 Bukkit.getConsoleSender().sendMessage("|_.__/ \\____/\\___/|_| \\___|");
82 Bukkit.getConsoleSender().sendMessage(" ");
83 Bukkit.getConsoleSender().sendMessage("§2Loading..");
84
85 // Init config/data
86 cfg = Config.loadConfig(this,"spigot/config.yml","config.yml");
87 lang = Data.loadFile(this,"spigot/lang.yml","lang.yml");
88
89 // Connect core database
90 db_core = new Database(Loader.getPlugin().getCfg().getString("MySQL.Core.DB"), Loader.getPlugin().getCfg().getString("MySQL.Core.Host"), Loader.getPlugin().getCfg().getString("MySQL.Core.User"), Loader.getPlugin().getCfg().getString("MySQL.Core.Pass"));
91 if (!db_core.connect()) {
92 Bukkit.getConsoleSender().sendMessage(" §c- Plugin cant work without core database, disabling..!");
93 Bukkit.getPluginManager().disablePlugin(this);
94 return;
95 } else {
96 if (cfg.getBoolean("MySQL.Core.CreateTables")) {
97 db_core.update("CREATE TABLE IF NOT EXISTS core.Access(server VARCHAR(30) PRIMARY KEY,users TEXT NULL);");
98 db_core.update("" +
99 "CREATE TABLE IF NOT EXISTS core.DataPlayer(id INT UNIQUE KEY AUTO_INCREMENT, nick VARCHAR(16) PRIMARY KEY, online TINYINT DEFAULT(0), server varchar(50) NULL," +
100 " busy TINYINT DEFAULT(0), reply VARCHAR(16) NULL, premium TINYINT DEFAULT(0), tokens BIGINT DEFAULT(0), verified TINYINT DEFAULT(0), votes INT DEFAULT(0)," +
101 " staffhide TINYINT DEFAULT(0)," +
102 " staffChat TINYINT DEFAULT(0), toggledChat TINYINT DEFAULT(0), ignoring TEXT NULL, notifyBJ TINYINT DEFAULT(1), notifyTS TINYINT DEFAULT(1)," +
103 " notifyBR TINYINT DEFAULT(1), notifyR TINYINT DEFAULT(1), notifySC TINYINT DEFAULT(1), notifyU TINYINT DEFAULT(1), notifyV TINYINT DEFAULT(1)," +
104 " notifyB TINYINT DEFAULT(1), notifyACB TINYINT DEFAULT(1), notifyC TINYINT DEFAULT(1), pingA TINYINT DEFAULT(1), pingBR TINYINT DEFAULT(1)," +
105 " pingE TINYINT DEFAULT(1), pingPM TINYINT DEFAULT(1), pingR TINYINT DEFAULT(1));"
106 );
107 db_core.update("" +
108 "CREATE TABLE IF NOT EXISTS core.DataServer(server VARCHAR(30) PRIMARY KEY, ip VARCHAR(15) NULL, port INT NULL, whitelist TINYINT DEFAULT(0), maintenance TINYINT DEFAULT(0)," +
109 " players INT DEFAULT(0), maxPlayers INT DEFAULT(0), online TINYINT DEFAULT(0));"
110 );
111 db_core.update("CREATE TABLE IF NOT EXISTS core.DataNetwork(service VARCHAR(30) PRIMARY KEY, value INT);");
112 db_core.update("CREATE TABLE IF NOT EXISTS core.LinkCodes(service VARCHAR(20), code VARCHAR(30), time TIMESTAMP DEFAULT(NOW()), sender VARCHAR(30));");
113 db_core.update("CREATE TABLE IF NOT EXISTS core.LinkDiscord(name VARCHAR(30) PRIMARY KEY, id BIGINT, string TEXT NULL);");
114 db_core.update("CREATE TABLE IF NOT EXISTS core.LinkTeamSpeak(name VARCHAR(30) PRIMARY KEY, id BIGINT, uuid TEXT NULL);");
115
116 cfg.set("MySQL.Core.CreateTables", false);
117 cfg.save();
118 cfg.reload();
119 }
120 }
121
122 // Connect data database
123 db_data = new Database(Loader.getPlugin().getCfg().getString("MySQL.Data.DB"), Loader.getPlugin().getCfg().getString("MySQL.Data.Host"), Loader.getPlugin().getCfg().getString("MySQL.Data.User"), Loader.getPlugin().getCfg().getString("MySQL.Data.Pass"));
124 if (!db_data.connect()) {
125 Bukkit.getConsoleSender().sendMessage(" §c- Plugin cant work without data database, disabling..!");
126 Bukkit.getPluginManager().disablePlugin(this);
127 return;
128 } else {
129 if (cfg.getBoolean("MySQL.Data.CreateTables")) {
130 db_data.update(""+
131 "CREATE TABLE IF NOT EXISTS core.Vote_"+ Bukkit.getServer().getMotd() +" (id INT UNIQUE KEY AUTO_INCREMENT, player varchar(32) PRIMARY KEY, votes INT NOT NULL DEFAULT(0), offline_votes INT NOT NULL DEFAULT(0))"
132 );
133 db_data.update("CREATE TABLE IF NOT EXISTS core.LogToken(id INT UNIQUE KEY AUTO_INCREMENT, datum TIMESTAMP DEFAULT(NOW()), server VARCHAR(50), autor VARCHAR(16), target VARCHAR(16), method VARCHAR(20), number BIGINT, new_number BIGINT, string TEXT NULL);");
134
135 cfg.set("MySQL.Data.CreateTables", false);
136 cfg.save();
137 cfg.reload();
138 }
139 }
140
141 // Redis
142 try {
143 String psw = cfg.getString("Redis.Password");
144 redisListen = new Redis(cfg.getString("Redis.Host"), cfg.getInt("Redis.Port"));
145 redisSend = new Redis(cfg.getString("Redis.Host"), cfg.getInt("Redis.Port"));
146
147 if (psw != null && !psw.equalsIgnoreCase("null") && !psw.isEmpty()) {
148 redisListen.auth(psw);
149 redisSend.auth(psw);
150 }
151
152 redisListen.subscribe(new RedisSubscriber(), "BasicCore-Spigot");
153
154 Bukkit.getConsoleSender().sendMessage(" §a- Connectiong redis "+ cfg.getString("Redis.Host") +"... §eSuccessful!");
155 } catch (Exception e) {
156 Bukkit.getConsoleSender().sendMessage(" §c- Connection redis "+ cfg.getString("Redis.Host") +"... §eFailed!");
157 Bukkit.getConsoleSender().sendMessage(" §c- Plugin cant work without data database, disabling..!");
158 Bukkit.getPluginManager().disablePlugin(this);
159
160 e.printStackTrace();
161 }
162
163 // Load API and managers
164 api = new CoreAPI(this);
165
166 // Access
167 CoreAPI.getAccessManager().loadServerName();
168 CoreAPI.getAccessManager().loadMaintenance();
169 CoreAPI.getAccessManager().loadUsers();
170 CoreAPI.getAccessManager().disableVanilla();
171
172 // Afk
173 if (cfg.getBoolean("Afk.Enabled")) {
174 CoreAPI.getAfkManager().loadConfigValues();
175 CoreAPI.getAfkManager().loadPlayers();
176 CoreAPI.getAfkManager().startTask();
177 }
178
179 // Tokens
180 CoreAPI.getTokenManager().setupShop();
181 CoreAPI.getTokenManager().setupShopConfirm();
182
183 // Placeholders
184 CoreAPI.getPlaceholderManager().hook();
185
186 // Vote
187 CoreAPI.getVoteManager().loadPath();
188 CoreAPI.getVoteManager().setupInventory();
189
190 // Discord bot
191 if (cfg.getBoolean("Linkers.Discord.Enabled")) {
192 Loader.getPlugin().getCoreDatabase().update("DELETE FROM core.LinkCodes WHERE service = 'dc'");
193 Loader.getPlugin().getServer().getConsoleSender().sendMessage("§a - Launching discord bot..");
194
195 new BukkitRunnable() {
196 @Override
197 public void run() {
198 if (CoreAPI.getDiscordManager().connect()) {
199 CoreAPI.getDiscordManager().addCommand(new DiscordPingCommand());
200 CoreAPI.getDiscordManager().addCommand(new DiscordLinkCommand());
201 CoreAPI.getDiscordManager().addCommand(new DiscordUnLinkCommand());
202 CoreAPI.getDiscordManager().addCommand(new DiscordClearGrouplCommand());
203 CoreAPI.getDiscordManager().setGame(cfg.getString("Linkers.Discord.Settings.Action"));
204 CoreAPI.getDiscordManager().loadRoles();
205 CoreAPI.getDiscordManager().runGroupSync();
206 CoreAPI.getDiscordManager().loadChannels();
207 }
208 }
209 }.runTaskAsynchronously(Loader.getPlugin());
210 }
211
212 // Teamspeak bot
213 if (cfg.getBoolean("Linkers.TeamSpeak.Enabled")) {
214 Loader.getPlugin().getCoreDatabase().update("DELETE FROM core.LinkCodes WHERE service = 'ts'");
215 Loader.getPlugin().getServer().getConsoleSender().sendMessage("§a - Launching teamspeak bot..");
216
217 new BukkitRunnable() {
218 @Override
219 public void run() {
220 if (CoreAPI.getTeamSpeakManager().connect()) {
221 CoreAPI.getTeamSpeakManager().loadRoles();
222 CoreAPI.getTeamSpeakManager().registerEvents();
223 CoreAPI.getTeamSpeakManager().addListener(new TeamSpeakListener());
224 CoreAPI.getTeamSpeakManager().addCommand(new TeamSpeakLinkCommand());
225 CoreAPI.getTeamSpeakManager().addCommand(new TeamSpeakUnLinkCommand());
226 CoreAPI.getTeamSpeakManager().runGroupSync();
227 }
228 }
229 }.runTaskAsynchronously(Loader.getPlugin());
230 }
231
232 // Vault hook
233 if (getCfg().getBoolean("Hooks.Vault")) {
234 vault = new Vault();
235 vault.hookChat();
236 }
237
238 // Disabler
239 DisablerListener.load();
240 DisablerListener.timeStop();
241
242 // Fix
243 FixListener.load();
244
245 // Discord
246 if (Bukkit.getOnlinePlayers().size() == 0 && Loader.getPlugin().getCfg().getBoolean("Discord.Enabled") && Loader.getPlugin().getCfg().getBoolean("Discord.Show.Startup")) {
247 CoreAPI.getDiscordManager().getWebhook().sendStartup();
248 }
249
250 // Event register
251 Bukkit.getConsoleSender().sendMessage(" §a- Registered events (19?)");
252 loadListeners();
253
254 // Channel register
255 Bukkit.getConsoleSender().sendMessage(" §a- Registered channels (1)");
256 // - BasicCore-Spigot
257
258 // Command register
259 Bukkit.getConsoleSender().sendMessage(" §a- Registered commands (19?)");
260 loadCommands();
261
262 // Scheduler register
263 Bukkit.getConsoleSender().sendMessage(" §a- Registered schedulers (?)");
264 loadSchedulers();
265
266 // Load players online
267 loadPlayers();
268
269 getLogger().info("Enabled plugin with version " + getDescription().getVersion() + " by " + getDescription().getAuthors().toString().replace("[", "").replace("]", ""));
270 }
271
272 @Override
273 public void onDisable() {
274 CoreAPI.getTokenManager().closeShopAll();
275
276 if (Bukkit.getOnlinePlayers().size() == 0 && Loader.getPlugin().getCfg().getBoolean("Discord.Enabled") && Loader.getPlugin().getCfg().getBoolean("Discord.Show.Shutdown")) {
277 CoreAPI.getDiscordManager().getWebhook().sendShutdown();
278 }
279
280 CoreAPI.getPlaceholderManager().unhook();
281
282 if (getConfig().getBoolean("Linkers.TeamSpeak.Enabled")) CoreAPI.getTeamSpeakManager().quit();
283 if (getConfig().getBoolean("Linkers.Discord.Enabled")) CoreAPI.getDiscordManager().quit();
284
285 redisListen.unsubscribeAll();
286 redisListen.close();
287
288 // Databases disconnect
289 if (db_core.isConnected()) {
290 db_core.disconnect();
291 }
292
293 if (db_data.isConnected()) {
294 db_data.disconnect();
295 }
296
297 Utils.cleanUpOldFiles("logs/", 7);
298
299 api.destroy();
300 api = null;
301 }
302
303 public void reload() {
304 Bukkit.getConsoleSender().sendMessage("[bCore] Reloading..");
305
306 if (cfg.getBoolean("Linkers.TeamSpeak.Enabled")) CoreAPI.getTeamSpeakManager().quit();
307 if (cfg.getBoolean("Linkers.Discord.Enabled")) CoreAPI.getDiscordManager().quit();
308
309 // Unhook afk
310 if (getCfg().getBoolean("Afk.Enabled")) {
311 CoreAPI.getAfkManager().clearPlayers();
312 CoreAPI.getAfkManager().stopTask();
313 }
314
315 redisListen.unsubscribeAll();
316 redisListen.close();
317
318 /**
319 * ------------------------------------------
320 * Reload
321 * ------------------------------------------
322 */
323
324 cfg.reload();
325 lang.reload();
326
327 // Hook placeholders
328 CoreAPI.getPlaceholderManager().unhook();
329 CoreAPI.getPlaceholderManager().hook();
330
331 // Hook afk
332 if (getCfg().getBoolean("Afk.Enabled")) {
333 CoreAPI.getAfkManager().loadPlayers();
334 CoreAPI.getAfkManager().startTask();
335 }
336
337 // Load listeners
338 FixListener.load();
339
340 // Initialize api
341 api = new CoreAPI(this);
342
343 // Load schedulers
344 unloadSchedulers();
345 loadSchedulers();
346
347 // Load listeners
348 unloadListeners();
349 loadListeners();
350
351 // Load commands
352 unloadCommands();
353 loadCommands();
354
355 // Load players
356 loadPlayers();
357
358 Bukkit.getConsoleSender().sendMessage("[bCore] Reloaded!");
359 }
360
361 private void loadPlayers() {
362 CoreAPI.getPlayerManager().clearCache();
363 CoreAPI.getPlayerManager().loadPlayersToCache();
364 CoreAPI.getAfkManager().clearPlayers();
365 CoreAPI.getAfkManager().loadPlayers();
366 }
367
368 private void loadListeners() {
369 coreEvents.add(new BEvent("PlayerDataListener", new PlayerDataListener(), plugin));
370 coreEvents.add(new BEvent("AccessJoinListener", new AccessJoinListener(), plugin));
371 coreEvents.add(new BEvent("AccessVanillaCommandListener", new AccessVanillaCommandListener(), plugin));
372 coreEvents.add(new BEvent("FlyListener", new FlyListener(), plugin));
373 coreEvents.add(new BEvent("GamemodeListener", new GamemodeListener(), plugin));
374 coreEvents.add(new BEvent("MessageListener", new MessageListener(), plugin));
375 coreEvents.add(new BEvent("MessageJoinListener", new MessageJoinListener(), plugin));
376 coreEvents.add(new BEvent("MessageQuitListener", new MessageQuitListener(), plugin));
377 coreEvents.add(new BEvent("DisablerListener", new DisablerListener(), plugin));
378 coreEvents.add(new BEvent("FixListener", new FixListener(), plugin));
379 coreEvents.add(new BEvent("StopListener", new StopListener(), plugin));
380 if (cfg.getBoolean("Afk.Enabled")) coreEvents.add(new BEvent("AfkListener", new AfkListener(), plugin));
381 if (cfg.getBoolean("Commands.Cps")) coreEvents.add(new BEvent("CPSListener", new CPSListener(), plugin));
382 if (cfg.getBoolean("Commands.Invsee")) coreEvents.add(new BEvent("InvseeListener", new InvseeListener(), plugin));
383 if (cfg.getBoolean("Help.Enabled")) coreEvents.add(new BEvent("HelpCommandListener", new HelpCommandListener(), plugin));
384 if (cfg.getBoolean("VersionRestrict.Enabled")) coreEvents.add(new BEvent("VersionRestrictListener", new VersionRestrictListener(), plugin));
385 if (cfg.getBoolean("Tokens.Commands.Shop")) coreEvents.add(new BEvent("TokenShopListener", new TokenShopListener(), plugin));
386 if (cfg.getBoolean("Tokens.Commands.Shop")) coreEvents.add(new BEvent("TokenShopConfirmListener", new TokenShopConfirmListener(), plugin));
387 if (cfg.getBoolean("Vote.Settings.Offline.Enabled")) coreEvents.add(new BEvent("VoteClaimListener", new VoteClaimListener(), plugin));
388 if (Bukkit.getPluginManager().isPluginEnabled("Votifier") && cfg.getBoolean("Vote.Settings.Online.Enabled")) {
389 coreEvents.add(new BEvent("VoteReceiveListener", new VoteReceiveListener(), plugin));
390 }
391
392 for (BEvent event : coreEvents) {
393 event.register();
394 }
395 }
396
397 private void unloadListeners() {
398 for (BEvent event : coreEvents) {
399 event.unregister();
400 }
401
402 coreEvents.clear();
403 }
404
405 private void loadCommands() {
406 // String name, String permission, CommandExecutor executor, String... aliases
407 coreCommands.add(new BCommand("core",null, new CoreCommandHandler(plugin)));
408 coreCommands.add(new BCommand("access",null, new AccessCommandHandler(plugin)));
409 coreCommands.add(new BCommand("afk",null, new AfkCommand()));
410 coreCommands.add(new BCommand("vote",null, new VoteCommandHandler(plugin),"hlasuj","hlasovat","votovat","hlas"));
411 if (getCfg().getBoolean("Commands.DcLink")) coreCommands.add(new BCommand("dclink",null, new DcLinkCommand()));
412 if (getCfg().getBoolean("Commands.TsLink")) coreCommands.add(new BCommand("tslink",null, new TsLinkCommand(),"ts3link"));
413 if (getCfg().getBoolean("Commands.Bsudo")) coreCommands.add(new BCommand("bsudo",null, new BungeeSudoCommand()));
414 if (getCfg().getBoolean("Commands.Sudo")) coreCommands.add(new BCommand("sudo",null, new SudoCommand()));
415 if (getCfg().getBoolean("Commands.ClearChat")) coreCommands.add(new BCommand("chatclear",null, new ChatClearCommand(),"cc"));
416 if (getCfg().getBoolean("Commands.Premium")) coreCommands.add(new BCommand("premium",null, new PremiumCommand(),"fastlogin","prem"));
417 if (getCfg().getBoolean("Commands.Suffix.Enabled")) coreCommands.add(new BCommand("removesuffix",null, new RemSufCommand(),"remsuffix","removesuf","rsuf","remsuf"));
418 if (getCfg().getBoolean("Commands.Suffix.Enabled")) coreCommands.add(new BCommand("suffix",null, new SufCommand(),"suf"));
419 if (getCfg().getBoolean("Commands.Teleport")) coreCommands.add(new BCommand("teleport",null, new TeleportCommand(),"tp"));
420 if (getCfg().getBoolean("Commands.Teleport")) coreCommands.add(new BCommand("teleporthere",null, new TeleportHereCommand(),"tphere"));
421 if (getCfg().getBoolean("Commands.Cps")) coreCommands.add(new BCommand("cps",null, new CPSCommand()));
422 if (getCfg().getBoolean("Commands.Fly")) coreCommands.add(new BCommand("fly",null, new FlyCommand()));
423 if (getCfg().getBoolean("Commands.Gamemode")) coreCommands.add(new BCommand("gamemode",null, new GamemodeCommand(),"gm"));
424 if (getCfg().getBoolean("Commands.Invsee")) coreCommands.add(new BCommand("invsee",null, new InvseeCommand(),"invopen"));
425 if (getCfg().getBoolean("VersionRestrict")) coreCommands.add(new BCommand("versionrestrictpermit",null, new VersionRestrictCommand(),"vrp","permit"));
426 if (getCfg().getBoolean("Tokens")) coreCommands.add(new BCommand("token",null, new TokenCommandHandler(plugin),"tokeny","tokeni","tokens"));
427
428 for (BCommand command : coreCommands) {
429 command.register();
430 }
431 }
432
433 private void unloadCommands() {
434 for (BCommand command : coreCommands) {
435 command.unregister();
436 }
437
438 coreCommands.clear();
439 }
440
441 private void loadSchedulers() {
442 BScheduler s = null;
443
444 s = new BScheduler(this, new DatabaseKeepAlive(),0,3600);
445 s.runAsyncRepeating();
446 coreSchedulers.add(s);
447
448 if (getCfg().getBoolean("Updater.Enabled")) {
449 s = new BScheduler(this, new ServerStatusUpdater(),0, cfg.getInt("Updater.Delay"));
450 s.runSyncRepeating();
451 coreSchedulers.add(s);
452
453 s = new BScheduler(this, new NetworkStatusUpdater(),0, cfg.getInt("Updater.Delay"));
454 s.runSyncRepeating();
455 coreSchedulers.add(s);
456 }
457 }
458
459 private void unloadSchedulers() {
460 for (BScheduler scheduler : coreSchedulers) {
461 scheduler.stop();
462 }
463
464 coreSchedulers.clear();
465 }
466
467 public static Loader getPlugin() {
468 return plugin;
469 }
470
471 public Database getCoreDatabase() {
472 return db_core;
473 }
474
475 public Database getDataDatabase() {
476 return db_data;
477 }
478
479 public Data getLang() {
480 return lang;
481 }
482
483 public Vault getVault() {
484 return vault;
485 }
486
487 public Config getCfg() {
488 return cfg;
489 }
490
491 public Redis getRedisListener() {
492 return redisListen;
493 }
494
495 public Redis getRedisSender() {
496 return redisSend;
497 }
498
499}
500