General Minecraft Mod File Structure with Descriptions for Each

Disclaimer: I am a beginner modder. I am using this site more to make notes for myself, and if it helps others along the way, that is great. That being said, the info below may be incomplete or may change frequently as I learn more. If you are aware of anything that needs to be changed or may help myself or other readers, please let me know in the comments.


When making a mod for Minecraft, there is a general file structure most mod authors follow. I will list the basic file structure below, but keep in mind, this is not set in stone. Some modders may move things to different folders, add additional folders, or more.

- ModName
  - src
    - main
      - java
        - com
          - modauthorname
            - modname
              - blocks
              - commands
              - compat
              - dimensions
              - entities
              - init
              - items
              - proxy
              - util
              - world
      - resources
        - assets
          - modname
            - blockstates
            - lang
            - loot_tables
              - entities
            - models
              - block
              - item
            - textures
              - blocks
              - entity
              - gui
              - items




Generally, you want to name your top folder the name your mod will be.

– src

The next folder under your parent folder will be the src folder.

– main

Yet another folder in the hierarchy. This folder will branch off into java (the main coding branch) and resources (where all of your resources are kept, such as image textures, models, and more).

Main Coding Branch

– java

An empty folder generally

– com (or net, etc)

This folder (and the one below it) is used to specify a website of the mod author. For instance, mods I make would have net as this folder’s name (as in:

– modauthorname

This folder (and the one above it) is used to specify a website of the mod author. For instance, mods I make would have cieloangel as this folder’s name (as in: If the mod author does not have a website, that is okay. Put the author’s name anyway.


Another folder with the mod’s name goes here, this time generally in all lower-case. Finally, after numerous mostly empty files, this one will start housing the actual coding. This file generally only contains one Java file, and that is a file that has the name of the mod, which tells Forge to start there for the code.

– blocks

This folder holds all of your custom block classes. Generally, block class names will begin with the word ‘Block’.

– commands

If you make any custom commands, this is a good place to keep them.

– compat

I have seen this folder used for integration with others mods such as JEI or WAILA.

– dimensions

This is where a lot of your custom dimension classes could go. I see a lot of authors put their dimension classes here, or make the dimensions folder a subset of the world folder.

– entities

Used for storing classes for custom entities.

– init

This is where the classes responsible for initiating┬ámany of the different categories of classes listed in the different files. These classes include, but are not limited to, ModBlocks, ModDimensions, ModEntities, ModItems, and more. The class names usually begin with the word ‘Mod’, but that is not written in stone.

– items

Like the – blocks folder, this folder holds all of your custom items classes. Generally, item class names will begin with the word ‘Item’.

– proxy

The proxy classes are used to help define code that is to be run on the client-side, server-side, or both. There is almost always at least a and a class in this folder, whereas seems to be optional.

– util

This a folder that is generally used for several different utility classes. A common class I see often in this folder is a class, which is used to hold constants for things like the MOD_ID, MOD_NAME, VERSION, and more. It also generally contains variables that point to the different proxy classes. This folder is also sometimes used for Enum classes, and lib classes, although sometimes mod authors put those in different folders. If you make a config file, this is usually housed here as well.

– world

If you are adding any kind of world gen features, those are generally housed in this folder. I have just started learning about this aspect of modding, so I will add more to this file list as I learn more.

Resources Branch



Leave a Reply

Your email address will not be published. Required fields are marked *