-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor as an Architectury Loom project and add Forge and NeoForge.
* Rewrite a lot of mixins to work around Forge/NeoForge mixin limitations * Remove JiJ'd MixinExtras except on Forge (but there it's broken) - Target Minecraft 1.20.4 and above - Refactor the project as an Architectory Loom project - Add Forge support (currently broken without separate MixinExtras) - Add NeoForge support - New maven artifact IDs: biolith-fabric, biolith-forge, biolith-neoforge
- Loading branch information
1 parent
5558ce2
commit 50298f0
Showing
80 changed files
with
2,175 additions
and
551 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
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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,143 +1,50 @@ | ||
plugins { | ||
id 'fabric-loom' version '1.3.+' | ||
id 'maven-publish' | ||
id 'io.github.juuxel.loom-vineflower' version '1.11.0' | ||
id "architectury-plugin" version "3.4-SNAPSHOT" | ||
id 'dev.architectury.loom' version '1.4-SNAPSHOT' apply(false) | ||
} | ||
|
||
archivesBaseName = project.archive_name | ||
version = project.mod_version | ||
group = project.maven_group | ||
|
||
apply from: 'https://raw.githubusercontent.com/TerraformersMC/GradleScripts/3.0-beta/ferry-mpp.gradle' | ||
|
||
sourceCompatibility = JavaVersion.VERSION_17 | ||
targetCompatibility = JavaVersion.VERSION_17 | ||
|
||
repositories { | ||
// Add repositories to retrieve artifacts from in here. | ||
// You should only use this when depending on other mods because | ||
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically. | ||
// See https://docs.gradle.org/current/userguide/declaring_repositories.html | ||
// for more information about repositories. | ||
|
||
maven { | ||
name = 'TerraformersMC' | ||
url = 'https://maven.terraformersmc.com/' | ||
} | ||
|
||
// TerraBlender | ||
maven { | ||
url = 'https://maven.minecraftforge.net/' | ||
} | ||
architectury { | ||
minecraft = rootProject.minecraft_version | ||
} | ||
|
||
dependencies { | ||
// 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. This is technically optional, but you probably want it anyway. | ||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" | ||
subprojects { | ||
apply plugin: "dev.architectury.loom" | ||
|
||
// TerraBlender so we can target it with mixins | ||
modCompileOnlyApi "com.github.glitchfiend:TerraBlender-fabric:${terrablender_version}" | ||
project.archivesBaseName = "${rootProject.archives_base_name}-${project.name}" | ||
|
||
// Terraform Surfaces API for OpenSimplexNoise | ||
include(modImplementation("com.terraformersmc.terraform-api:terraform-surfaces-api-v1:${project.terraform_surfaces_api_version}")) | ||
|
||
// MixinExtras so we can mixin in a more compatible manner | ||
include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:${project.mixinextras_version}"))) | ||
} | ||
|
||
processResources { | ||
inputs.property "version", project.version | ||
|
||
filesMatching("fabric.mod.json") { | ||
expand "version": project.version | ||
dependencies { | ||
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" | ||
mappings("net.fabricmc:yarn:${rootProject.yarn_mappings}:v2") | ||
} | ||
} | ||
|
||
tasks.withType(JavaCompile).configureEach { | ||
// Minecraft 1.18 (1.18-pre2) upwards uses Java 17. | ||
it.options.release = 17 | ||
} | ||
|
||
loom { | ||
accessWidenerPath = file("src/main/resources/biolith.accesswidener") | ||
} | ||
|
||
vineflower { | ||
addToRuntimeClasspath.set(true) | ||
} | ||
|
||
java { | ||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task | ||
// if it is present. | ||
// If you remove this line, sources will not be generated. | ||
withSourcesJar() | ||
} | ||
allprojects { | ||
apply plugin: "java" | ||
apply plugin: "architectury-plugin" | ||
apply plugin: "maven-publish" | ||
|
||
jar { | ||
from("LICENSE") { | ||
rename { "${it}_${project.archivesBaseName}"} | ||
} | ||
} | ||
version = rootProject.mod_version | ||
group = rootProject.maven_group | ||
|
||
publish { | ||
onlyIf { | ||
checkVersion(archivesBaseName, version) | ||
} | ||
} | ||
|
||
publishing { | ||
publications { | ||
mavenJava(MavenPublication) { | ||
from components.java | ||
repositories { | ||
mavenCentral() | ||
maven { | ||
name = 'TerraformersMC' | ||
url = 'https://maven.terraformersmc.com/' | ||
} | ||
|
||
// Exclude TerraBlender from maven deps so Loom does not load it during builds | ||
// and tests of other projects using our API (unless they configure it to). | ||
pom.withXml { | ||
asNode().dependencies.dependency.each { dep -> | ||
if (dep.artifactId.last().value().last() in ["TerraBlender-fabric"]) { | ||
assert dep.parent().remove(dep) | ||
} | ||
} | ||
} | ||
// for TerraBlender | ||
maven { | ||
url = 'https://maven.minecraftforge.net/' | ||
} | ||
} | ||
|
||
setupRepositories(repositories) | ||
} | ||
|
||
static void setupRepositories(RepositoryHandler repositories) { | ||
//repositories.mavenLocal() // uncomment for testing | ||
def ENV = System.getenv() | ||
if (ENV.MAVEN_URL) { | ||
repositories.maven { | ||
url ENV.MAVEN_URL | ||
credentials { | ||
username ENV.MAVEN_USERNAME | ||
password ENV.MAVEN_PASSWORD | ||
} | ||
} | ||
tasks.withType(JavaCompile).configureEach { | ||
it.options.encoding = 'UTF-8' | ||
it.options.getRelease().set(17) | ||
} | ||
} | ||
|
||
ext.checkVersion = { archivesBaseName, version -> | ||
try { | ||
def xml = new URL("https://maven.terraformersmc.com/com/terraformersmc/$archivesBaseName/maven-metadata.xml").text | ||
def metadata = new XmlSlurper().parseText(xml) | ||
def versions = metadata.versioning.versions.version*.text() | ||
if (versions.contains(version)) { | ||
println "$archivesBaseName version $version will not be published; already exists" | ||
return false | ||
} else { | ||
println "$archivesBaseName version $version will be published" | ||
return true | ||
} | ||
} catch (FileNotFoundException ignored) { | ||
println "$archivesBaseName is not on maven yet" | ||
return true | ||
java { | ||
withSourcesJar() | ||
} | ||
} |
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,15 @@ | ||
architectury { | ||
common(rootProject.enabled_platforms.split(",")) | ||
} | ||
|
||
loom { | ||
accessWidenerPath = file("src/main/resources/biolith.accesswidener") | ||
} | ||
|
||
dependencies { | ||
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies | ||
// Do NOT use other classes from fabric loader | ||
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" | ||
// Remove the next line if you don't want to depend on the API | ||
//modApi "dev.architectury:architectury:${rootProject.architectury_version}" | ||
} |
Oops, something went wrong.