Fix uuid locking not working in some NPC shops
This commit is contained in:
@@ -15,6 +15,7 @@ import kotlinx.serialization.UseSerializers
|
|||||||
import kotlinx.serialization.serializer
|
import kotlinx.serialization.serializer
|
||||||
import net.minecraft.client.gui.screen.ingame.HandledScreen
|
import net.minecraft.client.gui.screen.ingame.HandledScreen
|
||||||
import net.minecraft.entity.player.PlayerInventory
|
import net.minecraft.entity.player.PlayerInventory
|
||||||
|
import net.minecraft.screen.GenericContainerScreenHandler
|
||||||
import net.minecraft.screen.slot.SlotActionType
|
import net.minecraft.screen.slot.SlotActionType
|
||||||
import net.minecraft.util.Identifier
|
import net.minecraft.util.Identifier
|
||||||
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
|
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
|
||||||
@@ -74,21 +75,21 @@ object SlotLocking : FirmamentFeature {
|
|||||||
|
|
||||||
fun isTradeScreen(screen: HandledScreen<*>?): Boolean {
|
fun isTradeScreen(screen: HandledScreen<*>?): Boolean {
|
||||||
if (screen == null) return false
|
if (screen == null) return false
|
||||||
val handler = screen.screenHandler
|
val handler = screen.screenHandler as? GenericContainerScreenHandler ?: return false
|
||||||
if (handler.slots.size < 9) return false
|
if (handler.inventory.size() < 9) return false
|
||||||
val middlePane = handler.getSlot(4)
|
val middlePane = handler.inventory.getStack(handler.inventory.size() - 5)
|
||||||
if (!middlePane.hasStack()) return false
|
if (middlePane == null) return false
|
||||||
return middlePane.stack.displayNameAccordingToNbt?.unformattedString == "⇦ Your stuff"
|
return middlePane.displayNameAccordingToNbt?.unformattedString == "⇦ Your stuff"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isNpcShop(screen: HandledScreen<*>?): Boolean {
|
fun isNpcShop(screen: HandledScreen<*>?): Boolean {
|
||||||
if (screen == null) return false
|
if (screen == null) return false
|
||||||
val handler = screen.screenHandler
|
val handler = screen.screenHandler as? GenericContainerScreenHandler ?: return false
|
||||||
if (handler.slots.size < 9) return false
|
if (handler.inventory.size() < 9) return false
|
||||||
val sellItem = handler.getSlot(handler.slots.size - 5)
|
val sellItem = handler.inventory.getStack(handler.inventory.size() - 5)
|
||||||
if (!sellItem.hasStack()) return false
|
if (sellItem == null) return false
|
||||||
if (sellItem.stack.displayNameAccordingToNbt?.unformattedString == "Sell Item") return true
|
if (sellItem.displayNameAccordingToNbt?.unformattedString == "Sell Item") return true
|
||||||
val lore = sellItem.stack.loreAccordingToNbt
|
val lore = sellItem.loreAccordingToNbt
|
||||||
return (lore.lastOrNull() ?: return false).value?.unformattedString == "Click to buyback!"
|
return (lore.lastOrNull() ?: return false).value?.unformattedString == "Click to buyback!"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,6 +179,7 @@ object SlotLocking : FirmamentFeature {
|
|||||||
|
|
||||||
isUUIDLocked ->
|
isUUIDLocked ->
|
||||||
(Identifier("firmament:uuid_locked"))
|
(Identifier("firmament:uuid_locked"))
|
||||||
|
|
||||||
else ->
|
else ->
|
||||||
error("unreachable")
|
error("unreachable")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user