Core/src/main/java/eu/univento/core/Core.java

246 lines
12 KiB
Java
Raw Normal View History

2016-04-13 05:52:53 +02:00
package eu.univento.core;
2016-04-29 12:54:03 +02:00
import eu.univento.core.antihack.AntiHack;
2016-04-13 05:52:53 +02:00
import eu.univento.core.api.Config;
import eu.univento.core.api.database.DatabaseManager;
import eu.univento.core.api.effects.Blackscreen;
2016-04-13 05:52:53 +02:00
import eu.univento.core.api.events.MoveEventFilter;
import eu.univento.core.api.player.CustomPlayer;
import eu.univento.core.api.server.NetworkData;
2016-04-13 05:52:53 +02:00
import eu.univento.core.api.server.ServerSettings;
import eu.univento.core.api.utils.NettyInjection;
2016-04-13 05:52:53 +02:00
import eu.univento.core.commands.*;
import eu.univento.core.listeners.*;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
2016-04-13 05:52:53 +02:00
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.IOException;
import java.nio.channels.Channel;
2016-04-13 05:52:53 +02:00
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
2016-04-13 05:52:53 +02:00
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* main class
*
2016-04-13 05:52:53 +02:00
* @author joethei
* @version 1.0
*/
public class Core extends JavaPlugin implements NettyInjection.PacketHandler {
//TODO: rewrite database operations from sync MongoDB to async MongoDB
/**
* plugin instance
*/
private static Core instance;
/**
* @return plugin instance
*/
public static Core getInstance() {
return instance;
}
private ArrayList<String> registeredPlugins = new ArrayList<>();
public void registerPlugin(Plugin plugin) {
registeredPlugins.add(plugin.getName());
}
public void unregisterPlugin(Plugin plugin) {
if (registeredPlugins.contains(plugin.getName())) registeredPlugins.remove(plugin.getName());
2016-04-13 05:52:53 +02:00
}
private NettyInjection injection;
private static List<CustomPlayer> timeout = new ArrayList<>();
public static List<CustomPlayer> getTimeout() {
return timeout;
}
private static DatabaseManager databaseManager;
public static DatabaseManager getDatabaseManager() {
return databaseManager;
}
private static final Logger log = Bukkit.getLogger();
2016-04-13 05:52:53 +02:00
public static Collection<CustomPlayer> getOnlinePlayers() {
Collection<CustomPlayer> list = new LinkedList<>();
for (Player players : Bukkit.getOnlinePlayers()) {
2016-04-13 05:52:53 +02:00
CustomPlayer p = CustomPlayer.getPlayer(players);
list.add(p);
}
return list;
}
public static void broadcast(String key) {
for(CustomPlayer players : getOnlinePlayers()) {
players.sendMessage(players.getMessage(key));
2016-04-13 05:52:53 +02:00
}
}
/**
* @param level Log level
* @param string String
*/
public static void log(Level level, String string) {
if (ServerSettings.isDebug()) {
log.log(level, "[univento Core] " + string);
}
}
2016-04-13 05:52:53 +02:00
@Override
public void onEnable() {
log(Level.INFO, "\n" +
"\n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" _ _ _ \n" +
" | | | | (_) \n" +
" ___ ___ _ ____ _____ _ __ ___| |_ __ _ _ __| |_ _ _ __ __ _ \n" +
"/ __|/ _ \\ '__\\ \\ / / _ \\ '__| / __| __/ _` | '__| __| | '_ \\ / _` |\n" +
"\\__ \\ __/ | \\ V / __/ | \\__ \\ || (_| | | | |_| | | | | (_| |\n" +
"|___/\\___|_| \\_/ \\___|_| |___/\\__\\__,_|_| \\__|_|_| |_|\\__, |\n" +
" __/ |\n" +
" |___/ \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
"\n");
try {
Config.writeDefault();
} catch (IOException | ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
instance = this;
PluginManager pm = Bukkit.getPluginManager();
pm.registerEvents(new Commands(), this);
pm.registerEvents(new JoinQuit(), this);
pm.registerEvents(new Chat(), this);
pm.registerEvents(new Events(), this);
pm.registerEvents(new WeaponEvents(), this);
pm.registerEvents(new SpectatorEvents(), this);
pm.registerEvents(new MoveEventFilter(getServer()), this);
if (ServerSettings.isBuild()) {
new Build(this, "build", "enables/disables the build mode", "b");
}
if (ServerSettings.isGame()) {
new Fix(this, "fix", "fix your self or other players");
new Nick(this, "nick", "nick/unnick your self");
}
AntiHack.registerListeners();
new RunAs(this, "RunAs", "run command as other player");
new SystemInfo(this, "SystemInfo", "gives info about the server system");
new Vanish(this, "vanish", "vanish/unvanish your self");
new GameMode(this, "gamemode", "sets your gamemode", "gm");
new SetRank(this, "setrank", "sets the rank for other players", "sr");
new GlobalMute(this, "globalmute", "mutes the server");
new ChatClear(this, "chatclear", "clears the chat", "cc");
new Timeout(this, "timeout", "timeout other players");
PluginMessenger pluginMessenger = new PluginMessenger();
NetworkData networkData = new NetworkData();
Bukkit.getMessenger().registerOutgoingPluginChannel(this, "5zig_Set");
Bukkit.getMessenger().registerIncomingPluginChannel(this, "5zig_Set", pluginMessenger);
Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
Bukkit.getMessenger().registerIncomingPluginChannel(this, "BungeeCord", networkData);
Bukkit.getMessenger().registerOutgoingPluginChannel(this, "LABYMOD");
Bukkit.getMessenger().registerIncomingPluginChannel(this, "WDL|INIT", pluginMessenger);
Bukkit.getMessenger().registerOutgoingPluginChannel(this, "WDL|CONTROL");
Bukkit.getMessenger().registerIncomingPluginChannel(this, "WDL|REQUEST", pluginMessenger);
Bukkit.getMessenger().registerIncomingPluginChannel(this, "PERMISSIONSREPL", pluginMessenger);
Bukkit.getMessenger().registerOutgoingPluginChannel(this, "schematica");
Blackscreen.setupUtil(getInstance());
databaseManager = new DatabaseManager(getInstance());
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> log(Level.INFO, "\n" +
"\n" +
"\n" +
" _ _ \n" +
" | (_) \n" +
" ___ ___ _ ____ _____ _ __ ___ _ __ | |_ _ __ ___ \n" +
"/ __|/ _ \\ '__\\ \\ / / _ \\ '__| / _ \\| '_ \\| | | '_ \\ / _ \\\n" +
"\\__ \\ __/ | \\ V / __/ | | (_) | | | | | | | | | __/\n" +
"|___/\\___|_| \\_/ \\___|_| \\___/|_| |_|_|_|_| |_|\\___|\n" +
" \n" +
" \n" +
"\n"), 0L);
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
for (Plugin plugin : pm.getPlugins()) {
if (!plugin.getName().equalsIgnoreCase("WorldEdit") && !plugin.getName().equalsIgnoreCase("VoxelSniper") && !registeredPlugins.contains(plugin.getName())) {
log(Level.WARNING, "§cDas Plugin " + plugin.getName() + " ist nicht für den Server zugelassen.");
}
}
}, 5L);
this.injection = new NettyInjection(this, this.getName());
this.injection.addHandler("TIMEOUT", new NettyInjection.PacketHandler() {
public Object onPacketIn(Player sender, Channel channel, Object packet) {
if (timeout.contains(CustomPlayer.getPlayer(sender)))
return null;
return packet;
}
});
}
@Override
public void onDisable() {
databaseManager.closeConnections();
Bukkit.getMessenger().unregisterIncomingPluginChannel(this);
Bukkit.getMessenger().unregisterOutgoingPluginChannel(this);
this.injection.disable();
log(Level.INFO, "\n" +
"\n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" _ _ _ \n" +
" | | | | | | \n" +
" ___ ___ _ ____ _____ _ __ ___| |__ _ _| |_ __| | _____ ___ __ \n" +
"/ __|/ _ \\ '__\\ \\ / / _ \\ '__| / __| '_ \\| | | | __/ _` |/ _ \\ \\ /\\ / / '_ \\ \n" +
"\\__ \\ __/ | \\ V / __/ | \\__ \\ | | | |_| | || (_| | (_) \\ V V /| | | |\n" +
"|___/\\___|_| \\_/ \\___|_| |___/_| |_|\\__,_|\\__\\__,_|\\___/ \\_/\\_/ |_| |_|\n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
"\nd");
}
2016-04-13 05:52:53 +02:00
}