diff options
Diffstat (limited to 'src/main/kotlin/moe')
-rw-r--r-- | src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt | 44 | ||||
-rw-r--r-- | src/main/kotlin/moe/nea/ledger/Ledger.kt | 4 | ||||
-rw-r--r-- | src/main/kotlin/moe/nea/ledger/NumberUtil.kt | 1 |
3 files changed, 48 insertions, 1 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 diff --git a/src/main/kotlin/moe/nea/ledger/Ledger.kt b/src/main/kotlin/moe/nea/ledger/Ledger.kt index 773f90e..7f2f306 100644 --- a/src/main/kotlin/moe/nea/ledger/Ledger.kt +++ b/src/main/kotlin/moe/nea/ledger/Ledger.kt @@ -37,10 +37,12 @@ class Ledger { @Mod.EventHandler fun init(event: FMLInitializationEvent) { val ledger = LedgerLogger() + val ids = ItemIdProvider() listOf( this, + ids, BankDetection(ledger), - BazaarDetection(ledger) + BazaarDetection(ledger, ids) ).forEach(MinecraftForge.EVENT_BUS::register) } diff --git a/src/main/kotlin/moe/nea/ledger/NumberUtil.kt b/src/main/kotlin/moe/nea/ledger/NumberUtil.kt index 8aa9bb8..267a8c5 100644 --- a/src/main/kotlin/moe/nea/ledger/NumberUtil.kt +++ b/src/main/kotlin/moe/nea/ledger/NumberUtil.kt @@ -30,3 +30,4 @@ fun parseShortNumber(string: String): Double { fun <T> Pattern.useMatcher(string: String, block: Matcher.() -> T): T? = matcher(string).takeIf { it.matches() }?.let(block) +fun String.unformattedString(): String = replace("ยง.".toRegex(), "")
\ No newline at end of file |