diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/tooling/deviceFingerprinting/DeviceFingerprinting.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/tooling/deviceFingerprinting/DeviceFingerprinting.java index 92147c3..93215e0 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/tooling/deviceFingerprinting/DeviceFingerprinting.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/tooling/deviceFingerprinting/DeviceFingerprinting.java @@ -19,6 +19,7 @@ import java.lang.reflect.Type; import java.net.URI; import java.util.*; +@Appliance.Flags(enabled = false) public class DeviceFingerprinting extends Appliance { public record PackInfo(@NotNull String url, @NotNull UUID uuid, @NotNull String hash) { private static final String failingUrl = "http://127.0.0.1:0"; diff --git a/core/src/main/java/eu/mhsl/craftattack/spawn/core/Main.java b/core/src/main/java/eu/mhsl/craftattack/spawn/core/Main.java index 6eaa8ec..e666a90 100644 --- a/core/src/main/java/eu/mhsl/craftattack/spawn/core/Main.java +++ b/core/src/main/java/eu/mhsl/craftattack/spawn/core/Main.java @@ -51,6 +51,11 @@ public final class Main extends JavaPlugin { Main.logger().info("Loading appliances..."); this.appliances = this.findSubtypesOf(Appliance.class).stream() .filter(applianceClass -> !disabledAppliances.contains(applianceClass.getSimpleName())) + .filter(appliance -> { + Appliance.Flags flags = appliance.getAnnotation(Appliance.Flags.class); + if(flags == null) return true; + return flags.enabled(); + }) .map(applianceClass -> { try { return (Appliance) applianceClass.getDeclaredConstructor().newInstance(); diff --git a/core/src/main/java/eu/mhsl/craftattack/spawn/core/appliance/Appliance.java b/core/src/main/java/eu/mhsl/craftattack/spawn/core/appliance/Appliance.java index 05eb73a..9650759 100644 --- a/core/src/main/java/eu/mhsl/craftattack/spawn/core/appliance/Appliance.java +++ b/core/src/main/java/eu/mhsl/craftattack/spawn/core/appliance/Appliance.java @@ -13,6 +13,8 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.List; @@ -23,6 +25,11 @@ import java.util.Optional; * Appliances can be enabled or disabled independent of other appliances */ public abstract class Appliance { + @Retention(RetentionPolicy.RUNTIME) + public @interface Flags { + boolean enabled() default true; + } + private String localConfigPath; private List listeners; private List> commands;