diff --git a/build.gradle b/build.gradle index 81d3a5a..bd042d1 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { group = 'dev.unnm3d' -version = '5.5.15' +version = '5.5.16' repositories { @@ -19,6 +19,7 @@ repositories { maven { url 'https://repo.maven.apache.org/maven2/' } maven { url "https://repo.william278.net/snapshots" } maven { url 'https://repo.essentialsx.net/releases/' } + maven { url "https://repo.sayandev.org/snapshots" } } dependencies { @@ -54,6 +55,7 @@ dependencies { compileOnly 'com.github.MilkBowl:VaultAPI:1.7' exclude(group: 'org.bukkit', module: 'bukkit') compileOnly 'com.github.oraxen:oraxen:1.162.0' compileOnly 'com.github.LeonMangler:PremiumVanishAPI:2.8.8' + compileOnly "org.sayandev:sayanvanish-api:1.7.3-SNAPSHOT" compileOnly 'org.projectlombok:lombok:1.18.34' compileOnly 'org.spicord:spicord-common:5.7.2' compileOnly 'net.dv8tion:JDA:5.0.0-beta.16' diff --git a/src/main/java/dev/unnm3d/redischat/RedisChat.java b/src/main/java/dev/unnm3d/redischat/RedisChat.java index 203adf9..d18514c 100644 --- a/src/main/java/dev/unnm3d/redischat/RedisChat.java +++ b/src/main/java/dev/unnm3d/redischat/RedisChat.java @@ -23,10 +23,7 @@ import dev.unnm3d.redischat.discord.DiscordWebhook; import dev.unnm3d.redischat.discord.IDiscordHook; import dev.unnm3d.redischat.discord.SpicordHook; -import dev.unnm3d.redischat.integrations.EssentialsVanishIntegration; -import dev.unnm3d.redischat.integrations.OraxenTagResolver; -import dev.unnm3d.redischat.integrations.PremiumVanishIntegration; -import dev.unnm3d.redischat.integrations.SuperVanishIntegration; +import dev.unnm3d.redischat.integrations.*; import dev.unnm3d.redischat.mail.MailGUIManager; import dev.unnm3d.redischat.mail.MailUniformCommand; import dev.unnm3d.redischat.moderation.MuteCommand; @@ -240,6 +237,10 @@ public void onEnable() { getLogger().info("SuperVanish found, enabling integration"); playerListManager.addVanishIntegration(new EssentialsVanishIntegration(this)); } + if (getServer().getPluginManager().getPlugin("SayanVanish") != null) { + getLogger().info("SayanVanish found, enabling integration"); + playerListManager.addVanishIntegration(new SayanVanishIntegration()); + } if (getServer().getPluginManager().getPlugin("Spicord") != null && config.spicord.enabled()) { getLogger().info("Spicord found, enabling integration"); this.discordHook = new SpicordHook(this); diff --git a/src/main/java/dev/unnm3d/redischat/integrations/SayanVanishIntegration.java b/src/main/java/dev/unnm3d/redischat/integrations/SayanVanishIntegration.java new file mode 100644 index 0000000..79d1dd3 --- /dev/null +++ b/src/main/java/dev/unnm3d/redischat/integrations/SayanVanishIntegration.java @@ -0,0 +1,33 @@ +package dev.unnm3d.redischat.integrations; + +import dev.unnm3d.redischat.api.VanishIntegration; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.sayandev.sayanvanish.api.SayanVanishAPI; +import org.sayandev.sayanvanish.api.User; + +public class SayanVanishIntegration implements VanishIntegration { + + private final SayanVanishAPI sayanVanishAPI; + + public SayanVanishIntegration() { + this.sayanVanishAPI = SayanVanishAPI.getInstance(); + } + + @Override + public boolean canSee(CommandSender viewer, String playerName) { + // Viewers with vanish permission can always see + if (viewer.hasPermission("sayanvanish.vanish.use")) { + return true; + } + + // Check if the player is vanished + return sayanVanishAPI.getVanishedUsers().stream() + .noneMatch(user -> user.getUsername().equalsIgnoreCase(playerName)); + } + + @Override + public boolean isVanished(Player player) { + return player != null && sayanVanishAPI.isVanished(player.getUniqueId()); + } +}