Skip to content

Commit 38fa90d

Browse files
Add listener to handle Spartan compatibility
1 parent 14c1dbc commit 38fa90d

File tree

3 files changed

+51
-3
lines changed

3 files changed

+51
-3
lines changed

src/main/java/org/maxgamer/quickshop/api/compatibility/CompatibilityModule.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@ public interface CompatibilityModule {
3131
*/
3232
@NotNull String getName();
3333

34+
/***
35+
* Call on registering module
36+
*/
37+
default void register() {
38+
39+
}
40+
41+
/**
42+
* Call on unregister module
43+
*/
44+
default void unregister() {
45+
46+
}
47+
3448
/**
3549
* Gets the CompatibilityModule provider plugin instance
3650
*

src/main/java/org/maxgamer/quickshop/util/compatibility/SimpleCompatibilityManager.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public void unregisterAll() {
102102
public void register(@NotNull CompatibilityModule module) {
103103
if (!registeredModules.containsKey(module.getName())) {
104104
plugin.getLogger().info("Registering " + module.getName() + " Compatibility Module");
105+
module.register();
105106
registeredModules.put(module.getName(), module);
106107
}
107108
}
@@ -128,12 +129,16 @@ public void register(@NotNull Class<? extends CompatibilityModule> compatibility
128129
@Override
129130
public void unregister(@NotNull String moduleName) {
130131
plugin.getLogger().info("Unregistering " + moduleName + " compatibility module");
131-
registeredModules.remove(moduleName);
132+
CompatibilityModule module = registeredModules.remove(moduleName);
133+
if (module != null) {
134+
module.unregister();
135+
}
132136
}
133137

134138
@Override
135139
public void unregister(@NotNull CompatibilityModule module) {
136140
plugin.getLogger().info("Unregistering " + module.getName() + " compatibility module");
137141
registeredModules.remove(module.getName());
142+
module.unregister();
138143
}
139144
}

src/main/java/org/maxgamer/quickshop/util/compatibility/SpartanCompatibilityModule.java

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,34 +21,63 @@
2121

2222

2323
import me.vagdedes.spartan.api.API;
24+
import me.vagdedes.spartan.api.PlayerViolationEvent;
2425
import me.vagdedes.spartan.system.Enums;
2526
import org.bukkit.entity.Player;
27+
import org.bukkit.event.EventHandler;
28+
import org.bukkit.event.EventPriority;
29+
import org.bukkit.event.HandlerList;
30+
import org.bukkit.event.Listener;
2631
import org.jetbrains.annotations.NotNull;
2732
import org.maxgamer.quickshop.QuickShop;
2833
import org.maxgamer.quickshop.api.compatibility.AbstractQSCompatibilityModule;
2934
import org.maxgamer.quickshop.util.Util;
3035

31-
public class SpartanCompatibilityModule extends AbstractQSCompatibilityModule {
36+
import java.util.Set;
37+
import java.util.UUID;
38+
import java.util.concurrent.ConcurrentSkipListSet;
39+
40+
public class SpartanCompatibilityModule extends AbstractQSCompatibilityModule implements Listener {
3241

3342
public SpartanCompatibilityModule(QuickShop plugin) {
3443
super(plugin);
3544
}
3645

46+
private final Set<UUID> ignoreList = new ConcurrentSkipListSet<>();
47+
48+
@Override
49+
public void register() {
50+
plugin.getServer().getPluginManager().registerEvents(this, plugin);
51+
}
52+
53+
@Override
54+
public void unregister() {
55+
HandlerList.unregisterAll(this);
56+
}
57+
3758
@Override
3859
public @NotNull String getName() {
3960
return "Spartan";
4061
}
4162

63+
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
64+
public void onPlayerViolation(PlayerViolationEvent event) {
65+
if (ignoreList.contains(event.getPlayer().getUniqueId())) {
66+
event.setCancelled(true);
67+
}
68+
}
69+
4270
@Override
4371
public void toggle(@NotNull Player player, boolean status) {
4472
if (status) {
4573
Util.debugLog(
4674
"Calling Spartan continue follow " + player.getName() + " cheats detection.");
47-
75+
ignoreList.remove(player.getUniqueId());
4876
for (Enums.HackType value : Enums.HackType.values()) {
4977
API.startCheck(player, value);
5078
}
5179
} else {
80+
ignoreList.add(player.getUniqueId());
5281
Util.debugLog(
5382
"Calling Spartan ignore "
5483
+ player.getName()

0 commit comments

Comments
 (0)