From a9fcce5c885bd159d629c48697faaae7a91bae71 Mon Sep 17 00:00:00 2001 From: Syrent Date: Wed, 7 Feb 2024 15:59:47 +0330 Subject: [PATCH] fix: Velocitab compatibility --- .../velocityvanish/velocity/VelocityVanish.kt | 11 +++++++++- .../velocity/bridge/VelocityBridgeManager.kt | 1 + .../velocity/hooks/VelocitabHook.kt | 22 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ir/syrent/velocityvanish/velocity/hooks/VelocitabHook.kt diff --git a/src/main/java/ir/syrent/velocityvanish/velocity/VelocityVanish.kt b/src/main/java/ir/syrent/velocityvanish/velocity/VelocityVanish.kt index 2903570c..05906e43 100644 --- a/src/main/java/ir/syrent/velocityvanish/velocity/VelocityVanish.kt +++ b/src/main/java/ir/syrent/velocityvanish/velocity/VelocityVanish.kt @@ -10,6 +10,7 @@ import com.velocitypowered.api.proxy.messages.ChannelMessageSource import ir.syrent.velocityvanish.velocity.bridge.VelocityBridge import ir.syrent.velocityvanish.velocity.bridge.VelocityBridgeManager import ir.syrent.velocityvanish.velocity.command.ForceVanishCommand +import ir.syrent.velocityvanish.velocity.hooks.VelocitabHook import ir.syrent.velocityvanish.velocity.listener.ProxyPingListener import ir.syrent.velocityvanish.velocity.listener.TabCompleteListener import ir.syrent.velocityvanish.velocity.vruom.VRUoMPlugin @@ -19,6 +20,7 @@ import net.minecrell.serverlistplus.core.ServerListPlusCore import net.minecrell.serverlistplus.core.replacement.LiteralPlaceholder import net.minecrell.serverlistplus.core.replacement.ReplacementManager import net.minecrell.serverlistplus.core.status.StatusResponse +import net.william278.velocitab.api.VelocitabAPI import org.slf4j.Logger import java.io.File import java.nio.file.Path @@ -33,6 +35,8 @@ class VelocityVanish @Inject constructor( lateinit var bridgeManager: VelocityBridgeManager private set + var velocitabHook: VelocitabHook? = null + /* * Note: This is not the best way to do this, but for time being it's fine. * TODO: Create a VanishedPlayer object with serializer and deserializer. @@ -46,6 +50,11 @@ class VelocityVanish @Inject constructor( private fun onProxyInitialization(event: ProxyInitializeEvent) { instance = this + try { + velocitabHook = VelocitabHook() + VelocitabAPI.getInstance().vanishIntegration = velocitabHook + } catch (_: ClassNotFoundException) { } + initializeMessagingChannels() initializeListeners() createFolder() @@ -128,7 +137,7 @@ class VelocityVanish @Inject constructor( } private fun createFolder() { - val dataFile = VRUoMPlugin.getDataDirectory().toFile() + val dataFile = getDataDirectory().toFile() if (!dataFile.exists()) { dataFile.mkdir() } diff --git a/src/main/java/ir/syrent/velocityvanish/velocity/bridge/VelocityBridgeManager.kt b/src/main/java/ir/syrent/velocityvanish/velocity/bridge/VelocityBridgeManager.kt index 0096070d..9a6daf78 100644 --- a/src/main/java/ir/syrent/velocityvanish/velocity/bridge/VelocityBridgeManager.kt +++ b/src/main/java/ir/syrent/velocityvanish/velocity/bridge/VelocityBridgeManager.kt @@ -66,6 +66,7 @@ class VelocityBridgeManager( if (player != null) { try { VelocitabAPI.getInstance().vanishPlayer(player) + VelocitabAPI.getInstance().tabList.updateDisplayNames() } catch (_: NoClassDefFoundError) {} } VRuom.getServer().eventManager.fire(VelocityVanishEvent(player, name)) diff --git a/src/main/java/ir/syrent/velocityvanish/velocity/hooks/VelocitabHook.kt b/src/main/java/ir/syrent/velocityvanish/velocity/hooks/VelocitabHook.kt new file mode 100644 index 00000000..987d2934 --- /dev/null +++ b/src/main/java/ir/syrent/velocityvanish/velocity/hooks/VelocitabHook.kt @@ -0,0 +1,22 @@ +package ir.syrent.velocityvanish.velocity.hooks + +import ir.syrent.velocityvanish.velocity.VelocityVanish +import ir.syrent.velocityvanish.velocity.vruom.VRuom +import net.william278.velocitab.vanish.VanishIntegration +import kotlin.jvm.optionals.getOrNull + +class VelocitabHook : VanishIntegration { + + + override fun canSee(name: String, otherName: String): Boolean { + return if (VelocityVanish.instance.vanishedPlayers.contains(name) && VelocityVanish.instance.vanishedPlayers.contains(otherName)) true + else if (VRuom.getPlayer(name)?.getOrNull()?.hasPermission("velocityvanish.admin.seevanished") == true) true + else if (VelocityVanish.instance.vanishedPlayers.contains(otherName)) false + else true + } + + override fun isVanished(name: String): Boolean { + return VelocityVanish.instance.vanishedPlayers.contains(name) + } + +} \ No newline at end of file