diff options
Diffstat (limited to 'src/main/kotlin')
72 files changed, 0 insertions, 4060 deletions
diff --git a/src/main/kotlin/moe/nea/ledger/ConfigCommand.kt b/src/main/kotlin/moe/nea/ledger/ConfigCommand.kt deleted file mode 100644 index 5b964c8..0000000 --- a/src/main/kotlin/moe/nea/ledger/ConfigCommand.kt +++ /dev/null @@ -1,31 +0,0 @@ -package moe.nea.ledger - -import io.github.notenoughupdates.moulconfig.common.IMinecraft -import net.minecraft.command.CommandBase -import net.minecraft.command.ICommandSender - -class ConfigCommand : CommandBase() { - override fun canCommandSenderUseCommand(sender: ICommandSender?): Boolean { - return true - } - - override fun getCommandName(): String { - return "ledgerconfig" - } - - override fun getCommandUsage(sender: ICommandSender?): String { - return "" - } - - override fun processCommand(sender: ICommandSender?, args: Array<out String>) { - val editor = Ledger.managedConfig.getEditor() - editor.search(args.joinToString(" ")) - Ledger.runLater { - IMinecraft.instance.openWrappedScreen(editor) - } - } - - override fun getCommandAliases(): List<String> { - return listOf("moneyledger") - } -}
\ No newline at end of file diff --git a/src/main/kotlin/moe/nea/ledger/DebugDataCommand.kt b/src/main/kotlin/moe/nea/ledger/DebugDataCommand.kt deleted file mode 100644 index bab0a78..0000000 --- a/src/main/kotlin/moe/nea/ledger/DebugDataCommand.kt +++ /dev/null @@ -1,34 +0,0 @@ -package moe.nea.ledger - -import moe.nea.ledger.events.SupplyDebugInfo -import moe.nea.ledger.utils.di.Inject -import net.minecraft.command.CommandBase -import net.minecraft.command.ICommandSender -import net.minecraftforge.common.MinecraftForge - -class DebugDataCommand : CommandBase() { - - override fun canCommandSenderUseCommand(sender: ICommandSender?): Boolean { - return true - } - - override fun getCommandName(): String { - return "ledgerdebug" - } - - override fun getCommandUsage(sender: ICommandSender?): String { - return "" - } - - @Inject - lateinit var logger: LedgerLogger - - override fun processCommand(sender: ICommandSender?, args: Array<out String>?) { - val debugInfo = SupplyDebugInfo() - MinecraftForge.EVENT_BUS.post(debugInfo) - logger.printOut("Collected debug info:") - debugInfo.data.forEach { - logger.printOut("${it.first}: ${it.second}") - } - } -}
\ No newline at end of file diff --git a/src/main/kotlin/moe/nea/ledger/DevUtil.kt b/src/main/kotlin/moe/nea/ledger/DevUtil.kt deleted file mode 100644 index d0dd653..0000000 --- a/src/main/kotlin/moe/nea/ledger/DevUtil.kt +++ /dev/null @@ -1,7 +0,0 @@ -package moe.nea.ledger - -import net.minecraft.launchwrapper.Launch - -object DevUtil { - val isDevEnv = Launch.blackboard["fml.deobfuscatedEnvironment"] as Boolean -}
\ No newline at end of file diff --git a/src/main/kotlin/moe/nea/ledger/ExpiringValue.kt b/src/main/kotlin/moe/nea/ledger/ExpiringValue.kt deleted file mode 100644 index dac4751..0000000 --- a/src/main/kotlin/moe/nea/ledger/ExpiringValue.kt +++ /dev/null @@ -1,28 +0,0 @@ -package moe.nea.ledger - -import kotlin.time.Duration -import kotlin.time.Duration.Companion.nanoseconds - -class ExpiringValue<T>(private val value: T) { - val lastSeenAt: Long = System.nanoTime() - val age get() = (System.nanoTime() - lastSeenAt).nanoseconds - var taken = false - fun get(expiry: Duration): T? { - return if (!taken && expiry > age) value - else null - } - - companion object { - fun <T> empty(): ExpiringValue<T> { - val value = ExpiringValue(Unit) - value.take() - @Suppress("UNCHECKED_CAST") - return value as ExpiringValue<T> - } - } - - fun consume(expiry: Duration): T? = get(expiry).also { take() } - fun take() { - taken = true - } -}
\ No newline at end of file diff --git a/src/main/kotlin/moe/nea/ledger/ItemChange.kt b/src/main/kotlin/moe/nea/ledger/ItemChange.kt deleted file mode 100644 index 186a4e3..0000000 --- a/src/main/kotlin/moe/nea/ledger/ItemChange.kt +++ /dev/null @@ -1,83 +0,0 @@ -package moe.nea.ledger - -import moe.nea.ledger.database.DBItemEntry -import moe.nea.ledger.database.ResultRow -import net.minecraft.event.HoverEvent -import net.minecraft.util.ChatComponentText -import net.minecraft.util.ChatStyle -import net.minecraft.util.EnumChatFormatting -import net.minecraft.util.IChatComponent - -data class ItemChange( - val itemId: ItemId, - val count: Double, - val direction: ChangeDirection, -) { - fun formatChat(): IChatComponent { - return ChatComponentText(" ") - .appendSibling(direction.chatFormat) - .appendText(" ") - .appendSibling(ChatComponentText("$count").setChatStyle(ChatStyle().setColor(EnumChatFormatting.WHITE))) - .appendSibling(ChatComponentText("x").setChatStyle(ChatStyle().setColor(EnumChatFormatting.DARK_GRAY))) - .appendText(" ") - .appendSibling(ChatComponentText(itemId.string).setChatStyle(ChatStyle().setParentStyle(ChatStyle().setColor( - EnumChatFormatting.WHITE)))) - } - - enum class ChangeDirection { - GAINED, - TRANSFORM, - SYNC, - CATALYST, - LOST; - - val chatFormat by lazy { formatChat0() } - private fun formatChat0(): IChatComponent { - val (text, color) = when (this) { - GAINED -> "+" to EnumChatFormatting.GREEN - TRANSFORM -> "~" to EnumChatFormatting.YELLOW - SYNC -> "=" to EnumChatFormatting.BLUE - CATALYST -> "*" to EnumChatFormatting.DARK_PURPLE - LOST -> "-" to EnumChatFormatting.RED - } - return ChatComponentText(text) - .setChatStyle( - ChatStyle() - .setColor(color) - .setChatHoverEvent(HoverEvent(HoverEvent.Action.SHOW_TEXT, - ChatComponentText(name).setChatStyle(ChatStyle().setColor(color))))) - } - } - - companion object { - fun gainCoins(number: Double): ItemChange { - return gain(ItemId.COINS, number) - } - - fun unpair(direction: ChangeDirection, pair: Pair<ItemId, Double>): ItemChange { - return ItemChange(pair.first, pair.second, direction) - } - - fun unpairGain(pair: Pair<ItemId, Double>) = unpair(ChangeDirection.GAINED, pair) - - fun gain(itemId: ItemId, amount: Number): ItemChange { - return ItemChange(itemId, amount.toDouble(), ChangeDirection.GAINED) - } - - fun lose(itemId: ItemId, amount: Number): ItemChange { - return ItemChange(itemId, amount.toDouble(), ChangeDirection.LOST) - } - - fun loseCoins(number: Double): ItemChange { - return lose(ItemId.COINS, number) - } - - fun from(result: ResultRow): ItemChange { - return ItemChange( - result[DBItemEntry.itemId], - result[DBItemEntry.size], - result[DBItemEntry.mode], - ) - } - } -}
\ No newline at end of file diff --git a/src/main/kotlin/moe/nea/ledger/ItemId.kt b/src/main/kotlin/moe/nea/ledger/ItemId.kt deleted file mode 100644 index 2b83357..0000000 --- a/src/main/kotlin/moe/nea/ledger/ItemId.kt +++ /dev/null @@ -1,37 +0,0 @@ -package moe.nea.ledger - -@JvmInline -value class ItemId( - val string: String -) { - fun singleItem(): Pair<ItemId, Double> { - return withStackSize(1) - } - - fun withStackSize(size: Number): Pair<ItemId, Double> { - return Pair(this, size.toDouble()) - } - - - companion object { - fun skill(skill: String) = ItemId("SKYBLOCK_SKILL_$skill") - - val GARDEN = skill("GARDEN") - val FARMING = skill("FARMING") - val GEMSTONE_POWDER = ItemId("SKYBLOCK_POWDER_GEMSTONE") - val MITHRIL_POWDER = ItemId("SKYBLOCK_POWDER_MITHRIL") - val GOLD_ESSENCE = ItemId("ESSENCE_GOLD") - val PELT = ItemId("SKYBLOCK_PELT") - val COINS = ItemId("SKYBLOCK_COIN") - val FINE_FLOUR = ItemId("FINE_FLOUR") - val BITS = ItemId("SKYBLOCK_BIT") - val COPPER = ItemId("SKYBLOCK_COPPER") - val NIL = ItemId("SKYBLOCK_NIL") - val ARCHFIEND_LOW_CLASS = ItemId("ARCHFIEND_DICE") - val ARCHFIEND_HIGH_CLASS = ItemId("HIGH_CLASS_ARCHFIEND_DICE") - val ARCHFIEND_DYE = ItemId("DYE_ARCHFIEND") - val DUNGEON_CHEST_KEY = ItemId("DUNGEON_CHEST_KEY") - val BOOSTER_COOKIE = ItemId("BOOSTER_COOKIE") - val KISMET_FEATHER = ItemId("KISMET_FEATHER") - } -}
\ No newline at end of file diff --git a/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt b/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt deleted file mode 100644 index 30610e9..0000000 --- a/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt +++ /dev/null @@ -1,162 +0,0 @@ -package moe.nea.ledger - -import moe.nea.ledger.events.BeforeGuiAction -import moe.nea.ledger.events.ExtraSupplyIdEvent -import moe.nea.ledger.events.RegistrationFinishedEvent -import moe.nea.ledger.events.SupplyDebugInfo -import moe.nea.ledger.modules.ExternalDataProvider -import net.minecraft.client.Minecraft -import net.minecraft.item.ItemStack -import net.minecraft.nbt.NBTTagCompound -import net.minecraftforge.client.event.GuiScreenEvent -import net.minecraftforge.common.MinecraftForge -import net.minecraftforge.fml.common.eventhandler.EventPriority -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -import org.lwjgl.input.Mouse - -class ItemIdProvider { - - @SubscribeEvent - fun onMouseInput(event: GuiScreenEvent.MouseInputEvent.Pre) { - if (Mouse.getEventButton() == -1) return - MinecraftForge.EVENT_BUS.post(BeforeGuiAction(event.gui)) - } - - @SubscribeEvent - fun onKeyInput(event: GuiScreenEvent.KeyboardInputEvent.Pre) { - MinecraftForge.EVENT_BUS.post(BeforeGuiAction(event.gui)) - } - - private val knownNames = mutableMapOf<String, ItemId>() - - @SubscribeEvent - fun onDataLoaded(event: ExternalDataProvider.DataLoaded) { - event.provider.itemNames.forEach { (itemId, itemName) -> - knownNames[itemName.unformattedString().trim()] = ItemId(itemId) - } - } - - @SubscribeEvent - fun onRegistrationFinished(event: RegistrationFinishedEvent) { - MinecraftForge.EVENT_BUS.post(ExtraSupplyIdEvent(knownNames::put)) - } - - @SubscribeEvent(priority = EventPriority.HIGH) - fun savePlayerInventoryIds(event: BeforeGuiAction) { - val player = Minecraft.getMinecraft().thePlayer ?: return - val inventory = player.inventory ?: return - inventory.mainInventory?.forEach { saveFromSlot(it) } - inventory.armorInventory?.forEach { saveFromSlot(it) } - } - - @SubscribeEvent - fun onDebugData(event: SupplyDebugInfo) { - event.record("knownItemNames", knownNames.size) - } - - fun saveFromSlot(stack: ItemStack?, preprocessName: (String) -> String = { it }) { - if (stack == null) return - val nbt = stack.tagCompound ?: NBTTagCompound() - val display = nbt.getCompoundTag("display") - var name = display.getString("Name").unformattedString() - name = preprocessName(name) - name = name.trim() - val id = stack.getInternalId() - if (id != null && name.isNotBlank()) { - knownNames[name] = id - } - } - - @SubscribeEvent(priority = EventPriority.HIGH) - fun saveChestInventoryIds(event: BeforeGuiAction) { - val slots = event.chestSlots ?: return - val chestName = slots.lowerChestInventory.name.unformattedString() - val isOrderMenu = chestName == "Your Bazaar Orders" || chestName == "Co-op Bazaar Orders" - val preprocessor: (String) -> String = if (isOrderMenu) { - { it.removePrefix("BUY ").removePrefix("SELL ") } - } else { - { it } - } - slots.inventorySlots.forEach { - saveFromSlot(it?.stack, preprocessor) - } - } - - // TODO: make use of colour - fun findForName(name: String, fallbackToGenerated: Boolean = true): ItemId? { - var id = knownNames[name] - if (id == null && fallbackToGenerated) { - id = generateName(name) - } - return id - } - - fun generateName(name: String): ItemId { - return ItemId(name.uppercase().replace(" ", "_")) - } - - private val coinRegex = "(?<amount>$SHORT_NUMBER_PATTERN) Coins?".toPattern() - private val stackedItemRegex = "(?<name>.*) x(?<count>$SHORT_NUMBER_PATTERN)".toPattern() - private val essenceRegex = "(?<essence>.*) Essence x(?<count>$SHORT_NUMBER_PATTERN)".toPattern() - - fun findCostItemsFromSpan(lore: List<String>): List<Pair<ItemId, Double>> { - return lore.iterator().asSequence() - .dropWhile { it.unformattedString() != "Cost" }.drop(1) - .takeWhile { it != "" } - .map { findStackableItemByName(it) ?: Pair(ItemId.NIL, 1.0) } - .toList() - } - - private val etherialRewardPattern = "\\+(?<amount>${SHORT_NUMBER_PATTERN})x? (?<what>.*)".toPattern() - - fun findStackableItemByName(name: String, fallbackToGenerated: Boolean = false): Pair<ItemId, Double>? { - val properName = name.unformattedString().trim() - if (properName == "FREE" || properName == "This Chest is Free!") { - return Pair(ItemId.COINS, 0.0) - } - coinRegex.useMatcher(properName) { - return Pair(ItemId.COINS, parseShortNumber(group("amount"))) - } - etherialRewardPattern.useMatcher(properName) { - val id = when (val id = group("what")) { - "Copper" -> ItemId.COPPER - "Bits" -> ItemId.BITS - "Garden Experience" -> ItemId.GARDEN - "Farming XP" -> ItemId.FARMING - "Gold Essence" -> ItemId.GOLD_ESSENCE - "Gemstone Powder" -> ItemId.GEMSTONE_POWDER - "Mithril Powder" -> ItemId.MITHRIL_POWDER - "Pelts" -> ItemId.PELT - "Fine Flour" -> ItemId.FINE_FLOUR - else -> { - id.ifDropLast(" Experience") { - ItemId.skill(generateName(it).string) - } ?: id.ifDropLast(" XP") { - ItemId.skill(generateName(it).string) - } ?: id.ifDropLast(" Powder") { - ItemId("SKYBLOCK_POWDER_${generateName(it).string}") - } ?: id.ifDropLast(" Essence") { - ItemId("ESSENCE_${generateName(it).string}") - } ?: generateName(id) - } - } - return Pair(id, parseShortNumber(group("amount"))) - } - essenceRegex.useMatcher(properName) { - return Pair(ItemId("ESSENCE_${group("essence").uppercase()}"), - parseShortNumber(group("count"))) - } - stackedItemRegex.useMatcher(properName) { - var item = findForName(group("name"), fallbackToGenerated) - if (item != null) { - val count = parseShortNumber(group("count")) - return Pair(item, count) - } - } - return findForName(properName, fallbackToGenerated)?.let { Pair(it, 1.0) } - } - - fun getKnownItemIds(): Collection<ItemId> { - return knownNames.values - } -}
\ No newline at end of file diff --git a/src/main/kotlin/moe/nea/ledger/ItemUtil.kt b/src/main/kotlin/moe/nea/ledger/ItemUtil.kt deleted file mode 100644 index 949f58a..0000000 --- a/src/main/kotlin/moe/nea/ledger/ItemUtil.kt +++ /dev/null @@ -1,70 +0,0 @@ -package moe.nea.ledger - -import net.minecraft.item.ItemStack -import net.minecraft.nbt.NBTTagCompound - - -fun ItemStack.getExtraAttributes(): NBTTagCompound { - val nbt = this.tagCompound ?: return NBTTagCompound() - return nbt.getCompoundTag("ExtraAttributes") -} - -fun ItemStack?.getInternalId(): Item |
