diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d9c75c..d4c4ebb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,20 +7,23 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v2 + - uses: actions/checkout@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 with: - java-version: '17' + java-version: | + 8 + 16 + 21 distribution: 'adopt' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@v1 + uses: gradle/actions/wrapper-validation@v3 - name: Build with Gradle run: ./gradlew build copyRelease - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: 'Prebuilt Artifacts' path: build/libs diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a943c82..c22860d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,17 +18,20 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v2 + - uses: actions/checkout@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 with: - java-version: '17' + java-version: | + 8 + 16 + 21 distribution: 'adopt' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@v1 + uses: gradle/actions/wrapper-validation@v3 - name: Build with Gradle and publish all editions if: ${{ github.event.inputs.publish-all == 'true' }} run: ./gradlew build publishCurseForge copyRelease @@ -39,7 +42,7 @@ jobs: run: ./gradlew :${{ github.event.inputs.publish-edition }}:build :${{ github.event.inputs.publish-edition }}:publishCurseForge :${{ github.event.inputs.publish-edition }}:copyRelease env: CURSE_API: ${{ secrets.CURSE_API }} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: 'Prebuilt Artifacts' path: build/libs \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..2733ed5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index f4789f9..0cb20c8 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,6 +8,7 @@ pluginManagement { maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } + maven { url = 'https://maven.neoforged.net/releases' } } } @@ -24,6 +25,9 @@ project(":Forge-1.16.5").projectDir = file("./sources/Forge-1.16.5") include("Forge-1.17.1") project(":Forge-1.17.1").projectDir = file("./sources/Forge-1.17.1") +include("NeoForge-1.21.9") +project(":NeoForge-1.21.9").projectDir = file("./sources/NeoForge-1.21.9") + include("Forge-1.12.2") project(":Forge-1.12.2").projectDir = file("./sources/Forge-1.12.2") diff --git a/sources/Fabric-1.16.5/build.gradle b/sources/Fabric-1.16.5/build.gradle index 23aefe4..84d7fe0 100644 --- a/sources/Fabric-1.16.5/build.gradle +++ b/sources/Fabric-1.16.5/build.gradle @@ -54,7 +54,7 @@ loom { task sourcesJar(type: Jar) { from sourceSets.main.allSource - classifier = 'sources' + archiveClassifier = 'sources' } artifacts { @@ -100,7 +100,7 @@ task("copyRelease") { def libDir = project.projectDir.toPath().resolve("build/libs") from(libDir) { include "*.jar" - exclude "*-dev.jar", "*-sources.jar" + exclude "*-dev.jar" } into "../../build/libs/" duplicatesStrategy DuplicatesStrategy.INCLUDE diff --git a/sources/Forge-1.12.2/build.gradle b/sources/Forge-1.12.2/build.gradle index fd984b7..4941283 100644 --- a/sources/Forge-1.12.2/build.gradle +++ b/sources/Forge-1.12.2/build.gradle @@ -4,7 +4,7 @@ buildscript { mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '6.0.+', changing: true } } @@ -88,7 +88,7 @@ tasks.withType(JavaCompile) { task sourcesJar(type: Jar) { from sourceSets.main.allSource - classifier = 'sources' + archiveClassifier = 'sources' } artifacts { @@ -125,7 +125,7 @@ task("copyRelease") { def libDir = project.projectDir.toPath().resolve("build/libs") from(libDir) { include "*.jar" - exclude "*-dev.jar", "*-sources.jar" + exclude "*-dev.jar" } into "../../build/libs/" duplicatesStrategy DuplicatesStrategy.INCLUDE diff --git a/sources/Forge-1.16.5/build.gradle b/sources/Forge-1.16.5/build.gradle index d740ae9..e89b171 100644 --- a/sources/Forge-1.16.5/build.gradle +++ b/sources/Forge-1.16.5/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '6.0.+', changing: true classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' } } @@ -107,7 +107,7 @@ tasks.withType(JavaCompile) { task sourcesJar(type: Jar) { from sourceSets.main.allSource - classifier = 'sources' + archiveClassifier = 'sources' } artifacts { @@ -144,7 +144,7 @@ task("copyRelease") { def libDir = project.projectDir.toPath().resolve("build/libs") from(libDir) { include "*.jar" - exclude "*-dev.jar", "*-sources.jar" + exclude "*-dev.jar" } into "../../build/libs/" duplicatesStrategy DuplicatesStrategy.INCLUDE diff --git a/sources/Forge-1.17.1/build.gradle b/sources/Forge-1.17.1/build.gradle index 62f9445..ffffad1 100644 --- a/sources/Forge-1.17.1/build.gradle +++ b/sources/Forge-1.17.1/build.gradle @@ -4,7 +4,7 @@ buildscript { mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '6.0.+', changing: true } } @@ -79,7 +79,7 @@ tasks.withType(JavaCompile) { task sourcesJar(type: Jar) { from sourceSets.main.allSource - classifier = 'sources' + archiveClassifier = 'sources' } artifacts { @@ -122,7 +122,7 @@ task("copyRelease") { def libDir = project.projectDir.toPath().resolve("build/libs") from(libDir) { include "*.jar" - exclude "*-dev.jar", "*-sources.jar" + exclude "*-dev.jar" } into "../../build/libs/" duplicatesStrategy DuplicatesStrategy.INCLUDE diff --git a/sources/Forge-1.7.10/build.gradle b/sources/Forge-1.7.10/build.gradle index 5be3893..c0358f8 100644 --- a/sources/Forge-1.7.10/build.gradle +++ b/sources/Forge-1.7.10/build.gradle @@ -4,7 +4,7 @@ buildscript { mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '6.0.+', changing: true } } @@ -90,7 +90,7 @@ tasks.withType(JavaCompile) { task sourcesJar(type: Jar) { exclude('cpw/**') from sourceSets.main.allSource - classifier = 'sources' + archiveClassifier = 'sources' } artifacts { @@ -127,7 +127,7 @@ task("copyRelease") { def libDir = project.projectDir.toPath().resolve("build/libs") from(libDir) { include "*.jar" - exclude "*-dev.jar", "*-sources.jar" + exclude "*-dev.jar" } into "../../build/libs/" duplicatesStrategy DuplicatesStrategy.INCLUDE diff --git a/sources/NeoForge-1.21.9/build.gradle b/sources/NeoForge-1.21.9/build.gradle new file mode 100644 index 0000000..814932e --- /dev/null +++ b/sources/NeoForge-1.21.9/build.gradle @@ -0,0 +1,117 @@ +plugins { + id 'java-library' + id 'net.darkhax.curseforgegradle' version '1.0.11' + id 'net.neoforged.gradle.userdev' version '7.0.192' +} + + +archivesBaseName = "${rootProject.name}" + +//minecraft.accessTransformers.file rootProject.file('src/main/resources/META-INF/accesstransformer.cfg') + +ext.replace_version(version) + +version = "1.21.9-${version}-NeoForge" + +runs { + client { + workingDirectory file('./run') + systemProperty 'forge.logging.markers', 'REGISTRIES' + systemProperty 'forge.logging.console.level', 'debug' + + modSource project.sourceSets.main + modSource project(":Core").sourceSets.main + } + + server { + workingDirectory file('./run') + systemProperty 'forge.logging.markers', 'REGISTRIES' + systemProperty 'forge.logging.console.level', 'debug' + + modSource project.sourceSets.main + modSource project(":Core").sourceSets.main + } +} + +dependencies { + implementation "net.neoforged:neoforge:21.9.14-beta" + implementation project(":Core") +} + +/*processResources { + duplicatesStrategy = 'include' + + from(sourceSets.main.resources.srcDirs) { + include 'META-INF/mods.toml' + + // expand 'forge_version': forge_version + } + + from(sourceSets.main.resources.srcDirs) { + exclude 'META-INF/mods.toml' + } +}*/ + +tasks.withType(JavaCompile) { + source(project(":Core").sourceSets.main.allSource) +} + +task sourcesJar(type: Jar) { + from sourceSets.main.allSource + archiveClassifier = 'sources' +} + +idea { + module { + downloadSources = true + downloadJavadoc = true + } +} + +artifacts { + archives jar + archives sourcesJar +} + +task publishCurseForge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) { + if (System.getenv("CURSE_API") != null && !System.getenv("CURSE_API").equals("")) { + disableVersionDetection() + apiToken = System.getenv("CURSE_API") + + def mainFile = upload(659192, jar) + mainFile.releaseType = project.ext.relType + mainFile.displayName = "$archivesBaseName-$version" + mainFile.changelogType = 'html' + mainFile.changelog = file('../../changelog.html') + mainFile.addModLoader('Forge') + mainFile.addJavaVersion('Java 16') + mainFile.addJavaVersion('Java 17') + mainFile.addGameVersion('1.20') + mainFile.addGameVersion('1.19.4') + mainFile.addGameVersion('1.19.3') + mainFile.addGameVersion('1.19.2') + mainFile.addGameVersion('1.18.2') + mainFile.addGameVersion('1.17.1') + + def sourcesFile = mainFile.withAdditionalFile(sourcesJar) + sourcesFile.changelog = file('../../changelog.html') + sourcesFile.displayName = "$archivesBaseName-$version-sources" + } +} + +task("copyRelease") { + dependsOn "build" + + doFirst { + println "Gathering builds" + copy { + def libDir = project.projectDir.toPath().resolve("build/libs") + from(libDir) { + include "*.jar" + exclude "*-dev.jar" + } + into "../../build/libs/" + duplicatesStrategy DuplicatesStrategy.INCLUDE + } + } +} \ No newline at end of file diff --git a/sources/NeoForge-1.21.9/gradle.properties b/sources/NeoForge-1.21.9/gradle.properties new file mode 100644 index 0000000..2c1dbc7 --- /dev/null +++ b/sources/NeoForge-1.21.9/gradle.properties @@ -0,0 +1 @@ +javaVersion = 21 \ No newline at end of file diff --git a/sources/NeoForge-1.21.9/src/main/java/net/jomcraft/jcplugin/JCPlugin.java b/sources/NeoForge-1.21.9/src/main/java/net/jomcraft/jcplugin/JCPlugin.java new file mode 100644 index 0000000..3774d8a --- /dev/null +++ b/sources/NeoForge-1.21.9/src/main/java/net/jomcraft/jcplugin/JCPlugin.java @@ -0,0 +1,78 @@ +package net.jomcraft.jcplugin; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; +import java.nio.file.Path; +import java.util.jar.JarFile; +import java.util.zip.ZipEntry; +import net.neoforged.fml.loading.FMLLoader; +import net.neoforged.neoforgespi.earlywindow.GraphicsBootstrapper; + +public class JCPlugin implements GraphicsBootstrapper { + + public static boolean checksSuccessful = false; + + @Override + public String name() { + return "jcplugin"; + } + + @Override + public void bootstrap(String[] arguments) { + try { + if (FMLLoader.getCurrent().getDist().isClient()) { + + final Path location = FMLLoader.getCurrent().getGameDir(); + FileUtilNoMC.mcDataDir = location.toFile(); + + if (FMLLoader.getCurrent().isProduction()) { + + File mods = new File(FileUtilNoMC.mcDataDir, "mods"); + + for (File mod : mods.listFiles()) { + if (mod.getName().toLowerCase().contains("defaultsettings")) { + JarFile jar = new JarFile(mod); + + ZipEntry toml = jar.getEntry("META-INF/mods.toml"); + if (toml != null) { + + BufferedReader result = new BufferedReader(new InputStreamReader(jar.getInputStream(toml))); + + boolean containsDefaultSettings = false; + String readerLine; + boolean versionsMatch = false; + while ((readerLine = result.readLine()) != null) { + if (readerLine.contains("modId=\"defaultsettings\"")) { + containsDefaultSettings = true; + } else if (readerLine.contains("version=")) { + String version = readerLine.split("\"")[1]; + versionsMatch = JCLogger.isEqualOrNewer(new ComparableVersion(version)); + } + } + + if(containsDefaultSettings && versionsMatch) { + JCPlugin.checksSuccessful = true; + } + + result.close(); + } + + jar.close(); + } + } + } else { + JCLogger.log.info("Loading DefaultSettings Core plugin in development environment"); + checksSuccessful = true; + } + if (checksSuccessful) { + FileUtilNoMC.restoreContentsFirst(); + } else { + JCLogger.log.error("Could not find DefaultSettings, not going to do anything! Shutting down..."); + } + } + } catch (Exception e) { + JCLogger.log.error(e); + } + } +} \ No newline at end of file diff --git a/sources/NeoForge-1.21.9/src/main/resources/META-INF/accesstransformer.cfg b/sources/NeoForge-1.21.9/src/main/resources/META-INF/accesstransformer.cfg new file mode 100644 index 0000000..584c638 --- /dev/null +++ b/sources/NeoForge-1.21.9/src/main/resources/META-INF/accesstransformer.cfg @@ -0,0 +1 @@ +public-f net.minecraft.client.KeyMapping f_90814_ # defaultKey \ No newline at end of file diff --git a/sources/NeoForge-1.21.9/src/main/resources/META-INF/services/net.neoforged.neoforgespi.earlywindow.GraphicsBootstrapper b/sources/NeoForge-1.21.9/src/main/resources/META-INF/services/net.neoforged.neoforgespi.earlywindow.GraphicsBootstrapper new file mode 100644 index 0000000..485b2a6 --- /dev/null +++ b/sources/NeoForge-1.21.9/src/main/resources/META-INF/services/net.neoforged.neoforgespi.earlywindow.GraphicsBootstrapper @@ -0,0 +1 @@ +net.jomcraft.jcplugin.JCPlugin diff --git a/sources/NeoForge-1.21.9/src/main/resources/pack.mcmeta b/sources/NeoForge-1.21.9/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..742f58a --- /dev/null +++ b/sources/NeoForge-1.21.9/src/main/resources/pack.mcmeta @@ -0,0 +1,8 @@ +{ + "pack": { + "description": "jcplugin resources", + "pack_format": 9, + "forge:resource_pack_format": 9, + "forge:data_pack_format": 10 + } +} \ No newline at end of file