diff --git a/build.gradle.kts b/build.gradle.kts index 12fcfd9..313e0f9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -39,6 +39,7 @@ repositories { maven("https://libraries.minecraft.net/") maven("https://maven.fabricmc.net/") maven("https://files.minecraftforge.net/maven") + maven("https://maven.neoforged.net/releases") maven("https://repo.runelite.net/") } @@ -46,6 +47,12 @@ configurations.configureEach { isTransitive = false } +configurations.compileClasspath { + attributes { + attribute(org.gradle.api.attributes.java.TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 21) + } +} + dependencies { testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.3") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.3") @@ -55,6 +62,8 @@ dependencies { implementation("net.fabricmc:fabric-loader:0.15.9") implementation("cpw.mods:modlauncher:8.1.3") implementation("net.minecraft:launchwrapper:1.12") + compileOnly("net.neoforged.fancymodloader:loader:10.0.36") + compileOnly("net.neoforged:mergetool:2.0.0:api") implementation("commons-io:commons-io:2.16.1") implementation("org.ow2.asm:asm:9.7") @@ -103,4 +112,4 @@ curseforge { gameVersionStrings.addAll(curseForgeSpecialVersions) changelog = if (System.getenv("CHANGE_LOG") != null) System.getenv("CHANGE_LOG") else "No change log" } -} \ No newline at end of file +} diff --git a/src/main/java/i18nupdatemod/neoforge/NeoForgeMod.java b/src/main/java/i18nupdatemod/neoforge/NeoForgeMod.java new file mode 100644 index 0000000..bd3ce7f --- /dev/null +++ b/src/main/java/i18nupdatemod/neoforge/NeoForgeMod.java @@ -0,0 +1,57 @@ +package i18nupdatemod.neoforge; + +import i18nupdatemod.I18nUpdateMod; +import i18nupdatemod.util.Log; +import i18nupdatemod.util.ModUtil; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.loading.FMLLoader; + +import java.nio.file.Path; + +@Mod(value = I18nUpdateMod.MOD_ID, dist = Dist.CLIENT) +public class NeoForgeMod { + private static final String LOADER_NAME = "NeoForge"; + + public NeoForgeMod() { + FMLLoader loader = FMLLoader.getCurrent(); + if (loader == null) { + Log.warning("NeoForge loader not found"); + return; + } + + Path minecraftPath = loader.getGameDir(); + if (minecraftPath == null) { + Log.warning("Minecraft path not found"); + return; + } + Log.setMinecraftLogFile(minecraftPath); + + String minecraftVersion = getMinecraftVersion(loader); + if (minecraftVersion == null) { + Log.warning("Minecraft version not found"); + return; + } + + I18nUpdateMod.init(minecraftPath, minecraftVersion, LOADER_NAME, + ModUtil.getModDomainsFromModsFolder(minecraftPath, minecraftVersion, LOADER_NAME)); + } + + private String getMinecraftVersion(FMLLoader loader) { + String version = loader.getVersionInfo() == null ? null : loader.getVersionInfo().mcVersion(); + if (version != null && !version.isEmpty()) { + return version; + } + + return getMinecraftVersion(loader.getProgramArgs().getArguments()); + } + + private String getMinecraftVersion(String[] args) { + for (int i = 0; i < args.length - 1; ++i) { + if (args[i].equalsIgnoreCase("--fml.mcversion")) { + return args[i + 1]; + } + } + return null; + } +} diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml new file mode 100644 index 0000000..afeec8e --- /dev/null +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,15 @@ +modLoader = "javafml" +loaderVersion = "[1,)" +license = "AGPL-3.0-only" +issueTrackerURL = "https://github.com/xfl03/I18nUpdateMod3/issues" + +[[mods]] +modId = "i18nupdatemod" +version = "${version}" +displayName = "I18nUpdateMod" +displayURL = "https://github.com/xfl03/I18nUpdateMod3" +issueTrackerURL = "https://github.com/xfl03/I18nUpdateMod3/issues" +authors = "xfl03" +description = ''' +Brand new Minecraft Mod Language Package update mod. +'''