Skip to content

Commit

Permalink
feat: Add item rarities into all storage overlay pages
Browse files Browse the repository at this point in the history
  • Loading branch information
nea89o committed Nov 17, 2024
1 parent 3954f51 commit 067c90d
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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("")) {
Expand Down Expand Up @@ -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
Expand Down
41 changes: 41 additions & 0 deletions src/main/kotlin/util/mc/FakeInventory.kt
Original file line number Diff line number Diff line change
@@ -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
}
}
15 changes: 15 additions & 0 deletions src/main/kotlin/util/mc/FakeSlot.kt
Original file line number Diff line number Diff line change
@@ -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
}
}

0 comments on commit 067c90d

Please sign in to comment.