From aa8ca77ae239b9b6be140911524d70ba2b46c42d Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Thu, 15 Feb 2024 19:06:46 +0100 Subject: Add auction support --- src/main/kotlin/moe/nea/ledger/BeforeGuiAction.kt | 6 ++++++ src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt | 16 ++++++++-------- src/main/kotlin/moe/nea/ledger/ItemUtil.kt | 13 +++++++++++++ src/main/kotlin/moe/nea/ledger/Ledger.kt | 3 ++- 4 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 src/main/kotlin/moe/nea/ledger/BeforeGuiAction.kt create mode 100644 src/main/kotlin/moe/nea/ledger/ItemUtil.kt (limited to 'src/main/kotlin/moe/nea/ledger') diff --git a/src/main/kotlin/moe/nea/ledger/BeforeGuiAction.kt b/src/main/kotlin/moe/nea/ledger/BeforeGuiAction.kt new file mode 100644 index 0000000..1615263 --- /dev/null +++ b/src/main/kotlin/moe/nea/ledger/BeforeGuiAction.kt @@ -0,0 +1,6 @@ +package moe.nea.ledger + +import net.minecraft.client.gui.GuiScreen +import net.minecraftforge.fml.common.eventhandler.Event + +data class BeforeGuiAction(val gui: GuiScreen) : Event() diff --git a/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt b/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt index 8ad8d26..988e317 100644 --- a/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt +++ b/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt @@ -1,37 +1,37 @@ 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.common.MinecraftForge import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class ItemIdProvider { @SubscribeEvent fun onMouseInput(event: GuiScreenEvent.MouseInputEvent.Pre) { - saveInventoryIds(event.gui) + MinecraftForge.EVENT_BUS.post(BeforeGuiAction(event.gui)) } @SubscribeEvent fun onKeyInput(event: GuiScreenEvent.KeyboardInputEvent.Pre) { - saveInventoryIds(event.gui) + MinecraftForge.EVENT_BUS.post(BeforeGuiAction(event.gui)) } private val knownNames = mutableMapOf() - fun saveInventoryIds(gui: GuiScreen) { - val chest = (gui as? GuiChest) ?: return + @SubscribeEvent + fun saveInventoryIds(event: BeforeGuiAction) { + val chest = (event.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()) { + val id = stack.getInternalId() + if (id != null && name.isNotBlank()) { knownNames[name] = id } } diff --git a/src/main/kotlin/moe/nea/ledger/ItemUtil.kt b/src/main/kotlin/moe/nea/ledger/ItemUtil.kt new file mode 100644 index 0000000..365c37e --- /dev/null +++ b/src/main/kotlin/moe/nea/ledger/ItemUtil.kt @@ -0,0 +1,13 @@ +package moe.nea.ledger + +import net.minecraft.item.ItemStack +import net.minecraft.nbt.NBTTagCompound + + +fun ItemStack.getInternalId(): String? { + val nbt = this.tagCompound ?: NBTTagCompound() + val extraAttributes = nbt.getCompoundTag("ExtraAttributes") + val id = extraAttributes.getString("id") + return id.takeIf { it.isNotBlank() } +} + diff --git a/src/main/kotlin/moe/nea/ledger/Ledger.kt b/src/main/kotlin/moe/nea/ledger/Ledger.kt index 7f2f306..d1fc57d 100644 --- a/src/main/kotlin/moe/nea/ledger/Ledger.kt +++ b/src/main/kotlin/moe/nea/ledger/Ledger.kt @@ -42,7 +42,8 @@ class Ledger { this, ids, BankDetection(ledger), - BazaarDetection(ledger, ids) + BazaarDetection(ledger, ids), + AuctionHouseDetection(ledger, ids), ).forEach(MinecraftForge.EVENT_BUS::register) } -- cgit