Skip to content

Commit 4f3e896

Browse files
Add Ender Chest to InventoryViewer (#68) (#234)
* Add Ender Chest to InventoryViewer (#68) Closes #68 * Remove unneeded logging import * Cleanup Co-authored-by: Constructor <[email protected]>
1 parent 358a842 commit 4f3e896

File tree

1 file changed

+41
-7
lines changed

1 file changed

+41
-7
lines changed

src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/InventoryViewer.kt

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@ import com.lambda.client.util.graphics.VertexHelper
1010
import com.lambda.client.util.items.storageSlots
1111
import com.lambda.client.util.math.Vec2d
1212
import com.lambda.client.util.threads.runSafe
13+
import net.minecraft.client.gui.inventory.GuiContainer
1314
import net.minecraft.client.renderer.GlStateManager
1415
import net.minecraft.client.renderer.Tessellator
1516
import net.minecraft.client.renderer.vertex.DefaultVertexFormats
17+
import net.minecraft.init.Blocks
18+
import net.minecraft.inventory.Container
19+
import net.minecraft.inventory.ContainerChest
20+
import net.minecraft.inventory.InventoryBasic
21+
import net.minecraft.item.ItemStack
1622
import net.minecraft.util.ResourceLocation
1723
import org.lwjgl.opengl.GL11.*
1824

@@ -21,14 +27,15 @@ internal object InventoryViewer : HudElement(
2127
category = Category.PLAYER,
2228
description = "Items in Inventory"
2329
) {
30+
private val enderChest by setting("Inventory", SlotType.PLAYER)
2431
private val mcTexture by setting("Minecraft Texture", false)
2532
private val showIcon by setting("Show Icon", false, { !mcTexture })
2633
private val iconScale by setting("Icon Scale", 0.5f, 0.1f..1.0f, 0.1f, { !mcTexture && showIcon })
2734
private val background by setting("Background", true, { !mcTexture })
2835
private val alpha by setting("Alpha", 150, 0..255, 1, { !mcTexture })
29-
3036
private val containerTexture = ResourceLocation("textures/gui/container/inventory.png")
3137
private val lambdaIcon = ResourceLocation("lambda/lambda_icon.png")
38+
private var enderChestContents: MutableList<ItemStack> = MutableList(27) { ItemStack(Blocks.AIR) }
3239

3340
override val hudWidth: Float = 162.0f
3441
override val hudHeight: Float = 54.0f
@@ -38,6 +45,7 @@ internal object InventoryViewer : HudElement(
3845
runSafe {
3946
drawFrame(vertexHelper)
4047
drawFrameTexture()
48+
checkEnderChest()
4149
drawItems()
4250
}
4351
}
@@ -85,16 +93,42 @@ internal object InventoryViewer : HudElement(
8593
}
8694
}
8795

96+
97+
private fun checkEnderChest() {
98+
if (mc.currentScreen is GuiContainer) {
99+
val container = (mc.currentScreen as GuiContainer).inventorySlots
100+
if (container is ContainerChest && container.lowerChestInventory is InventoryBasic) {
101+
val inv = (container.lowerChestInventory as InventoryBasic)
102+
if (inv.name.equals("Ender Chest", true)) {
103+
for (i in 0..26) enderChestContents[i] = container.inventory[i]
104+
}
105+
}
106+
}
107+
}
108+
88109
private fun SafeClientEvent.drawItems() {
89-
for ((index, slot) in player.storageSlots.withIndex()) {
90-
val itemStack = slot.stack
91-
if (itemStack.isEmpty) continue
110+
if (enderChest == SlotType.ENDER_CHEST) {
111+
for ((index, stack) in enderChestContents.withIndex()) {
112+
if (stack.isEmpty) continue
113+
114+
val slotX = index % 9 * 18 + 1
115+
val slotY = index / 9 * 18 + 1
116+
RenderUtils2D.drawItem(stack, slotX, slotY)
117+
}
118+
} else {
119+
for ((index, slot) in player.storageSlots.withIndex()) {
120+
val itemStack = slot.stack
121+
if (itemStack.isEmpty) continue
92122

93-
val slotX = index % 9 * 18 + 1
94-
val slotY = index / 9 * 18 + 1
123+
val slotX = index % 9 * 18 + 1
124+
val slotY = index / 9 * 18 + 1
95125

96-
RenderUtils2D.drawItem(itemStack, slotX, slotY)
126+
RenderUtils2D.drawItem(itemStack, slotX, slotY)
127+
}
97128
}
98129
}
99130

131+
private enum class SlotType {
132+
PLAYER, ENDER_CHEST
133+
}
100134
}

0 commit comments

Comments
 (0)