From ae8335586067970802a33202dd593782ad71630d Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Sat, 29 Apr 2023 22:57:40 -0500 Subject: [PATCH] feat: add LibsDisguise hook, resolves #85 --- build.gradle.kts | 2 +- common/build.gradle.kts | 3 ++ .../hibiscusmc/hmccosmetics/hooks/Hooks.java | 6 ++-- .../hooks/misc/HookLibsDisguises.java | 32 +++++++++++++++++++ 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookLibsDisguises.java diff --git a/build.gradle.kts b/build.gradle.kts index 5e842823..fe62d3dc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -168,7 +168,7 @@ bukkit { apiVersion = "1.17" authors = listOf("LoJoSho") depend = listOf("ProtocolLib") - softDepend = listOf("ModelEngine", "Oraxen", "ItemsAdder", "Looty", "HMCColor", "WorldGuard", "MythicMobs", "PlaceholderAPI", "SuperVanish", "PremiumVanish") + softDepend = listOf("ModelEngine", "Oraxen", "ItemsAdder", "Looty", "HMCColor", "WorldGuard", "MythicMobs", "PlaceholderAPI", "SuperVanish", "PremiumVanish", "LibsDisguises") version = "${project.version}" commands { diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 060ffef5..cff19603 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -19,6 +19,9 @@ dependencies { compileOnly("it.unimi.dsi:fastutil:8.5.11") compileOnly("io.lumine:Mythic-Dist:5.2.1") compileOnly("com.github.LeonMangler:SuperVanish:6.2.6-4") + compileOnlyApi("LibsDisguises:LibsDisguises:10.0.21") { + exclude("org.spigotmc", "spigot") + } //compileOnly("com.github.Fisher2911:FisherLib:master-SNAPSHOT") implementation("net.kyori:adventure-api:4.12.0") diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java index 7c6ed5e9..47eea18a 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java @@ -2,10 +2,7 @@ package com.hibiscusmc.hmccosmetics.hooks; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.hooks.items.*; -import com.hibiscusmc.hmccosmetics.hooks.misc.HookCMI; -import com.hibiscusmc.hmccosmetics.hooks.misc.HookHMCColor; -import com.hibiscusmc.hmccosmetics.hooks.misc.HookPremiumVanish; -import com.hibiscusmc.hmccosmetics.hooks.misc.HookSuperVanish; +import com.hibiscusmc.hmccosmetics.hooks.misc.*; import com.hibiscusmc.hmccosmetics.hooks.placeholders.HookPlaceholderAPI; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -28,6 +25,7 @@ public class Hooks { private static HookSuperVanish SUPER_VANISH_HOOK = new HookSuperVanish(); private static HookHMCColor HMC_COLOR_HOOK = new HookHMCColor(); private static HookCMI CMI_HOOK = new HookCMI(); + private static HookLibsDisguises LIBS_DISGUISES_HOOK = new HookLibsDisguises(); public static Hook getHook(@NotNull String id) { return hooks.get(id.toLowerCase()); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookLibsDisguises.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookLibsDisguises.java new file mode 100644 index 00000000..4f540674 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/misc/HookLibsDisguises.java @@ -0,0 +1,32 @@ +package com.hibiscusmc.hmccosmetics.hooks.misc; + +import com.hibiscusmc.hmccosmetics.hooks.Hook; +import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import com.hibiscusmc.hmccosmetics.user.CosmeticUsers; +import me.libraryaddict.disguise.events.DisguiseEvent; +import me.libraryaddict.disguise.events.UndisguiseEvent; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.jetbrains.annotations.NotNull; + +public class HookLibsDisguises extends Hook { + public HookLibsDisguises() { + super("LibsDisguises"); + } + + @EventHandler + public void onPlayerVanish(@NotNull DisguiseEvent event) { + if (!(event.getEntity() instanceof Player player)) return; + CosmeticUser user = CosmeticUsers.getUser(player); + if (user == null) return; + user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN); + } + + @EventHandler + public void onPlayerShow(@NotNull UndisguiseEvent event) { + if (!(event.getEntity() instanceof Player player)) return; + CosmeticUser user = CosmeticUsers.getUser(player); + if (user == null) return; + user.showCosmetics(); + } +}