diff --git a/README.md b/README.md index 087251c..a15b249 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Please note that these spigots are supported through public APIs. - ImanitySpigot - AzuriteSpigot - FoxSpigot +- KnockbackManager (Plugin) ## Installation diff --git a/core/build.gradle.kts b/core/build.gradle.kts index b4c1d9d..85a0005 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -48,6 +48,7 @@ dependencies { implementation(project(":impl:carbon-legacy")) implementation(project(":impl:imanity")) implementation(project(":impl:foxspigot")) + implementation(project(":impl:knockbackmanager")) implementation(project(":impl:azurite")) } diff --git a/core/src/main/java/xyz/refinedev/api/knockback/KnockbackHandler.java b/core/src/main/java/xyz/refinedev/api/knockback/KnockbackHandler.java index d7e904c..d1ea326 100644 --- a/core/src/main/java/xyz/refinedev/api/knockback/KnockbackHandler.java +++ b/core/src/main/java/xyz/refinedev/api/knockback/KnockbackHandler.java @@ -10,6 +10,7 @@ import xyz.refinedev.api.knockback.carbon.CarbonLegacyHook; import xyz.refinedev.api.knockback.foxspigot.FoxSpigotHook; import xyz.refinedev.api.knockback.imanity.ImanityHook; +import xyz.refinedev.api.knockback.knockbackmanager.KnockbackManagerHook; import java.util.HashSet; import java.util.Set; @@ -37,6 +38,7 @@ public void init() { this.registerHook(new ImanityHook()); this.registerHook(new AzuriteHook()); this.registerHook(new FoxSpigotHook()); + this.registerHook(new KnockbackManagerHook()); this.hook = this.detect(); if (this.hook == null) { diff --git a/impl/knockbackmanager/build.gradle.kts b/impl/knockbackmanager/build.gradle.kts new file mode 100644 index 0000000..aee11e8 --- /dev/null +++ b/impl/knockbackmanager/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + id("java") +} + +group = "xyz.refinedev.api" +version = "1.0.0" + +dependencies { + compileOnly(project(":api")) + // KnockbackManager API dependency + compileOnly(files("../lib/KnockbackManager-1.13.4.jar")) +} \ No newline at end of file diff --git a/impl/knockbackmanager/lib/KnockbackManager-1.13.4.jar b/impl/knockbackmanager/lib/KnockbackManager-1.13.4.jar new file mode 100644 index 0000000..93c354d Binary files /dev/null and b/impl/knockbackmanager/lib/KnockbackManager-1.13.4.jar differ diff --git a/impl/knockbackmanager/src/main/java/xyz/refinedev/api/knockback/knockbackmanager/KnockbackManagerHook.java b/impl/knockbackmanager/src/main/java/xyz/refinedev/api/knockback/knockbackmanager/KnockbackManagerHook.java new file mode 100644 index 0000000..5df2993 --- /dev/null +++ b/impl/knockbackmanager/src/main/java/xyz/refinedev/api/knockback/knockbackmanager/KnockbackManagerHook.java @@ -0,0 +1,49 @@ +package xyz.refinedev.api.knockback.knockbackmanager; + +import me.dw1e.kbm.KnockbackManager; +import me.dw1e.kbm.api.KnockbackManagerAPI; + +import org.bukkit.entity.Player; + +import org.jetbrains.annotations.NotNull; + +import xyz.refinedev.api.knockback.KnockbackHook; + +/** + *

+ * This code is the property of Refine Development.
+ * Copyright © 2025, All Rights Reserved.
+ *

+ * + * @author KLxier (Refinedev.org: thehale_dc) + * @version KnockbackAPI + * @since 2026/5/3 + */ +public class KnockbackManagerHook implements KnockbackHook { + + @Override + public String getName() { + return "KnockbackManager"; + } + + @Override + public boolean isApplicable() { + return applicable; + } + + @Override + public void setKnockback(@NotNull Player player, @NotNull String knockbackProfile) { + KnockbackManagerAPI kbmAPI = KnockbackManager.getInstance().getAPI(); + kbmAPI.setKBFile(player, knockbackProfile); + } + + private static boolean applicable; + static { + try { + Class.forName("me.dw1e.kbm.KnockbackManager"); + applicable = true; + } catch (ClassNotFoundException e) { + applicable = false; + } + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index cfc915b..6eeec62 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,3 +18,5 @@ include("impl:carbon") findProject(":impl:carbon")?.name = "carbon" include("impl:carbon-legacy") findProject(":impl:carbon-legacy")?.name = "carbon-legacy" +include("impl:knockbackmanager") +findProject(":impl:knockbackmanager")?.name = "knockbackmanager"