diff --git a/build.gradle.kts b/build.gradle.kts index 030f3384..b315c590 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,6 +22,7 @@ configurations.all { dependencies { implementation(platform(libs.mycelium.bom)) + implementation(libs.slf4j.api) compileOnly(libs.adventure) compileOnly(libs.minestom) diff --git a/settings.gradle.kts b/settings.gradle.kts index a8864146..710385dc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,8 +21,12 @@ dependencyResolutionManagement { } versionCatalogs { create("libs") { - version("bom", "1.6.4") + version("bom", "1.6.7") + version("slf4j", "2.0.18") + library("mycelium.bom", "net.onelitefeather", "mycelium-bom").versionRef("bom") + + library("slf4j.api", "org.slf4j", "slf4j-api").versionRef("slf4j") library("minestom","net.minestom", "minestom").withoutVersion() library("adventure", "net.kyori", "adventure-text-minimessage").withoutVersion() library("cyano", "net.onelitefeather", "cyano").withoutVersion() diff --git a/src/main/java/net/theevilreaper/aves/i18n/AvesTranslationRegistry.java b/src/main/java/net/theevilreaper/aves/i18n/AvesTranslationRegistry.java deleted file mode 100644 index b2e8ad3e..00000000 --- a/src/main/java/net/theevilreaper/aves/i18n/AvesTranslationRegistry.java +++ /dev/null @@ -1,171 +0,0 @@ -package net.theevilreaper.aves.i18n; - -import net.kyori.adventure.key.Key; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.ComponentLike; -import net.kyori.adventure.text.TranslatableComponent; -import net.kyori.adventure.text.minimessage.Context; -import net.kyori.adventure.text.minimessage.MiniMessage; -import net.kyori.adventure.text.minimessage.ParsingException; -import net.kyori.adventure.text.minimessage.tag.Tag; -import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue; -import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; -import net.kyori.adventure.translation.TranslationRegistry; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.text.MessageFormat; -import java.util.List; -import java.util.Locale; -import java.util.Objects; - -/** - * A translation registry that uses MiniMessage to translate components. - * Without the usage of the class the translation with MiniMessage would not be possible. - * - * @see TranslationRegistry - */ -@Deprecated(forRemoval = true, since = "Please use TranslationStore.messageFormat(Key) instead") -public final class AvesTranslationRegistry implements TranslationRegistry { - - private static final MiniMessage MM = MiniMessage.miniMessage(); - private final TranslationRegistry backedRegistry; - - /** - * Creates a new instance of the translation registry. - * - * @param backedRegistry the registry which should be used for the translation - */ - public AvesTranslationRegistry(@NotNull TranslationRegistry backedRegistry) { - this.backedRegistry = backedRegistry; - } - - /** - * Checks if the registry contains the given key. - * - * @param key the key to check - * @return true if the key is present in the registry - */ - @Override - public boolean contains(@NotNull String key) { - return backedRegistry.contains(key); - } - - @Override - public boolean contains(@NotNull String key, @NotNull Locale locale) { - return false; - } - - /** - * Returns the name of the registry as {@link Key}. - * - * @return the given name from the registry - */ - @Override - public @NotNull Key name() { - return backedRegistry.name(); - } - - /** - * The method doesn't do anything in this implementation. - * - * @param key a translation key - * @param locale a locale - * @return null - */ - @Override - public @Nullable MessageFormat translate(@NotNull String key, @NotNull Locale locale) { - return null; - } - - /** - * Translates the given component with the provided locale. - * - * @param component the component to translate - * @param locale the locale to use - * @return the translated component - */ - @Override - public @Nullable Component translate(@NotNull final TranslatableComponent component, @NotNull final Locale locale) { - final MessageFormat translationFormat = backedRegistry.translate(component.key(), locale); - - if (translationFormat == null) return null; - - final String miniMessageString = translationFormat.toPattern(); - final Component resultingComponent; - - if (component.arguments().isEmpty()) { - resultingComponent = MM.deserialize(miniMessageString); - } else { - resultingComponent = MM.deserialize(miniMessageString, new ArgumentTag(component.arguments())); - } - - if (component.children().isEmpty()) { - return resultingComponent; - } else { - return resultingComponent.children(component.children()); - } - } - - /** - * Sets the default locale for the registry. - * - * @param locale the locale to use a default - */ - @Override - public void defaultLocale(@NotNull Locale locale) { - backedRegistry.defaultLocale(locale); - } - - /** - * Registers a new translation in the registry. - * - * @param key the key to register - * @param locale the locale to register - * @param format the format to register - */ - @Override - public void register(@NotNull String key, @NotNull Locale locale, @NotNull MessageFormat format) { - backedRegistry.register(key, locale, format); - } - - /** - * Unregisters a translation from the registry. - * - * @param key the key to unregister - */ - @Override - public void unregister(@NotNull String key) { - backedRegistry.unregister(key); - } - - private record ArgumentTag(List argumentComponents) implements TagResolver { - private static final String NAME = "argument"; - private static final String NAME_1 = "arg"; - - private ArgumentTag(final @NotNull List argumentComponents) { - this.argumentComponents = Objects.requireNonNull(argumentComponents, "argumentComponents"); - } - - @Override - public @NotNull Tag resolve( - final @NotNull String name, - final @NotNull ArgumentQueue arguments, - final @NotNull Context ctx - ) throws ParsingException { - final int index = arguments.popOr("No argument number provided") - .asInt().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); - - if (index < 0 || index >= argumentComponents.size()) { - throw ctx.newException("Invalid argument number", arguments); - } - - return Tag.inserting(argumentComponents.get(index)); - } - - @Override - public boolean has(final @NotNull String name) { - return name.equals(NAME) || name.equals(NAME_1); - } - } -} diff --git a/src/main/java/net/theevilreaper/aves/inventory/pageable/PlayerPageableInventoryImpl.java b/src/main/java/net/theevilreaper/aves/inventory/pageable/PlayerPageableInventoryImpl.java index e0cb3363..c81d641c 100644 --- a/src/main/java/net/theevilreaper/aves/inventory/pageable/PlayerPageableInventoryImpl.java +++ b/src/main/java/net/theevilreaper/aves/inventory/pageable/PlayerPageableInventoryImpl.java @@ -294,7 +294,7 @@ private void updateMaxPages() { */ @Override public void unregister() { - Set viewers = this.builder.getInventory().getViewers(); + Set viewers = this.builder.getInventory().getViewers(); //Check if the inventory contains viewer and when close the inventories for the viewers to prevent issue if (!viewers.isEmpty()) { viewers.forEach(Player::closeInventory); diff --git a/src/test/java/net/theevilreaper/aves/inventory/GlobalTranslatedInventoryBuilderTest.java b/src/test/java/net/theevilreaper/aves/inventory/GlobalTranslatedInventoryBuilderTest.java index 66e67600..1f4cfe9b 100644 --- a/src/test/java/net/theevilreaper/aves/inventory/GlobalTranslatedInventoryBuilderTest.java +++ b/src/test/java/net/theevilreaper/aves/inventory/GlobalTranslatedInventoryBuilderTest.java @@ -1,20 +1,11 @@ package net.theevilreaper.aves.inventory; -import net.theevilreaper.aves.i18n.AvesTranslationRegistry; import net.theevilreaper.aves.i18n.TextData; -import net.kyori.adventure.key.Key; -import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; -import net.kyori.adventure.translation.GlobalTranslator; -import net.kyori.adventure.translation.TranslationRegistry; import net.minestom.server.inventory.InventoryType; -import net.minestom.testing.Env; import net.minestom.testing.extension.MicrotusExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import java.text.MessageFormat; -import java.util.Locale; - import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -34,22 +25,4 @@ void testGlobalTranslatedBuilder() { assertNull(builder.getDataLayout()); } - @Test - void testGlobalTranslatedBuilderWithRegistry(Env env) { - TranslationRegistry translationRegistry = TranslationRegistry.create(Key.key("test", "test")); - translationRegistry.register("title", Locale.ENGLISH, new MessageFormat("TEST")); - GlobalTranslator.translator().addSource(new AvesTranslationRegistry(translationRegistry)); - - var builder = new GlobalTranslatedInventoryBuilder(InventoryType.CHEST_2_ROW); - - builder.setTitleData(new TextData("title")); - builder.setLayout(InventoryLayout.fromType(builder.getType())); - String serialize = PlainTextComponentSerializer.plainText().serialize(builder.getInventory(Locale.ENGLISH).getTitle()); - assertTrue(serialize.equalsIgnoreCase("TEST")); - assertNotNull(builder.getTitleData()); - assertNotNull(builder.getLayout()); - assertNull(builder.getDataLayout()); - } - - } diff --git a/src/test/java/net/theevilreaper/aves/item/TranslatedItemTest.java b/src/test/java/net/theevilreaper/aves/item/TranslatedItemTest.java index 9f543147..0c812954 100644 --- a/src/test/java/net/theevilreaper/aves/item/TranslatedItemTest.java +++ b/src/test/java/net/theevilreaper/aves/item/TranslatedItemTest.java @@ -1,63 +1,16 @@ package net.theevilreaper.aves.item; -import net.minestom.server.component.DataComponents; -import net.theevilreaper.aves.i18n.AvesTranslationRegistry; import net.theevilreaper.aves.inventory.util.InventoryConstants; -import net.kyori.adventure.key.Key; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; -import net.kyori.adventure.translation.GlobalTranslator; -import net.kyori.adventure.translation.TranslationRegistry; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import org.junit.jupiter.api.Test; -import java.text.MessageFormat; -import java.util.List; import java.util.Locale; import static org.junit.jupiter.api.Assertions.*; class TranslatedItemTest { - @Test - void testRendererAves() { - var item = TranslatedItem.of(ItemStack.of(Material.ACACIA_BUTTON)); - item.setDisplayName("key", "Argument 1", "Argument 2"); - TranslationRegistry translationRegistry = TranslationRegistry.create(Key.key("test", "test")); - translationRegistry.register("key", Locale.ENGLISH, new MessageFormat(" ")); - GlobalTranslator.translator().addSource(new AvesTranslationRegistry(translationRegistry)); - Component displayName = item.get(Locale.ENGLISH).get(DataComponents.CUSTOM_NAME); - assertNotNull(displayName); - assertTrue(PlainTextComponentSerializer.plainText().serialize(displayName).equalsIgnoreCase("Argument 1 Argument 2")); - } - - @Test - void testRenderer() { - var item = TranslatedItem.of(ItemStack.of(Material.ACACIA_BUTTON)); - item.setDisplayName("key", "Argument 1", "Argument 2"); - TranslationRegistry translationRegistry = TranslationRegistry.create(Key.key("test", "test")); - translationRegistry.register("key", Locale.ENGLISH, new MessageFormat("{0} {1}")); - GlobalTranslator.translator().addSource(translationRegistry); - Component displayName = item.get(Locale.ENGLISH).get(DataComponents.CUSTOM_NAME); - assertNotNull(displayName); - assertTrue(PlainTextComponentSerializer.plainText().serialize(displayName).equalsIgnoreCase("Argument 1 Argument 2")); - } - - @Test - void testRendererLore() { - var item = TranslatedItem.of(ItemStack.of(Material.ACACIA_BUTTON)); - item.setDisplayName("key", "Argument 1", "Argument 2"); - item.setLore("key", "Argument 1", "Argument 2"); - TranslationRegistry translationRegistry = TranslationRegistry.create(Key.key("test", "test")); - translationRegistry.register("key", Locale.ENGLISH, new MessageFormat("{0} {1}")); - GlobalTranslator.translator().addSource(translationRegistry); - List lore = item.get(Locale.ENGLISH).get(DataComponents.LORE); - assertNotNull(lore); - assertFalse(lore.isEmpty()); - assertLinesMatch(lore.stream().map(PlainTextComponentSerializer.plainText()::serialize).toList(), List.of("Argument 1 Argument 2")); - } - @Test void testSetterMethods() { var item = TranslatedItem.of(ItemStack.of(Material.ACACIA_BUTTON));