/* * Copyright (c) 2018 univento.eu - All rights reserved * You are not allowed to use, distribute or modify this code */ package eu.univento.core; import co.aikar.taskchain.BukkitTaskChainFactory; import co.aikar.taskchain.TaskChainFactory; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.events.ListenerOptions; import com.comphenix.protocol.events.ListenerPriority; import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketEvent; import eu.univento.commons.Commons; import eu.univento.core.api.advancement.CustomAdvancement; import eu.univento.core.api.cloud.CloudApiWrapper; import eu.univento.core.api.command.CommandFramework; import eu.univento.core.api.effects.Blackscreen; import eu.univento.core.api.events.MoveEventFilter; import eu.univento.core.api.items.HeadDB; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.commands.*; import eu.univento.core.customitems.weapons.closecombat.CloseCombatEvents; import eu.univento.core.listeners.*; import eu.univento.core.listeners.cloud.Servers; import io.sentry.Sentry; import io.sentry.SentryClient; import io.sentry.jul.SentryHandler; import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.Recipe; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import pl.kacperduras.tasket.Tasket; import pl.kacperduras.tasket.bukkit.BukkitTasket; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.logging.Level; /** * main class * * @author joethei * @version 1.0 */ public class Core extends JavaPlugin{ @Getter private static Core instance; @Getter private static Commons commons; @Getter private static CommandFramework commandFramework; @Getter private static TaskChainFactory taskChainFactory; @Getter private static Tasket tasket; @Getter private static CloudApiWrapper cloudAPI; @Getter private static ProtocolManager protocolManager; @Getter private static HeadDB headDB; public static String getNMSVersion() { final String packageName = Bukkit.getServer().getClass().getPackage().getName(); return packageName.substring(packageName.lastIndexOf('.') + 1); } public static Collection getOnlinePlayers() { Collection list = new LinkedList<>(); for (Player players : Bukkit.getOnlinePlayers()) { CustomPlayer p = CustomPlayer.getPlayer(players); list.add(p); } return list; } @Override public void onEnable() { commons = new Commons(); instance = this; protocolManager = ProtocolLibrary.getProtocolManager(); protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, Collections.singletonList(PacketType.Play.Server.CHAT), ListenerOptions.SKIP_PLUGIN_VERIFIER) { @Override public void onPacketSending(PacketEvent event) { super.onPacketSending(event); } }); SentryClient sentryClient = Sentry.init(commons.getConfigurationHandler().getString("Sentry.DSN.Core")); try { sentryClient.setServerName(InetAddress.getLocalHost().getHostName()); sentryClient.setEnvironment(""); sentryClient.setDist("Core"); sentryClient.setRelease("1.0.0"); } catch (UnknownHostException e) { e.printStackTrace(); } SentryHandler logHandler = new SentryHandler(); logHandler.setLevel(Level.INFO); getLogger().addHandler(logHandler); taskChainFactory = BukkitTaskChainFactory.create(this); tasket = new BukkitTasket(this); cloudAPI = new CloudApiWrapper(); commandFramework = new CommandFramework(this); commandFramework.registerCommands(new AdminCommands()); commandFramework.registerCommands(new DevCommands()); commandFramework.registerCommands(new ModCommands()); commandFramework.registerCommands(new BuilderCommands()); commandFramework.registerCommands(new VIPCommands()); commandFramework.registerCommands(new PlayerCommands()); commandFramework.registerCommands(new HologramCommands()); 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); pm.registerEvents(new WorkbenchEvents(), this); pm.registerEvents(new NPCEvents(), this); pm.registerEvents(new CloseCombatEvents(), this); PluginMessenger pluginMessenger = new PluginMessenger(); Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); Bukkit.getMessenger().registerIncomingPluginChannel(this, "BungeeCord", pluginMessenger); Bukkit.getMessenger().registerOutgoingPluginChannel(this, "5zig_Set"); Bukkit.getMessenger().registerIncomingPluginChannel(this, "5zig_Set", pluginMessenger); 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"); Servers.register(); headDB = new HeadDB(); Blackscreen.setupUtil(getInstance()); for(CustomAdvancement advancement : CustomAdvancement.values()) advancement.load(); Iterator iterator = Bukkit.recipeIterator(); while(iterator.hasNext()) { Recipe recipe = iterator.next(); //TODO: remove unwanted recipes and add own recipies /* if() { iterator.remove(); } */ } /* Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> { String[] args = new SimpleDateFormat("HH:mm").format(new Date()).split(":"); long time = (Integer.parseInt(args[0])*1000) + (Integer.parseInt(args[1])*100/60) + 18000; for(World world : Bukkit.getWorlds()) world.setTime(time); }, 20L, 1L); */ } @Override public void onDisable() { Bukkit.getMessenger().unregisterIncomingPluginChannel(this); Bukkit.getMessenger().unregisterOutgoingPluginChannel(this); getLogger().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" + "\n"); commons.shutdown(); } }