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.net.URI;
import java.util.*; import java.util.*;
@Appliance.Flags(enabled = false)
public class DeviceFingerprinting extends Appliance { public class DeviceFingerprinting extends Appliance {
public record PackInfo(@NotNull String url, @NotNull UUID uuid, @NotNull String hash) { public record PackInfo(@NotNull String url, @NotNull UUID uuid, @NotNull String hash) {
private static final String failingUrl = "http://127.0.0.1:0"; 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..."); Main.logger().info("Loading appliances...");
this.appliances = this.findSubtypesOf(Appliance.class).stream() this.appliances = this.findSubtypesOf(Appliance.class).stream()
.filter(applianceClass -> !disabledAppliances.contains(applianceClass.getSimpleName())) .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 -> { .map(applianceClass -> {
try { try {
return (Appliance) applianceClass.getDeclaredConstructor().newInstance(); return (Appliance) applianceClass.getDeclaredConstructor().newInstance();

View File

@@ -13,6 +13,8 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -23,6 +25,11 @@ import java.util.Optional;
* Appliances can be enabled or disabled independent of other appliances * Appliances can be enabled or disabled independent of other appliances
*/ */
public abstract class Appliance { public abstract class Appliance {
@Retention(RetentionPolicy.RUNTIME)
public @interface Flags {
boolean enabled() default true;
}
private String localConfigPath; private String localConfigPath;
private List<Listener> listeners; private List<Listener> listeners;
private List<ApplianceCommand<?>> commands; private List<ApplianceCommand<?>> commands;