diff options
Diffstat (limited to 'src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt b/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt new file mode 100644 index 0000000..8ad8d26 --- /dev/null +++ b/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt @@ -0,0 +1,44 @@ +package moe.nea.ledger + +import net.minecraft.client.gui.GuiScreen +import net.minecraft.client.gui.inventory.GuiChest +import net.minecraft.inventory.ContainerChest +import net.minecraft.nbt.NBTTagCompound +import net.minecraftforge.client.event.GuiScreenEvent +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +class ItemIdProvider { + + @SubscribeEvent + fun onMouseInput(event: GuiScreenEvent.MouseInputEvent.Pre) { + saveInventoryIds(event.gui) + } + + @SubscribeEvent + fun onKeyInput(event: GuiScreenEvent.KeyboardInputEvent.Pre) { + saveInventoryIds(event.gui) + } + + private val knownNames = mutableMapOf<String, String>() + + fun saveInventoryIds(gui: GuiScreen) { + val chest = (gui as? GuiChest) ?: return + val slots = chest.inventorySlots as ContainerChest + slots.inventorySlots.forEach { + val stack = it.stack ?: return@forEach + val nbt = stack.tagCompound ?: NBTTagCompound() + val display = nbt.getCompoundTag("display") + val name = display.getString("Name").unformattedString() + val extraAttributes = nbt.getCompoundTag("ExtraAttributes") + val id = extraAttributes.getString("id") + if (id.isNotBlank() && name.isNotBlank()) { + knownNames[name] = id + } + } + } + + fun findForName(name: String): String? { + return knownNames[name] + } + +}
\ No newline at end of file |