diff options
Diffstat (limited to 'src/main')
5 files changed, 40 insertions, 7 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/MixinHandledScreen.java b/src/main/java/moe/nea/firmament/mixins/MixinHandledScreen.java index 5a06c47..517a0eb 100644 --- a/src/main/java/moe/nea/firmament/mixins/MixinHandledScreen.java +++ b/src/main/java/moe/nea/firmament/mixins/MixinHandledScreen.java @@ -35,7 +35,7 @@ public class MixinHandledScreen { @Inject(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;handleHotbarKeyPressed(II)Z", shift = At.Shift.BEFORE), cancellable = true) public void onKeyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { - if (HandledScreenKeyPressedEvent.Companion.publish(new HandledScreenKeyPressedEvent(keyCode, scanCode, modifiers)).getCancelled()) { + if (HandledScreenKeyPressedEvent.Companion.publish(new HandledScreenKeyPressedEvent((HandledScreen<?>) (Object) this, keyCode, scanCode, modifiers)).getCancelled()) { cir.setReturnValue(true); } } 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) diff --git a/src/main/resources/assets/firmament/lang/en_us.json b/src/main/resources/assets/firmament/lang/en_us.json index 0273ce1..b33c253 100644 --- a/src/main/resources/assets/firmament/lang/en_us.json +++ b/src/main/resources/assets/firmament/lang/en_us.json @@ -9,6 +9,8 @@ "firmament.price.bazaar.buy.price": "Buy Price: %s", "firmament.price.bazaar.buy.order": "Buy orders: %d", "firmament.pv.pets": "Pets", + "firmament.debug.skyblockid": "SkyBlock ID: %s", + "firmament.debug.skyblockid.copy": "Click to copy SkyBlock ID", "firmament.price.bazaar.sell.price": "Sell Price: %s", "firmament.price.bazaar.sell.order": "Sell orders: %d", "firmament.price.lowestbin": "Lowest BIN: %s", |