From db0174ca8c391e0b46cd013c53602679f99af398 Mon Sep 17 00:00:00 2001 From: Jacob Date: Sat, 21 Jun 2025 19:14:16 +0800 Subject: feat: move text in replace text colors --- .../features/texturepack/CustomScreenLayouts.kt | 55 ++++++++++++++++++++++ .../features/texturepack/CustomTextColors.kt | 14 +++--- 2 files changed, 63 insertions(+), 6 deletions(-) (limited to 'src/texturePacks/java/moe/nea/firmament/features/texturepack') diff --git a/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomScreenLayouts.kt b/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomScreenLayouts.kt index ec696ec..76047b4 100644 --- a/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomScreenLayouts.kt +++ b/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomScreenLayouts.kt @@ -1,6 +1,8 @@ package moe.nea.firmament.features.texturepack +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import net.minecraft.client.MinecraftClient import net.minecraft.client.gui.DrawContext import net.minecraft.client.gui.screen.Screen import net.minecraft.client.gui.screen.ingame.HandledScreen @@ -8,12 +10,14 @@ import net.minecraft.client.render.RenderLayer import net.minecraft.resource.ResourceManager import net.minecraft.resource.SinglePreparationResourceReloader import net.minecraft.screen.slot.Slot +import net.minecraft.text.Text import net.minecraft.util.Identifier import net.minecraft.util.profiler.Profiler import moe.nea.firmament.Firmament import moe.nea.firmament.annotations.Subscribe import moe.nea.firmament.events.FinalizeResourceManagerEvent import moe.nea.firmament.events.ScreenChangeEvent +import moe.nea.firmament.features.texturepack.CustomTextColors.cache import moe.nea.firmament.mixins.accessor.AccessorHandledScreen import moe.nea.firmament.util.ErrorUtil.intoCatch import moe.nea.firmament.util.IdentifierSerializer @@ -25,6 +29,8 @@ object CustomScreenLayouts : SinglePreparationResourceReloader = listOf(), + val playerTitle: TitleReplacer = TitleReplacer(), + val containerTitle: TitleReplacer = TitleReplacer() ) @Serializable @@ -87,6 +93,55 @@ object CustomScreenLayouts : SinglePreparationResourceReloader x + Alignment.CENTER -> x + (width - textWidth) / 2 + Alignment.RIGHT -> x + (width - textWidth) + } + } + + fun mapReplaceText(text: Text): Text { + val replaceText = if (text.string == "Inventory") activeScreenOverride?.playerTitle?.replace ?: null else activeScreenOverride?.containerTitle?.replace ?: null + if (replaceText == null) return text + return Text.literal(replaceText) + } + + fun mapTextToX(text: Text, x: Int): Int { + return x + if (text.string == "Inventory") activeScreenOverride?.playerTitle?.x + ?: 0 else activeScreenOverride?.containerTitle?.x ?: 0 + } + + fun mapTextToY(text: Text, y: Int): Int { + return y + if (text.string == "Inventory") activeScreenOverride?.playerTitle?.y + ?: 0 else activeScreenOverride?.containerTitle?.y ?: 0 + } + @Subscribe fun onStart(event: FinalizeResourceManagerEvent) { diff --git a/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomTextColors.kt b/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomTextColors.kt index 1fcee48..3ac895a 100644 --- a/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomTextColors.kt +++ b/src/texturePacks/java/moe/nea/firmament/features/texturepack/CustomTextColors.kt @@ -27,7 +27,8 @@ object CustomTextColors : SinglePreparationResourceReloader>("CustomTextColor") { text -> + val cache = WeakCache.memoize>("CustomTextColor") { text -> val override = textOverrides ?: return@memoize Optional.empty() - Optional.of(override.overrides.find { it.predicate.matches(text) }?.override ?: override.defaultColor) + Optional.ofNullable(override.overrides.find { it.predicate.matches(text) }) } fun mapTextColor(text: Text, oldColor: Int): Int { - if (textOverrides == null) return oldColor - return cache(text).getOrNull() ?: oldColor + val override = cache(text).orElse(null) + return override?.override ?: textOverrides?.defaultColor ?: oldColor } override fun prepare( -- cgit