diff options
author | nea <nea@nea.moe> | 2023-09-29 22:44:13 +0200 |
---|---|---|
committer | nea <nea@nea.moe> | 2023-09-29 22:44:13 +0200 |
commit | f89135db7e500571231721ac8d5b0ffff63469df (patch) | |
tree | 50d9f6ed963468194dcbaced0e508e120240b4f0 /src/main/kotlin/moe/nea/firmament/events | |
parent | 7a71e77b4cc79331b135aa95b4b8c9dbdf9e76ef (diff) | |
download | firmament-f89135db7e500571231721ac8d5b0ffff63469df.tar.gz firmament-f89135db7e500571231721ac8d5b0ffff63469df.tar.bz2 firmament-f89135db7e500571231721ac8d5b0ffff63469df.zip |
Add UUID Locking (per unique item locking that allows movement)
Diffstat (limited to 'src/main/kotlin/moe/nea/firmament/events')
-rw-r--r-- | src/main/kotlin/moe/nea/firmament/events/IsSlotProtectedEvent.kt | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/events/IsSlotProtectedEvent.kt b/src/main/kotlin/moe/nea/firmament/events/IsSlotProtectedEvent.kt index f1a861e..02557ab 100644 --- a/src/main/kotlin/moe/nea/firmament/events/IsSlotProtectedEvent.kt +++ b/src/main/kotlin/moe/nea/firmament/events/IsSlotProtectedEvent.kt @@ -6,28 +6,37 @@ package moe.nea.firmament.events +import net.minecraft.item.ItemStack import net.minecraft.screen.slot.Slot +import net.minecraft.screen.slot.SlotActionType 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 + val slot: Slot?, + val actionType: SlotActionType, + var isProtected: Boolean, + val itemStackOverride: ItemStack?, ) : FirmamentEvent() { + val itemStack get() = itemStackOverride ?: slot!!.stack + + fun protect() { + isProtected = true + } + companion object : FirmamentEventBus<IsSlotProtectedEvent>() { @JvmStatic - fun shouldBlockInteraction(slot: Slot?): Boolean { - if (slot == null) return false - return publish(IsSlotProtectedEvent(slot)).isProtected.also { + @JvmOverloads + fun shouldBlockInteraction(slot: Slot?, action: SlotActionType, itemStackOverride: ItemStack? = null): Boolean { + if (slot == null && itemStackOverride == null) return false + val event = IsSlotProtectedEvent(slot, action, false, itemStackOverride) + return publish(event).isProtected.also { if (it) { - MC.player?.sendMessage(Text.translatable("firmament.protectitem").append(slot.stack.name)) + MC.player?.sendMessage(Text.translatable("firmament.protectitem").append(event.itemStack.name)) CommonSoundEffects.playFailure() } } } } - - fun protect() { - isProtected = true - } } |