diff --git a/nms/nms-common/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.java b/nms/nms-common/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.java new file mode 100644 index 0000000..4ba1b2e --- /dev/null +++ b/nms/nms-common/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.java @@ -0,0 +1,41 @@ +package xyz.alexcrea.cuanvil.dependency.packet; + +import org.bukkit.Bukkit; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class PacketManagerSelector { + + private PacketManagerSelector(){} + + public static @NotNull PacketManager selectPacketManager(boolean forceProtocolib){ + // Try to find version + if(forceProtocolib){ + PacketManager protocolibPacketManager = getProtocolibIfPresent(); + if(protocolibPacketManager != null) return protocolibPacketManager; + } + + PacketManager versionSpecificManager = getVersionSpecificManager(); + if(versionSpecificManager != null) return versionSpecificManager; + + if(!forceProtocolib){ + PacketManager protocolibPacketManager = getProtocolibIfPresent(); + if(protocolibPacketManager != null) return protocolibPacketManager; + } + return new NoPacketManager(); + } + + private static @Nullable PacketManager getProtocolibIfPresent(){ + if(Bukkit.getPluginManager().isPluginEnabled("ProtocolLib")) return new ProtocoLibWrapper(); + return null; + } + + private static @Nullable PacketManager getVersionSpecificManager() { + + + //TODO depending on version. find the manager ! + + return null; + } + +} diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt index a0abd54..1fcdf8c 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt @@ -1,9 +1,9 @@ package xyz.alexcrea.cuanvil.dependency import org.bukkit.Bukkit -import xyz.alexcrea.cuanvil.dependency.packet.NoPacketManager +import xyz.alexcrea.cuanvil.config.ConfigHolder import xyz.alexcrea.cuanvil.dependency.packet.PacketManager -import xyz.alexcrea.cuanvil.dependency.packet.ProtocoLibWrapper +import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerSelector object DependencyManager { @@ -15,9 +15,8 @@ object DependencyManager { val pluginManager = Bukkit.getPluginManager() // ProtocolLib dependency - packetManager = - if(pluginManager.isPluginEnabled("ProtocolLib")) ProtocoLibWrapper() - else NoPacketManager() + val forceProtocolib = ConfigHolder.DEFAULT_CONFIG.config.getBoolean("force_protocolib", false) + packetManager = PacketManagerSelector.selectPacketManager(forceProtocolib) // Enchantment Squared dependency if(pluginManager.isPluginEnabled("EnchantsSquared")){