From 067c90d4362a57313a4e2d59f3639cba383433ed Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Sun, 17 Nov 2024 20:13:20 +0100 Subject: feat: Add item rarities into all storage overlay pages --- .../storageoverlay/StorageOverlayScreen.kt | 5 +++ src/main/kotlin/util/mc/FakeInventory.kt | 41 ++++++++++++++++++++++ src/main/kotlin/util/mc/FakeSlot.kt | 15 ++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/main/kotlin/util/mc/FakeInventory.kt create mode 100644 src/main/kotlin/util/mc/FakeSlot.kt diff --git a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt index d6f3645..4c624ef 100644 --- a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt +++ b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt @@ -13,6 +13,7 @@ import net.minecraft.client.gui.screen.ingame.HandledScreen import net.minecraft.screen.slot.Slot import net.minecraft.text.Text import net.minecraft.util.Identifier +import moe.nea.firmament.events.SlotRenderEvents import moe.nea.firmament.gui.EmptyComponent import moe.nea.firmament.gui.FirmButtonComponent import moe.nea.firmament.util.MC @@ -21,6 +22,7 @@ import moe.nea.firmament.util.MoulConfigUtils.clickMCComponentInPlace import moe.nea.firmament.util.MoulConfigUtils.drawMCComponentInPlace import moe.nea.firmament.util.assertTrueOr import moe.nea.firmament.util.customgui.customGui +import moe.nea.firmament.util.mc.FakeSlot import moe.nea.firmament.util.render.drawGuiTexture class StorageOverlayScreen : Screen(Text.literal("")) { @@ -356,9 +358,12 @@ class StorageOverlayScreen : Screen(Text.literal("")) { inv.stacks.forEachIndexed { index, stack -> val slotX = (index % 9) * SLOT_SIZE + x + 1 val slotY = (index / 9) * SLOT_SIZE + y + 4 + textRenderer.fontHeight + 1 + val fakeSlot = FakeSlot(stack, slotX, slotY) if (slots == null) { + SlotRenderEvents.Before.publish(SlotRenderEvents.Before(context, fakeSlot)) context.drawItem(stack, slotX, slotY) context.drawStackOverlay(textRenderer, stack, slotX, slotY) + SlotRenderEvents.After.publish(SlotRenderEvents.After(context, fakeSlot)) } else { val slot = slots[index] slot.x = slotX - slotOffset.x diff --git a/src/main/kotlin/util/mc/FakeInventory.kt b/src/main/kotlin/util/mc/FakeInventory.kt new file mode 100644 index 0000000..26c04bc --- /dev/null +++ b/src/main/kotlin/util/mc/FakeInventory.kt @@ -0,0 +1,41 @@ +package util.mc + +import net.minecraft.entity.player.PlayerEntity +import net.minecraft.inventory.Inventory +import net.minecraft.item.ItemStack + +class FakeInventory(val stack: ItemStack) : Inventory { + override fun clear() { + } + + override fun size(): Int { + return 1 + } + + override fun isEmpty(): Boolean { + return stack.isEmpty + } + + override fun getStack(slot: Int): ItemStack { + require(slot == 0) + return stack + } + + override fun removeStack(slot: Int, amount: Int): ItemStack { + return ItemStack.EMPTY + } + + override fun removeStack(slot: Int): ItemStack { + return ItemStack.EMPTY + } + + override fun setStack(slot: Int, stack: ItemStack?) { + } + + override fun markDirty() { + } + + override fun canPlayerUse(player: PlayerEntity?): Boolean { + return true + } +} diff --git a/src/main/kotlin/util/mc/FakeSlot.kt b/src/main/kotlin/util/mc/FakeSlot.kt new file mode 100644 index 0000000..a9be484 --- /dev/null +++ b/src/main/kotlin/util/mc/FakeSlot.kt @@ -0,0 +1,15 @@ +package moe.nea.firmament.util.mc + +import util.mc.FakeInventory +import net.minecraft.item.ItemStack +import net.minecraft.screen.slot.Slot + +class FakeSlot( + stack: ItemStack, + x: Int, + y: Int +) : Slot(FakeInventory(stack), 0, x, y) { + init { + id = 0 + } +} -- cgit