Add slot locking
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
32
src/main/kotlin/moe/nea/firmament/events/SlotRenderEvents.kt
Normal file
32
src/main/kotlin/moe/nea/firmament/events/SlotRenderEvents.kt
Normal 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>()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user