Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@LexManos
Created September 12, 2019 17:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LexManos/cc2127e09e38ebf75c45d81f1875d258 to your computer and use it in GitHub Desktop.
Save LexManos/cc2127e09e38ebf75c45d81f1875d258 to your computer and use it in GitHub Desktop.
1.14.4 rb 1
[b]Forge Version:[/b] 1.14.4-28.1.0
[b]Minecraft Version:[/b] 1.14.4
[b]Downloads:[/b]
[ul]
[li]Changelog [url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.14.4-28.1.0/forge-1.14.4-28.1.0-changelog.txt](Direct)[/url][/li]
[li]Installer [url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.14.4-28.1.0/forge-1.14.4-28.1.0-installer.jar](Direct)[/url][/li]
[li]MDK [url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.14.4-28.1.0/forge-1.14.4-28.1.0-mdk.zip](Direct)[/url][/li]
[/ul]
[b]Intro:[/b]
Whelp, the time has finally come, we are ready to do our first Recomended Build for 1.14.4! I want to thank everyone who has helped work on this and get it ready to go. This has been a long road, and I admit it has been a lot longer then I wanted it to be. Unfortunately, some things wront wrong, some aspects took way longer then they should have. But we move forward. This is one of the biggest updates to Forge that we have ever done. Everything has been re-written from the ground up to hopefully provide us a platform that will last the nest 10 years. Here is a basic overview:
[b]Versioning:[/b]
You may have noticed, that our version number has changed a little bit. This was done to cleanup some redundant information and more directly link our versions to our source code. Our versions are now in the format `{MinecraftVersion}-{ForgeVersion}.{RBNumber}.{CommitCount}`.
[b]Launcher:[/b]
In order for Forge to modify the game, we have to use a system that allows us to modify the java code as it is loaded. Initally we created a system called LegacyLauncher, which we [url=https://github.com/Mojang/LegacyLauncher/]shared with Mojang[/url] this allowed them to load their old versions into their new multi-profile launcher. However Java9 was released, and broke it. This is a fundemental change in how Java works and required us to re-design our basic loading system. We now have a new loader called [url=https://github.com/cpw/modlauncher]ModLauncher[/url] that is designed with Java9+ in mind. So hopefully it works for the next decade!
[b]Coremods:[/b]
As much as I hate it, mods that edit bytecode will always be a thing. LegacyLauncher had a system that allowed any mod to edit anything in anyway they wished. This has caused a lot of issues due to modder's implementing them wrong. The new ModLauncher system has a similiar thing in place, however we have also released a new `Coremod` project that id intended to be the default system anyone who was making a Coremod. This new system uses Java's javascript engine to isolate the coremod from the rest of the game. Which should solve the most common issues in existing coremods.
[b]MDK:[/b]
We have completely re-written all of our build tools. The new system treats Minecraft and other Mod dependencies as normal gradle dependencies. This means you no longer need to use special 'setupWorkspace' tasks before being able to build your mod. It also means that more systems should be able to support the workspace as it is more in line with a basic java workspace. We are currently targeting Gradle 4.9, however we have reports that it works all the way up to 5.5.
[b]Data Generators:[/b]
Minecraft uses many data files, typically in the form of a json file. These are used for Blocks, Models, Textures, Recipes, Tags, and so much more. There are some people in the community who think that this is bad because it is difficult to create that many data files. No programmer in their right mind would do that by hand. Mojang themselves have used data generators from the beginning. We finally convinced them to expose this to modders, and Forge has enhanced them for use by Modders. We plan on adding even more features to this system, so feedback in highly apreciated.
[b]MCPConfig:[/b]
Minecraft is released in Obfusicated names, since our inception we have use MCP to provide us with the information needed to turn the game into something we can work with. This project started off as a set of python scripts and tools. But now with ForgeGradle and other projects the python is no longer nessasary. So we have moved to just providing the Mapping data. This is now a [url=https://github.com/MinecraftForge/MCPConfig]public project[/url] which allows more community interaction, and feedback. These mappings are published to Forge's maven, and can be used in any project you wish. The only restruction is that you can't re-distribute and create derivitve works. This is purely a technical nessesity. These mappings are designed to be stable and compatible across Minecraft versions as best as posssible. If multiple mappings were released that conflicted with eachother it would cause nothing but a headake.
[b]Mojang's Official Mappings:[/b]
Starting with Snapshot 19w36a, Mojang has started providing their obfusication logs. Which in theory is a great asset to modding as it will help people understand the code. However, Mojang released these mappings as All Rights Reserved, which means we can't actually use them in any way. So until they clarify things we will continue to work on Forge and use SRG names for our development/publication. The hope is that Mojang gives us some limited rights so that Modders can use these names in their own mod code, as well as publishing on places like Github. But until that happens I advise anyone who looks at these mappings to be very careful to not use them in anything you publish to anywhere. This include in jar files of your mod, or in the source code you publish to your SCM. We will keep you informed when we get updates from Legal.
[b]Fluids:[/b]
Minecraft introduce the concept of 'waterlogged' for things liek stairs, fences, and slabs. This introduced a formalized 'Fluid' system in Minecraft. This has caused us to need to re-write our Fluid system. We are trying to work with Mojang to make the vanilla system more flexible for modders. We will continue to develop this system as modders give feedback and make it as best as possible.
[b]Changelog:[/b]
As Minecraft has basically been re-written from scratch, the changelog is huge. You can view the raw changelog [url=https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.14.4-28.1.0/forge-1.14.4-28.1.0-changelog.txt]here.[/url] For more information on all the other tools in the Forge ecosystem you can view our [url=https://github.com/MinecraftForge]Github[/url]. Don't worry, more detailed lists will return in future RB, this one is just to large to aggregate properly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment