diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/content/guide/RebarGuide.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/content/guide/RebarGuide.kt index 64af495fe..0cd9317a1 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/content/guide/RebarGuide.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/content/guide/RebarGuide.kt @@ -8,8 +8,9 @@ import io.github.pylonmc.rebar.guide.button.FluidButton import io.github.pylonmc.rebar.guide.button.PageButton import io.github.pylonmc.rebar.guide.button.AddonPageButton import io.github.pylonmc.rebar.guide.pages.RootPage -import io.github.pylonmc.rebar.guide.pages.SearchItemsAndFluidsPage +import io.github.pylonmc.rebar.guide.pages.LatinSearchItemsAndFluidsPage import io.github.pylonmc.rebar.guide.pages.base.GuidePage +import io.github.pylonmc.rebar.guide.pages.base.SearchPage import io.github.pylonmc.rebar.guide.pages.base.SimpleDynamicGuidePage import io.github.pylonmc.rebar.guide.pages.base.SimpleInfoPage import io.github.pylonmc.rebar.guide.pages.help.HelpPage @@ -39,6 +40,7 @@ import org.bukkit.event.player.PlayerInteractEvent import org.bukkit.event.player.PlayerJoinEvent import org.bukkit.inventory.ItemStack import xyz.xenondevs.invui.item.Item +import java.util.Locale import java.util.UUID /** @@ -143,10 +145,28 @@ class RebarGuide(stack: ItemStack) : RebarItem(stack), RebarInteractor { val backButton = BackButton() @JvmStatic - val searchItemsAndFluidsPage = SearchItemsAndFluidsPage() + val latinSearchItemsAndFluidsPage = LatinSearchItemsAndFluidsPage() @JvmStatic - val searchItemsAndFluidsButton = PageButton(Material.OAK_SIGN, searchItemsAndFluidsPage) + val latinSearchItemsAndFluidsButton = PageButton(Material.OAK_SIGN, latinSearchItemsAndFluidsPage) + + /** + * Maps locales to their corresponding search page buttons. + * This allows different locales to use adapted search pages with appropriate text indexers. + */ + @JvmStatic + val localSearchPages: MutableMap = mutableMapOf() + + @JvmStatic + fun getSearchButton(player: Player): PageButton = + getSearchButton(player.locale()) + + @JvmStatic + fun getSearchButton(locale: Locale): PageButton { + localSearchPages[locale]?.let { return it } + localSearchPages[locale] = latinSearchItemsAndFluidsButton + return latinSearchItemsAndFluidsButton + } @JvmStatic val mainSettingsPage = MainSettingsPage diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/SearchItemsAndFluidsPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/LatinSearchItemsAndFluidsPage.kt similarity index 96% rename from rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/SearchItemsAndFluidsPage.kt rename to rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/LatinSearchItemsAndFluidsPage.kt index a7af5e960..4755fcbe6 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/SearchItemsAndFluidsPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/LatinSearchItemsAndFluidsPage.kt @@ -15,7 +15,7 @@ import xyz.xenondevs.invui.item.Item /** * Allows you to search all items and fluids by hijacking the anvil GUI. */ -class SearchItemsAndFluidsPage : SearchPage(rebarKey("search")) { +class LatinSearchItemsAndFluidsPage : SearchPage(rebarKey("search")) { fun getItemButtons(player: Player): MutableList> = RebarRegistry.ITEMS.filter { it.key !in RebarGuide.hiddenItems || (it.key in RebarGuide.adminOnlyItems && player.hasPermission("rebar.guide.cheat")) diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/MachineRecipesPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/MachineRecipesPage.kt index 1ba7feb24..b6ef12453 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/MachineRecipesPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/MachineRecipesPage.kt @@ -49,7 +49,7 @@ open class MachineRecipesPage(recipeType: RecipeType<*>) : PagedGuidePage { .addIngredient('#', GuiItems.background()) .addIngredient('<', GuiItems.pagePrevious()) .addIngredient('b', RebarGuide.backButton) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('>', GuiItems.pageNext()) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/RootPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/RootPage.kt index 20637c533..897943dad 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/RootPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/RootPage.kt @@ -33,7 +33,7 @@ class RootPage : SimpleStaticGuidePage( ) .addIngredient('#', GuiItems.background()) .addIngredient('e', RebarGuide.mainSettingsButton) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SearchPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SearchPage.kt index f4ec3fab3..9c72c2c0f 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SearchPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SearchPage.kt @@ -185,9 +185,9 @@ abstract class SearchPage(key: NamespacedKey) : SimpleStaticGuidePage(key) { data class Lore(val filter: String) : SearchSpecifier { override fun weight(player: Player, entry: Pair): Double? { val stack = entry.first.getItemProvider(player).get() - return stack.lore()?.map { + return stack.lore()?.mapNotNull { weight(filter, it.plainText.lowercase(player.locale())) - }?.filterNotNull()?.minOrNull() + }?.minOrNull() } } } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleDynamicGuidePage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleDynamicGuidePage.kt index d083aca4f..af64e5f90 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleDynamicGuidePage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleDynamicGuidePage.kt @@ -2,7 +2,6 @@ package io.github.pylonmc.rebar.guide.pages.base import io.github.pylonmc.rebar.content.guide.RebarGuide import io.github.pylonmc.rebar.guide.button.GuideButton -import io.github.pylonmc.rebar.guide.button.PageButton import io.github.pylonmc.rebar.util.gui.GuiItems import org.bukkit.NamespacedKey import org.bukkit.entity.Player @@ -51,7 +50,7 @@ open class SimpleDynamicGuidePage( .addIngredient('#', GuiItems.background()) .addIngredient('<', GuiItems.pagePrevious()) .addIngredient('b', RebarGuide.backButton) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('>', GuiItems.pageNext()) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleInfoPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleInfoPage.kt index 41edd4a67..03b596e05 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleInfoPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/base/SimpleInfoPage.kt @@ -25,7 +25,7 @@ open class SimpleInfoPage : SimpleStaticGuidePage(rebarKey("info"), mutableListO .addIngredient('+', GuiItems.backgroundBlack()) .addIngredient('<', GuiItems.pagePrevious()) .addIngredient('b', RebarGuide.backButton) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('>', GuiItems.pageNext()) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidRecipesPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidRecipesPage.kt index 209d5a129..ea20ba2cb 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidRecipesPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidRecipesPage.kt @@ -46,7 +46,7 @@ open class FluidRecipesPage(fluidKey: NamespacedKey) : PagedGuidePage { .addIngredient('<', GuiItems.pagePrevious()) .addIngredient('b', RebarGuide.backButton) .addIngredient('g', RebarGuide.ingredientsButton(FluidOrItem.of(fluid, 1000.0))) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('>', GuiItems.pageNext()) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidUsagesPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidUsagesPage.kt index aa417fa42..4c7091899 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidUsagesPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/fluid/FluidUsagesPage.kt @@ -43,7 +43,7 @@ open class FluidUsagesPage(val fluid: RebarFluid) : PagedGuidePage { .addIngredient('#', GuiItems.background()) .addIngredient('<', GuiItems.pagePrevious()) .addIngredient('b', RebarGuide.backButton) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('>', GuiItems.pageNext()) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemRecipesPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemRecipesPage.kt index 7a4747353..4fc13fd2e 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemRecipesPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemRecipesPage.kt @@ -56,7 +56,7 @@ open class ItemRecipesPage(val stack: ItemStack) : PagedGuidePage { .addIngredient('b', RebarGuide.backButton) .addIngredient('g', RebarGuide.ingredientsButton(FluidOrItem.of(stack))) .addIngredient('i', RebarGuide.infoButton(FluidOrItem.of(stack))) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('>', GuiItems.pageNext()) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemUsagesPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemUsagesPage.kt index 54130500a..ff0ddbf95 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemUsagesPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/item/ItemUsagesPage.kt @@ -43,7 +43,7 @@ open class ItemUsagesPage(val stack: ItemStack) : PagedGuidePage { .addIngredient('#', GuiItems.background()) .addIngredient('<', GuiItems.pagePrevious()) .addIngredient('b', RebarGuide.backButton) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('>', GuiItems.pageNext()) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } diff --git a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/settings/PlayerSettingsPage.kt b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/settings/PlayerSettingsPage.kt index bc2379a9c..840498c4a 100644 --- a/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/settings/PlayerSettingsPage.kt +++ b/rebar/src/main/kotlin/io/github/pylonmc/rebar/guide/pages/settings/PlayerSettingsPage.kt @@ -27,7 +27,7 @@ open class PlayerSettingsPage(key: NamespacedKey) : SimpleStaticGuidePage(key, m ) .addIngredient('#', GuiItems.background()) .addIngredient('b', BackButton()) - .addIngredient('s', RebarGuide.searchItemsAndFluidsButton) + .addIngredient('s', RebarGuide.getSearchButton(player)) .addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL) .addPageChangeHandler { _, newPage -> saveCurrentPage(player, newPage) } .setContent(buttons.filter { it !is PageButton || it.page !is PlayerSettingsPage || it.page.buttons.isNotEmpty() })