From 5b61abfd0778041532683cfca3dd7759a22500fa Mon Sep 17 00:00:00 2001 From: 2008Choco Date: Tue, 27 Aug 2024 15:35:54 -0500 Subject: [PATCH] Support Negativity Anti Cheat --- gradle/libs.versions.toml | 2 ++ veinminer-bukkit/build.gradle.kts | 1 + .../wtf/choco/veinminer/VeinMinerPlugin.java | 2 ++ .../anticheat/AntiCheatHookNegativity.java | 35 +++++++++++++++++++ .../src/main/resources/plugin.yml | 1 + 5 files changed, 41 insertions(+) create mode 100644 veinminer-bukkit/src/main/java/wtf/choco/veinminer/anticheat/AntiCheatHookNegativity.java diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b93ab38..ea51662 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,7 @@ anticheat-matrix = "317d4635fd" # This repository is dead now, but we're going t anticheat-nocheatplus = "3.16.1-SNAPSHOT" anticheat-spartan = "1.0" anticheat-light = "99d1930f2a" # https://github.com/tiredvekster/LightAntiCheat/commit/99d1930f2afa0e5dd23a5e212aadf49499e3fd83 +anticheat-negativity = "2.7.1" bstats = "3.0.2" mcmmo = "2.1.228" placeholder-api = "2.11.5" @@ -44,6 +45,7 @@ anticheat-matrix = { module = "com.github.jiangdashao:matrix-api-repo", version. anticheat-nocheatplus = { module = "fr.neatmonster:nocheatplus", version.ref = "anticheat-nocheatplus" } anticheat-spartan = { module = "me.vagdedes:SpartanAPI", version.ref = "anticheat-spartan" } anticheat-light = { module = "com.github.tiredvekster:LightAntiCheat", version.ref = "anticheat-light" } +anticheat-negativity = { module = "com.github.Elikill58:Negativity", version.ref = "anticheat-negativity" } bstats-base = { module = "org.bstats:bstats-base", version.ref = "bstats" } bstats-bukkit = { module = "org.bstats:bstats-bukkit", version.ref = "bstats" } choco-networking-bukkit = { module = "wtf.choco:networking-bukkit", version.ref = "choco-networking" } diff --git a/veinminer-bukkit/build.gradle.kts b/veinminer-bukkit/build.gradle.kts index ab78ecd..6eb88ff 100644 --- a/veinminer-bukkit/build.gradle.kts +++ b/veinminer-bukkit/build.gradle.kts @@ -37,6 +37,7 @@ dependencies { compileOnly(libs.anticheat.nocheatplus) compileOnly(libs.anticheat.spartan) compileOnly(libs.anticheat.light) + compileOnly(libs.anticheat.negativity) testImplementation(libs.junit.jupiter.api) testRuntimeOnly(libs.junit.jupiter.engine) diff --git a/veinminer-bukkit/src/main/java/wtf/choco/veinminer/VeinMinerPlugin.java b/veinminer-bukkit/src/main/java/wtf/choco/veinminer/VeinMinerPlugin.java index 238c91c..83a8935 100644 --- a/veinminer-bukkit/src/main/java/wtf/choco/veinminer/VeinMinerPlugin.java +++ b/veinminer-bukkit/src/main/java/wtf/choco/veinminer/VeinMinerPlugin.java @@ -33,6 +33,7 @@ import wtf.choco.veinminer.anticheat.AntiCheatHookLightAntiCheat; import wtf.choco.veinminer.anticheat.AntiCheatHookMatrix; import wtf.choco.veinminer.anticheat.AntiCheatHookNCP; +import wtf.choco.veinminer.anticheat.AntiCheatHookNegativity; import wtf.choco.veinminer.anticheat.AntiCheatHookSpartan; import wtf.choco.veinminer.command.CommandBlocklist; import wtf.choco.veinminer.command.CommandToollist; @@ -162,6 +163,7 @@ public void onEnable() { this.registerAntiCheatHookIfEnabled(manager, "GrimAC", () -> new AntiCheatHookGrim(this)); this.registerAntiCheatHookIfEnabled(manager, "LightAntiCheat", AntiCheatHookLightAntiCheat::new); this.registerAntiCheatHookIfEnabled(manager, "Matrix", AntiCheatHookMatrix::new); + this.registerAntiCheatHookIfEnabled(manager, "Negativity", AntiCheatHookNegativity::new); this.registerAntiCheatHookIfEnabled(manager, "NoCheatPlus", () -> new AntiCheatHookNCP(this)); this.registerAntiCheatHookIfEnabled(manager, "Spartan", () -> new AntiCheatHookSpartan(this)); diff --git a/veinminer-bukkit/src/main/java/wtf/choco/veinminer/anticheat/AntiCheatHookNegativity.java b/veinminer-bukkit/src/main/java/wtf/choco/veinminer/anticheat/AntiCheatHookNegativity.java new file mode 100644 index 0000000..20e084a --- /dev/null +++ b/veinminer-bukkit/src/main/java/wtf/choco/veinminer/anticheat/AntiCheatHookNegativity.java @@ -0,0 +1,35 @@ +package wtf.choco.veinminer.anticheat; + +import com.elikill58.negativity.universal.bypass.BypassManager; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +public final class AntiCheatHookNegativity implements AntiCheatHook { + + private final Set exempt = new HashSet<>(); + + public AntiCheatHookNegativity() { + BypassManager.addBypassChecker((player, cheat) -> exempt.contains(player.getUniqueId())); + } + + @Override + public void exempt(@NotNull Player player) { + this.exempt.add(player.getUniqueId()); + } + + @Override + public void unexempt(@NotNull Player player) { + this.exempt.remove(player.getUniqueId()); + } + + @Override + public boolean shouldUnexempt(@NotNull Player player) { + return exempt.contains(player.getUniqueId()); + } + +} diff --git a/veinminer-bukkit/src/main/resources/plugin.yml b/veinminer-bukkit/src/main/resources/plugin.yml index 3ec643b..dbea34b 100644 --- a/veinminer-bukkit/src/main/resources/plugin.yml +++ b/veinminer-bukkit/src/main/resources/plugin.yml @@ -12,6 +12,7 @@ softdepend: - GrimAC - LightAntiCheat - Matrix +- Negativity - NoCheatPlus - Spartan # others