Add slot locking

This commit is contained in:
nea
2023-05-18 03:20:22 +02:00
parent 3ebe3e80b9
commit 1dd603ab1c
19 changed files with 297 additions and 14 deletions

View File

@@ -0,0 +1,10 @@
package moe.nea.firmament.events
import net.minecraft.client.option.KeyBinding
data class HandledScreenKeyPressedEvent(val keyCode: Int, val scanCode: Int, val modifiers: Int) : FirmamentEvent.Cancellable() {
companion object : FirmamentEventBus<HandledScreenKeyPressedEvent>()
fun matches(keyBinding: KeyBinding): Boolean {
return keyBinding.matchesKey(keyCode, scanCode)
}
}

View File

@@ -0,0 +1,26 @@
package moe.nea.firmament.events
import net.minecraft.screen.slot.Slot
import net.minecraft.text.Text
import moe.nea.firmament.util.CommonSoundEffects
import moe.nea.firmament.util.MC
data class IsSlotProtectedEvent(
val slot: Slot, var isProtected: Boolean = false
) : FirmamentEvent() {
companion object : FirmamentEventBus<IsSlotProtectedEvent>() {
@JvmStatic
fun shouldBlockInteraction(slot: Slot): Boolean {
return publish(IsSlotProtectedEvent(slot)).isProtected.also {
if (it) {
MC.player?.sendMessage(Text.translatable("firmament.protectitem").append(slot.stack.name))
CommonSoundEffects.playFailure()
}
}
}
}
fun protect() {
isProtected = true
}
}

View File

@@ -0,0 +1,32 @@
package moe.nea.firmament.events
import net.minecraft.client.util.math.MatrixStack
import net.minecraft.screen.slot.Slot
interface SlotRenderEvents {
val matrices: MatrixStack
val slot: Slot
val mouseX: Int
val mouseY: Int
val delta: Float
data class Before(
override val matrices: MatrixStack, override val slot: Slot,
override val mouseX: Int,
override val mouseY: Int,
override val delta: Float
) : FirmamentEvent(),
SlotRenderEvents {
companion object : FirmamentEventBus<Before>()
}
data class After(
override val matrices: MatrixStack, override val slot: Slot,
override val mouseX: Int,
override val mouseY: Int,
override val delta: Float
) : FirmamentEvent(),
SlotRenderEvents {
companion object : FirmamentEventBus<After>()
}
}