aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin
diff options
context:
space:
mode:
authornea <nea@nea.moe>2023-10-04 19:19:44 +0200
committernea <nea@nea.moe>2023-10-04 19:19:44 +0200
commitf7c1ef2dda6ef954456cd7eed809323ba3cd66ec (patch)
treece5efde1c5c1be32d8c2cc61bd3b4a8a41e93b11 /src/main/kotlin
parent64523821d82d702c0bf2d62bbe45a1047aed8bda (diff)
downloadfirmament-f7c1ef2dda6ef954456cd7eed809323ba3cd66ec.tar.gz
firmament-f7c1ef2dda6ef954456cd7eed809323ba3cd66ec.tar.bz2
firmament-f7c1ef2dda6ef954456cd7eed809323ba3cd66ec.zip
Replace slot locking indicator with textures
Diffstat (limited to 'src/main/kotlin')
-rw-r--r--src/main/kotlin/moe/nea/firmament/features/inventory/SlotLocking.kt32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/features/inventory/SlotLocking.kt b/src/main/kotlin/moe/nea/firmament/features/inventory/SlotLocking.kt
index 6ef9cf4..2f4f84b 100644
--- a/src/main/kotlin/moe/nea/firmament/features/inventory/SlotLocking.kt
+++ b/src/main/kotlin/moe/nea/firmament/features/inventory/SlotLocking.kt
@@ -7,6 +7,7 @@
package moe.nea.firmament.features.inventory
+import com.mojang.blaze3d.systems.RenderSystem
import java.util.*
import org.lwjgl.glfw.GLFW
import kotlinx.serialization.Serializable
@@ -15,6 +16,7 @@ import kotlinx.serialization.serializer
import net.minecraft.client.gui.screen.ingame.HandledScreen
import net.minecraft.entity.player.PlayerInventory
import net.minecraft.screen.slot.SlotActionType
+import net.minecraft.util.Identifier
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
import moe.nea.firmament.events.IsSlotProtectedEvent
import moe.nea.firmament.events.SlotRenderEvents
@@ -157,25 +159,31 @@ object SlotLocking : FirmamentFeature {
if (IsSlotProtectedEvent.shouldBlockInteraction(null, SlotActionType.THROW, stack))
anyBlocked = true
}
- if(anyBlocked) {
+ if (anyBlocked) {
event.protectSilent()
}
}
- SlotRenderEvents.Before.subscribe {
+ SlotRenderEvents.After.subscribe {
val isSlotLocked = it.slot.inventory is PlayerInventory && it.slot.index in (lockedSlots ?: setOf())
val isUUIDLocked = (it.slot.stack?.skyblockUUID) in (lockedUUIDs ?: setOf())
if (isSlotLocked || isUUIDLocked) {
- it.context.fill(
- it.slot.x,
- it.slot.y,
- it.slot.x + 16,
- it.slot.y + 16,
- when {
- isSlotLocked -> 0xFFFF0000.toInt()
- isUUIDLocked -> 0xFF00FF00.toInt()
- else -> error("Slot is locked, but not by slot or uuid")
- }
+ RenderSystem.disableDepthTest()
+ it.context.drawSprite(
+ it.slot.x, it.slot.y, 0,
+ 16, 16,
+ MC.guiAtlasManager.getSprite(
+ when {
+ isSlotLocked ->
+ (Identifier("firmament:slot_locked"))
+
+ isUUIDLocked ->
+ (Identifier("firmament:uuid_locked"))
+ else ->
+ error("unreachable")
+ }
+ )
)
+ RenderSystem.enableDepthTest()
}
}
}