Fix some issues idk

This commit is contained in:
nea
2023-07-25 19:48:22 +02:00
parent 0aacb6b965
commit 3375907c44
5 changed files with 40 additions and 7 deletions

View File

@@ -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) @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) { 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); cir.setReturnValue(true);
} }
} }

View File

@@ -18,10 +18,16 @@
package moe.nea.firmament.events package moe.nea.firmament.events
import net.minecraft.client.gui.screen.ingame.HandledScreen
import net.minecraft.client.option.KeyBinding import net.minecraft.client.option.KeyBinding
import moe.nea.firmament.keybindings.IKeyBinding 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>() companion object : FirmamentEventBus<HandledScreenKeyPressedEvent>()
fun matches(keyBinding: KeyBinding): Boolean { fun matches(keyBinding: KeyBinding): Boolean {

View File

@@ -2,16 +2,25 @@ package moe.nea.firmament.features.debug
import java.nio.file.Path import java.nio.file.Path
import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletableFuture
import org.lwjgl.glfw.GLFW
import kotlin.io.path.absolute import kotlin.io.path.absolute
import kotlin.io.path.exists import kotlin.io.path.exists
import net.minecraft.client.MinecraftClient 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.text.Text
import net.minecraft.util.Formatting
import moe.nea.firmament.Firmament import moe.nea.firmament.Firmament
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
import moe.nea.firmament.features.FirmamentFeature import moe.nea.firmament.features.FirmamentFeature
import moe.nea.firmament.gui.config.ManagedConfig 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.MC
import moe.nea.firmament.util.TimeMark import moe.nea.firmament.util.TimeMark
import moe.nea.firmament.util.iterate import moe.nea.firmament.util.iterate
import moe.nea.firmament.util.skyBlockId
object DeveloperFeatures : FirmamentFeature { object DeveloperFeatures : FirmamentFeature {
override val identifier: String override val identifier: String
@@ -50,5 +59,23 @@ object DeveloperFeatures : FirmamentFeature {
} }
override fun onLoad() { 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")))
)
)
}
}
} }
} }

View File

@@ -5,7 +5,7 @@ import moe.nea.firmament.events.CustomItemModelEvent
import moe.nea.firmament.events.TickEvent import moe.nea.firmament.events.TickEvent
import moe.nea.firmament.features.FirmamentFeature import moe.nea.firmament.features.FirmamentFeature
import moe.nea.firmament.gui.config.ManagedConfig import moe.nea.firmament.gui.config.ManagedConfig
import moe.nea.firmament.util.extraAttributes import moe.nea.firmament.util.skyBlockId
object CustomSkyBlockTextures : FirmamentFeature { object CustomSkyBlockTextures : FirmamentFeature {
override val identifier: String override val identifier: String
@@ -22,10 +22,8 @@ object CustomSkyBlockTextures : FirmamentFeature {
override fun onLoad() { override fun onLoad() {
CustomItemModelEvent.subscribe { CustomItemModelEvent.subscribe {
if (!TConfig.enabled) return@subscribe if (!TConfig.enabled) return@subscribe
val extra = it.itemStack.extraAttributes val id = it.itemStack.skyBlockId ?: return@subscribe
val id = extra.getString("id") it.overrideModel = ModelIdentifier("firmskyblock", id.identifier.path, "inventory")
if (id.isNotBlank())
it.overrideModel = ModelIdentifier("firmskyblock", id.lowercase(), "inventory")
} }
TickEvent.subscribe { TickEvent.subscribe {
if (it.tickCount % TConfig.cacheDuration == 0) if (it.tickCount % TConfig.cacheDuration == 0)

View File

@@ -9,6 +9,8 @@
"firmament.price.bazaar.buy.price": "Buy Price: %s", "firmament.price.bazaar.buy.price": "Buy Price: %s",
"firmament.price.bazaar.buy.order": "Buy orders: %d", "firmament.price.bazaar.buy.order": "Buy orders: %d",
"firmament.pv.pets": "Pets", "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.price": "Sell Price: %s",
"firmament.price.bazaar.sell.order": "Sell orders: %d", "firmament.price.bazaar.sell.order": "Sell orders: %d",
"firmament.price.lowestbin": "Lowest BIN: %s", "firmament.price.lowestbin": "Lowest BIN: %s",