aboutsummaryrefslogtreecommitdiff
path: root/mod/src
diff options
context:
space:
mode:
Diffstat (limited to 'mod/src')
-rw-r--r--mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java2
-rw-r--r--mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerDispenser.java12
-rw-r--r--mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerHopper.java13
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/ItemChange.kt84
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/ItemId.kt35
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt4
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/Ledger.kt25
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/NumberUtil.kt35
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/QueryCommand.kt4
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/TransactionType.kt35
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/config/DebugOptions.kt3
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/database/DBLogEntry.kt24
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/database/DBUpgrade.kt68
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/database/Database.kt57
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/database/Upgrades.kt20
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/database/schema.dot23
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/BeforeGuiAction.kt12
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/LedgerEvent.kt22
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/AccessorySwapperDetection.kt6
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BankInterestDetection.kt44
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BasicReforgeDetection.kt71
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BitsDetection.kt5
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BitsShopDetection.kt8
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/CaducousFeederDetection.kt48
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/DragonEyePlacementDetection.kt1
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/DragonSacrificeDetection.kt1
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/DungeonChestDetection.kt2
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/ExternalDataProvider.kt5
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/EyedropsDetection.kt7
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/ForgeDetection.kt3
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GambleDetection.kt1
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GhostCoinDropDetection.kt38
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GodPotionDetection.kt7
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GodPotionMixinDetection.kt6
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GummyPolarBearDetection.kt34
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/KuudraChestDetection.kt3
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/PestRepellentDetection.kt47
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/StonksAuctionDetection.kt59
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/VisitorDetection.kt3
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/telemetry/GuiContextValue.kt16
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/telemetry/TelemetryProvider.kt (renamed from mod/src/main/kotlin/moe/nea/ledger/TelemetryProvider.kt)6
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.kt4
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/ScreenUtil.kt29
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/network/RequestTrace.kt21
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/network/RequestUtil.kt9
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/Span.kt3
46 files changed, 571 insertions, 394 deletions
diff --git a/mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java b/mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java
index 56841b5..64fa6c2 100644
--- a/mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java
+++ b/mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java
@@ -96,6 +96,8 @@ public class AutoDiscoveryMixinPlugin implements IMixinConfigPlugin {
* @param className the name or path of a class to be registered as a mixin.
*/
public void tryAddMixinClass(String className) {
+ if (!className.endsWith(".class")) return;
+ if (className.indexOf('$') >= 0) return;
String norm = (className.endsWith(".class") ? className.substring(0, className.length() - ".class".length()) : className)
.replace("\\", "/")
.replace("/", ".");
diff --git a/mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerDispenser.java b/mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerDispenser.java
new file mode 100644
index 0000000..a3d32c4
--- /dev/null
+++ b/mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerDispenser.java
@@ -0,0 +1,12 @@
+package moe.nea.ledger.mixin;
+
+import net.minecraft.inventory.ContainerDispenser;
+import net.minecraft.inventory.IInventory;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(ContainerDispenser.class)
+public interface AccessorContainerDispenser {
+ @Accessor("dispenserInventory")
+ IInventory getDispenserInventory_ledger();
+}
diff --git a/mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerHopper.java b/mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerHopper.java
new file mode 100644
index 0000000..ee29d4f
--- /dev/null
+++ b/mod/src/main/java/moe/nea/ledger/mixin/AccessorContainerHopper.java
@@ -0,0 +1,13 @@
+package moe.nea.ledger.mixin;
+
+import net.minecraft.inventory.ContainerDispenser;
+import net.minecraft.inventory.ContainerHopper;
+import net.minecraft.inventory.IInventory;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(ContainerHopper.class)
+public interface AccessorContainerHopper {
+ @Accessor("hopperInventory")
+ IInventory getHopperInventory_ledger();
+}
diff --git a/mod/src/main/kotlin/moe/nea/ledger/ItemChange.kt b/mod/src/main/kotlin/moe/nea/ledger/ItemChange.kt
deleted file mode 100644
index fda709c..0000000
--- a/mod/src/main/kotlin/moe/nea/ledger/ItemChange.kt
+++ /dev/null
@@ -1,84 +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 unpairLose(pair: Pair<ItemId, Double>) = unpair(ChangeDirection.LOST, 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/mod/src/main/kotlin/moe/nea/ledger/ItemId.kt b/mod/src/main/kotlin/moe/nea/ledger/ItemId.kt
deleted file mode 100644
index 8211cd3..0000000
--- a/mod/src/main/kotlin/moe/nea/ledger/ItemId.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package moe.nea.ledger
-
-import moe.nea.ledger.utils.NoSideEffects
-
-data class ItemId(
- val string: String
-) {
- @NoSideEffects
- fun singleItem(): Pair<ItemId, Double> {
- return withStackSize(1)
- }
-
- @NoSideEffects
- fun withStackSize(size: Number): Pair<ItemId, Double> {
- return Pair(this, size.toDouble())
- }
-
-
- companion object {
-
- @JvmStatic
- @NoSideEffects
- fun forName(string: String) = ItemId(string)
- fun skill(skill: String) = ItemId("SKYBLOCK_SKILL_$skill")
-
- val GARDEN = skill("GARDEN")
- val FARMING = skill("FARMING")
-
-
- val COINS = ItemId("SKYBLOCK_COIN")
- val GEMSTONE_POWDER = ItemId("SKYBLOCK_POWDER_GEMSTONE")
- val MITHRIL_POWDER = ItemId("SKYBLOCK_POWDER_MITHRIL")
- val NIL = ItemId("SKYBLOCK_NIL")
- }
-} \ No newline at end of file
diff --git a/mod/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt b/mod/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt
index 0bacf32..ff2c691 100644
--- a/mod/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt
+++ b/mod/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt
@@ -20,12 +20,12 @@ class ItemIdProvider {
@SubscribeEvent
fun onMouseInput(event: GuiScreenEvent.MouseInputEvent.Pre) {
if (Mouse.getEventButton() == -1) return
- MinecraftForge.EVENT_BUS.post(BeforeGuiAction(event.gui))
+ BeforeGuiAction(event.gui).post()
}
@SubscribeEvent
fun onKeyInput(event: GuiScreenEvent.KeyboardInputEvent.Pre) {
- MinecraftForge.EVENT_BUS.post(BeforeGuiAction(event.gui))
+ BeforeGuiAction(event.gui).post()
}
private val knownNames = mutableMapOf<String, ItemId>()
diff --git a/mod/src/main/kotlin/moe/nea/ledger/Ledger.kt b/mod/src/main/kotlin/moe/nea/ledger/Ledger.kt
index bc667e4..87c990c 100644
--- a/mod/src/main/kotlin/moe/nea/ledger/Ledger.kt
+++ b/mod/src/main/kotlin/moe/nea/ledger/Ledger.kt
@@ -16,26 +16,34 @@ import moe.nea.ledger.modules.AccessorySwapperDetection
import moe.nea.ledger.modules.AllowanceDetection
import moe.nea.ledger.modules.AuctionHouseDetection
import moe.nea.ledger.modules.BankDetection
+import moe.nea.ledger.modules.BankInterestDetection
+import moe.nea.ledger.modules.BasicReforgeDetection
import moe.nea.ledger.modules.BazaarDetection
import moe.nea.ledger.modules.BazaarOrderDetection
import moe.nea.ledger.modules.BitsDetection
import moe.nea.ledger.modules.BitsShopDetection
+import moe.nea.ledger.modules.CaducousFeederDetection
import moe.nea.ledger.modules.DragonEyePlacementDetection
-import moe.nea.ledger.modules.`DragonSacrificeDetection`
+import moe.nea.ledger.modules.DragonSacrificeDetection
import moe.nea.ledger.modules.DungeonChestDetection
import moe.nea.ledger.modules.ExternalDataProvider
import moe.nea.ledger.modules.EyedropsDetection
import moe.nea.ledger.modules.ForgeDetection
import moe.nea.ledger.modules.GambleDetection
+import moe.nea.ledger.modules.GhostCoinDropDetection
import moe.nea.ledger.modules.GodPotionDetection
import moe.nea.ledger.modules.GodPotionMixinDetection
+import moe.nea.ledger.modules.GummyPolarBearDetection
import moe.nea.ledger.modules.KatDetection
import moe.nea.ledger.modules.KuudraChestDetection
import moe.nea.ledger.modules.MineshaftCorpseDetection
import moe.nea.ledger.modules.MinionDetection
import moe.nea.ledger.modules.NpcDetection
+import moe.nea.ledger.modules.PestRepellentDetection
+import moe.nea.ledger.modules.StonksAuctionDetection
import moe.nea.ledger.modules.UpdateChecker
import moe.nea.ledger.modules.VisitorDetection
+import moe.nea.ledger.telemetry.TelemetryProvider
import moe.nea.ledger.utils.ErrorUtil
import moe.nea.ledger.utils.MinecraftExecutor
import moe.nea.ledger.utils.di.DI
@@ -88,7 +96,7 @@ class Ledger {
// You sold Cactus x1 for 3 Coins!
// You bought back Potato x3 for 9 Coins!
- TODO: TRADING, FORGE, VISITORS / COPPER, CORPSES ÖFFNEN, HIGH / LOW GAMBLES, MINION ITEMS (maybe inferno refuel)
+ TODO: TRADING, FORGE, MINION ITEMS (maybe inferno refuel)
TODO: PET LEVELING COSTS AT FANN, SLAYER / MOB DROPS, SLAYER START COST
*/
companion object {
@@ -106,7 +114,9 @@ class Ledger {
tickQueue.add(runnable)
}
- val di = DI()
+ private val di = DI()
+
+ fun leakDI() = di
}
@Mod.EventHandler
@@ -119,17 +129,20 @@ class Ledger {
di.registerSingleton(gson)
di.register(LedgerConfig::class.java, DIProvider { managedConfig.instance })
di.register(Config::class.java, DIProvider.fromInheritance(LedgerConfig::class.java))
+ di.register(Database::class.java, DIProvider { Database(dataFolder) })
di.registerInjectableClasses(
AccessorySwapperDetection::class.java,
AllowanceDetection::class.java,
AuctionHouseDetection::class.java,
BankDetection::class.java,
+ BankInterestDetection::class.java,
+ BasicReforgeDetection::class.java,
BazaarDetection::class.java,
BazaarOrderDetection::class.java,
BitsDetection::class.java,
BitsShopDetection::class.java,
+ CaducousFeederDetection::class.java,
ConfigCommand::class.java,
- Database::class.java,
DebugDataCommand::class.java,
DragonEyePlacementDetection::class.java,
DragonSacrificeDetection::class.java,
@@ -139,8 +152,10 @@ class Ledger {
EyedropsDetection::class.java,
ForgeDetection::class.java,
GambleDetection::class.java,
+ GhostCoinDropDetection::class.java,
GodPotionDetection::class.java,
GodPotionMixinDetection::class.java,
+ GummyPolarBearDetection::class.java,
ItemIdProvider::class.java,
KatDetection::class.java,
KuudraChestDetection::class.java,
@@ -150,8 +165,10 @@ class Ledger {
MineshaftCorpseDetection::class.java,
MinionDetection::class.java,
NpcDetection::class.java,
+ PestRepellentDetection::class.java,
QueryCommand::class.java,
RequestUtil::class.java,
+ StonksAuctionDetection::class.java,
TriggerCommand::class.java,
UpdateChecker::class.java,
VisitorDetection::class.java,
diff --git a/mod/src/main/kotlin/moe/nea/ledger/NumberUtil.kt b/mod/src/main/kotlin/moe/nea/ledger/NumberUtil.kt
index 438f342..fa295b0 100644
--- a/mod/src/main/kotlin/moe/nea/ledger/NumberUtil.kt
+++ b/mod/src/main/kotlin/moe/nea/ledger/NumberUtil.kt
@@ -115,3 +115,38 @@ fun Instant.formatChat(): IChatComponent {
.setColor(EnumChatFormatting.AQUA))
return text
}
+
+private val formatChatDirection = run {
+ fun ItemChange.ChangeDirection.formatChat0(): IChatComponent {
+ val (text, color) = when (this) {
+ ItemChange.ChangeDirection.GAINED -> "+" to EnumChatFormatting.GREEN
+ ItemChange.ChangeDirection.TRANSFORM -> "~" to EnumChatFormatting.YELLOW
+ ItemChange.ChangeDirection.SYNC -> "=" to EnumChatFormatting.BLUE
+ ItemChange.ChangeDirection.CATALYST -> "*" to EnumChatFormatting.DARK_PURPLE
+ ItemChange.ChangeDirection.LOST -> "-" to EnumChatFormatting.RED
+ }
+ return ChatComponentText(text)
+ .setChatStyle(
+ ChatStyle()
+ .setColor(color)
+ .setChatHoverEvent(HoverEvent(HoverEvent.Action.SHOW_TEXT,
+ ChatComponentText(name).setChatStyle(ChatStyle().setColor(color)))))
+ }
+ ItemChange.ChangeDirection.entries.associateWith { it.formatChat0() }
+}
+
+fun ItemChange.ChangeDirection.formatChat(): IChatComponent {
+ return formatChatDirection[this]!!
+}
+
+fun ItemChange.formatChat(): IChatComponent {
+ return ChatComponentText(" ")
+ .appendSibling(direction.formatChat())
+ .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))))
+}
+
diff --git a/mod/src/main/kotlin/moe/nea/ledger/QueryCommand.kt b/mod/src/main/kotlin/moe/nea/ledger/QueryCommand.kt
index 19bd5d0..80dd54c 100644
--- a/mod/src/main/kotlin/moe/nea/ledger/QueryCommand.kt
+++ b/mod/src/main/kotlin/moe/nea/ledger/QueryCommand.kt
@@ -103,7 +103,7 @@ class QueryCommand : CommandBase() {
val timestamp = transactionId.getTimestamp()
val items = DBItemEntry.selectAll(database.connection)
.where(Clause { column(DBItemEntry.transactionId) eq string(transactionId.wrapped) })
- .map { ItemChange.from(it) }
+ .map { DBItemEntry.objMap(it) }
val text = ChatComponentText("")
.setChatStyle(ChatStyle().setColor(EnumChatFormatting.YELLOW))
.appendSibling(
@@ -172,7 +172,7 @@ class QueryCommand : CommandBase() {
override val name: String
get() = "withitem"
- private val itemIdProvider = Ledger.di.provide<ItemIdProvider>() // TODO: close this escape hatch
+ private val itemIdProvider = Ledger.leakDI().provide<ItemIdProvider>() // TODO: close this escape hatch
override fun getFilter(text: String): BooleanExpression {
return Clause { column(DBItemEntry.itemId) like text }
}
diff --git a/mod/src/main/kotlin/moe/nea/ledger/TransactionType.kt b/mod/src/main/kotlin/moe/nea/ledger/TransactionType.kt
deleted file mode 100644
index 33c633d..0000000
--- a/mod/src/main/kotlin/moe/nea/ledger/TransactionType.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package moe.nea.ledger
-
-enum class TransactionType {
- ACCESSORIES_SWAPPING,
- ALLOWANCE_GAIN,
- AUCTION_BOUGHT,
- AUCTION_LISTING_CHARGE,
- AUCTION_SOLD,
- AUTOMERCHANT_PROFIT_COLLECT,
- BANK_DEPOSIT,
- BANK_WITHDRAW,
- BAZAAR_BUY_INSTANT,
- BAZAAR_BUY_ORDER,
- BAZAAR_SELL_INSTANT,
- BAZAAR_SELL_ORDER,
- BITS_PURSE_STATUS,
- BOOSTER_COOKIE_ATE,
- CAPSAICIN_EYEDROPS_USED,
- COMMUNITY_SHOP_BUY,
- CORPSE_DESECRATED,
- DIE_ROLLED,
- DRACONIC_SACRIFICE,
- DUNGEON_CHEST_OPEN,
- FORGED,
- GOD_POTION_DRANK,
- GOD_POTION_MIXIN_DRANK,
- KAT_TIMESKIP,
- KAT_UPGRADE,
- KISMET_REROLL,
- KUUDRA_CHEST_OPEN,
- NPC_BUY,
- NPC_SELL,
- VISITOR_BARGAIN,
- WYRM_EVOKED,
-} \ No newline at end of file
diff --git a/mod/src/main/kotlin/moe/nea/ledger/config/DebugOptions.kt b/mod/src/main/kotlin/moe/nea/ledger/config/DebugOptions.kt
index fd5ed3d..6b4e51c 100644
--- a/mod/src/main/kotlin/moe/nea/ledger/config/DebugOptions.kt
+++ b/mod/src/main/kotlin/moe/nea/ledger/config/DebugOptions.kt
@@ -2,6 +2,7 @@ package moe.nea.ledger.config
import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean
import io.github.notenoughupdates.moulconfig.annotations.ConfigOption
+import moe.nea.ledger.DevUtil
class DebugOptions {
@ConfigOption(name = "Log entries to chat",
@@ -9,5 +10,5 @@ class DebugOptions {
@Transient
@ConfigEditorBoolean
@JvmField
- var logEntries = false
+ var logEntries = DevUtil.isDevEnv
}
diff --git a/mod/src/main/kotlin/moe/nea/ledger/database/DBLogEntry.kt b/mod/src/main/kotlin/moe/nea/ledger/database/DBLogEntry.kt
deleted file mode 100644
index b162c6f..0000000
--- a/mod/src/main/kotlin/moe/nea/ledger/database/DBLogEntry.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package moe.nea.ledger.database
-
-import moe.nea.ledger.ItemChange
-import moe.nea.ledger.ItemId
-import moe.nea.ledger.TransactionType
-import moe.nea.ledger.database.columns.DBDouble
-import moe.nea.ledger.database.columns.DBEnum
-import moe.nea.ledger.database.columns.DBString
-import moe.nea.ledger.database.columns.DBUlid
-import moe.nea.ledger.database.columns.DBUuid
-
-object DBLogEntry : Table("LogEntry") {
- val transactionId = column("transactionId", DBUlid)
- val type = column("type", DBEnum<TransactionType>())
- val profileId = column("profileId", DBUuid)
- val playerId = column("playerId", DBUuid)
-}
-
-object DBItemEntry : Table("ItemEntry") {
- val transactionId = column("transactionId", DBUlid) // TODO: add foreign keys
- val mode = column("mode", DBEnum<ItemChange.ChangeDirection>())
- val itemId = column("item", DBString.mapped(ItemId::string, ::ItemId))
- val size = column("size", DBDouble)
-}
diff --git a/mod/src/main/kotlin/moe/nea/ledger/database/DBUpgrade.kt b/mod/src/main/kotlin/moe/nea/ledger/database/DBUpgrade.kt
deleted file mode 100644
index 7d1782a..0000000
--- a/mod/src/main/kotlin/moe/nea/ledger/database/DBUpgrade.kt
+++ /dev/null
@@ -1,68 +0,0 @@
-package moe.nea.ledger.database
-
-import java.sql.Connection
-
-interface DBUpgrade {
- val toVersion: Long
- val fromVersion get() = toVersion - 1
- fun performUpgrade(connection: Connection)
-
- companion object {
-
- fun performUpgrades(
- connection: Connection,
- upgrades: Iterable<DBUpgrade>,
- ) {
- for (upgrade in upgrades) {
- upgrade.performUpgrade(connection)
- }
- }
-
- fun performUpgradeChain(
- connection: Connection,
- from: Long, to: Long,
- upgrades: Iterable<DBUpgrade>,
- afterEach: (newVersion: Long) -> Unit,
- ) {
- val table = buildLookup(upgrades)
- for (version in (from + 1)..(to)) {
- val currentUpgrades = table[version] ?: listOf()
- println("Scheduled ${currentUpgrades.size} upgrades to reach DB version $version")
- performUpgrades(connection, currentUpgrades)
- afterEach(version)
- }
- }
-
- fun buildLookup(upgrades: Iterable<DBUpgrade>): Map<Long, List<DBUpgrade>> {
- return upgrades.groupBy { it.toVersion }
- }
-
- fun createTable(to: Long, table: Table, vararg columns: Column<*>): DBUpgrade {
- require(columns.all { it in table.columns })
- return of("Create table ${table}", to) {
- table.createIfNotExists(it, columns.toList())
- }
- }
-
- fun addColumns(to: Long, table: Table, vararg columns: Column<*>): DBUpgrade {
- return of("Add columns to table $table", to) {
- table.alterTableAddColumns(it, columns.toList())
- }
- }
-
- fun of(name: String, to: Long, block: (Connection) -> Unit): DBUpgrade {
- return object : DBUpgrade {
- override val toVersion: Long
- get() = to
-
- override fun performUpgrade(connection: Connection) {
- block(connection)
- }
-
- override fun toString(): String {
- return name
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/mod/src/main/kotlin/moe/nea/ledger/database/Database.kt b/mod/src/main/kotlin/moe/nea/ledger/database/Database.kt
deleted file mode 100644
index 025888c..0000000
--- a/mod/src/main/kotlin/moe/nea/ledger/database/Database.kt
+++ /dev/null
@@ -1,57 +0,0 @@
-package moe.nea.ledger.database
-
-import moe.nea.ledger.Ledger
-import moe.nea.ledger.database.columns.DBString
-import java.sql.Connection
-import java.sql.DriverManager
-
-class Database {
- lateinit var connection: Connection
-
- object MetaTable : Table("LedgerMeta") {
- val key = column("key", DBString)
- val value = column("value", DBString)
-
- init {
- unique(key)
- }
- }
-
- data class MetaKey(val name: String) {
- companion object {
- val DATABASE_VERSION = MetaKey("databaseVersion")
- val LAST_LAUNCH = MetaKey("lastLaunch")
- }
- }
-
- fun setMetaKey(key: MetaKey, value: String) {
- MetaTable.insert(connection, Table.OnConflict.REPLACE) {
- it[MetaTable.key] = key.name
- it[MetaTable.value] = value
- }
- }
-
- val databaseVersion: Long = 1
-
- fun loadAndUpgrade() {
- connection = DriverManager.getConnection("jdbc:sqlite:${Ledger.dataFolder.resolve("database.db")}")
- MetaTable.createIfNotExists(connection)
- val meta = MetaTable.selectAll(connection).associate { MetaKey(it[MetaTable.key]) to it[MetaTable.value] }
- val lastLaunch = meta[MetaKey.LAST_LAUNCH]?.toLong() ?: 0L
- println("Last launch $lastLaunch")
- setMetaKey(MetaKey.LAST_LAUNCH, System.currentTimeMillis().toString())
-
- val oldVersion = meta[MetaKey.DATABASE_VERSION]?.toLong() ?: -1
- println("Old Database Version: $oldVersion; Current version: $databaseVersion")
- if (oldVersion > databaseVersion)
- error("Outdated software. Database is newer than me!")
- // TODO: create a backup if there is a db version upgrade happening
- DBUpgrade.performUpgradeChain(
- connection, oldVersion, databaseVersion,
- Upgrades().upgrades
- ) { version ->
- setMetaKey(MetaKey.DATABASE_VERSION, version.toString())
- }
- }
-
-} \ No newline at end of file
diff --git a/mod/src/main/kotlin/moe/nea/ledger/database/Upgrades.kt b/mod/src/main/kotlin/moe/nea/ledger/database/Upgrades.kt
deleted file mode 100644
index e83abe7..0000000
--- a/mod/src/main/kotlin/moe/nea/ledger/database/Upgrades.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package moe.nea.ledger.database
-
-class U