Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Forge 37.0 Minecraft 1.17.1


Recommended Posts

Forge Version: 37.0.0

Minecraft Version: 1.17.1


It's time!

The first release of 1.17 is ready!
Before you dive in, we have to address some things.

We were planning to release this sooner, but real-life matters and the update to Java 16 meant we were waiting for other projects to conclude before we can release.
It is not the fault of any one person or project, this delay was caused by a number of factors.
However, enough waiting has occured, and we want to put this in the hands of the players.


This is an *early access beta* build. Nothing here is final, it's merely an introduction for modders to get used to the new features.
We have lots of changes still to come, but the main things are here. The FML peel, the game test system, Java 16 features..

Java 16 and Modules

Almost every Java 16 feature is open to mods. Go ham.
However, modules are a bit of a pain to use.

If you do use the module-info system in your mod, make sure you fully understand what it is and how it is exposed to other modules (mods) at compile time.
Currently, module-infos will be ignored at runtime but NOT at compile time.
Our ongoing advice is to not develop your mod as a module.

Extra mentions

Additionally, mixins.
Mixins do not work with the new Modlauncher yet, and we are waiting for Mumfrey to review and update Mixin.
Once he gives us the go ahead that it is stable and supports the new systems, we'll ship it again.
As such, we're going to release the first few builds of Forge without them.


As a reminder, once 1.17 is released, 1.16 and 1.15 become joint LTS versions - 1.15 is now in grace.
In 1 month (22nd August 2021), 1.15 will be dropped altogether.
We plan that once 1.18 releases, 1.16 will stay as LTS and 1.17 will be dropped, but this is just a plan and is not solid.


ForgeGradle 5 just had a Recommended Build. There will be no breaking changes in the tool until the next minor version.
1.16 and 1.17 now also use ForgeGradle 5 by default, to make it easier for modders that use both versions and don't wish to deal with the mess that is Java 16 support.
ForgeGradle still follows the even-odd versioning, where odd minor versions (5.1, 5.3. 5.5...) have no breaking changes, and even minor versions (5.2, 5.4, 5.6...) are breaking/development phases.

This system may seem strange at first, but it helps us remove unnecessary technical debt.
I recommend hardcoding the version to 5.1.+ (or see the new default MDK buildscript) to avoid unwanted breakages in your project.


FML and the Modlauncher system was designed for Java 9+ modularity from the start - using modules is something we have been intending to do from day one.
However, there are a few complications with integrating with such an unnecessarily complicated system as Java modularity, so the internal FML APIs are not solid.

Any mod interfacing with the FML APIs before the RB may encounter crashes with the next update, as we figure out where things belong and move them accordingly.
Anything inside these packages are liable to be moved, changed, or removed on any minor update before the first RB:

  • net.minecraftforge.fmlclient
  • net.minecraftforge.fmllegacy
  • net.minecraftforge.fmlserverevents

However, once it's all finished, we can properly reimplement things like native API exposure for mods via package exports, native jar-in-jar loading, etc.
Lots of cool opportunities for modules in mods.

Forge Repo Structure

With the FML Peel complete, the structure of the Forge repos has become a bit more complex;
There are many subprojects, each containing a part of the whole project.

A main part of this is to facilitate the new fmlonly configuration - where the modloader can be built without the API.
This can theoretically enable modding on snapshots, given a small amount of work done on the backend.

Installers and the Server


Due to the way the module system works in Java, the server now launches in a much different way.
It is no longer feasible to provide a single executable jar like was done before, so we use a workaround:

When you install a server, you'll see two run scripts (one for linux and mac, one for Windows) and argument files.
The arguments are added in the order:

java @user_jvm_args.txt @forge_args.txt <user game args>

As you can tell by the name, only the user_jvm_args.txt file is are intended to be modified by the end user.

There is a written example provided by me in the user_jvm_args file that explains the most commonly used arguments (-Xmx, -Xms).
Tutorials for creating a server will no longer work on Forge >=37.0. You must use one of the command files (.bash / .sh) provided, or the game will not be able to load.

Closing thoughts

With all that said, we're looking forward to having people play with Forge. Remember, if you see any bugs, feel free to report them here (the forums), our Discord server or on the issue tracker.

Happy Modding!

Link to comment
Share on other sites

This topic is now closed to further replies.

  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • So as the title says it seems im the only one with this issue, it was working fine yesturday. basically the server just keeps saying Pinging.... and doesn't load, i added a vanilla server to see if all servers would behave the same but no, my modded server was the only one. i asked some of my friends to try connecting and no problem so it seems on my end. I tried connecting even when it says pinging and it just stuck on Encrypting and then timed out Client log <script src="https://gist.github.com/thekingtoonboy/1c53875b856e0563b9313a8cc060a4a0.js"></script> latest Server log [19Sep2021 06:06:35.440] [Netty Epoll Server IO #2/INFO] [codechicken.lib.config.ConfigSyncManager/]: Skipping config sync, No mods have registered a syncable config. [19Sep2021 06:06:35.529] [Netty Epoll Server IO #2/WARN] [com.connectivity.Connectivity/]: Login payload for Registry minecraft:item is using 111.6286% of max allowed size and will cause errors during login if connectivity is not present on client side. [19Sep2021 06:06:35.543] [Netty Epoll Server IO #2/WARN] [com.connectivity.Connectivity/]: Login payload for Registry minecraft:block is using 87.6082% of max allowed size [19Sep2021 06:06:37.491] [User Authenticator #1/INFO] [net.minecraft.network.login.ServerLoginNetHandler/]: UUID of player KiingSultan is e69dbe58-dd8d-4d26-9317-a643a0ffde12 [19Sep2021 06:08:37.721] [Server thread/INFO] [net.minecraft.network.login.ServerLoginNetHandler/]: com.mojang.authlib.GameProfile@1b416c43[id=e69dbe58-dd8d-4d26-9317-a643a0ffde12,name=KiingSultan,properties={textures=[com.mojang.authlib.properties.Property@38939441]},legacy=false] (/ lost connection: Timed out [19Sep2021 06:13:10.808] [Netty Epoll Server IO #0/INFO] [codechicken.lib.config.ConfigSyncManager/]: Skipping config sync, No mods have registered a syncable config. [19Sep2021 06:13:10.867] [Netty Epoll Server IO #0/WARN] [com.connectivity.Connectivity/]: Login payload for Registry minecraft:item is using 111.6286% of max allowed size and will cause errors during login if connectivity is not present on client side. [19Sep2021 06:13:10.880] [Netty Epoll Server IO #0/WARN] [com.connectivity.Connectivity/]: Login payload for Registry minecraft:block is using 87.6082% of max allowed size [19Sep2021 06:13:18.792] [User Authenticator #2/INFO] [net.minecraft.network.login.ServerLoginNetHandler/]: UUID of player KiingSultan is e69dbe58-dd8d-4d26-9317-a643a0ffde12 [19Sep2021 06:15:19.013] [Server thread/INFO] [net.minecraft.network.login.ServerLoginNetHandler/]: com.mojang.authlib.GameProfile@28a892fa[id=e69dbe58-dd8d-4d26-9317-a643a0ffde12,name=KiingSultan,properties={textures=[com.mojang.authlib.properties.Property@53a47b26]},legacy=false] (/ lost connection: Timed out  
    • Sorry for the very late response, but mixed with what you said + looking at the twilight forest source code I was able to get it working
    • Hello Everyone! I just started learning how to code forge mods and this is my first post. I have been coding spigot plugins for 2 years so I'm not totally clueless. I just want to know how to get all the items from a Inventory/GUI. I have no clue how. I tried something like this. but it got me nowhere @SubscribeEvent public void onOpenInventory(GuiOpenEvent e) { e.getGui().itemsplsssss }  
    • I think that is the problem. I changed to using ResourceKeys instead and haven't seen the log since. 
    • That's how, thanks a lot! (≧ ▽ ≦)
  • Topics

  • Who's Online (See full list)

  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.