-
-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
185 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,82 @@ | ||
name: build | ||
name: Build | ||
|
||
on: [ pull_request, push ] | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
java: [ | ||
17 # Current Java LTS & minimum supported by Minecraft | ||
] | ||
os: [ ubuntu-latest ] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Validate Gradle Wrapper | ||
uses: gradle/actions/wrapper-validation@v3 | ||
- name: Gradle Cache | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
~/.gradle/caches | ||
~/.gradle/wrapper | ||
.gradle/loom-cache | ||
build/ | ||
key: ${{ runner.os }}-jdk${{ matrix.java }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle.properties', '**/gradle-wrapper.properties', '.github/workflows/build.yml') }} | ||
- name: Setup JDK ${{ matrix.java }} | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'temurin' | ||
java-version: ${{ matrix.java }} | ||
- name: Make Gradle Wrapper Executable | ||
if: ${{ runner.os != 'Windows' }} | ||
run: chmod +x ./gradlew | ||
- name: Build | ||
# doesn't actually publish, as no secrets are passed in, just makes sure that publishing works | ||
run: ./gradlew publish --no-daemon | ||
- name: Capture Build Artifacts | ||
if: ${{ runner.os == 'Linux' && matrix.java == '17' }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Artifacts | ||
path: | | ||
common/build/libs/ | ||
fabric/build/libs/ | ||
forge/build/libs/ | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Java | ||
run: echo "JAVA_HOME=$JAVA_HOME_17_X64" >> "$GITHUB_ENV" | ||
|
||
- name: Loom Cache | ||
uses: actions/cache@v4 | ||
with: | ||
path: "**/.gradle/loom-cache" | ||
key: "${{ runner.os }}-gradle-${{ hashFiles('**/libs.versions.*', '**/*.gradle*', '**/gradle-wrapper.properties') }}" | ||
restore-keys: "${{ runner.os }}-gradle-" | ||
|
||
- name: Setup Gradle | ||
uses: gradle/actions/setup-gradle@v3 | ||
with: | ||
gradle-home-cache-cleanup: true | ||
cache-read-only: ${{ !endsWith(github.ref_name, '/dev') }} | ||
|
||
- name: Validate Gradle Wrapper Integrity | ||
uses: gradle/wrapper-validation-action@v2 | ||
|
||
- name: Build | ||
# doesn't actually publish, as no secrets are passed in, just makes sure that publishing works | ||
run: ./gradlew :forge:remapTestmodJar :fabric:remapTestmodJar publish --no-daemon | ||
|
||
- name: Capture Build Artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Artifacts | ||
path: | | ||
common/build/libs/ | ||
fabric/build/libs/ | ||
fabric/build/devlibs/ | ||
forge/build/libs/ | ||
forge/build/devlibs/ | ||
test: | ||
strategy: | ||
matrix: | ||
loader: [ forge, fabric ] | ||
needs: build | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Download build artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: Artifacts | ||
|
||
- name: Setup Environment Variables | ||
run: | | ||
echo "MOD_VERSION=$(grep '^mod_version =' gradle.properties | cut -d'=' -f2 | tr -d ' ')" >> "$GITHUB_ENV" | ||
echo "MINECRAFT_VERSION=$(grep '^minecraft_version =' gradle.properties | cut -d'=' -f2 | tr -d ' ')" >> "$GITHUB_ENV" | ||
echo "FABRIC_API_VERSION=$(grep '^fabric_api_version =' gradle.properties | cut -d'=' -f2 | tr -d ' ' | sed 's/+.*//')" >> "$GITHUB_ENV" | ||
- name: Move Test Mod and Flywheel into run/mods | ||
run: | | ||
mkdir -p run/mods | ||
cp ${{ matrix.loader }}/build/libs/flywheel-${{ matrix.loader }}-${{ env.MINECRAFT_VERSION }}-${{ env.MOD_VERSION }}.jar run/mods | ||
cp ${{ matrix.loader }}/build/devlibs/flywheel-${{ matrix.loader }}-${{ env.MINECRAFT_VERSION }}-${{ env.MOD_VERSION }}-testmod.jar run/mods | ||
# Lock to a specific commit, it would be bad if the tag is re-pushed with unwanted changes | ||
- name: Run the MC client | ||
uses: 3arthqu4ke/mc-runtime-test@e72f8fe1134aabf6fc749a2a8c09bb56dd7d283e | ||
with: | ||
mc: ${{ env.MINECRAFT_VERSION }} | ||
modloader: ${{ matrix.loader }} | ||
regex: .*${{ matrix.loader }}.* | ||
mc-runtime-test: none | ||
java: 17 | ||
fabric-api: ${{ matrix.loader == 'fabric' && env.FABRIC_API_VERSION || 'none' }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
22 changes: 22 additions & 0 deletions
22
fabric/src/testmod/java/dev/engine_room/flywheel/FlywheelTestModClient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package dev.engine_room.flywheel; | ||
|
||
import org.spongepowered.asm.mixin.MixinEnvironment; | ||
|
||
import net.fabricmc.api.ClientModInitializer; | ||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; | ||
|
||
public class FlywheelTestModClient implements ClientModInitializer { | ||
private int ticks = 0; | ||
|
||
@Override | ||
public void onInitializeClient() { | ||
if (Boolean.getBoolean("flywheel.autoTest")) { | ||
ClientTickEvents.END_CLIENT_TICK.register(client -> { | ||
if (++ticks == 50) { | ||
MixinEnvironment.getCurrentEnvironment().audit(); | ||
client.stop(); | ||
} | ||
}); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
"schemaVersion": 1, | ||
"id": "${mod_id}-testmod", | ||
"name": "${mod_name} Test Mod", | ||
"version": "1.0.0", | ||
"environment": "*", | ||
"license": "${mod_license}", | ||
"entrypoints": { | ||
"client": [ | ||
"dev.engine_room.flywheel.FlywheelTestModClient" | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
forge/src/testmod/java/dev/engine_room/flywheel/FlywheelTestModClient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package dev.engine_room.flywheel; | ||
|
||
import org.spongepowered.asm.mixin.MixinEnvironment; | ||
|
||
import net.minecraft.client.Minecraft; | ||
import net.minecraftforge.event.TickEvent; | ||
import net.minecraftforge.eventbus.api.IEventBus; | ||
import net.minecraftforge.fml.common.Mod; | ||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; | ||
|
||
@Mod("flywheel-testmod") | ||
public class FlywheelTestModClient { | ||
private int ticks = 0; | ||
|
||
public FlywheelTestModClient() { | ||
if (Boolean.getBoolean("flywheel.autoTest")) { | ||
IEventBus modEventBus = FMLJavaModLoadingContext.get() | ||
.getModEventBus(); | ||
|
||
modEventBus.addListener((TickEvent.ClientTickEvent e) -> { | ||
if (e.phase == TickEvent.Phase.END) { | ||
if (++ticks == 50) { | ||
MixinEnvironment.getCurrentEnvironment().audit(); | ||
Minecraft.getInstance().stop(); | ||
} | ||
} | ||
}); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
modLoader = "javafml" | ||
loaderVersion = "[0,)" | ||
license = "${mod_license}" | ||
|
||
[[mods]] | ||
modId = "${mod_id}-testmod" | ||
version = "1.0.0" | ||
displayName = "${mod_name} Test Mod" |