aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/kotlin/moe/nea/ledger/DungeonChestDetection.kt (renamed from src/main/java/moe/nea/ledger/DungeonChestDetection.kt)0
-rw-r--r--src/main/kotlin/moe/nea/ledger/Ledger.kt190
-rw-r--r--src/main/kotlin/moe/nea/ledger/LedgerLogger.kt4
-rw-r--r--src/main/kotlin/moe/nea/ledger/config/LedgerConfig.kt27
-rw-r--r--src/main/kotlin/moe/nea/ledger/config/Synchronization.kt11
5 files changed, 158 insertions, 74 deletions
diff --git a/src/main/java/moe/nea/ledger/DungeonChestDetection.kt b/src/main/kotlin/moe/nea/ledger/DungeonChestDetection.kt
index 2418354..2418354 100644
--- a/src/main/java/moe/nea/ledger/DungeonChestDetection.kt
+++ b/src/main/kotlin/moe/nea/ledger/DungeonChestDetection.kt
diff --git a/src/main/kotlin/moe/nea/ledger/Ledger.kt b/src/main/kotlin/moe/nea/ledger/Ledger.kt
index 3745f36..f27eba1 100644
--- a/src/main/kotlin/moe/nea/ledger/Ledger.kt
+++ b/src/main/kotlin/moe/nea/ledger/Ledger.kt
@@ -1,7 +1,11 @@
package moe.nea.ledger
+import io.github.notenoughupdates.moulconfig.common.IMinecraft
+import io.github.notenoughupdates.moulconfig.managed.ManagedConfig
+import moe.nea.ledger.config.LedgerConfig
import net.minecraft.client.Minecraft
import net.minecraft.command.CommandBase
+import net.minecraft.command.ICommandSender
import net.minecraftforge.client.ClientCommandHandler
import net.minecraftforge.client.event.ClientChatReceivedEvent
import net.minecraftforge.common.MinecraftForge
@@ -13,81 +17,119 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent
import org.apache.logging.log4j.LogManager
+import java.io.File
+import java.util.concurrent.ConcurrentLinkedQueue
@Mod(modid = "ledger", useMetadata = true)
class Ledger {
- /*
- You have withdrawn 1M coins! You now have 518M coins in your account!
- You have deposited 519M coins! You now have 519M coins in your account!
-
- // ORDERS:
-
- [Bazaar] Buy Order Setup! 160x Wheat for 720.0 coins.
- [Bazaar] Claimed 160x Wheat worth 720.0 coins bought for 4.5 each!
-
- [Bazaar] Sell Offer Setup! 160x Wheat for 933.4 coins.
- [Bazaar] Claimed 34,236,799 coins from selling 176x Hyper Catalyst at 196,741 each!
-
- // INSTABUY:
-
- [Bazaar] Bought 64x Wheat for 377.6 coins!
- [Bazaar] Sold 64x Wheat for 268.8 coins!
-
- // AUCTION HOUSE:
-
- You collected 8,712,000 coins from selling Ultimate Carrot Candy Upgrade to [VIP] kodokush in an auction!
- You purchased 2x Walnut for 69 coins!
- You purchased ◆ Ice Rune I for 4,000 coins!
-
- TODO: TRADING, FORGE, COOKIE_EATEN, NPC_SELL, NPC_BUY
- */
- companion object {
- val logger = LogManager.getLogger("MoneyLedger")
- }
-
- @Mod.EventHandler
- fun init(event: FMLInitializationEvent) {
- logger.info("Initializing ledger")
- val ledger = LedgerLogger()
- val ids = ItemIdProvider()
- listOf(
- this,
- ids,
- ledger,
- BankDetection(ledger),
- BazaarDetection(ledger, ids),
- DungeonChestDetection(ledger),
- BazaarOrderDetection(ledger, ids),
- AuctionHouseDetection(ledger, ids),
- BitsDetection(ledger),
- BitsShop(ledger),
- ).forEach(MinecraftForge.EVENT_BUS::register)
- }
-
- var lastJoin = -1L
-
- @SubscribeEvent
- fun worldSwitchEvent(event: EntityJoinWorldEvent) {
- if (event.entity == Minecraft.getMinecraft().thePlayer) {
- lastJoin = System.currentTimeMillis()
- }
- }
-
- @SubscribeEvent
- fun tickEvent(event: ClientTickEvent) {
- if (event.phase == TickEvent.Phase.END
- && lastJoin > 0
- && System.currentTimeMillis() - lastJoin > 10_000
- && Minecraft.getMinecraft().thePlayer != null
- ) {
- lastJoin = -1
- MinecraftForge.EVENT_BUS.post(LateWorldLoadEvent())
- }
- }
-
- @SubscribeEvent(receiveCanceled = true, priority = EventPriority.HIGHEST)
- fun onChat(event: ClientChatReceivedEvent) {
- if (event.type != 2.toByte())
- MinecraftForge.EVENT_BUS.post(ChatReceived(event))
- }
+ /*
+ You have withdrawn 1M coins! You now have 518M coins in your account!
+ You have deposited 519M coins! You now have 519M coins in your account!
+
+ // ORDERS:
+
+ [Bazaar] Buy Order Setup! 160x Wheat for 720.0 coins.
+ [Bazaar] Claimed 160x Wheat worth 720.0 coins bought for 4.5 each!
+
+ [Bazaar] Sell Offer Setup! 160x Wheat for 933.4 coins.
+ [Bazaar] Claimed 34,236,799 coins from selling 176x Hyper Catalyst at 196,741 each!
+
+ // INSTABUY:
+
+ [Bazaar] Bought 64x Wheat for 377.6 coins!
+ [Bazaar] Sold 64x Wheat for 268.8 coins!
+
+ // AUCTION HOUSE:
+
+ You collected 8,712,000 coins from selling Ultimate Carrot Candy Upgrade to [VIP] kodokush in an auction!
+ You purchased 2x Walnut for 69 coins!
+ You purchased ◆ Ice Rune I for 4,000 coins!
+
+ TODO: TRADING, FORGE, COOKIE_EATEN, NPC_SELL, NPC_BUY
+ */
+ companion object {
+ val logger = LogManager.getLogger("MoneyLedger")
+ val managedConfig = ManagedConfig.create(File("config/money-ledger/config.json"), LedgerConfig::class.java) {
+ checkExpose = false
+ }
+ private val tickQueue = ConcurrentLinkedQueue<Runnable>()
+ fun runLater(runnable: Runnable) {
+ tickQueue.add(runnable)
+ }
+ }
+
+ @Mod.EventHandler
+ fun init(event: FMLInitializationEvent) {
+ logger.info("Initializing ledger")
+ ClientCommandHandler.instance.registerCommand(object : CommandBase() {
+ override fun canCommandSenderUseCommand(sender: ICommandSender?): Boolean {
+ return true
+ }
+
+ override fun getCommandName(): String {
+ return "ledger"
+ }
+
+ override fun getCommandUsage(sender: ICommandSender?): String {
+ return ""
+ }
+
+ override fun processCommand(sender: ICommandSender?, args: Array<out String>) {
+ val editor = managedConfig.getEditor()
+ editor.search(args.joinToString(" "))
+ runLater {
+ IMinecraft.instance.openWrappedScreen(editor)
+ }
+ }
+
+ override fun getCommandAliases(): List<String> {
+ return listOf("moneyledger")
+ }
+ })
+ val ledger = LedgerLogger()
+ val ids = ItemIdProvider()
+ listOf(
+ this,
+ ids,
+ ledger,
+ BankDetection(ledger),
+ BazaarDetection(ledger, ids),
+ DungeonChestDetection(ledger),
+ BazaarOrderDetection(ledger, ids),
+ AuctionHouseDetection(ledger, ids),
+ BitsDetection(ledger),
+ BitsShop(ledger),
+ ).forEach(MinecraftForge.EVENT_BUS::register)
+ }
+
+ var lastJoin = -1L
+
+ @SubscribeEvent
+ fun worldSwitchEvent(event: EntityJoinWorldEvent) {
+ if (event.entity == Minecraft.getMinecraft().thePlayer) {
+ lastJoin = System.currentTimeMillis()
+ }
+ }
+
+ @SubscribeEvent
+ fun tickEvent(event: ClientTickEvent) {
+ if (event.phase == TickEvent.Phase.END
+ && lastJoin > 0
+ && System.currentTimeMillis() - lastJoin > 10_000
+ && Minecraft.getMinecraft().thePlayer != null
+ ) {
+ lastJoin = -1
+ MinecraftForge.EVENT_BUS.post(LateWorldLoadEvent())
+ }
+ while (true) {
+ val queued = tickQueue.poll() ?: break
+ queued.run()
+ }
+ }
+
+ @SubscribeEvent(receiveCanceled = true, priority = EventPriority.HIGHEST)
+ fun onChat(event: ClientChatReceivedEvent) {
+ if (event.type != 2.toByte())
+ MinecraftForge.EVENT_BUS.post(ChatReceived(event))
+ }
}
diff --git a/src/main/kotlin/moe/nea/ledger/LedgerLogger.kt b/src/main/kotlin/moe/nea/ledger/LedgerLogger.kt
index 4d21e5d..c32caf4 100644
--- a/src/main/kotlin/moe/nea/ledger/LedgerLogger.kt
+++ b/src/main/kotlin/moe/nea/ledger/LedgerLogger.kt
@@ -11,6 +11,8 @@ import net.minecraftforge.client.ClientCommandHandler
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent
import java.io.File
+import java.sql.Connection
+import java.sql.DriverManager
import java.text.SimpleDateFormat
import java.time.Instant
import java.util.*
@@ -20,6 +22,8 @@ class LedgerLogger {
Minecraft.getMinecraft().ingameGUI?.chatGUI?.printChatMessage(ChatComponentText(text))
}
+ val connection = DriverManager.getConnection("jdbc:sqlite:money-ledger/database.db")
+
val profileIdPattern =
"Profile ID: (?<profile>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})".toPattern()
diff --git a/src/main/kotlin/moe/nea/ledger/config/LedgerConfig.kt b/src/main/kotlin/moe/nea/ledger/config/LedgerConfig.kt
new file mode 100644
index 0000000..7ba5abf
--- /dev/null
+++ b/src/main/kotlin/moe/nea/ledger/config/LedgerConfig.kt
@@ -0,0 +1,27 @@
+package moe.nea.ledger.config
+
+import io.github.notenoughupdates.moulconfig.Config
+import io.github.notenoughupdates.moulconfig.DescriptionRendereringBehaviour
+import io.github.notenoughupdates.moulconfig.annotations.Category
+import io.github.notenoughupdates.moulconfig.processor.ProcessedOption
+import moe.nea.ledger.Ledger
+
+class LedgerConfig : Config() {
+ override fun getTitle(): String {
+ return "§6Ledger §7- §6Hypixel SkyBlock data logger §7by §anea89o"
+ }
+
+ override fun saveNow() {
+ super.saveNow()
+ Ledger.managedConfig.saveToFile()
+ }
+
+ override fun getDescriptionBehaviour(option: ProcessedOption?): DescriptionRendereringBehaviour {
+ return DescriptionRendereringBehaviour.EXPAND_PANEL
+ }
+
+ @Category(name = "Synchronization", desc = "")
+ @JvmField
+ val synchronization = Synchronization()
+
+} \ No newline at end of file
diff --git a/src/main/kotlin/moe/nea/ledger/config/Synchronization.kt b/src/main/kotlin/moe/nea/ledger/config/Synchronization.kt
new file mode 100644
index 0000000..e8d5906
--- /dev/null
+++ b/src/main/kotlin/moe/nea/ledger/config/Synchronization.kt
@@ -0,0 +1,11 @@
+package moe.nea.ledger.config
+
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean
+import io.github.notenoughupdates.moulconfig.annotations.ConfigOption
+
+class Synchronization {
+ @ConfigOption(name = "Test Option", desc = "Test Description")
+ @ConfigEditorBoolean
+ @JvmField
+ var testOption = false
+} \ No newline at end of file