package net.aufdemrand.denizen.nms; import net.aufdemrand.denizen.nms.abstracts.AnimationHelper; import net.aufdemrand.denizen.nms.abstracts.BiomeNMS; import net.aufdemrand.denizen.nms.abstracts.BlockLight; import net.aufdemrand.denizen.nms.abstracts.ParticleHelper; import net.aufdemrand.denizen.nms.abstracts.ProfileEditor; import net.aufdemrand.denizen.nms.abstracts.Sidebar; import net.aufdemrand.denizen.nms.interfaces.*; import net.aufdemrand.denizen.nms.interfaces.packets.PacketHandler; import net.aufdemrand.denizen.nms.util.PlayerProfile; import net.aufdemrand.denizen.nms.util.jnbt.CompoundTag; import net.aufdemrand.denizen.nms.util.jnbt.Tag; import org.bukkit.Location; import org.bukkit.block.Biome; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.util.Map; public abstract class NMSHandler { private static NMSHandler instance; private static NMSVersion version; private static JavaPlugin javaPlugin; public static boolean initialize(JavaPlugin plugin) { javaPlugin = plugin; String packageName = javaPlugin.getServer().getClass().getPackage().getName(); try { // Check if we support this MC version version = NMSVersion.valueOf(packageName.substring(packageName.lastIndexOf('.') + 1)); } catch (Exception e) { version = NMSVersion.NOT_SUPPORTED; instance = null; return false; } try { // Get the class of our handler for this version final Class<?> clazz = Class.forName("net.aufdemrand.denizen.nms.Handler_" + version.name()); if (NMSHandler.class.isAssignableFrom(clazz)) { // Found and loaded - good to go! instance = (NMSHandler) clazz.newInstance(); return true; } } catch (Exception e) { e.printStackTrace(); } // Someone made an oopsie and didn't implement this version properly :( version = NMSVersion.NOT_SUPPORTED; instance = null; return false; } public static NMSHandler getInstance() { return instance; } public static NMSVersion getVersion() { return version; } public static JavaPlugin getJavaPlugin() { return javaPlugin; } public abstract Sidebar createSidebar(Player player); public abstract BlockLight createBlockLight(Location location, int lightLevel, long ticks); public abstract PlayerProfile fillPlayerProfile(PlayerProfile playerProfile); public abstract PlayerProfile getPlayerProfile(Player player); public abstract ProfileEditor getProfileEditor(); public abstract BiomeNMS getBiomeNMS(Biome biome); public abstract Thread getMainThread(); public abstract double[] getRecentTps(); public abstract AnimationHelper getAnimationHelper(); public abstract BlockHelper getBlockHelper(); public abstract ChunkHelper getChunkHelper(); public abstract CustomEntityHelper getCustomEntityHelper(); public abstract EntityHelper getEntityHelper(); public abstract FishingHelper getFishingHelper(); public abstract ItemHelper getItemHelper(); public abstract SoundHelper getSoundHelper(); public abstract PacketHelper getPacketHelper(); public abstract ParticleHelper getParticleHelper(); public abstract PlayerHelper getPlayerHelper(); public abstract WorldHelper getWorldHelper(); public abstract void enablePacketInterception(PacketHandler packetHandler); public abstract CompoundTag createCompoundTag(Map<String, Tag> value); public abstract int getPort(); }