Fix ImplementationRegistry

This commit is contained in:
天クマ 2026-05-23 15:09:19 -03:00
commit 623e581623
7 changed files with 26 additions and 14 deletions

View file

@ -1,4 +1,4 @@
package org.adrianvictor.lib.configuration; package org.adrianvictor.lib.impl.b1_7_3.configuration;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;

View file

@ -1,4 +1,4 @@
package org.adrianvictor.lib.text; package org.adrianvictor.lib.impl.b1_7_3.text;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;

View file

@ -5,6 +5,6 @@ import org.adrianvictor.lib.reflection.ImplementationRegistry;
public class Configuration { public class Configuration {
public static ConfigurationProvider create(ImplementationRegistry registry) { public static ConfigurationProvider create(ImplementationRegistry registry) {
return registry.getInstance(ConfigurationProvider.class, "org.adrianvictor.lib.configuraion"); return registry.getInstance(ConfigurationProvider.class);
} }
} }

View file

@ -8,17 +8,29 @@ public class ImplementationRegistry {
this.classSuffix = classSuffix; this.classSuffix = classSuffix;
} }
public <T> T getInstance(Class<T> interfaceClass, String packagePath) { public <T> T getInstance(Class<T> apiClass, String target, String replacement) {
String implClassName = packagePath.replace( String implName =
"org.adrianvictor.lib", apiClass.getName()
"org.adrianvictor.lib.impl." + classSuffix .replace(
target,
replacement + classSuffix + "."
); );
try { try {
Class<?> implClass = Class.forName(implClassName); Class<?> implClass = Class.forName(implName);
return interfaceClass.cast(implClass.getDeclaredConstructor().newInstance());
return apiClass.cast(
implClass.getDeclaredConstructor().newInstance()
);
} catch (ReflectiveOperationException e) { } catch (ReflectiveOperationException e) {
throw new IllegalStateException("Cannot load " + implClassName, e); throw new IllegalStateException(
"Cannot load " + implName,
e
);
} }
} }
public <T> T getInstance(Class<T> apiClass) {
return getInstance(apiClass, "org.adrianvictor.lib", "org.adrianvictor.lib.impl.");
}
} }

View file

@ -5,6 +5,6 @@ import org.adrianvictor.lib.text.provider.TextColorProvider;
public class TextColor { public class TextColor {
public static TextColorProvider create(ImplementationRegistry registry) { public static TextColorProvider create(ImplementationRegistry registry) {
return registry.getInstance(TextColorProvider.class, "org.adrianvictor.lib.text"); return registry.getInstance(TextColorProvider.class);
} }
} }

View file

@ -1,4 +1,4 @@
package org.adrianvictor.lib.configuration; package org.adrianvictor.lib.impl.r1_21.configuration;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;

View file

@ -1,4 +1,4 @@
package org.adrianvictor.lib.text; package org.adrianvictor.lib.impl.r1_21.text;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;