aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt')
-rw-r--r--src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt111
1 files changed, 0 insertions, 111 deletions
diff --git a/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt b/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt
deleted file mode 100644
index 95b8aa5..0000000
--- a/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt
+++ /dev/null
@@ -1,111 +0,0 @@
-package moe.nea.ledger.modules
-
-import moe.nea.ledger.ItemChange
-import moe.nea.ledger.ItemId
-import moe.nea.ledger.ItemIdProvider
-import moe.nea.ledger.LedgerEntry
-import moe.nea.ledger.LedgerLogger
-import moe.nea.ledger.SHORT_NUMBER_PATTERN
-import moe.nea.ledger.TransactionType
-import moe.nea.ledger.asIterable
-import moe.nea.ledger.events.BeforeGuiAction
-import moe.nea.ledger.events.ChatReceived
-import moe.nea.ledger.events.ExtraSupplyIdEvent
-import moe.nea.ledger.getDisplayNameU
-import moe.nea.ledger.getInternalId
-import moe.nea.ledger.getLore
-import moe.nea.ledger.parseShortNumber
-import moe.nea.ledger.unformattedString
-import moe.nea.ledger.useMatcher
-import moe.nea.ledger.utils.ErrorUtil
-import moe.nea.ledger.utils.di.Inject
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
-import java.util.regex.Pattern
-
-class NpcDetection @Inject constructor(val ledger: LedgerLogger, val ids: ItemIdProvider) {
-
- val npcBuyPattern =
- Pattern.compile("You bought (back )?(?<what>.*?) (x(?<count>$SHORT_NUMBER_PATTERN) )?for (?<coins>$SHORT_NUMBER_PATTERN) Coins?!")
- val npcSellPattern =
- Pattern.compile("You sold (?<what>.*) (x(?<count>$SHORT_NUMBER_PATTERN) )?for (?<coins>$SHORT_NUMBER_PATTERN) Coins?!")
-
- // You bought InfiniDirtâ„¢ Wand!
- // You bought Prismapump x4!
- val npcBuyWithItemPattern =
- "You bought (?<what>.*?)!".toPattern()
- var storedPurchases = mutableMapOf<String, List<ItemChange>>()
-
- @SubscribeEvent
- fun onClick(event: BeforeGuiAction) {
- (event.chestSlots?.lowerChestInventory?.asIterable() ?: listOf())
- .filterNotNull().forEach {
- val name = it.getDisplayNameU().unformattedString()
- val id = it.getInternalId() ?: return@forEach
- val count = it.stackSize
- val cost = ids.findCostItemsFromSpan(it.getLore())
- storedPurchases[name] = listOf(ItemChange.gain(id, count)) + cost.map { ItemChange.unpairLose(it) }
- }
- }
-
- @SubscribeEvent
- fun addChocolate(event: ExtraSupplyIdEvent) {
- event.store("Chocolate", ItemId("SKYBLOCK_CHOCOLATE"))
- }
-
- @Inject
- lateinit var errorUtil: ErrorUtil
-
- @SubscribeEvent
- fun onBarteredItemBought(event: ChatReceived) {
- npcBuyWithItemPattern.useMatcher(event.message) {
- val changes = storedPurchases[group("what")]
- if (changes == null) {
- errorUtil.reportAdHoc("Item bought for items without associated cost")
- }
- storedPurchases.clear()
- ledger.logEntry(
- LedgerEntry(
- TransactionType.NPC_BUY,
- event.timestamp,
- changes ?: listOf()
- )
- )
- }
- }
-
- @SubscribeEvent
- fun onNpcBuy(event: ChatReceived) {
- npcBuyPattern.useMatcher(event.message) {
- ledger.logEntry(
- LedgerEntry(
- TransactionType.NPC_BUY,
- event.timestamp,
- listOf(
- ItemChange.loseCoins(
- parseShortNumber(group("coins")),
- ),
- ItemChange.gain(
- ids.findForName(group("what")) ?: ItemId.NIL,
- group("count")?.let(::parseShortNumber) ?: 1,
- )
- )
- )
- )
- }
- npcSellPattern.useMatcher(event.message) {
- ledger.logEntry(
- LedgerEntry(
- TransactionType.NPC_SELL,
- event.timestamp,
- listOf(
- ItemChange.gainCoins(parseShortNumber(group("coins"))),
- ItemChange.lose(
- ids.findForName(group("what")) ?: ItemId.NIL,
- group("count")?.let(::parseShortNumber)?.toInt() ?: 1,
- )
- )
- )
- )
- }
- }
-}