added @Flags annotation to Appliance, disabled DeviceFingerprinting appliance by default

This commit is contained in:
2025-11-09 19:31:25 +01:00
parent 17e5b2e049
commit f27474016a
3 changed files with 13 additions and 0 deletions

View File

@@ -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";

View File

@@ -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();

View File

@@ -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<Listener> listeners;
private List<ApplianceCommand<?>> commands;