From 3b503a10b2e2b26ce47d5f0b7051b07fbc1d85fa Mon Sep 17 00:00:00 2001 From: Liyan Zhao Date: Sun, 31 Dec 2023 17:57:01 +0800 Subject: [PATCH 1/6] feat: testmod --- build.gradle | 65 +++++++++---------- settings.gradle | 2 + .../reden/mixin/debugger/MixinWorld.java | 5 -- .../com/github/zly2006/reden/TestUtils.kt | 2 + testmod/build.gradle | 20 ++++++ .../github/zly2006/reden/test/TestMod.java | 10 +++ testmod/src/main/resources/fabric.mod.json | 6 ++ .../reden/test}/BreakpointSerializerTest.kt | 2 +- .../com/github/zly2006/reden/test/Utils.kt | 40 ++++++++++++ 9 files changed, 113 insertions(+), 39 deletions(-) create mode 100644 testmod/build.gradle create mode 100644 testmod/src/main/java/com/github/zly2006/reden/test/TestMod.java create mode 100644 testmod/src/main/resources/fabric.mod.json rename {src/test/kotlin/com/github/zly2006/reden => testmod/src/test/java/com/github/zly2006/reden/test}/BreakpointSerializerTest.kt (97%) create mode 100644 testmod/src/test/java/com/github/zly2006/reden/test/Utils.kt diff --git a/build.gradle b/build.gradle index f4709ad7..4b0ab36b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,4 @@ buildscript { - repositories { - jcenter() - } dependencies { //Check for the latest version here: http://plugins.gradle.org/plugin/com.jfrog.artifactory classpath "org.jfrog.buildinfo:build-info-extractor-gradle:5.1.10" @@ -105,39 +102,41 @@ allprojects { ) } } -} -dependencies { - // implementation 'org.bouncycastle:' - // To change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - - // Fabric API - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - // Kotlin support - modApi("net.fabricmc:fabric-language-kotlin:1.9.2+kotlin.1.8.10") - // MaLiLib, required on client - modApi "fi.dy.masa.malilib:malilib-fabric-1.20.4:0.18.0" - // carpet, required on client & server - modApi "carpet:fabric-carpet:1.20.3-1.4.128+v231205" - // Game test - modApi "net.fabricmc:fabric-loader-junit:${project.loader_version}" - //include(implementation("org.bouncycastle:bcprov-jdk18on:1.76")) - //include(implementation("org.bouncycastle:bcpg-jdk18on:1.76")) - include(implementation("com.squareup.okhttp3:okhttp:4.11.0")) - include(implementation("org.eclipse.jgit:org.eclipse.jgit:6.6.0.202305301015-r")) - include(implementation("com.squareup.okio:okio-jvm:3.2.0")) - modImplementation "curse.maven:litematica-308892:4946471" - modImplementation "curse.maven:tweakeroo-297344:4946344" - modApi "maven.modrinth:modmenu:9.0.0-pre.1" - modImplementation "maven.modrinth:ferrite-core:6.0.3-fabric" - modApi "io.wispforest:owo-lib:${project.owo_version}" + apply { + plugin 'fabric-loom' + } + + dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + // Fabric API + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + // Kotlin support + modApi("net.fabricmc:fabric-language-kotlin:1.9.2+kotlin.1.8.10") + // MaLiLib, required on client + modApi "fi.dy.masa.malilib:malilib-fabric-1.20.4:0.18.0" + // carpet, required on client & server + modApi "carpet:fabric-carpet:1.20.3-1.4.128+v231205" + // Game test + testImplementation "net.fabricmc:fabric-loader-junit:${project.loader_version}" + //include(implementation("org.bouncycastle:bcprov-jdk18on:1.76")) + //include(implementation("org.bouncycastle:bcpg-jdk18on:1.76")) + include(implementation("com.squareup.okhttp3:okhttp:4.11.0")) + include(implementation("org.eclipse.jgit:org.eclipse.jgit:6.6.0.202305301015-r")) + include(implementation("com.squareup.okio:okio-jvm:3.2.0")) + modImplementation "curse.maven:litematica-308892:4946471" + modImplementation "curse.maven:tweakeroo-297344:4946344" + modApi "maven.modrinth:modmenu:9.0.0-pre.1" + modImplementation "maven.modrinth:ferrite-core:6.0.3-fabric" + modApi "io.wispforest:owo-lib:${project.owo_version}" + } } -test { - useJUnitPlatform() +build { + dependsOn(project(':testmod').tasks.withType(Test)) } base { diff --git a/settings.gradle b/settings.gradle index b02216ba..88c1dac5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,3 +8,5 @@ pluginManagement { gradlePluginPortal() } } + +include("testmod") diff --git a/src/main/java/com/github/zly2006/reden/mixin/debugger/MixinWorld.java b/src/main/java/com/github/zly2006/reden/mixin/debugger/MixinWorld.java index ce88bd07..c1157548 100644 --- a/src/main/java/com/github/zly2006/reden/mixin/debugger/MixinWorld.java +++ b/src/main/java/com/github/zly2006/reden/mixin/debugger/MixinWorld.java @@ -3,8 +3,6 @@ import com.github.zly2006.reden.Reden; import com.github.zly2006.reden.access.WorldData; import com.github.zly2006.reden.carpet.RedenCarpetSettings; -import com.github.zly2006.reden.debugger.stages.block.BlockUpdateStage; -import com.github.zly2006.reden.debugger.stages.block.StageBlockComparatorUpdate; import com.github.zly2006.reden.debugger.stages.world.BlockEntitiesRootStage; import com.github.zly2006.reden.debugger.stages.world.BlockEntityStage; import com.github.zly2006.reden.debugger.tree.TickStageTree; @@ -16,7 +14,6 @@ import net.minecraft.world.WorldAccess; import net.minecraft.world.chunk.BlockEntityTickInvoker; import org.jetbrains.annotations.Nullable; -import org.junit.jupiter.api.Assertions; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -24,8 +21,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.List; - import static com.github.zly2006.reden.access.ServerData.getData; @Mixin(value = World.class, priority = Reden.REDEN_HIGHEST_MIXIN_PRIORITY) diff --git a/src/test/kotlin/com/github/zly2006/reden/TestUtils.kt b/src/test/kotlin/com/github/zly2006/reden/TestUtils.kt index 00fbe989..ef6db38d 100644 --- a/src/test/kotlin/com/github/zly2006/reden/TestUtils.kt +++ b/src/test/kotlin/com/github/zly2006/reden/TestUtils.kt @@ -3,7 +3,9 @@ package com.github.zly2006.reden import net.fabricmc.loader.impl.launch.knot.KnotClient import net.minecraft.Bootstrap import net.minecraft.SharedConstants +import org.junit.jupiter.api.BeforeAll +@BeforeAll fun setupMinecraftRegistries() { SharedConstants.createGameVersion() Bootstrap.initialize() diff --git a/testmod/build.gradle b/testmod/build.gradle new file mode 100644 index 00000000..36f31fa3 --- /dev/null +++ b/testmod/build.gradle @@ -0,0 +1,20 @@ +plugins { + id 'fabric-loom' version '1.4-SNAPSHOT' + id 'maven-publish' + id 'org.jetbrains.kotlin.jvm' version '1.8.10' + id 'org.jetbrains.kotlin.plugin.serialization' version '1.8.10' +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + modImplementation(project(':')) +} + +test { + useJUnitPlatform() + + jvmArgs('-Dfabric.side=server') +} diff --git a/testmod/src/main/java/com/github/zly2006/reden/test/TestMod.java b/testmod/src/main/java/com/github/zly2006/reden/test/TestMod.java new file mode 100644 index 00000000..80f8a68b --- /dev/null +++ b/testmod/src/main/java/com/github/zly2006/reden/test/TestMod.java @@ -0,0 +1,10 @@ +package com.github.zly2006.reden.test; + +import net.fabricmc.api.ModInitializer; + +public class TestMod implements ModInitializer { + @Override + public void onInitialize() { + + } +} diff --git a/testmod/src/main/resources/fabric.mod.json b/testmod/src/main/resources/fabric.mod.json new file mode 100644 index 00000000..2be5b251 --- /dev/null +++ b/testmod/src/main/resources/fabric.mod.json @@ -0,0 +1,6 @@ +{ + "schemaVersion": 1, + "version": "reden", + "id": "reden-test", + "name": "Reden Test Mod" +} \ No newline at end of file diff --git a/src/test/kotlin/com/github/zly2006/reden/BreakpointSerializerTest.kt b/testmod/src/test/java/com/github/zly2006/reden/test/BreakpointSerializerTest.kt similarity index 97% rename from src/test/kotlin/com/github/zly2006/reden/BreakpointSerializerTest.kt rename to testmod/src/test/java/com/github/zly2006/reden/test/BreakpointSerializerTest.kt index 24fb6e2c..e536b157 100644 --- a/src/test/kotlin/com/github/zly2006/reden/BreakpointSerializerTest.kt +++ b/testmod/src/test/java/com/github/zly2006/reden/test/BreakpointSerializerTest.kt @@ -1,4 +1,4 @@ -package com.github.zly2006.reden +package com.github.zly2006.reden.test import com.github.zly2006.reden.debugger.breakpoint.* import com.github.zly2006.reden.debugger.breakpoint.behavior.FreezeGame diff --git a/testmod/src/test/java/com/github/zly2006/reden/test/Utils.kt b/testmod/src/test/java/com/github/zly2006/reden/test/Utils.kt new file mode 100644 index 00000000..2e041cb9 --- /dev/null +++ b/testmod/src/test/java/com/github/zly2006/reden/test/Utils.kt @@ -0,0 +1,40 @@ +package com.github.zly2006.reden.test + +import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService +import net.minecraft.Bootstrap +import net.minecraft.SharedConstants +import net.minecraft.datafixer.Schemas +import net.minecraft.resource.VanillaDataPackProvider +import net.minecraft.server.MinecraftServer +import net.minecraft.server.WorldGenerationProgressLogger +import net.minecraft.server.dedicated.MinecraftDedicatedServer +import net.minecraft.util.ApiServices +import net.minecraft.world.level.storage.LevelStorage +import java.io.File +import java.net.Proxy + +fun setupMinecraftRegistries() { + SharedConstants.createGameVersion() + Bootstrap.initialize() +} + +fun setupServer() { + setupMinecraftRegistries() + val file = File(".") + val apiServices = ApiServices.create(YggdrasilAuthenticationService(Proxy.NO_PROXY), file) + val levelStorage = LevelStorage.create(file.toPath()) + val session = levelStorage.createSession("world") + val resourcePackManager = VanillaDataPackProvider.createManager(session); + val saveLoader = TODO() + val serverPropertiesLoader = TODO() + val server = MinecraftServer.startServer { threadx -> + val minecraftDedicatedServerxx = MinecraftDedicatedServer( + threadx, session, resourcePackManager, saveLoader, serverPropertiesLoader, Schemas.getFixer(), apiServices, + ::WorldGenerationProgressLogger + ) + minecraftDedicatedServerxx.serverPort = 25565 + minecraftDedicatedServerxx.isDemo = false + minecraftDedicatedServerxx + } +} + From b764f0f86e32de866b406a74e94ae2d4257af864 Mon Sep 17 00:00:00 2001 From: Liyan Zhao Date: Sun, 31 Dec 2023 18:14:55 +0800 Subject: [PATCH 2/6] huh? --- build.gradle | 4 ---- build.sh | 2 ++ settings.gradle | 4 +++- 3 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 build.sh diff --git a/build.gradle b/build.gradle index 4b0ab36b..10837734 100644 --- a/build.gradle +++ b/build.gradle @@ -135,10 +135,6 @@ allprojects { } } -build { - dependsOn(project(':testmod').tasks.withType(Test)) -} - base { archivesName = project.archives_base_name } diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..31d73c2f --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +./gradlew build +./gradlew -Dreden.testmod=true testmod:test \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 88c1dac5..15758bca 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,4 +9,6 @@ pluginManagement { } } -include("testmod") +if (Boolean.parseBoolean(System.getProperty("reden.testmod"))) { + include("testmod") +} From d32783dbdab58bad833f2004674908e4a3448a97 Mon Sep 17 00:00:00 2001 From: Wafarm Date: Sun, 31 Dec 2023 20:14:51 +0800 Subject: [PATCH 3/6] Revert "huh?" This reverts commit b764f0f86e32de866b406a74e94ae2d4257af864. --- build.gradle | 4 ++++ build.sh | 2 -- settings.gradle | 4 +--- 3 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 build.sh diff --git a/build.gradle b/build.gradle index 10837734..4b0ab36b 100644 --- a/build.gradle +++ b/build.gradle @@ -135,6 +135,10 @@ allprojects { } } +build { + dependsOn(project(':testmod').tasks.withType(Test)) +} + base { archivesName = project.archives_base_name } diff --git a/build.sh b/build.sh deleted file mode 100644 index 31d73c2f..00000000 --- a/build.sh +++ /dev/null @@ -1,2 +0,0 @@ -./gradlew build -./gradlew -Dreden.testmod=true testmod:test \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 15758bca..88c1dac5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,6 +9,4 @@ pluginManagement { } } -if (Boolean.parseBoolean(System.getProperty("reden.testmod"))) { - include("testmod") -} +include("testmod") From 384a2b653d187b3d7a5d8ae885f19b2f5709da6c Mon Sep 17 00:00:00 2001 From: Wafarm Date: Sun, 31 Dec 2023 20:15:09 +0800 Subject: [PATCH 4/6] fix --- build.gradle | 11 +++++++++-- testmod/build.gradle | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 4b0ab36b..12a78783 100644 --- a/build.gradle +++ b/build.gradle @@ -135,8 +135,15 @@ allprojects { } } -build { - dependsOn(project(':testmod').tasks.withType(Test)) +configurations { + dev { + canBeResolved = false + canBeConsumed = true + } +} + +artifacts { + dev jar } base { diff --git a/testmod/build.gradle b/testmod/build.gradle index 36f31fa3..5d21f054 100644 --- a/testmod/build.gradle +++ b/testmod/build.gradle @@ -10,7 +10,7 @@ dependencies { mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation(project(':')) + implementation project(path: ':', configuration: "dev") } test { From faf21575b3761980b473b2a4b808276284736639 Mon Sep 17 00:00:00 2001 From: Wafarm Date: Sun, 31 Dec 2023 21:19:38 +0800 Subject: [PATCH 5/6] fix ci build --- testmod/build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/testmod/build.gradle b/testmod/build.gradle index 5d21f054..32924db8 100644 --- a/testmod/build.gradle +++ b/testmod/build.gradle @@ -13,6 +13,10 @@ dependencies { implementation project(path: ':', configuration: "dev") } +kotlin { + jvmToolchain(17) +} + test { useJUnitPlatform() From 930de2b6c0e43eaf85546c4e2ffb8247d2c1c50d Mon Sep 17 00:00:00 2001 From: Liyan Zhao Date: Mon, 1 Jan 2024 22:06:58 +0800 Subject: [PATCH 6/6] feat: add main entrypoint --- testmod/src/main/resources/fabric.mod.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/testmod/src/main/resources/fabric.mod.json b/testmod/src/main/resources/fabric.mod.json index 2be5b251..503eb593 100644 --- a/testmod/src/main/resources/fabric.mod.json +++ b/testmod/src/main/resources/fabric.mod.json @@ -2,5 +2,10 @@ "schemaVersion": 1, "version": "reden", "id": "reden-test", - "name": "Reden Test Mod" + "name": "Reden Test Mod", + "entrypoints": { + "main": [ + "com.github.zly2006.reden.test.TestMod" + ] + } } \ No newline at end of file