aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/firmament/events
diff options
context:
space:
mode:
authornea <nea@nea.moe>2023-09-29 22:44:13 +0200
committernea <nea@nea.moe>2023-09-29 22:44:13 +0200
commitf89135db7e500571231721ac8d5b0ffff63469df (patch)
tree50d9f6ed963468194dcbaced0e508e120240b4f0 /src/main/kotlin/moe/nea/firmament/events
parent7a71e77b4cc79331b135aa95b4b8c9dbdf9e76ef (diff)
downloadfirmament-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.kt27
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
- }
}