From 6c5eab6fff7ce35228e7885cb768cdeef9e26b51 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Thu, 8 Aug 2024 04:21:23 +0200 Subject: [PATCH] Add new Packet Manager Selector --- .../packet/PacketManagerSelector.java | 41 +++++++++++++++++++ .../cuanvil/dependency/DependencyManager.kt | 9 ++-- 2 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 nms/nms-common/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/packet/PacketManagerSelector.java 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")){