aboutsummaryrefslogtreecommitdiff
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/build.gradle.kts170
-rw-r--r--mod/gradle.properties3
-rw-r--r--mod/ledger-rules.pro4
-rw-r--r--mod/log4j2.xml5
-rw-r--r--mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java193
-rw-r--r--mod/src/main/java/moe/nea/ledger/mixin/AccessorGuiEditSign.java12
-rw-r--r--mod/src/main/java/moe/nea/ledger/mixin/MouseClickEventPatch.java18
-rw-r--r--mod/src/main/java/moe/nea/ledger/mixin/OnInitializationCompletePatch.java18
-rw-r--r--mod/src/main/java/moe/nea/ledger/mixin/devenv/RegisterModResourcesPatch.java66
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/ConfigCommand.kt31
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/DebouncedValue.kt38
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/DebugDataCommand.kt34
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/DevUtil.kt7
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/ExpiringValue.kt30
-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.kt188
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/ItemUtil.kt90
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/Ledger.kt205
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/LedgerEntry.kt29
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/LedgerLogger.kt136
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/LogChatCommand.kt27
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/MCUUIDUtil.kt22
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/NumberUtil.kt117
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/QueryCommand.kt197
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/ScoreboardUtil.kt29
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/TelemetryProvider.kt66
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/TransactionType.kt35
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/TriggerCommand.kt34
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/config/DebugOptions.kt13
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/config/LedgerConfig.kt35
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/config/MainOptions.kt27
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/config/SynchronizationOptions.kt11
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/config/UpdateUi.kt17
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/config/UpdateUiMarker.kt6
-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.kt11
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/ChatReceived.kt15
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/ExtraSupplyIdEvent.kt12
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/GuiClickEvent.kt9
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/InitializationComplete.kt6
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt7
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/SupplyDebugInfo.kt10
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/TriggerEvent.kt7
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/WorldLoadEvent.kt5
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/events/WorldSwitchEvent.kt6
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/AccessorySwapperDetection.kt34
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/AllowanceDetection.kt37
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/AuctionHouseDetection.kt143
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BankDetection.kt49
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BazaarDetection.kt58
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BazaarOrderDetection.kt95
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BitsDetection.kt62
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/BitsShopDetection.kt66
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/ChestDetection.kt48
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/DragonEyePlacementDetection.kt47
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/DragonSacrificeDetection.kt72
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/DungeonChestDetection.kt95
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/ExternalDataProvider.kt43
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/EyedropsDetection.kt35
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/ForgeDetection.kt48
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GambleDetection.kt62
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GodPotionDetection.kt35
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/GodPotionMixinDetection.kt38
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/KatDetection.kt95
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/KuudraChestDetection.kt45
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/MineshaftCorpseDetection.kt81
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/MinionDetection.kt61
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt111
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/UpdateChecker.kt167
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/modules/VisitorDetection.kt87
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/BorderedTextTracker.kt41
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/ErrorUtil.kt52
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/GsonUtil.kt10
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/MinecraftExecutor.kt10
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.kt4
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/network/Request.kt40
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/network/RequestUtil.kt63
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/network/Response.kt19
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/BooleanContext.kt10
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/CommonKeys.kt9
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/Context.kt57
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/ContextValue.kt70
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/EventRecorder.kt9
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/ExceptionContextValue.kt39
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/JsonElementContext.kt9
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/LoggingEventRecorder.kt25
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/RecordedEvent.kt5
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/Severity.kt8
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/Span.kt146
-rw-r--r--mod/src/main/kotlin/moe/nea/ledger/utils/telemetry/StringContext.kt11
-rw-r--r--mod/src/main/resources/ledgerkeystore.jksbin0 -> 104393 bytes
-rw-r--r--mod/src/main/resources/mcmod.info18
-rw-r--r--mod/src/main/resources/mixins.moneyledger.json7
-rw-r--r--mod/src/test/kotlin/moe/nea/ledger/NumberUtilKtTest.kt17
99 files changed, 4705 insertions, 0 deletions
diff --git a/mod/build.gradle.kts b/mod/build.gradle.kts
new file mode 100644
index 0000000..10f01e1
--- /dev/null
+++ b/mod/build.gradle.kts
@@ -0,0 +1,170 @@
+import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
+import proguard.gradle.ProGuardTask
+
+plugins {
+ idea
+ java
+ id("gg.essential.loom") version "1.6.+"
+ id("dev.architectury.architectury-pack200") version "0.1.3"
+ id("com.github.johnrengelman.shadow") version "8.1.1"
+ id("com.github.gmazzo.buildconfig")
+ kotlin("jvm")
+ id("ledger-repo")
+}
+val baseGroup: String by project
+val mcVersion: String by project
+val mixinGroup = "$baseGroup.mixin"
+val modid: String by project
+
+// Toolchains:
+java {
+ toolchain.languageVersion.set(JavaLanguageVersion.of(8))
+}
+
+// Minecraft configuration:
+loom {
+ forge {
+ pack200Provider.set(dev.architectury.pack200.java.Pack200Adapter())
+ mixinConfig("mixins.$modid.json")
+ }
+ log4jConfigs.from(file("log4j2.xml"))
+ runConfigs {
+ "client" {
+ property("ledger.bonusresourcemod", sourceSets.main.get().output.resourcesDir!!.absolutePath)
+ property("mixin.debug", "true")
+ programArgs("--tweakClass", "org.spongepowered.asm.launch.MixinTweaker")
+ programArgs("--tweakClass", "io.github.notenoughupdates.moulconfig.tweaker.DevelopmentResourceTweaker")
+ }
+ remove(getByName("server"))
+ }
+ mixin.useLegacyMixinAp.set(false)
+}
+
+// TODO: Add an extra shadow configuration for optimizable jars
+//val optShadowImpl: Configuration by configurations.creating {
+//
+//}
+
+val shadowImpl: Configuration by configurations.creating {
+ configurations.implementation.get().extendsFrom(this)
+}
+
+dependencies {
+ minecraft("com.mojang:minecraft:1.8.9")
+ mappings("de.oceanlabs.mcp:mcp_stable:22-1.8.9")
+ forge("net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9")
+
+ shadowImpl(kotlin("stdlib-jdk8"))
+ implementation("org.jspecify:jspecify:1.0.0")
+
+ shadowImpl("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
+ isTransitive = false
+ }
+
+ shadowImpl("org.xerial:sqlite-jdbc:3.45.3.0")
+ shadowImpl("org.notenoughupdates.moulconfig:legacy:3.0.0-beta.9")
+ shadowImpl("io.azam.ulidj:ulidj:1.0.4")
+ shadowImpl(project(":dependency-injection"))
+ shadowImpl(project(":database:core"))
+ shadowImpl("moe.nea:libautoupdate:1.3.1") {
+ exclude(module = "gson")
+ }
+ runtimeOnly("me.djtheredstoner:DevAuth-forge-legacy:1.2.1")
+ testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
+}
+
+// Tasks:
+
+// Delete default shadow configuration
+tasks.shadowJar {
+ doFirst { error("Incorrect shadow JAR built!") }
+}
+
+tasks.downloadRepo {
+ hash.set("dcf1dbc")
+}
+
+val generateItemIds by tasks.register("generateItemIds", GenerateItemIds::class) {
+ repoHash.set(tasks.downloadRepo.get().hash)
+ packageName.set("moe.nea.ledger.gen")
+ outputDirectory.set(layout.buildDirectory.dir("generated/sources/itemIds"))
+ repoFiles.set(tasks.downloadRepo.get().outputDirectory)
+}
+sourceSets.main {
+ java.srcDir(generateItemIds)
+}
+tasks.withType<AbstractArchiveTask> {
+ archiveBaseName.set(modid)
+}
+tasks.withType<Jar> {
+ manifest.attributes.run {
+ this["FMLCorePluginContainsFMLMod"] = "true"
+ this["ForceLoadAsMod"] = "true"
+ this["TweakClass"] = "org.spongepowered.asm.launch.MixinTweaker"
+ this["MixinConfigs"] = "mixins.$modid.json"
+ }
+}
+
+tasks.processResources {
+ inputs.property("version", project.version)
+ inputs.property("mcversion", mcVersion)
+ inputs.property("modid", modid)
+ inputs.property("basePackage", baseGroup)
+
+ filesMatching(listOf("mcmod.info", "mixins.$modid.json")) {
+ expand(inputs.properties)
+ }
+}
+
+
+val proguardOutJar = project.layout.buildDirectory.file("badjars/stripped.jar")
+val proguard = tasks.register("proguard", ProGuardTask::class) {
+ dependsOn(tasks.jar)
+ injars(tasks.jar.map { it.archiveFile })
+ outjars(proguardOutJar)
+ configuration(file("ledger-rules.pro"))
+ val libJava = javaToolchains.launcherFor(java.toolchain)
+ .get()
+ .metadata.installationPath.file("jre/lib/rt.jar")
+ libraryjars(libJava)
+ libraryjars(configurations.compileClasspath)
+}
+
+val shadowJar2 = tasks.register("shadowJar2", ShadowJar::class) {
+ destinationDirectory.set(layout.buildDirectory.dir("badjars"))
+ archiveClassifier.set("all-dev")
+ from(proguardOutJar)
+ dependsOn(proguard)
+ configurations = listOf(shadowImpl)
+ relocate("moe.nea.libautoupdate", "moe.nea.ledger.deps.libautoupdate")
+ relocate("io.github.notenoughupdates.moulconfig", "moe.nea.ledger.deps.moulconfig")
+ relocate("io.azam.ulidj", "moe.nea.ledger.deps.ulid")
+ mergeServiceFiles()
+ exclude(
+ // Signatures
+ "META-INF/INDEX.LIST",
+ "META-INF/*.SF",
+ "META-INF/*.DSA",
+ "META-INF/*.RSA",
+ "module-info.class",
+
+ "META-INF/*.kotlin_module",
+ "META-INF/versions/**"
+ )
+}
+tasks.remapJar {
+ archiveClassifier.set("")
+ inputFile.set(shadowJar2.flatMap { it.archiveFile })
+}
+
+tasks.jar {
+ archiveClassifier.set("without-deps")
+ destinationDirectory.set(layout.buildDirectory.dir("badjars"))
+}
+
+tasks.assemble.get().dependsOn(tasks.remapJar)
+
+buildConfig {
+ packageName("moe.nea.ledger.gen")
+}
+
diff --git a/mod/gradle.properties b/mod/gradle.properties
new file mode 100644
index 0000000..28f0604
--- /dev/null
+++ b/mod/gradle.properties
@@ -0,0 +1,3 @@
+loom.platform = forge
+mcVersion = 1.8.9
+modid = moneyledger
diff --git a/mod/ledger-rules.pro b/mod/ledger-rules.pro
new file mode 100644
index 0000000..32cd337
--- /dev/null
+++ b/mod/ledger-rules.pro
@@ -0,0 +1,4 @@
+-keep class !moe.nea.ledger.gen.** {*;}
+-dontobfuscate
+-assumenosideeffects class ** { @moe.nea.ledger.utils.NoSideEffects <methods>; }
+#-dontoptimize
diff --git a/mod/log4j2.xml b/mod/log4j2.xml
new file mode 100644
index 0000000..af9b1b7
--- /dev/null
+++ b/mod/log4j2.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+ <!-- Filter out Hypixel scoreboard and sound errors -->
+ <RegexFilter regex="Error executing task.*|Unable to play unknown soundEvent.*" onMatch="DENY" onMismatch="NEUTRAL"/>
+</Configuration> \ No newline at end of file
diff --git a/mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java b/mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java
new file mode 100644
index 0000000..56841b5
--- /dev/null
+++ b/mod/src/main/java/moe/nea/ledger/init/AutoDiscoveryMixinPlugin.java
@@ -0,0 +