From f27474016aeeb4d600f93d2746b48376faffb31f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sun, 9 Nov 2025 19:31:25 +0100 Subject: [PATCH] added `@Flags` annotation to `Appliance`, disabled `DeviceFingerprinting` appliance by default --- .../tooling/deviceFingerprinting/DeviceFingerprinting.java | 1 + .../src/main/java/eu/mhsl/craftattack/spawn/core/Main.java | 5 +++++ .../mhsl/craftattack/spawn/core/appliance/Appliance.java | 7 +++++++ 3 files changed, 13 insertions(+) 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;