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!
By
Myroslav Mokhammad Abdelja · Posted 8 minutes ago 8 min
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.