diff options
Diffstat (limited to 'src/main/kotlin')
3 files changed, 37 insertions, 6 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/events/HandledScreenKeyPressedEvent.kt b/src/main/kotlin/moe/nea/firmament/events/HandledScreenKeyPressedEvent.kt index 3c19aa7..9cff27d 100644 --- a/src/main/kotlin/moe/nea/firmament/events/HandledScreenKeyPressedEvent.kt +++ b/src/main/kotlin/moe/nea/firmament/events/HandledScreenKeyPressedEvent.kt @@ -18,10 +18,16 @@ package moe.nea.firmament.events +import net.minecraft.client.gui.screen.ingame.HandledScreen import net.minecraft.client.option.KeyBinding import moe.nea.firmament.keybindings.IKeyBinding -data class HandledScreenKeyPressedEvent(val keyCode: Int, val scanCode: Int, val modifiers: Int) : FirmamentEvent.Cancellable() { +data class HandledScreenKeyPressedEvent( + val screen: HandledScreen<*>, + val keyCode: Int, + val scanCode: Int, + val modifiers: Int +) : FirmamentEvent.Cancellable() { companion object : FirmamentEventBus<HandledScreenKeyPressedEvent>() fun matches(keyBinding: KeyBinding): Boolean { diff --git a/src/main/kotlin/moe/nea/firmament/features/debug/DeveloperFeatures.kt b/src/main/kotlin/moe/nea/firmament/features/debug/DeveloperFeatures.kt index 253bc0d..ffa0fd2 100644 --- a/src/main/kotlin/moe/nea/firmament/features/debug/DeveloperFeatures.kt +++ b/src/main/kotlin/moe/nea/firmament/features/debug/DeveloperFeatures.kt @@ -2,16 +2,25 @@ package moe.nea.firmament.features.debug import java.nio.file.Path import java.util.concurrent.CompletableFuture +import org.lwjgl.glfw.GLFW import kotlin.io.path.absolute import kotlin.io.path.exists import net.minecraft.client.MinecraftClient +import net.minecraft.text.ClickEvent +import net.minecraft.text.HoverEvent +import net.minecraft.text.Style import net.minecraft.text.Text +import net.minecraft.util.Formatting import moe.nea.firmament.Firmament +import moe.nea.firmament.events.HandledScreenKeyPressedEvent import moe.nea.firmament.features.FirmamentFeature import moe.nea.firmament.gui.config.ManagedConfig +import moe.nea.firmament.keybindings.IKeyBinding +import moe.nea.firmament.mixins.accessor.AccessorHandledScreen import moe.nea.firmament.util.MC import moe.nea.firmament.util.TimeMark import moe.nea.firmament.util.iterate +import moe.nea.firmament.util.skyBlockId object DeveloperFeatures : FirmamentFeature { override val identifier: String @@ -50,5 +59,23 @@ object DeveloperFeatures : FirmamentFeature { } override fun onLoad() { + HandledScreenKeyPressedEvent.subscribe { + if (it.matches(IKeyBinding.ofKeyCode(GLFW.GLFW_KEY_K))) { + it.screen as AccessorHandledScreen + val focussedSlot = it.screen.focusedSlot_NEU ?: return@subscribe + val item = focussedSlot.stack ?: return@subscribe + val ident = item.skyBlockId?.identifier.toString() + MinecraftClient.getInstance().inGameHud.chatHud.addMessage( + Text.translatable( + "firmament.debug.skyblockid", + ident + ).setStyle( + Style.EMPTY.withColor(Formatting.AQUA) + .withClickEvent(ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, ident)) + .withHoverEvent(HoverEvent(HoverEvent.Action.SHOW_TEXT, Text.translatable("firmament.debug.skyblockid.copy"))) + ) + ) + } + } } } diff --git a/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomSkyBlockTextures.kt b/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomSkyBlockTextures.kt index 0b25e44..b73c591 100644 --- a/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomSkyBlockTextures.kt +++ b/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomSkyBlockTextures.kt @@ -5,7 +5,7 @@ import moe.nea.firmament.events.CustomItemModelEvent import moe.nea.firmament.events.TickEvent import moe.nea.firmament.features.FirmamentFeature import moe.nea.firmament.gui.config.ManagedConfig -import moe.nea.firmament.util.extraAttributes +import moe.nea.firmament.util.skyBlockId object CustomSkyBlockTextures : FirmamentFeature { override val identifier: String @@ -22,10 +22,8 @@ object CustomSkyBlockTextures : FirmamentFeature { override fun onLoad() { CustomItemModelEvent.subscribe { if (!TConfig.enabled) return@subscribe - val extra = it.itemStack.extraAttributes - val id = extra.getString("id") - if (id.isNotBlank()) - it.overrideModel = ModelIdentifier("firmskyblock", id.lowercase(), "inventory") + val id = it.itemStack.skyBlockId ?: return@subscribe + it.overrideModel = ModelIdentifier("firmskyblock", id.identifier.path, "inventory") } TickEvent.subscribe { if (it.tickCount % TConfig.cacheDuration == 0) |