Skip to content
This repository has been archived by the owner on Jun 14, 2024. It is now read-only.

Commit

Permalink
refactor: Forge support
Browse files Browse the repository at this point in the history
* ci: Rework CI

* refactor: Use ArchLoom v1.4

* ci: Specify shell

* chore: Adjust version format

* chore: Adjust RAM allocation
Preprocessor require atleast 5GB of RAM

* chore: Mixin for forge

* chore: Mod init for Forge

* ci: Update actions/checkout to v3

* refactor: Use preprocessor

* fix: Forgor to change the name

* refactor: Migrate to Groovy and Mojmap
Can't do forge with Kotlin for some reason

* refactor: Version stuff

* fix: MC version

* fix: Forge version range

* fix: Configure run configs

* fix: Mixin package

* fix: Missing pack.mcmeta for Forge
I still don't understand why Forge need this

* ci: Token env

* chore: Build gradle adjustment
  • Loading branch information
null2264 authored Nov 7, 2023
1 parent c1992a7 commit c48b7a9
Show file tree
Hide file tree
Showing 20 changed files with 354 additions and 205 deletions.
14 changes: 14 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: "Setup environment"
description: "Set up Java environment"
runs:
using: "composite"
steps:
- name: "Validate gradle"
uses: gradle/wrapper-validation-action@v1
- name: "Setup JDK"
uses: actions/setup-java@v3
with:
distribution: "temurin"
java-version: 17
- shell: bash
run: chmod +x ./gradlew
23 changes: 11 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,18 @@ on: [push]

jobs:
build:

runs-on: ubuntu-latest

container:
image: openjdk:17-jdk
options: --user root

steps:
- uses: actions/checkout@v2.2.0
- run: |
chmod +x ./gradlew
./gradlew build
- uses: actions/upload-artifact@v2
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- name: "Build LibreExpFix"
run: ./gradlew build
- name: Archive build results
run: tar -I zstd -cf build.tar.zst versions/*/build/libs
- name: Upload build folder
uses: actions/upload-artifact@v3
with:
name: build-artifacts
path: build/libs/
path: build.tar.zst
if-no-files-found: error
retention-days: 3
19 changes: 8 additions & 11 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@ on: [workflow_dispatch]
jobs:
release:
runs-on: ubuntu-latest

container:
image: openjdk:17-jdk
options: --user root

steps:
- uses: actions/checkout@v2.2.0
- run: |
chmod +x ./gradlew
./gradlew build curseforge modrinth --stacktrace
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- name: "Build"
run: ./gradlew build --stacktrace
- name: "Upload mod to CurseForge and Modrinth"
run: ./gradlew publishMods --stacktrace
env:
CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }}
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
CURSEFORGE: ${{ secrets.CURSEFORGE_API_KEY }}
MODRINTH: ${{ secrets.MODRINTH_TOKEN }}
176 changes: 176 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
plugins {
id("dev.architectury.loom") version "1.3-SNAPSHOT"
id("com.github.johnrengelman.shadow")
id("com.github.null2264.preprocess")
id("me.modmuss50.mod-publish-plugin") version "0.3.5"
}

def _env = System.getenv()

archivesBaseName = project.archives_base_name

def buildNumber = _env["GITHUB_RUN_NUMBER"]
version = project.mod_version + (buildNumber != null ? "b${buildNumber}" : "") + "-BETA"
group = project.maven_group

// TODO: For later
def isForge = project.name.endsWith("forge")
def isNeo = project.name.endsWith("neoforge")
def isFabric = project.name.endsWith("fabric")

def mcVersion
def (major, minor, patch) = project.name.tokenize('-')[0].tokenize('.')
mcVersion = "${major}${minor.padLeft(2, '0')}${(patch ?: '').padLeft(2, '0')}" as int
static String stringifyVersion(int ver) {
return "${(int)(ver/10000)}.${(int)(ver/100)%100}" + (ver%100==0 ? '' : ".${ver%100}")
}
def mcVersionStr = stringifyVersion(mcVersion)
def supportedVersionRange = [
11800: ["1.18", null],
][mcVersion]

repositories {
}

preprocess {
vars.put("MC", mcVersion)
vars.put("FABRIC", isFabric ? 1 : 0)
vars.put("FORGE", isForge ? 1 + (isNeo ? 1 : 0) : 0)
}

loom {
silentMojangMappingsLicense()

mixin.defaultRefmapName.set("mixins.libreexpfix.refmap.json")

runConfigs.configure {
client {
runDir = "../../run/client"
ideConfigGenerated = true
}
server {
runDir = "../../run/server"
ideConfigGenerated = true
}
}

if (isForge)
forge {
mixinConfigs = ["libreexpfix.mixins.json"]
}
}

configurations {
shade
modImplementation.extendsFrom(shade)
}

dependencies {
def mc = [
11800: "1.18.2"
]
minecraft("com.mojang:minecraft:${mc[mcVersion] ?: mcVersionStr}")
mappings loom.officialMojangMappings()
if (isFabric)
modImplementation("net.fabricmc:fabric-loader:0.14.24")
else
forge("net.minecraftforge:forge:1.18.2-40.2.9")
}

shadowJar {
zip64 true
exclude("fabric.mod.json")
exclude(isFabric ? "META-INF/mods.toml" : "fabric.mod.json")
exclude("architectury.common.json")

archiveClassifier.set("dev-shade")
}

artifacts {
archives(shadowJar)
}

remapJar {
dependsOn(shadowJar)
inputFile.set(shadowJar.archiveFile)
}

tasks.processResources {
duplicatesStrategy = DuplicatesStrategy.INCLUDE

def metadataMCVersion =
supportedVersionRange[0] != null ? (
(isFabric ? ">=" : "[") +
supportedVersionRange[0] +
(supportedVersionRange[1] == null
? (isFabric ? "" : ",)")
: ((isFabric ? " <=" : ",") + supportedVersionRange[1] + (isFabric ? "" : "]")))
) : (isFabric ? supportedVersionRange[1] : "[${supportedVersionRange[1]}]")
inputs.property "version", project.version
inputs.property "mcversion", metadataMCVersion
filteringCharset "UTF-8"

filesMatching(isFabric ? "fabric.mod.json" : "META-INF/mods.toml") {
expand "version": project.version, "mcversion": metadataMCVersion
}
}

def targetJavaVersion = 17
tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
it.options.release = targetJavaVersion
}
}

java {
withSourcesJar()
}

jar {
from("LICENSE") {
rename { "${it}_${project["archivesBaseName"]}" }
}
}

def mcReleaseVersions = [
11800: ["1.18", "1.18.1", "1.18.2", "1.19", "1.19.1", "1.19.2", "1.19.3", "1.19.4", "1.20", "1.20.1", "1.20.2"],
][mcVersion]

publishMods {
file = remapJar.archiveFile
displayName = "[${isFabric ? "FABRIC" : "FORGE"} MC${mcReleaseVersions[0] + (mcReleaseVersions.size() > 1 ? "+" : "")}] v${project.mod_version}-BETA"
changelog = _env["CHANGELOG"] ?: "The changelog can be found at https://github.com/null2264/LibreExpFix/commits/"
version = project.version as String
if (isFabric) {
modLoaders.add("fabric")
modLoaders.add("quilt")
} else {
modLoaders.add("forge")
modLoaders.add("neoforge")
}

type = BETA

_env["CURSEFORGE"]?.also { token ->
curseforge {
accessToken = token
projectId = project["curseforge_project"]

for (final def mcVer in mcReleaseVersions) {
minecraftVersions.add(mcVer)
}
}
}

_env["MODRINTH"]?.also { token ->
modrinth {
accessToken = token
projectId = project["modrinth_project"]

for (final def mcVer in mcReleaseVersions) {
minecraftVersions.add(mcVer)
}
}
}
}
119 changes: 0 additions & 119 deletions build.gradle.kts

This file was deleted.

11 changes: 5 additions & 6 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G
org.gradle.jvmargs=-Xmx5G

# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.19.2
yarn_mappings=1.19.2+build.11
loader_version=0.14.9
# Mod Properties
mod_version=0.1
version_type=ALPHA
mod_version=0.2.0
maven_group=io.github.null2264
archives_base_name=libreexpfix
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.61.0+1.19.2

modrinth_id=qOQALrK4
curseforge_id=676174
modrinth_project=qOQALrK4
curseforge_project=676174
Loading

0 comments on commit c48b7a9

Please sign in to comment.