Add separate slot locking profile for the Rift

This commit is contained in:
nea
2023-09-29 21:23:39 +02:00
parent 3cbe859eb8
commit 4d57229b94

View File

@@ -6,8 +6,10 @@
package moe.nea.firmament.features.inventory
import org.lwjgl.glfw.GLFW
import kotlinx.serialization.Serializable
import kotlinx.serialization.serializer
import net.minecraft.entity.player.PlayerInventory
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
import moe.nea.firmament.events.IsSlotProtectedEvent
import moe.nea.firmament.events.SlotRenderEvents
@@ -16,9 +18,8 @@ import moe.nea.firmament.gui.config.ManagedConfig
import moe.nea.firmament.mixins.accessor.AccessorHandledScreen
import moe.nea.firmament.util.CommonSoundEffects
import moe.nea.firmament.util.MC
import moe.nea.firmament.util.SBData
import moe.nea.firmament.util.data.ProfileSpecificDataHolder
import net.minecraft.entity.player.PlayerInventory
import org.lwjgl.glfw.GLFW
object SlotLocking : FirmamentFeature {
override val identifier: String
@@ -27,6 +28,7 @@ object SlotLocking : FirmamentFeature {
@Serializable
data class Data(
val lockedSlots: MutableSet<Int> = mutableSetOf(),
val lockedSlotsRift: MutableSet<Int> = mutableSetOf(),
)
object TConfig : ManagedConfig(identifier) {
@@ -38,7 +40,13 @@ object SlotLocking : FirmamentFeature {
object DConfig : ProfileSpecificDataHolder<Data>(serializer(), "locked-slots", ::Data)
val lockedSlots get() = DConfig.data?.lockedSlots
val lockedSlots
get() = when (SBData.skyblockLocation) {
"rift" -> DConfig.data?.lockedSlotsRift
null -> null
else -> DConfig.data?.lockedSlots
}
override fun onLoad() {
HandledScreenKeyPressedEvent.subscribe {
if (!it.matches(TConfig.lock)) return@subscribe