diff --git a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/AdventureComponentLocalizer.java b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/AdventureComponentLocalizer.java index 1de7a0b..0a749a7 100644 --- a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/AdventureComponentLocalizer.java +++ b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/AdventureComponentLocalizer.java @@ -4,9 +4,10 @@ import net.kyori.adventure.text.*; public class AdventureComponentLocalizer extends ComponentLocalizer { - public static final AdventureComponentLocalizer INSTANCE = new AdventureComponentLocalizer(); + private static final AdventureComponentLocalizer INSTANCE = new AdventureComponentLocalizer(); private AdventureComponentLocalizer() { + super(Component::text); } public static AdventureComponentLocalizer getInstance() { @@ -49,9 +50,4 @@ public class AdventureComponentLocalizer extends ComponentLocalizer { return Component.textOfChildren(children.toArray(ComponentLike[]::new)).style(component.style()); } - @Override - protected Component createTextComponent(String text) { - return Component.text(text); - } - } diff --git a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/BungeeComponentLocalizer.java b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/BungeeComponentLocalizer.java index e1639e4..35432a2 100644 --- a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/BungeeComponentLocalizer.java +++ b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/BungeeComponentLocalizer.java @@ -11,6 +11,7 @@ public class BungeeComponentLocalizer extends ComponentLocalizer private static final BungeeComponentLocalizer INSTANCE = new BungeeComponentLocalizer(); private BungeeComponentLocalizer() { + super(TextComponent::new); } public static BungeeComponentLocalizer getInstance() { @@ -63,9 +64,4 @@ public class BungeeComponentLocalizer extends ComponentLocalizer return result; } - @Override - protected BaseComponent createTextComponent(String text) { - return new TextComponent(text); - } - } diff --git a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/ComponentLocalizer.java b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/ComponentLocalizer.java index ee6226e..2d0c7bd 100644 --- a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/ComponentLocalizer.java +++ b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/i18n/ComponentLocalizer.java @@ -2,15 +2,24 @@ package xyz.xenondevs.inventoryaccess.component.i18n; import java.util.ArrayList; import java.util.List; +import java.util.function.Function; import java.util.regex.Pattern; abstract class ComponentLocalizer { private static final Pattern FORMAT_PATTERN = Pattern.compile("%(?:(\\d+)\\$)?([A-Za-z%]|$)"); - public abstract C localize(String lang, C component); + private Function componentCreator; - protected abstract C createTextComponent(String text); + public ComponentLocalizer(Function componentCreator) { + this.componentCreator = componentCreator; + } + + public void setComponentCreator(Function componentCreator) { + this.componentCreator = componentCreator; + } + + public abstract C localize(String lang, C component); protected List decomposeFormatString(String lang, String formatString, C component, List args) { var matcher = FORMAT_PATTERN.matcher(formatString); @@ -46,9 +55,9 @@ abstract class ComponentLocalizer { // append the text before the argument sb.append(formatString, i, start); // add text component - components.add(createTextComponent(sb.toString())); + components.add(componentCreator.apply(sb.toString())); // add argument component - components.add(args.size() <= argIdx ? createTextComponent("") : localize(lang, args.get(argIdx))); + components.add(args.size() <= argIdx ? componentCreator.apply("") : localize(lang, args.get(argIdx))); // clear string builder sb.setLength(0); } @@ -60,7 +69,7 @@ abstract class ComponentLocalizer { // append the text after the last argument if (i < formatString.length()) { sb.append(formatString, i, formatString.length()); - components.add(createTextComponent(sb.toString())); + components.add(componentCreator.apply(sb.toString())); } return components;