Update to 1.20.2. Add a NeoForge project
This commit is contained in:
parent
493ecc96d2
commit
ec156b6c83
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -21,3 +21,4 @@ build
|
||||||
# other
|
# other
|
||||||
eclipse
|
eclipse
|
||||||
run
|
run
|
||||||
|
runs
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
plugins {
|
plugins {
|
||||||
id 'fabric-loom' version '1.2-SNAPSHOT' apply(false)
|
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.gradle.vanilla' version '0.2.1-SNAPSHOT' apply(false)
|
||||||
id("org.spongepowered.mixin") version "0.7-SNAPSHOT" apply(false)
|
id 'org.spongepowered.mixin' version '0.7-SNAPSHOT' apply(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
|
|
@ -71,7 +70,10 @@ subprojects {
|
||||||
"mod_author": mod_author,
|
"mod_author": mod_author,
|
||||||
"mod_id": mod_id,
|
"mod_id": mod_id,
|
||||||
"license": license,
|
"license": license,
|
||||||
"description": project.description
|
"description": project.description,
|
||||||
|
"neoforge_version": neoforge_version,
|
||||||
|
"neoforge_loader_version_range": neoforge_loader_version_range,
|
||||||
|
"credits": credits
|
||||||
]
|
]
|
||||||
|
|
||||||
filesMatching(['pack.mcmeta', 'fabric.mod.json', 'META-INF/mods.toml', '*.mixins.json']) {
|
filesMatching(['pack.mcmeta', 'fabric.mod.json', 'META-INF/mods.toml', '*.mixins.json']) {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"id": "mod_id",
|
"id": "${mod_id}",
|
||||||
"version": "${version}",
|
"version": "${version}",
|
||||||
"name": "${mod_name}",
|
"name": "${mod_name}",
|
||||||
"description": "${description}",
|
"description": "${description}",
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=0.14",
|
"fabricloader": ">=0.14",
|
||||||
"fabric": "*",
|
"fabric": "*",
|
||||||
"minecraft": "1.20",
|
"minecraft": "1.20.2",
|
||||||
"java": ">=17"
|
"java": ">=17"
|
||||||
},
|
},
|
||||||
"suggests": {
|
"suggests": {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
plugins {
|
plugins {
|
||||||
id 'idea'
|
id 'idea'
|
||||||
id 'maven-publish'
|
id 'maven-publish'
|
||||||
id 'net.minecraftforge.gradle'
|
id 'net.minecraftforge.gradle' version '[6.0,6.2)'
|
||||||
id 'org.spongepowered.mixin'
|
id 'org.spongepowered.mixin'
|
||||||
}
|
}
|
||||||
base {
|
base {
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ version = "${version}" #mandatory
|
||||||
displayName = "${mod_name}" #mandatory
|
displayName = "${mod_name}" #mandatory
|
||||||
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional (see https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/)
|
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional (see https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/)
|
||||||
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional (displayed in the mod UI)
|
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional (displayed in the mod UI)
|
||||||
logoFile = "${mod_id}.png" #optional (needs to be in the root of your mod jar (root of your 'resources' folder))
|
logoFile = "${mod_id}.png" #optional
|
||||||
credits = "Thanks for this example mod goes to Java" #optional
|
credits = "${credits}" #optional
|
||||||
authors = "${mod_author}" #optional
|
authors = "${mod_author}" #optional
|
||||||
description = '''${description}''' #mandatory (Supports multiline text)
|
description = '''${description}''' #mandatory (Supports multiline text)
|
||||||
[[dependencies.${mod_id}]] #optional
|
[[dependencies.${mod_id}]] #optional
|
||||||
|
|
|
||||||
|
|
@ -7,24 +7,27 @@ version=1.0.0
|
||||||
group=com.example.examplemod
|
group=com.example.examplemod
|
||||||
|
|
||||||
# Common
|
# Common
|
||||||
minecraft_version=1.20
|
minecraft_version=1.20.2
|
||||||
|
|
||||||
# Forge
|
|
||||||
forge_version=46.0.12
|
|
||||||
forge_loader_version_range=[46,)
|
|
||||||
forge_version_range=[46,)
|
|
||||||
minecraft_version_range=[1.20, 1.21)
|
|
||||||
|
|
||||||
# Fabric
|
|
||||||
fabric_version=0.83.0+1.20
|
|
||||||
fabric_loader_version=0.14.21
|
|
||||||
|
|
||||||
# Mod options
|
|
||||||
mod_name=ExampleMod
|
mod_name=ExampleMod
|
||||||
mod_author=Jared
|
mod_author=Jared
|
||||||
mod_id=examplemod
|
mod_id=examplemod
|
||||||
license=C0-1.0
|
license=C0-1.0
|
||||||
|
credits=
|
||||||
description=The description of your mod. \nAccepts multilines.
|
description=The description of your mod. \nAccepts multilines.
|
||||||
|
minecraft_version_range=[1.20.2, 1.21)
|
||||||
|
|
||||||
|
# Fabric
|
||||||
|
fabric_version=0.90.7+1.20.2
|
||||||
|
fabric_loader_version=0.14.24
|
||||||
|
|
||||||
|
# Forge
|
||||||
|
forge_version=48.0.37
|
||||||
|
forge_loader_version_range=[48,)
|
||||||
|
forge_version_range=[48,)
|
||||||
|
|
||||||
|
# NeoForge
|
||||||
|
neoforge_version=20.2.47-beta
|
||||||
|
neoforge_loader_version_range=[1,)
|
||||||
|
|
||||||
# Gradle
|
# Gradle
|
||||||
org.gradle.jvmargs=-Xmx3G
|
org.gradle.jvmargs=-Xmx3G
|
||||||
|
|
|
||||||
78
neoforge/build.gradle
Normal file
78
neoforge/build.gradle
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
plugins {
|
||||||
|
id 'idea'
|
||||||
|
id 'maven-publish'
|
||||||
|
id 'net.neoforged.gradle.userdev' version '7.0.41'
|
||||||
|
id 'java-library'
|
||||||
|
}
|
||||||
|
base {
|
||||||
|
archivesName = "${mod_name}-neoforge-${minecraft_version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Automatically enable neoforge AccessTransformers if the file exists
|
||||||
|
// This location is hardcoded in FML and can not be changed.
|
||||||
|
// https://github.com/neoforged/FancyModLoader/blob/a952595eaaddd571fbc53f43847680b00894e0c1/loader/src/main/java/net/neoforged/fml/loading/moddiscovery/ModFile.java#L118
|
||||||
|
if (file('src/main/resources/META-INF/accesstransformer.cfg').exists()) {
|
||||||
|
minecraft.accessTransformers.file rootProject.file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
data {
|
||||||
|
programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
mavenJava(MavenPublication) {
|
||||||
|
artifactId base.archivesName.get()
|
||||||
|
from components.java
|
||||||
|
}
|
||||||
|
}
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url "file://" + System.getenv("local_maven")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.example.examplemod;
|
||||||
|
|
||||||
|
|
||||||
|
import net.neoforged.fml.common.Mod;
|
||||||
|
|
||||||
|
@Mod(Constants.MOD_ID)
|
||||||
|
public class ExampleMod {
|
||||||
|
|
||||||
|
public ExampleMod() {
|
||||||
|
|
||||||
|
// This method is invoked by the NeoForge mod loader when it is ready
|
||||||
|
// to load your mod. You can access NeoForge and Common code in this
|
||||||
|
// project.
|
||||||
|
|
||||||
|
// Use NeoForge to bootstrap the Common mod.
|
||||||
|
Constants.LOG.info("Hello NeoForge world!");
|
||||||
|
CommonClass.init();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.example.examplemod.mixin;
|
||||||
|
|
||||||
|
import com.example.examplemod.Constants;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.screens.TitleScreen;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Mixin(TitleScreen.class)
|
||||||
|
public class MixinTitleScreen {
|
||||||
|
|
||||||
|
@Inject(at = @At("HEAD"), method = "init()V")
|
||||||
|
private void init(CallbackInfo info) {
|
||||||
|
|
||||||
|
Constants.LOG.info("This line is printed by an example mod mixin from NeoForge!");
|
||||||
|
Constants.LOG.info("MC Version: {}", Minecraft.getInstance().getVersionType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.example.examplemod.platform;
|
||||||
|
|
||||||
|
import com.example.examplemod.platform.services.IPlatformHelper;
|
||||||
|
import net.neoforged.fml.ModList;
|
||||||
|
import net.neoforged.fml.loading.FMLLoader;
|
||||||
|
|
||||||
|
public class NeoForgePlatformHelper implements IPlatformHelper {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPlatformName() {
|
||||||
|
|
||||||
|
return "NeoForge";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isModLoaded(String modId) {
|
||||||
|
|
||||||
|
return ModList.get().isLoaded(modId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDevelopmentEnvironment() {
|
||||||
|
|
||||||
|
return !FMLLoader.isProduction();
|
||||||
|
}
|
||||||
|
}
|
||||||
36
neoforge/src/main/resources/META-INF/mods.toml
Normal file
36
neoforge/src/main/resources/META-INF/mods.toml
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
modLoader = "javafml" #mandatory
|
||||||
|
loaderVersion = "${neoforge_loader_version_range}" #mandatory
|
||||||
|
license = "${license}" # Review your options at https://choosealicense.com/.
|
||||||
|
#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
|
||||||
|
[[mods]] #mandatory
|
||||||
|
modId = "${mod_id}" #mandatory
|
||||||
|
version = "${version}" #mandatory
|
||||||
|
displayName = "${mod_name}" #mandatory
|
||||||
|
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional (see https://docs.neoforged.net/docs/misc/updatechecker/)
|
||||||
|
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional (displayed in the mod UI)
|
||||||
|
logoFile="${mod_id}.png" #optional
|
||||||
|
credits="${credits}" #optional
|
||||||
|
authors = "${mod_author}" #optional
|
||||||
|
description = '''${description}''' #mandatory (Supports multiline text)
|
||||||
|
[[mixins]]
|
||||||
|
config = "examplemod.mixins.json"
|
||||||
|
[[mixins]]
|
||||||
|
config = "examplemod.neoforge.mixins.json"
|
||||||
|
[[dependencies.${ mod_id }]] #optional
|
||||||
|
modId = "neoforge" #mandatory
|
||||||
|
mandatory = true #mandatory
|
||||||
|
versionRange = "${neoforge_loader_version_range}" #mandatory
|
||||||
|
ordering = "NONE" # The order that this dependency should load in relation to your mod, required to be either 'BEFORE' or 'AFTER' if the dependency is not mandatory
|
||||||
|
side = "BOTH" # Side this dependency is applied on - 'BOTH', 'CLIENT' or 'SERVER'
|
||||||
|
[[dependencies.${ mod_id }]]
|
||||||
|
modId = "minecraft"
|
||||||
|
mandatory = true
|
||||||
|
versionRange = "${minecraft_version_range}"
|
||||||
|
ordering = "NONE"
|
||||||
|
side = "BOTH"
|
||||||
|
|
||||||
|
# Features are specific properties of the game environment, that you may want to declare you require. This example declares
|
||||||
|
# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't
|
||||||
|
# stop your mod loading on the server for example.
|
||||||
|
#[features.${mod_id}]
|
||||||
|
#openGLVersion="[3.2,)"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
com.example.examplemod.platform.NeoForgePlatformHelper
|
||||||
16
neoforge/src/main/resources/examplemod.neoforge.mixins.json
Normal file
16
neoforge/src/main/resources/examplemod.neoforge.mixins.json
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"minVersion": "0.8",
|
||||||
|
"package": "com.example.examplemod.mixin",
|
||||||
|
"compatibilityLevel": "JAVA_17",
|
||||||
|
"mixins": [
|
||||||
|
],
|
||||||
|
"client": [
|
||||||
|
"MixinTitleScreen"
|
||||||
|
],
|
||||||
|
"server": [
|
||||||
|
],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
pluginManagement {
|
pluginManagement {
|
||||||
repositories {
|
repositories {
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
maven {
|
|
||||||
name = 'Forge'
|
|
||||||
url = 'https://maven.minecraftforge.net/'
|
|
||||||
}
|
|
||||||
maven {
|
maven {
|
||||||
name = 'Fabric'
|
name = 'Fabric'
|
||||||
url = 'https://maven.fabricmc.net/'
|
url = 'https://maven.fabricmc.net/'
|
||||||
}
|
}
|
||||||
|
maven {
|
||||||
|
name = 'NeoForge'
|
||||||
|
url = 'https://maven.neoforged.net/releases/'
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
name = 'Forge'
|
||||||
|
url = 'https://maven.minecraftforge.net/'
|
||||||
|
}
|
||||||
maven {
|
maven {
|
||||||
name = 'Sponge Snapshots'
|
name = 'Sponge Snapshots'
|
||||||
url = 'https://repo.spongepowered.org/repository/maven-public/'
|
url = 'https://repo.spongepowered.org/repository/maven-public/'
|
||||||
|
|
@ -25,3 +29,4 @@ rootProject.name = 'MultiLoader-Template'
|
||||||
include("common")
|
include("common")
|
||||||
include("fabric")
|
include("fabric")
|
||||||
include("forge")
|
include("forge")
|
||||||
|
include("neoforge")
|
||||||
Loading…
Reference in New Issue
Block a user