mirror of
https://github.com/QuiltMC/quilt-template-mod
synced 2024-08-15 00:23:32 +00:00
Add gametest setup
This commit is contained in:
parent
c5f28c9f03
commit
80468faa1c
6 changed files with 234 additions and 2 deletions
14
README.md
14
README.md
|
@ -4,7 +4,7 @@ My personalized Quilt template Mod. You can use it as a template for your own mo
|
|||
|
||||
## Differences from the Official Mod
|
||||
- Added a build github action
|
||||
|
||||
- Added gametest support (See ##Usage###Gametest Support)
|
||||
## Usage
|
||||
|
||||
In order to use this mod as a template:
|
||||
|
@ -14,7 +14,7 @@ In order to use this mod as a template:
|
|||
3. Make the necessary changes in order to make it yours:
|
||||
- Update `gradle.properties` in order to use your Maven group and mod ID
|
||||
- If you don't know which Maven group to use, and you are planning to host the mod's source code on GitHub, use `io.github.<Your_Username_Here>`
|
||||
- Update `quilt.mod.json` in order to reflect your mod's metadata
|
||||
- Update `quilt.mod.json` in `src/main/resources` in order to reflect your mod's metadata
|
||||
- If you are planning to include (jar-in-jar) a mod, don't forget to declare its dependency on it!
|
||||
- The icon provided here is a placeholder one. If you aren't able to replace it yet, you can delete it and remove the "icon" property
|
||||
- Create a LICENSE file for this mod! If you don't know which license to use, check out [here](https://choosealicense.com/).
|
||||
|
@ -24,6 +24,16 @@ In order to use this mod as a template:
|
|||
- If the dependencies on `gradle/libs.versions.toml` isn't up-to-date, feel free to update them! The [linked utility](https://lambdaurora.dev/tools/import_quilt.html) should help you in this easy and quick process.
|
||||
4. The mod is now ready to be worked on!
|
||||
|
||||
### Gametest Support
|
||||
1. Update `quilt.mod.json` in `src/gametest/resources` and the rest of the naming in order to reflect your testmod's metadata
|
||||
|
||||
> [WARNING]
|
||||
>
|
||||
> make sure to change the dependency on `example_mod` to your modid and to not reuse the modid of your main project, e.g. suffix your project's modid with `_test`
|
||||
>
|
||||
|
||||
2. Now testing should be available using the test gradle task
|
||||
|
||||
## License
|
||||
|
||||
This template on the QuiltMC GitHub is licensed under the [Creative Common Zero v1.0 license](./LICENSE-TEMPLATE.md).
|
||||
|
|
30
build.gradle
30
build.gradle
|
@ -69,6 +69,36 @@ jar {
|
|||
}
|
||||
}
|
||||
|
||||
// Gametest stuff
|
||||
sourceSets {
|
||||
gametest {
|
||||
compileClasspath += sourceSets.main.compileClasspath
|
||||
runtimeClasspath += sourceSets.main.runtimeClasspath
|
||||
compileClasspath += sourceSets.main.output
|
||||
runtimeClasspath += sourceSets.main.output
|
||||
}
|
||||
}
|
||||
|
||||
loom {
|
||||
runs {
|
||||
gametest {
|
||||
server()
|
||||
name = "Headless Game Test Server"
|
||||
vmArg "-Dfabric-api.gametest"
|
||||
runDir "build/gametest"
|
||||
source = project.sourceSets.gametest
|
||||
}
|
||||
|
||||
gametestClient {
|
||||
client()
|
||||
name = "Game Test Client"
|
||||
source = project.sourceSets.gametest
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test.dependsOn runGametest
|
||||
|
||||
// Configure the maven publication
|
||||
publishing {
|
||||
publications {
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package com.example.example_mod.test;
|
||||
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.test.GameTest;
|
||||
import net.minecraft.test.TestContext;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public class ExampleModTests {
|
||||
@GameTest()
|
||||
public void exampleStructureTest (TestContext context) {
|
||||
context.setBlockState(new BlockPos(0, 2, 0), Blocks.DIAMOND_BLOCK.getDefaultState());
|
||||
context.addInstantFinalTask(() -> context.checkBlock(new BlockPos(0,2,0), block -> block == Blocks.DIAMOND_BLOCK, "Expect block to be a Diamond Block"));
|
||||
}
|
||||
}
|
BIN
src/gametest/resources/assets/example_mod_test/icon.png
Normal file
BIN
src/gametest/resources/assets/example_mod_test/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 207 B |
|
@ -0,0 +1,138 @@
|
|||
{
|
||||
DataVersion: 3120,
|
||||
size: [5, 5, 5],
|
||||
data: [
|
||||
{pos: [0, 0, 0], state: "minecraft:polished_andesite"},
|
||||
{pos: [0, 0, 1], state: "minecraft:polished_andesite"},
|
||||
{pos: [0, 0, 2], state: "minecraft:polished_andesite"},
|
||||
{pos: [0, 0, 3], state: "minecraft:polished_andesite"},
|
||||
{pos: [0, 0, 4], state: "minecraft:polished_andesite"},
|
||||
{pos: [1, 0, 0], state: "minecraft:polished_andesite"},
|
||||
{pos: [1, 0, 1], state: "minecraft:polished_andesite"},
|
||||
{pos: [1, 0, 2], state: "minecraft:polished_andesite"},
|
||||
{pos: [1, 0, 3], state: "minecraft:polished_andesite"},
|
||||
{pos: [1, 0, 4], state: "minecraft:polished_andesite"},
|
||||
{pos: [2, 0, 0], state: "minecraft:polished_andesite"},
|
||||
{pos: [2, 0, 1], state: "minecraft:polished_andesite"},
|
||||
{pos: [2, 0, 2], state: "minecraft:polished_andesite"},
|
||||
{pos: [2, 0, 3], state: "minecraft:polished_andesite"},
|
||||
{pos: [2, 0, 4], state: "minecraft:polished_andesite"},
|
||||
{pos: [3, 0, 0], state: "minecraft:polished_andesite"},
|
||||
{pos: [3, 0, 1], state: "minecraft:polished_andesite"},
|
||||
{pos: [3, 0, 2], state: "minecraft:polished_andesite"},
|
||||
{pos: [3, 0, 3], state: "minecraft:polished_andesite"},
|
||||
{pos: [3, 0, 4], state: "minecraft:polished_andesite"},
|
||||
{pos: [4, 0, 0], state: "minecraft:polished_andesite"},
|
||||
{pos: [4, 0, 1], state: "minecraft:polished_andesite"},
|
||||
{pos: [4, 0, 2], state: "minecraft:polished_andesite"},
|
||||
{pos: [4, 0, 3], state: "minecraft:polished_andesite"},
|
||||
{pos: [4, 0, 4], state: "minecraft:polished_andesite"},
|
||||
{pos: [0, 1, 0], state: "minecraft:air"},
|
||||
{pos: [0, 1, 1], state: "minecraft:air"},
|
||||
{pos: [0, 1, 2], state: "minecraft:air"},
|
||||
{pos: [0, 1, 3], state: "minecraft:air"},
|
||||
{pos: [0, 1, 4], state: "minecraft:air"},
|
||||
{pos: [1, 1, 0], state: "minecraft:air"},
|
||||
{pos: [1, 1, 1], state: "minecraft:air"},
|
||||
{pos: [1, 1, 2], state: "minecraft:air"},
|
||||
{pos: [1, 1, 3], state: "minecraft:air"},
|
||||
{pos: [1, 1, 4], state: "minecraft:air"},
|
||||
{pos: [2, 1, 0], state: "minecraft:air"},
|
||||
{pos: [2, 1, 1], state: "minecraft:air"},
|
||||
{pos: [2, 1, 2], state: "minecraft:air"},
|
||||
{pos: [2, 1, 3], state: "minecraft:air"},
|
||||
{pos: [2, 1, 4], state: "minecraft:air"},
|
||||
{pos: [3, 1, 0], state: "minecraft:air"},
|
||||
{pos: [3, 1, 1], state: "minecraft:air"},
|
||||
{pos: [3, 1, 2], state: "minecraft:air"},
|
||||
{pos: [3, 1, 3], state: "minecraft:air"},
|
||||
{pos: [3, 1, 4], state: "minecraft:air"},
|
||||
{pos: [4, 1, 0], state: "minecraft:air"},
|
||||
{pos: [4, 1, 1], state: "minecraft:air"},
|
||||
{pos: [4, 1, 2], state: "minecraft:air"},
|
||||
{pos: [4, 1, 3], state: "minecraft:air"},
|
||||
{pos: [4, 1, 4], state: "minecraft:air"},
|
||||
{pos: [0, 2, 0], state: "minecraft:air"},
|
||||
{pos: [0, 2, 1], state: "minecraft:air"},
|
||||
{pos: [0, 2, 2], state: "minecraft:air"},
|
||||
{pos: [0, 2, 3], state: "minecraft:air"},
|
||||
{pos: [0, 2, 4], state: "minecraft:air"},
|
||||
{pos: [1, 2, 0], state: "minecraft:air"},
|
||||
{pos: [1, 2, 1], state: "minecraft:air"},
|
||||
{pos: [1, 2, 2], state: "minecraft:air"},
|
||||
{pos: [1, 2, 3], state: "minecraft:air"},
|
||||
{pos: [1, 2, 4], state: "minecraft:air"},
|
||||
{pos: [2, 2, 0], state: "minecraft:air"},
|
||||
{pos: [2, 2, 1], state: "minecraft:air"},
|
||||
{pos: [2, 2, 2], state: "minecraft:air"},
|
||||
{pos: [2, 2, 3], state: "minecraft:air"},
|
||||
{pos: [2, 2, 4], state: "minecraft:air"},
|
||||
{pos: [3, 2, 0], state: "minecraft:air"},
|
||||
{pos: [3, 2, 1], state: "minecraft:air"},
|
||||
{pos: [3, 2, 2], state: "minecraft:air"},
|
||||
{pos: [3, 2, 3], state: "minecraft:air"},
|
||||
{pos: [3, 2, 4], state: "minecraft:air"},
|
||||
{pos: [4, 2, 0], state: "minecraft:air"},
|
||||
{pos: [4, 2, 1], state: "minecraft:air"},
|
||||
{pos: [4, 2, 2], state: "minecraft:air"},
|
||||
{pos: [4, 2, 3], state: "minecraft:air"},
|
||||
{pos: [4, 2, 4], state: "minecraft:air"},
|
||||
{pos: [0, 3, 0], state: "minecraft:air"},
|
||||
{pos: [0, 3, 1], state: "minecraft:air"},
|
||||
{pos: [0, 3, 2], state: "minecraft:air"},
|
||||
{pos: [0, 3, 3], state: "minecraft:air"},
|
||||
{pos: [0, 3, 4], state: "minecraft:air"},
|
||||
{pos: [1, 3, 0], state: "minecraft:air"},
|
||||
{pos: [1, 3, 1], state: "minecraft:air"},
|
||||
{pos: [1, 3, 2], state: "minecraft:air"},
|
||||
{pos: [1, 3, 3], state: "minecraft:air"},
|
||||
{pos: [1, 3, 4], state: "minecraft:air"},
|
||||
{pos: [2, 3, 0], state: "minecraft:air"},
|
||||
{pos: [2, 3, 1], state: "minecraft:air"},
|
||||
{pos: [2, 3, 2], state: "minecraft:air"},
|
||||
{pos: [2, 3, 3], state: "minecraft:air"},
|
||||
{pos: [2, 3, 4], state: "minecraft:air"},
|
||||
{pos: [3, 3, 0], state: "minecraft:air"},
|
||||
{pos: [3, 3, 1], state: "minecraft:air"},
|
||||
{pos: [3, 3, 2], state: "minecraft:air"},
|
||||
{pos: [3, 3, 3], state: "minecraft:air"},
|
||||
{pos: [3, 3, 4], state: "minecraft:air"},
|
||||
{pos: [4, 3, 0], state: "minecraft:air"},
|
||||
{pos: [4, 3, 1], state: "minecraft:air"},
|
||||
{pos: [4, 3, 2], state: "minecraft:air"},
|
||||
{pos: [4, 3, 3], state: "minecraft:air"},
|
||||
{pos: [4, 3, 4], state: "minecraft:air"},
|
||||
{pos: [0, 4, 0], state: "minecraft:air"},
|
||||
{pos: [0, 4, 1], state: "minecraft:air"},
|
||||
{pos: [0, 4, 2], state: "minecraft:air"},
|
||||
{pos: [0, 4, 3], state: "minecraft:air"},
|
||||
{pos: [0, 4, 4], state: "minecraft:air"},
|
||||
{pos: [1, 4, 0], state: "minecraft:air"},
|
||||
{pos: [1, 4, 1], state: "minecraft:air"},
|
||||
{pos: [1, 4, 2], state: "minecraft:air"},
|
||||
{pos: [1, 4, 3], state: "minecraft:air"},
|
||||
{pos: [1, 4, 4], state: "minecraft:air"},
|
||||
{pos: [2, 4, 0], state: "minecraft:air"},
|
||||
{pos: [2, 4, 1], state: "minecraft:air"},
|
||||
{pos: [2, 4, 2], state: "minecraft:air"},
|
||||
{pos: [2, 4, 3], state: "minecraft:air"},
|
||||
{pos: [2, 4, 4], state: "minecraft:air"},
|
||||
{pos: [3, 4, 0], state: "minecraft:air"},
|
||||
{pos: [3, 4, 1], state: "minecraft:air"},
|
||||
{pos: [3, 4, 2], state: "minecraft:air"},
|
||||
{pos: [3, 4, 3], state: "minecraft:air"},
|
||||
{pos: [3, 4, 4], state: "minecraft:air"},
|
||||
{pos: [4, 4, 0], state: "minecraft:air"},
|
||||
{pos: [4, 4, 1], state: "minecraft:air"},
|
||||
{pos: [4, 4, 2], state: "minecraft:air"},
|
||||
{pos: [4, 4, 3], state: "minecraft:air"},
|
||||
{pos: [4, 4, 4], state: "minecraft:air"}
|
||||
],
|
||||
entities: [],
|
||||
palette: [
|
||||
"minecraft:polished_andesite",
|
||||
"minecraft:air",
|
||||
"minecraft:campfire{facing:south,lit:true,signal_fire:false,waterlogged:false}",
|
||||
"turing_potions:potion_cauldron{level:1}"
|
||||
]
|
||||
}
|
40
src/gametest/resources/quilt.mod.json
Normal file
40
src/gametest/resources/quilt.mod.json
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"schema_version": 1,
|
||||
"quilt_loader": {
|
||||
"group": "com.example",
|
||||
"id": "example_mod_test",
|
||||
"version": "${version}",
|
||||
"metadata": {
|
||||
"name": "Mod Name Testmod",
|
||||
"description": "The Mod Name Testmod.",
|
||||
"contributors": {
|
||||
"Your name here": "Owner"
|
||||
},
|
||||
"icon": "assets/example_mod/icon.png"
|
||||
},
|
||||
"intermediate_mappings": "net.fabricmc:intermediary",
|
||||
"entrypoints": {
|
||||
"fabric-gametest": [
|
||||
"com.example.example_mod.test.ExampleModTests"
|
||||
]
|
||||
},
|
||||
"depends": [
|
||||
{
|
||||
"id": "example_mod",
|
||||
"versions": "*"
|
||||
},
|
||||
{
|
||||
"id": "quilt_loader",
|
||||
"versions": ">=0.17.0-"
|
||||
},
|
||||
{
|
||||
"id": "quilted_fabric_api",
|
||||
"versions": ">=4.0.0-"
|
||||
},
|
||||
{
|
||||
"id": "minecraft",
|
||||
"versions": ">=1.19.2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue