Skip to content

Commit

Permalink
Port to MC 1.20.2 and add support for NeoForge.
Browse files Browse the repository at this point in the history
  • Loading branch information
Darkhax committed Jan 2, 2024
1 parent 61d5360 commit ae2ddb0
Show file tree
Hide file tree
Showing 12 changed files with 256 additions and 19 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -20,3 +20,4 @@ build
# other
eclipse
run
runs
14 changes: 8 additions & 6 deletions build.gradle
Expand Up @@ -13,12 +13,9 @@ buildscript {
}

plugins {
id 'fabric-loom' version '1.2-SNAPSHOT' apply(false)
id 'net.minecraftforge.gradle' version '[6.0,6.2)' apply(false)
id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT' apply(false)
id 'org.spongepowered.mixin' version '0.7-SNAPSHOT' apply(false)
id 'net.darkhax.curseforgegradle' version '1.1.16' apply(false)
id 'com.modrinth.minotaur' version '2.8.0' apply(false)
id 'net.darkhax.curseforgegradle' version '1.1.17' apply(false)
id 'com.modrinth.minotaur' version '2.8.5' apply(false)
id "org.jetbrains.gradle.plugin.idea-ext" version "1.1.7"
}

apply from: 'gradle/property_loader.gradle'
Expand Down Expand Up @@ -106,6 +103,11 @@ task postDiscord() {

downloadSources.add("<:fabric:916233929722314763> [Fabric](${project(':fabric').findProperty('curse_file_url')})")
}

if (project(':neoforge').hasProperty('curse_file_url')) {

downloadSources.add("<:neoforge:1173939148806176779> [NeoForge](${project(':neoforge').findProperty('curse_file_url')})")
}

// Add Curseforge DL link if available.
def downloadString = downloadSources.toString()
Expand Down
2 changes: 1 addition & 1 deletion common/build.gradle
@@ -1,5 +1,5 @@
plugins {
id 'org.spongepowered.gradle.vanilla'
id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT'
}
apply from: '../gradle/property_helper.gradle'

Expand Down
2 changes: 1 addition & 1 deletion fabric/build.gradle
@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom'
id 'fabric-loom' version '1.2-SNAPSHOT'
id 'net.darkhax.curseforgegradle'
id 'com.modrinth.minotaur'
id 'idea'
Expand Down
2 changes: 1 addition & 1 deletion fabric/src/main/resources/fabric.mod.json
Expand Up @@ -31,7 +31,7 @@
"depends": {
"fabricloader": ">=0.14.21",
"fabric": "*",
"minecraft": "1.20.1",
"minecraft": "${minecraft_version}",
"java": ">=17"
},
"custom": {
Expand Down
4 changes: 2 additions & 2 deletions forge/build.gradle
@@ -1,8 +1,8 @@
plugins {
id 'net.minecraftforge.gradle'
id 'net.minecraftforge.gradle' version '[6.0,6.2)'
id 'org.spongepowered.mixin' version '0.7-SNAPSHOT'
id 'net.darkhax.curseforgegradle'
id 'com.modrinth.minotaur'
id 'org.spongepowered.mixin'
}

apply from: '../gradle/patreon.gradle'
Expand Down
11 changes: 9 additions & 2 deletions forge/src/main/resources/META-INF/mods.toml
@@ -1,5 +1,5 @@
modLoader = "javafml"
loaderVersion = "[47,)"
loaderVersion = "${forge_version_range}"
license = "${mod_license}"
issueTrackerURL = "${mod_issues}"
logoFile = "logo.png"
Expand All @@ -22,6 +22,13 @@ itemIcon = "minecraft:golden_apple"
[[dependencies.${ mod_id }]]
modId = "forge"
mandatory = true
versionRange = "[47,)"
versionRange = "${forge_version_range}"
ordering = "NONE"
side = "BOTH"

[[dependencies.${ mod_id }]]
modId = "minecraft"
mandatory = true
versionRange = "${minecraft_version}"
ordering = "NONE"
side = "BOTH"
15 changes: 10 additions & 5 deletions gradle.properties
@@ -1,16 +1,21 @@
# Project
version=12.0
version=13.0
group=net.darkhax.maxhealthfix

# Common
minecraft_version=1.20.1
minecraft_version=1.20.2

# Forge
forge_version=47.1.44
forge_version=48.0.37
forge_version_range=48,

# NeoForge
neoforge_version=20.2.47-beta
neoforge_version_range=20.2,

# Fabric
fabric_version=0.87.0+1.20.1
fabric_loader_version=0.14.22
fabric_version=0.90.7+1.20.2
fabric_loader_version=0.14.24

# Mod options
mod_name=MaxHealthFix
Expand Down
172 changes: 172 additions & 0 deletions neoforge/build.gradle
@@ -0,0 +1,172 @@
plugins {
id 'net.neoforged.gradle.userdev' version '7.0.43'
id 'net.darkhax.curseforgegradle'
id 'com.modrinth.minotaur'
}

apply from: '../gradle/patreon.gradle'

base {
archivesName = "${mod_name}-NeoForge-${minecraft_version}"
}

runs {
configureEach {
modSource project.sourceSets.main
}
client {
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
}
server {
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
programArgument '--nogui'
}

gameTestServer {
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
}
}

dependencies {
implementation "net.neoforged:neoforge:${neoforge_version}"
compileOnly project(':common')
}

// NeoGradle compiles the game, but we don't want to add our common code to the game's code
TaskCollection.metaClass.excludingNeoTasks = { ->
delegate.matching { !it.name.startsWith("neo") }
}

tasks.withType(JavaCompile).excludingNeoTasks().configureEach {
source(project(':common').sourceSets.main.allSource)
}

tasks.withType(Javadoc).excludingNeoTasks().configureEach {
source(project(':common').sourceSets.main.allJava)
}

tasks.named("sourcesJar", Jar) {
from(project(':common').sourceSets.main.allSource)
}

tasks.withType(ProcessResources).excludingNeoTasks().configureEach {
from project(':common').sourceSets.main.resources
}

processResources {

from project(":common").sourceSets.main.resources

def buildProps = project.properties.clone()

// Replaces FML's magic file.jarVersion string with the correct version at
// build time.
buildProps.put('file', [jarVersion: project.version])

if (project.hasProperty('patreon')) {

def supporters = new ArrayList<String>()

for (entry in project.ext.patreon.pledges) {

def pledge = entry.value;

if (pledge.isValid()) {

supporters.add(pledge.getDisplayName())
}
}

buildProps.put('mod_supporters', supporters.join(', '))
}

filesMatching('*.mixins.json') {
filter(org.apache.tools.ant.filters.LineContains, negate: true, contains: ['refmap' ] )
}

filesMatching(['META-INF/mods.toml', 'pack.mcmeta', '*.mixins.json']) {

expand buildProps
}
}

// -- MAVEN PUBLISHING --
project.publishing {

publications {

mavenJava(MavenPublication) {

artifactId = base.archivesName.get()
from components.java
}
}

repositories {

maven {

// Sets maven credentials if they are provided. This is generally
// only used for external/remote uploads.
if (project.hasProperty('mavenUsername') && project.hasProperty('mavenPassword')) {

credentials {

username findProperty('mavenUsername')
password findProperty('mavenPassword')
}
}

url getDefaultString('mavenURL', 'undefined', true)
}
}
}

// CurseForge Publishing
task publishCurseForge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) {

apiToken = findProperty('curse_auth')

def mainFile = upload(curse_project, jar)
mainFile.changelogType = 'markdown'
mainFile.changelog = project.ext.mod_changelog
mainFile.addJavaVersion('Java 17')
mainFile.releaseType = 'release'
mainFile.addGameVersion('Server', 'Client')

// Append Patreon Supporters
def patreonInfo = project.findProperty('patreon')

if (patreonInfo) {
mainFile.changelog += "\n\nThis project is made possible by [Patreon](${patreonInfo.campaignUrlTracked}) support from players like you. Thank you!\n\n${patreonInfo.pledgeLog}"
}

doLast {

if (project.hasProperty('mod_homepage')) {

project.ext.curse_file_url = "${mod_homepage}/files/${mainFile.curseFileId}"
}
}
}

// Modrinth
modrinth {

def patreonInfo = project.findProperty('patreon')
def changelog = project.ext.mod_changelog

if (patreonInfo) {
changelog += "\n\nThis project is made possible by [Patreon](${patreonInfo.campaignUrlTracked}) support from players like you. Thank you!\n\n${patreonInfo.pledgeLog}"
}

token.set(project.findProperty('modrinth_auth'))
projectId.set(modrinth_project)
changelog = changelog
versionName.set("${mod_name}-NeoForge-${minecraft_version}-$version")
versionType.set('release')
uploadFile.set(tasks.jar)

loaders = ["neoforge"]
gameVersions = ["${minecraft_version}"]
}
@@ -0,0 +1,12 @@
package net.darkhax.maxhealthfix;

import net.neoforged.fml.common.Mod;

@Mod(Constants.MOD_ID)
public class MaxHealthFixNeoForge {

public MaxHealthFixNeoForge() {

Constants.LOG.info("Loaded {} for Forge.", Constants.MOD_ID);
}
}
33 changes: 33 additions & 0 deletions neoforge/src/main/resources/META-INF/mods.toml
@@ -0,0 +1,33 @@
modLoader = "javafml"
loaderVersion = "${neoforge_version_range}"
license = "${mod_license}"
issueTrackerURL="${mod_issues}"

[[mods]]
modId = "${mod_id}"
version = "${version}"
displayName = "${mod_name}"
updateJSONURL = "https://updates.blamejared.com/get?n=${mod_id}&gv=${minecraft_version}&ml=neoforge"
displayURL = "${mod_homepage}"
credits = "This project is made possible with Patreon support from players like you. Thank you! ${mod_supporters}"
authors = "${mod_author}"
description = '''
${mod_description}
'''

[[mixins]]
config = "${mod_id}.common.mixins.json"

[[dependencies.${ mod_id }]]
modId = "neoforge"
mandatory = true
versionRange = "${neoforge_version_range}"
ordering = "NONE"
side = "BOTH"

[[dependencies.${ mod_id }]]
modId = "minecraft"
mandatory = true
versionRange = "${minecraft_version}"
ordering = "NONE"
side = "BOTH"
7 changes: 6 additions & 1 deletion settings.gradle
Expand Up @@ -5,6 +5,10 @@ pluginManagement {
name = 'Forge'
url = 'https://maven.minecraftforge.net/'
}
maven {
name = 'NeoForge'
url = 'https://maven.neoforged.net/releases/'
}
maven {
name = 'Fabric'
url = 'https://maven.fabricmc.net/'
Expand All @@ -23,4 +27,5 @@ plugins {
rootProject.name = "MaxHealthFix"
include('common')
include('fabric')
include('forge')
include('forge')
include('neoforge')

0 comments on commit ae2ddb0

Please sign in to comment.