first
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
plugins {
|
||||
`multiloader-loader`
|
||||
id("net.minecraftforge.gradle")
|
||||
id("net.minecraftforge.jarjar")
|
||||
// id("net.minecraftforge.accesstransformers")
|
||||
}
|
||||
|
||||
minecraft.mavenizer(repositories)
|
||||
|
||||
println(
|
||||
"Java: ${providers.systemProperty("java.version").get()}, " +
|
||||
"JVM: ${providers.systemProperty("java.vm.version").get()} (${
|
||||
providers.systemProperty("java.vendor").get()
|
||||
}), " +
|
||||
"Arch: ${providers.systemProperty("os.arch").get()}"
|
||||
)
|
||||
|
||||
minecraft {
|
||||
/*mappings(
|
||||
if (commonMod.propOrNull("parchment_mappings") != null) "parchment" else "official",
|
||||
if (commonMod.propOrNull("parchment_mappings") != null)
|
||||
"${commonMod.minecraft_version}-${commonMod.prop("parchment_mappings")}" else commonMod.minecraft_version
|
||||
)*/
|
||||
mappings("official", commonMod.minecraft_version)
|
||||
|
||||
//setAccessTransformers(true)
|
||||
|
||||
runs {
|
||||
configureEach {
|
||||
workingDir.convention(layout.projectDirectory.dir("run"))
|
||||
|
||||
//systemProperty ("forge.logging.markers", "REGISTRIES")
|
||||
|
||||
systemProperty("forge.logging.console.level", "debug")
|
||||
|
||||
systemProperty("eventbus.api.strictRuntimeChecks", "true")
|
||||
|
||||
//args ("-mixin.config=${commonMod.id}.mixins.json")
|
||||
|
||||
//classpath(sourceSets.main.get())
|
||||
}
|
||||
|
||||
register("client") {
|
||||
systemProperty("forge.enabledGameTestNamespaces", commonMod.id)
|
||||
}
|
||||
|
||||
register("server") {
|
||||
systemProperty("forge.enabledGameTestNamespaces", commonMod.id)
|
||||
args("--nogui")
|
||||
}
|
||||
|
||||
register("gameTestServer") {
|
||||
systemProperty("forge.enabledGameTestNamespaces", commonMod.id)
|
||||
}
|
||||
|
||||
register("data") {
|
||||
workingDir = layout.projectDirectory.dir("run-data")
|
||||
|
||||
args(
|
||||
"--mod",
|
||||
commonMod.id,
|
||||
"--all",
|
||||
"--output",
|
||||
layout.projectDirectory.dir("src/generated/resources"),
|
||||
"--existing",
|
||||
layout.projectDirectory.dir("src/main/resources")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Include resources generated by data generators.
|
||||
sourceSets.main {
|
||||
resources.srcDir(layout.projectDirectory.dir("src/generated/resources"))
|
||||
}
|
||||
|
||||
// This methods registers jarJar for the default jar task.
|
||||
// The closure allows you to configure the task, instead of needing to do this:
|
||||
jarJar.register() {
|
||||
archiveClassifier = null
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Specify the version of Minecraft to use.
|
||||
// Any artifact can be supplied so long as it has a "userdev" classifier artifact and is a compatible patcher artifact.
|
||||
// The "userdev" classifier will be requested and setup by ForgeGradle.
|
||||
// If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"],
|
||||
// then special handling is done to allow a setup of a vanilla dependency without the use of an external repository.
|
||||
implementation(minecraft.dependency("net.minecraftforge:forge:${commonMod.minecraft_version}-${commonMod.prop("minecraftforge_version")}"))
|
||||
|
||||
// Forge 1.21.6+ uses EventBus 7, which shifts most of its runtime validation to compile-time via an annotation processor
|
||||
// to improve performance in production environments. This line is required to enable said compile-time validation
|
||||
// in your development environment, helping you catch issues early.
|
||||
if (stonecutter.eval(stonecutter.current.version, ">=1.21.6"))
|
||||
annotationProcessor("net.minecraftforge:eventbus-validator:${commonMod.prop("minecraftforge_eventbus_validator_version")}")
|
||||
|
||||
// Example mod dependency with JEI
|
||||
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
|
||||
//compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
|
||||
//compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}"
|
||||
//runtimeOnly "mezz.jei:jei-${mc_version}-forge:${jei_version}"
|
||||
|
||||
// Example mod dependency using a mod jar from ./libs with a flat dir repository
|
||||
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
|
||||
// The group id is ignored when searching -- in this case, it is "blank"
|
||||
// NOTE: Support for deobfuscated dependencies has not yet been added in ForgeGradle 7.
|
||||
//implementation "blank:coolmod-${mc_version}:${coolmod_version}"
|
||||
|
||||
// For more info:
|
||||
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
||||
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile::class).configureEach {
|
||||
options.encoding = "UTF-8" // Use the UTF-8 charset for Java compilation
|
||||
}
|
||||
|
||||
tasks {
|
||||
processResources {
|
||||
exclude("${mod.id}.accesswidener")
|
||||
}
|
||||
|
||||
register<Copy>("copyAT") {
|
||||
val atFile =
|
||||
project(":common").file("src/main/resources/accesstransformers/accesstransformer-${commonMod.minecraft_version}.cfg")
|
||||
from(atFile) {
|
||||
rename("accesstransformer-${commonMod.minecraft_version}.cfg", "accesstransformer.cfg")
|
||||
}
|
||||
setDuplicatesStrategy(DuplicatesStrategy.INHERIT)
|
||||
into("src/main/resources/META-INF")
|
||||
mustRunAfter(common.project.tasks.getByName("stonecutterMerge"))
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named("stonecutterPrepare") {
|
||||
finalizedBy(tasks.named("copyAT"))
|
||||
}
|
||||
|
||||
sourceSets.forEach {
|
||||
val dir = layout.buildDirectory.dir("sourcesSets/$it.name")
|
||||
it.output.setResourcesDir(dir)
|
||||
it.java.destinationDirectory = dir
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
plugins {
|
||||
`multiloader-loader`
|
||||
id("net.minecraftforge.gradle")
|
||||
id("net.minecraftforge.jarjar")
|
||||
// id("net.minecraftforge.accesstransformers")
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven("https://maven.architectury.dev/")
|
||||
maven("https://maven.terraformersmc.com/releases/")
|
||||
maven("https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/")
|
||||
maven("https://maven.blamejared.com/")
|
||||
}
|
||||
|
||||
minecraft.mavenizer(repositories)
|
||||
|
||||
println(
|
||||
"Java: ${providers.systemProperty("java.version").get()}, " +
|
||||
"JVM: ${providers.systemProperty("java.vm.version").get()} (${
|
||||
providers.systemProperty("java.vendor").get()
|
||||
}), " +
|
||||
"Arch: ${providers.systemProperty("os.arch").get()}"
|
||||
)
|
||||
|
||||
minecraft {
|
||||
/*mappings(
|
||||
if (commonMod.propOrNull("parchment_mappings") != null) "parchment" else "official",
|
||||
if (commonMod.propOrNull("parchment_mappings") != null)
|
||||
"${commonMod.minecraft_version}-${commonMod.prop("parchment_mappings")}" else commonMod.minecraft_version
|
||||
)*/
|
||||
mappings("official", commonMod.minecraft_version)
|
||||
|
||||
//setAccessTransformers(true)
|
||||
|
||||
runs {
|
||||
configureEach {
|
||||
workingDir.convention(layout.projectDirectory.dir("run"))
|
||||
|
||||
//systemProperty ("forge.logging.markers", "REGISTRIES")
|
||||
|
||||
systemProperty("forge.logging.console.level", "debug")
|
||||
|
||||
systemProperty("eventbus.api.strictRuntimeChecks", "true")
|
||||
|
||||
//args ("-mixin.config=${commonMod.id}.mixins.json")
|
||||
|
||||
//classpath(sourceSets.main.get())
|
||||
|
||||
systemProperty("architectury.runtime.enduser", "false")//
|
||||
systemProperty("mixin.env.remapRefMap", "true")//
|
||||
}
|
||||
|
||||
register("client") {
|
||||
systemProperty("forge.enabledGameTestNamespaces", commonMod.id)
|
||||
}
|
||||
|
||||
register("server") {
|
||||
systemProperty("forge.enabledGameTestNamespaces", commonMod.id)
|
||||
args("--nogui")
|
||||
}
|
||||
|
||||
register("gameTestServer") {
|
||||
systemProperty("forge.enabledGameTestNamespaces", commonMod.id)
|
||||
}
|
||||
|
||||
register("data") {
|
||||
workingDir = layout.projectDirectory.dir("run-data")
|
||||
|
||||
args(
|
||||
"--mod",
|
||||
commonMod.id,
|
||||
"--all",
|
||||
"--output",
|
||||
layout.projectDirectory.dir("src/generated/resources"),
|
||||
"--existing",
|
||||
layout.projectDirectory.dir("src/main/resources")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Include resources generated by data generators.
|
||||
sourceSets.main {
|
||||
resources.srcDir(layout.projectDirectory.dir("src/generated/resources"))
|
||||
}
|
||||
|
||||
// This methods registers jarJar for the default jar task.
|
||||
// The closure allows you to configure the task, instead of needing to do this:
|
||||
jarJar.register() {
|
||||
archiveClassifier = null
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Specify the version of Minecraft to use.
|
||||
// Any artifact can be supplied so long as it has a "userdev" classifier artifact and is a compatible patcher artifact.
|
||||
// The "userdev" classifier will be requested and setup by ForgeGradle.
|
||||
// If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"],
|
||||
// then special handling is done to allow a setup of a vanilla dependency without the use of an external repository.
|
||||
implementation(minecraft.dependency("net.minecraftforge:forge:${commonMod.minecraft_version}-${commonMod.prop("minecraftforge_version")}"))
|
||||
|
||||
// Forge 1.21.6+ uses EventBus 7, which shifts most of its runtime validation to compile-time via an annotation processor
|
||||
// to improve performance in production environments. This line is required to enable said compile-time validation
|
||||
// in your development environment, helping you catch issues early.
|
||||
if (stonecutter.eval(stonecutter.current.version, ">=1.21.6"))
|
||||
annotationProcessor("net.minecraftforge:eventbus-validator:${commonMod.prop("minecraftforge_eventbus_validator_version")}")
|
||||
|
||||
// Example mod dependency with JEI
|
||||
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
|
||||
//compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
|
||||
//compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}"
|
||||
//runtimeOnly "mezz.jei:jei-${mc_version}-forge:${jei_version}"
|
||||
|
||||
// Example mod dependency using a mod jar from ./libs with a flat dir repository
|
||||
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
|
||||
// The group id is ignored when searching -- in this case, it is "blank"
|
||||
// NOTE: Support for deobfuscated dependencies has not yet been added in ForgeGradle 7.
|
||||
//implementation "blank:coolmod-${mc_version}:${coolmod_version}"
|
||||
|
||||
// For more info:
|
||||
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
||||
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
||||
|
||||
// Architectury & GeckoLib
|
||||
implementation("dev.architectury:architectury-forge:${commonMod.prop("architectury_version")}")
|
||||
|
||||
// Explicitly add the transformer runtime JAR to the dependencies for the development environment.
|
||||
implementation("dev.architectury:architectury-transformer:5.2.88:runtime")
|
||||
|
||||
implementation("software.bernie.geckolib:geckolib-forge-${commonMod.minecraft_version}:${commonMod.prop("geckolib_version")}")
|
||||
|
||||
// JEI (Forge)
|
||||
// Compile against the API
|
||||
compileOnly("mezz.jei:jei-${commonMod.minecraft_version}-common-api:${commonMod.prop("jei_version")}")
|
||||
compileOnly("mezz.jei:jei-${commonMod.minecraft_version}-forge-api:${commonMod.prop("jei_version")}")
|
||||
// Run with the full mod
|
||||
runtimeOnly("mezz.jei:jei-${commonMod.minecraft_version}-forge:${commonMod.prop("jei_version")}")
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile::class).configureEach {
|
||||
options.encoding = "UTF-8" // Use the UTF-8 charset for Java compilation
|
||||
}
|
||||
|
||||
tasks {
|
||||
processResources {
|
||||
exclude("${mod.id}.accesswidener")
|
||||
}
|
||||
|
||||
register<Copy>("copyAT") {
|
||||
val atFile =
|
||||
project(":common").file("src/main/resources/accesstransformers/accesstransformer-${commonMod.minecraft_version}.cfg")
|
||||
from(atFile) {
|
||||
rename("accesstransformer-${commonMod.minecraft_version}.cfg", "accesstransformer.cfg")
|
||||
}
|
||||
setDuplicatesStrategy(DuplicatesStrategy.INHERIT)
|
||||
into("src/main/resources/META-INF")
|
||||
mustRunAfter(common.project.tasks.getByName("stonecutterMerge"))
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named("stonecutterPrepare") {
|
||||
finalizedBy(tasks.named("copyAT"))
|
||||
}
|
||||
|
||||
sourceSets.forEach {
|
||||
val dir = layout.buildDirectory.dir("sourcesSets/$it.name")
|
||||
it.output.setResourcesDir(dir)
|
||||
it.java.destinationDirectory = dir
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
loader=minecraftforge
|
||||
@@ -0,0 +1,119 @@
|
||||
import org.slf4j.event.Level
|
||||
|
||||
import org.gradle.jvm.toolchain.JavaLanguageVersion
|
||||
|
||||
val isForge1201 = stonecutter.current.version == "1.20.1"
|
||||
val targetJava = if (isForge1201) 17 else 21
|
||||
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion.set(JavaLanguageVersion.of(targetJava))
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
options.release.set(targetJava)
|
||||
}
|
||||
|
||||
|
||||
|
||||
plugins {
|
||||
`multiloader-loader`
|
||||
id("net.neoforged.moddev.legacyforge")
|
||||
}
|
||||
|
||||
legacyForge {
|
||||
version = "${commonMod.minecraft_version}-${commonMod.prop("minecraftforge_version")}"
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven("https://maven.architectury.dev/")
|
||||
maven("https://maven.terraformersmc.com/releases/")
|
||||
maven("https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/")
|
||||
maven("https://maven.blamejared.com/")
|
||||
maven("https://maven.shedaniel.me/")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Architectury transformer runtime (declare it directly)
|
||||
modRuntimeOnly("dev.architectury:architectury-transformer:5.2.88:runtime")
|
||||
|
||||
// Architectury (Forge)
|
||||
modImplementation("dev.architectury:architectury-forge:${commonMod.prop("architectury_version")}")
|
||||
modImplementation("me.shedaniel.cloth:cloth-config-forge:${commonMod.prop("cloth_config_version_1_20_1")}")
|
||||
|
||||
// GeckoLib: if you get SRG/mapping issues at runtime, this should also be a mod dependency
|
||||
modImplementation("software.bernie.geckolib:geckolib-forge-${commonMod.minecraft_version}:${commonMod.prop("geckolib_version")}")
|
||||
|
||||
modCompileOnly("mezz.jei:jei-${commonMod.minecraft_version}-common-api:${commonMod.prop("jei_version")}")
|
||||
modCompileOnly("mezz.jei:jei-${commonMod.minecraft_version}-forge-api:${commonMod.prop("jei_version")}")
|
||||
modRuntimeOnly("mezz.jei:jei-${commonMod.minecraft_version}-forge:${commonMod.prop("jei_version")}")
|
||||
}
|
||||
|
||||
|
||||
legacyForge {
|
||||
val at = project.file("build/resources/main/META-INF/accesstransformer.cfg");
|
||||
|
||||
accessTransformers.from(at.absolutePath)
|
||||
validateAccessTransformers = true
|
||||
|
||||
runs {
|
||||
register("client") {
|
||||
client()
|
||||
ideName = "MinecraftForge Client (${project.path})"
|
||||
logLevel = Level.TRACE
|
||||
}
|
||||
register("gameTestServer") {
|
||||
type = "gameTestServer"
|
||||
ideName = "MinecraftForge GameTestServer (${project.path})"
|
||||
logLevel = Level.TRACE
|
||||
}
|
||||
register("data") {
|
||||
data()
|
||||
ideName = "MinecraftForge Data (${project.path})"
|
||||
logLevel = Level.TRACE
|
||||
}
|
||||
register("server") {
|
||||
server()
|
||||
ideName = "MinecraftForge Server (${project.path})"
|
||||
logLevel = Level.TRACE
|
||||
}
|
||||
}
|
||||
|
||||
parchment {
|
||||
commonMod.propOrNull("parchment_mappings")?.let {
|
||||
mappingsVersion = it
|
||||
minecraftVersion = if (it != "") commonMod.minecraft_version else ""
|
||||
}
|
||||
}
|
||||
|
||||
mods {
|
||||
register(commonMod.id) {
|
||||
sourceSet(sourceSets.main.get())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets.main {
|
||||
resources.srcDir("src/generated/resources")
|
||||
}
|
||||
|
||||
tasks {
|
||||
processResources {
|
||||
exclude("${mod.id}.accesswidener")
|
||||
|
||||
val atFile =
|
||||
project(":common").file("src/main/resources/accesstransformers/accesstransformer-${commonMod.minecraft_version}.cfg")
|
||||
|
||||
from(atFile.parentFile) {
|
||||
include(atFile.name)
|
||||
rename(atFile.name, "META-INF/accesstransformer.cfg")
|
||||
into("")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named("createMinecraftArtifacts") {
|
||||
dependsOn(":minecraftforge:${commonMod.propOrNull("minecraft_version")}:processResources")
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package net.cmr.jurassicrevived;
|
||||
|
||||
import dev.architectury.platform.forge.EventBuses;
|
||||
import net.cmr.jurassicrevived.client.config.JRClothConfigScreens;
|
||||
import net.minecraftforge.client.ConfigScreenHandler;
|
||||
import net.minecraftforge.fml.ModLoadingContext;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
|
||||
@Mod(Constants.MOD_ID)
|
||||
public class JRMod {
|
||||
|
||||
@SuppressWarnings({"deprecation", "removal"})
|
||||
public JRMod() {
|
||||
|
||||
// This method is invoked by the Forge mod loader when it is ready
|
||||
// to load your mod. You can access Forge and Common code in this
|
||||
// project.
|
||||
|
||||
EventBuses.registerModEventBus(Constants.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus());
|
||||
|
||||
// Use Forge to bootstrap the Common mod.
|
||||
Constants.LOG.info("Hello Forge world!");
|
||||
CommonClass.init();
|
||||
|
||||
|
||||
ModLoadingContext.get().registerExtensionPoint(
|
||||
ConfigScreenHandler.ConfigScreenFactory.class,
|
||||
() -> new ConfigScreenHandler.ConfigScreenFactory(
|
||||
(mc, parent) -> JRClothConfigScreens.create(parent)
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
package net.cmr.jurassicrevived.client.config;
|
||||
|
||||
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
||||
import me.shedaniel.clothconfig2.api.ConfigCategory;
|
||||
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
|
||||
import net.cmr.jurassicrevived.config.JRConfig;
|
||||
import net.cmr.jurassicrevived.config.JRConfigManager;
|
||||
import net.cmr.jurassicrevived.platform.Services;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
||||
public final class JRClothConfigScreens {
|
||||
private JRClothConfigScreens() {}
|
||||
|
||||
public static Screen create(Screen parent) {
|
||||
JRConfig cfg = JRConfigManager.get();
|
||||
|
||||
ConfigBuilder builder = ConfigBuilder.create()
|
||||
.setParentScreen(parent)
|
||||
.setTitle(Component.literal("Jurassic Revived Config"));
|
||||
|
||||
ConfigCategory general = builder.getOrCreateCategory(Component.literal("General"));
|
||||
ConfigEntryBuilder eb = builder.entryBuilder();
|
||||
|
||||
general.addEntry(
|
||||
eb.startBooleanToggle(Component.literal("Enable Dinosaurs"), cfg.enableDinosaurs)
|
||||
.setDefaultValue(true)
|
||||
.setSaveConsumer(v -> cfg.enableDinosaurs = v)
|
||||
.build()
|
||||
);
|
||||
|
||||
general.addEntry(
|
||||
eb.startIntField(Component.literal("Spawn Weight"), cfg.spawnWeight)
|
||||
.setDefaultValue(10)
|
||||
.setMin(0)
|
||||
.setMax(1000)
|
||||
.setSaveConsumer(v -> cfg.spawnWeight = v)
|
||||
.build()
|
||||
);
|
||||
|
||||
builder.setSavingRunnable(() -> JRConfigManager.save(Services.PLATFORM.getConfigDir()));
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package net.cmr.jurassicrevived.mixin;
|
||||
|
||||
import net.cmr.jurassicrevived.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 Forge!");
|
||||
Constants.LOG.info("MC Version: {}", Minecraft.getInstance().getVersionType());
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package net.cmr.jurassicrevived.platform;
|
||||
|
||||
import net.cmr.jurassicrevived.platform.services.IPlatformHelper;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.loading.FMLLoader;
|
||||
import net.minecraftforge.fml.loading.FMLPaths;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class ForgePlatformHelper implements IPlatformHelper {
|
||||
|
||||
@Override
|
||||
public String getPlatformName() {
|
||||
return "Forge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isModLoaded(String modId) {
|
||||
return ModList.get().isLoaded(modId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDevelopmentEnvironment() {
|
||||
return !FMLLoader.isProduction();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Path getConfigDir() {
|
||||
return FMLPaths.CONFIGDIR.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
modLoader = "javafml" #mandatory
|
||||
loaderVersion = "${minecraftforge_version_range}" #mandatory This is typically bumped every Minecraft version by Forge. See https://files.minecraftforge.net/ for a list of versions.
|
||||
license = "${license}" # Review your options at https://choosealicense.com/.
|
||||
#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
|
||||
#clientSideOnly=true #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://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/)
|
||||
#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)
|
||||
[[dependencies.${mod_id}]] #optional
|
||||
modId = "forge" #mandatory
|
||||
mandatory = true #mandatory
|
||||
versionRange = "[${minecraftforge_version},)" #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"
|
||||
[[dependencies.${mod_id}]]
|
||||
modId="architectury"
|
||||
mandatory=true
|
||||
versionRange="[${architectury_version},)"
|
||||
ordering="NONE"
|
||||
side="BOTH"
|
||||
|
||||
[[dependencies.${mod_id}]]
|
||||
modId="cloth_config"
|
||||
mandatory=true
|
||||
versionRange="[${cloth_config_version_1_20_1},)"
|
||||
ordering="NONE"
|
||||
side="CLIENT"
|
||||
|
||||
[[dependencies.${mod_id}]]
|
||||
modId="geckolib"
|
||||
mandatory=true
|
||||
versionRange="[${geckolib_version},)"
|
||||
ordering="NONE"
|
||||
side="BOTH"
|
||||
+1
@@ -0,0 +1 @@
|
||||
net.cmr.jurassicrevived.platform.ForgePlatformHelper
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"package": "net.cmr.jurassicrevived.mixin",
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"mixins": [],
|
||||
"client": [
|
||||
"MixinTitleScreen"
|
||||
],
|
||||
"server": [],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user