Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Best Practices for Structuring Larger Forge Mods (Looking for Feedback)

Featured Replies

Posted

Hi everyone,

My name is Myroslav Mokhammad Abdeljawwad, and I’ve been working on a Forge mod recently while trying to improve how I structure larger projects for long-term maintainability. I wanted to ask for some feedback from more experienced modders and also share a few things I’ve learned so far.

As projects grow, I’ve noticed that structure becomes more important than any individual feature. Small mods can get away with everything living in one package, but once you introduce registries, data generation, events, client/server separation, and configuration handling, things get messy very quickly.

One of the most helpful resources I’ve been using is the official Forge documentation, especially the sections related to mod lifecycle and registration:

https://docs.minecraftforge.net/en/latest/
https://docs.minecraftforge.net/en/latest/concepts/lifecycle/

These helped me better understand when certain logic should run and how Forge expects mods to be structured internally.

I’ve also been looking at how larger open-source mods organize their code. Some good examples I found useful for reference are:

https://github.com/MinecraftForge/MinecraftForge
https://github.com/VazkiiMods/Botania
https://github.com/TerraformersMC

What stood out to me is how clearly these projects separate responsibilities between core logic, client-side rendering, data generation, and utilities.

One thing I’m still unsure about is how far abstraction should go. On one hand, abstracting logic makes the code cleaner and easier to reuse. On the other hand, too much abstraction can make debugging more difficult, especially when working with Forge’s event-based system.

I’ve also been spending time learning about data generation and how it should be kept separate from runtime logic. The documentation and examples around this have been helpful, especially for recipes, loot tables, and block states:

https://mcforge.readthedocs.io/en/latest/datagen/intro/
https://minecraft.fandom.com/wiki/Data_generator

Performance is another area I’m paying attention to. I’ve seen recommendations to keep event handlers lightweight and to strictly separate client-only logic to avoid server-side issues, especially in larger modpacks.

I’d really appreciate hearing how others approach:

  • Structuring medium to large Forge mods

  • Keeping code readable as projects grow

  • Managing client/server separation

  • Avoiding common architectural mistakes

Any advice or examples from your own experience would be great. Thanks in advance!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.