made displayName independent of other appliances

This commit is contained in:
2025-04-11 19:16:13 +02:00
parent d1b5d81fa7
commit 32cbbe6c51
8 changed files with 43 additions and 26 deletions

View File

@ -21,6 +21,7 @@ public final class Main extends JavaPlugin {
private List<Appliance> appliances;
private RepositoryLoader repositoryLoader;
private Reflections reflections;
@Override
public void onEnable() {
@ -39,15 +40,15 @@ public final class Main extends JavaPlugin {
Configuration.readConfig();
List<String> disabledAppliances = Configuration.pluginConfig.getStringList("disabledAppliances");
Main.logger().info("Initializing reflections...");
this.reflections = new Reflections("eu.mhsl.craftattack.spawn");
Main.logger().info("Loading Repositories...");
this.repositoryLoader = new RepositoryLoader();
Main.logger().info(String.format("Loaded %d repositories!", this.repositoryLoader.getRepositories().size()));
Main.logger().info("Loading appliances...");
Reflections reflections = new Reflections("eu.mhsl.craftattack.spawn");
Set<Class<? extends Appliance>> applianceClasses = reflections.getSubTypesOf(Appliance.class);
this.appliances = applianceClasses.stream()
this.appliances = this.findSubtypesOf(Appliance.class).stream()
.filter(applianceClass -> !disabledAppliances.contains(applianceClass.getSimpleName()))
.map(applianceClass -> {
try {
@ -97,6 +98,10 @@ public final class Main extends JavaPlugin {
.orElseThrow(() -> new RuntimeException(String.format("Appliance %s not loaded or instantiated!", clazz)));
}
public <T> Set<Class<? extends T>> findSubtypesOf(Class<T> type) {
return this.reflections.getSubTypesOf(type);
}
@SuppressWarnings("unchecked")
public static <T> Class<T> getApplianceType(Class<?> clazz) {
return (Class<T>) ((ParameterizedType) clazz.getGenericSuperclass()).getActualTypeArguments()[0];