diff --git a/FORGE-CREDITS.txt b/FORGE-CREDITS.txt new file mode 100644 index 000000000..589f482ef --- /dev/null +++ b/FORGE-CREDITS.txt @@ -0,0 +1,65 @@ +Minecraft Forge: Credits/Thank You + +Forge is a set of tools and modifications to the Minecraft base game code to assist +mod developers in creating new and exciting content. It has been in development for +several years now, but I would like to take this time thank a few people who have +helped it along it's way. + +First, the people who originally created the Forge projects way back in Minecraft +alpha. Eloraam of RedPower, and SpaceToad of Buildcraft, without their acceptiance +of me taking over the project, who knows what Minecraft modding would be today. + +Secondly, someone who has worked with me, and developed some of the core features +that allow modding to he as functional, and as simple as it is, cpw. For developing +FML, which stabelized the client and server modding ecosystem. As well as the base +loading system that allows us to modify Minecraft's code as elegently as possible. + +Mezz, who has stepped up as the issue and pull request manager. Helping to keep me +sane as well as guiding the community into creating better additions to Forge. + +Searge, Bspks, Fesh0r, ProfMobious, and all the rest over on the MCP team {of which +I am a part}. For creating some of the core tools needed to make Minecraft modding +both possible, and as stable as can be. + On that note, here is some specific information of the MCP data we use: + * Minecraft Coder Pack (MCP) * + Forge Mod Loader and Minecraft Forge have permission to distribute and automatically + download components of MCP and distribute MCP data files. This permission is not + transitive and others wishing to redistribute the Minecraft Forge source independently + should seek permission of MCP or remove the MCP data files and request their users + to download MCP separately. + +And lastly, the countless community members who have spent time submitting bug reports, +pull requests, and just helping out the community in general. Thank you. + +--LexManos + +========================================================================= + +This is Forge Mod Loader. + +You can find the source code at all times at https://github.com/MinecraftForge/MinecraftForge/tree/1.12.x/src/main/java/net/minecraftforge/fml + +This minecraft mod is a clean open source implementation of a mod loader for minecraft servers +and minecraft clients. + +The code is authored by cpw. + +It began by partially implementing an API defined by the client side ModLoader, authored by Risugami. +http://www.minecraftforum.net/topic/75440- +This support has been dropped as of Minecraft release 1.7, as Risugami no longer maintains ModLoader. + +It also contains suggestions and hints and generous helpings of code from LexManos, author of MinecraftForge. +http://www.minecraftforge.net/ + +Additionally, it contains an implementation of topological sort based on that +published at http://keithschwarz.com/interesting/code/?dir=topological-sort + +It also contains code from the Maven project for performing versioned dependency +resolution. http://maven.apache.org/ + +It also contains a partial repackaging of the javaxdelta library from http://sourceforge.net/projects/javaxdelta/ +with credit to it's authors. + +Forge Mod Loader downloads components from the Minecraft Coder Pack +(http://mcp.ocean-labs.de/index.php/Main_Page) with kind permission from the MCP team. + diff --git a/LICENSE-Paulscode IBXM Library.txt b/LICENSE-Paulscode IBXM Library.txt new file mode 100644 index 000000000..d4884b071 --- /dev/null +++ b/LICENSE-Paulscode IBXM Library.txt @@ -0,0 +1,10 @@ +IBXM is copyright (c) 2007, Martin Cameron, and is licensed under the BSD License. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of mumart nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/LICENSE-Paulscode SoundSystem CodecIBXM.txt b/LICENSE-Paulscode SoundSystem CodecIBXM.txt new file mode 100644 index 000000000..a68a49478 --- /dev/null +++ b/LICENSE-Paulscode SoundSystem CodecIBXM.txt @@ -0,0 +1,40 @@ +SoundSystem CodecIBXM Class License: + +You are free to use this class for any purpose, commercial or otherwise. +You may modify this class or source code, and distribute it any way you +like, provided the following conditions are met: + +1) You may not falsely claim to be the author of this class or any + unmodified portion of it. +2) You may not copyright this class or a modified version of it and then + sue me for copyright infringement. +3) If you modify the source code, you must clearly document the changes + made before redistributing the modified source code, so other users know + it is not the original code. +4) You are not required to give me credit for this class in any derived + work, but if you do, you must also mention my website: + http://www.paulscode.com +5) I the author will not be responsible for any damages (physical, + financial, or otherwise) caused by the use if this class or any + portion of it. +6) I the author do not guarantee, warrant, or make any representations, + either expressed or implied, regarding the use of this class or any + portion of it. + +Author: Paul Lamb +http://www.paulscode.com + + +This software is based on or using the IBXM library available from +http://www.geocities.com/sunet2000/ + + +IBXM is copyright (c) 2007, Martin Cameron, and is licensed under the BSD License. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of mumart nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index e76514378..af6aad368 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ - For regular launcher (official launcher, AT launcher, FTB, HMCL), download the installer jar from release. You could use the installer like the Forge one. - **Remember to install Fugue!** - **And Scalar!** +- **Do not generate a fat-installer as this is not supported.** ## Build Instructions: diff --git a/build.gradle b/build.gradle index 41fc8a090..e6d91c71f 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,10 @@ buildscript { name "Outlands" url "https://maven.outlands.top/releases/" } + maven { + name "NeoForge" + url = 'https://maven.neoforged.net/releases/' + } } dependencies { classpath "net.minecraftforge.gradle:ForgeGradle:6.0.+" @@ -94,6 +98,10 @@ project(':mcp') { name 'MinecraftForge' url 'https://maven.minecraftforge.net/' } + maven { + name "NeoForge" + url = 'https://maven.neoforged.net/releases/' + } } mcp { @@ -119,6 +127,10 @@ project(':minecraft') { name 'MinecraftForge' url 'https://maven.minecraftforge.net/' } + maven { + name "NeoForge" + url = 'https://maven.neoforged.net/releases/' + } } dependencies { @@ -235,6 +247,10 @@ project(':cleanroom') { maven { url "https://maven.outlands.top/releases/" } + maven { + name "NeoForge" + url = 'https://maven.neoforged.net/releases/' + } } ext { @@ -637,8 +653,8 @@ project(':cleanroom') { // TODO: Include? def extra_files = [ - rootProject.file('CREDITS.txt'), - rootProject.file('LICENSE.txt'), + rootProject.file('FORGE-CREDITS.txt'), + rootProject.file('LICENSE'), rootProject.file('LICENSE-Paulscode IBXM Library.txt'), rootProject.file('LICENSE-Paulscode SoundSystem CodecIBXM.txt') ] @@ -870,7 +886,7 @@ project(':cleanroom') { artifact: [ path: "${project.group.replace('.', '/')}/${project.name}/${project.version}/${project.name}-${project.version}.jar", // Do not include the URL so that the installer/launcher won't grab it. This is also why we don't have the universal classifier - url: '', + url: ' ', sha1: Util.sha1(universalJar.archivePath), size: universalJar.archivePath.length() ] @@ -893,7 +909,7 @@ project(':cleanroom') { task installerJson(dependsOn: [launcherJson, genClientBinPatches/*, createClientSRG, createServerSRG*/]) { ext { output = file('build/install_profile.json') - installer_tools = "net.minecraftforge:installertools:$props.installer_tools_version" + installer_tools = "net.neoforged.installertools:installertools:$props.installer_tools_version" } inputs.file universalJar.archivePath inputs.file genClientBinPatches.toolJar @@ -907,7 +923,7 @@ project(':cleanroom') { artifact: [ path: "${project.group.replace('.', '/')}/${project.name}/${project.version}/${project.name}-${project.version}.jar", // Do not include the URL so that the installer/launcher won't grab it. This is also why we don't have the universal classifier - url: '', + url: ' ', sha1: Util.sha1(universalJar.archivePath), size: universalJar.archivePath.length() ] @@ -917,9 +933,9 @@ project(':cleanroom') { def json = [ _comment_: launcherJson.comment, spec: 0, - profile: project.name, + profile: project.name.capitalize(), version: launcherJson.id, - icon: 'data:image/png;base64,' + new String(Base64.getEncoder().encode(Files.readAllBytes(rootProject.file('icon.ico').toPath()))), + icon: 'null', json: '/version.json', path: "${project.group}:${project.name}:${project.version}", logo: '/big_logo.png', @@ -1003,7 +1019,7 @@ project(':cleanroom') { } task downloadInstaller(type: DownloadMavenArtifact) { - artifact = 'net.minecraftforge:installer:2.2.+:fatjar' + artifact = 'net.neoforged:legacyinstaller:3.0.+:shrunk' changing = true } @@ -1012,10 +1028,7 @@ project(':cleanroom') { archiveExtension = 'jar' //Needs to be Zip task to not override Manifest, so set extension destinationDirectory = file('build/libs') from(extra_files) - from(rootProject.file('/src/main/resources/forge_logo.png')) { - rename { 'big_logo.png' } - } - from(rootProject.file('/src/main/resources/url.png')) + from(rootProject.file('src/main/resources/url.png')) from(universalJar) { into("/maven/${project.group.replace('.', '/')}/${project.name}/${project.version}/") rename { "${project.name }-${project.version }.jar" } @@ -1024,6 +1037,24 @@ project(':cleanroom') { from(launcherJson.output) from(zipTree(downloadInstaller.output)) { duplicatesStrategy = 'exclude' + exclude( + [ + "icons/**", + "big_logo.png" + ]) + } + from(rootProject.file('logos/cleanroom-logo_64.png')) { + rename { "big_logo.png" } + } + // TODO : get from https://raw.githubusercontent.com/CleanroomMC/Resources/refs/heads/master/Art/cleanroom-logo.png and make the sizes automatic. + from(rootProject.file('logos/cleanroom-logo_16.png')) { + rename { "icons/neoforged_background_16x16.png" } + } + from(rootProject.file('logos/cleanroom-logo_32.png')) { + rename { "icons/neoforged_background_32x32.png" } + } + from(rootProject.file('logos/cleanroom-logo_128.png')) { + rename { "icons/neoforged_background_128x128.png" } } } diff --git a/buildSrc/src/main/groovy/com/cleanroommc/gradle/helpers/tasks/Util.groovy b/buildSrc/src/main/groovy/com/cleanroommc/gradle/helpers/tasks/Util.groovy index a7c3b3a77..7a279066b 100644 --- a/buildSrc/src/main/groovy/com/cleanroommc/gradle/helpers/tasks/Util.groovy +++ b/buildSrc/src/main/groovy/com/cleanroommc/gradle/helpers/tasks/Util.groovy @@ -151,7 +151,8 @@ class Util { "https://maven.minecraftforge.net/", "https://repo.maven.apache.org/maven2/", "https://libraries.minecraft.net/", - "https://maven.outlands.top/releases/" + "https://maven.outlands.top/releases/", + "https://maven.neoforged.net/releases/" ] try { return urlList.stream().map(original -> original + path) diff --git a/gradle.properties b/gradle.properties index cc7155cd2..751775365 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ mcp_version = 20240102.171137 special_source = net.md-5:SpecialSource:1.9.0 special_source_mcp = net.md-5:SpecialSource:1.8.5 binary_patcher = net.minecraftforge:binarypatcher:1.1.1:fatjar -installer_tools_version = 1.4.1 +installer_tools_version = 2.1.7 # Libraries asm_version = 9.6 diff --git a/icon.ico b/icon.ico deleted file mode 100644 index 7e9e449f1..000000000 Binary files a/icon.ico and /dev/null differ diff --git a/logos/cleanroom-logo_128.png b/logos/cleanroom-logo_128.png new file mode 100644 index 000000000..f42f04ab7 Binary files /dev/null and b/logos/cleanroom-logo_128.png differ diff --git a/logos/cleanroom-logo_16.png b/logos/cleanroom-logo_16.png new file mode 100644 index 000000000..546ca1e33 Binary files /dev/null and b/logos/cleanroom-logo_16.png differ diff --git a/logos/cleanroom-logo_32.png b/logos/cleanroom-logo_32.png new file mode 100644 index 000000000..bbdeefc24 Binary files /dev/null and b/logos/cleanroom-logo_32.png differ diff --git a/logos/cleanroom-logo_512.png b/logos/cleanroom-logo_512.png new file mode 100644 index 000000000..a8ee31b35 Binary files /dev/null and b/logos/cleanroom-logo_512.png differ diff --git a/logos/cleanroom-logo_64.png b/logos/cleanroom-logo_64.png new file mode 100644 index 000000000..f6083870b Binary files /dev/null and b/logos/cleanroom-logo_64.png differ