Development

Tools
All applications that are grouped together can do about the same. This does not mean that you can pick any one of them, as they differ in functionality, style, performace and customizability. It is recommended you look at what they can do and try each one out, so you can decide which application you want to use for which use case.

Code Editors

 * Notepad++
 * Visual Studio Code
 * Sublime Text
 * Atom

Integrated Development Enviroments

 * Eclipse Note: as of version 4.17 Eclipse requires Java 11 or newer but you can still get older versions which support Java 8.
 * IntelliJ IDEA

Image Editors

 * GIMP
 * Paint.NET
 * Krita
 * LibreSprite
 * Aseprite Paid
 * Photoshop Paid

Modeling

 * Blockbench
 * MagicaVoxel
 * Blender

Animation

 * Block Model Animator
 * Animated Textures Editor
 * LibreSprite

Miscellaneous

 * JSONLint
 * Palette Library
 * Resource Pack Workbench

From Scratch

 * 1) Create a new GitHub repository and clone it
 * 2) Choose and download a Forge* MDK and extract the contents of the ZIP-archive into the directory, where you cloned your repository to.
 * 3) Edit your project details (name, version, dependecies, etc.) in the   file.
 * 4) In Eclipse / IntelliJ IDEA, import your workspace as a Gradle project.
 * 5) Done.

From an existing Repository

 * 1) Clone the repository
 * 2) In Eclipse / IntelliJ IDEA, import your workspace as an existing Gradle project.
 * 3) If the import fails, you may have to adjust the Gradle version and/or buildscript. This default workspace can be used as a reference.
 * 4) Done.

* ) The official Minecraft Forge website can be found here. The MDKs linked above are modified because the original Forge MDK does not work without some changes. The linked MDKs have these changes applied.

Failed builds
In early 2021 forge changed their maven repo location, making old projects unable to build. All existing buildscripts will need updating. Many repos under GTNH github org has already patched, but some less active ones aren't.

Identifying the problem
Look at  file. If you find  then this is the cause of your failed build.

Solving the problem
Replace the aforementioned link with  and you should be fine.

IDE complain about ancient gradle version
The stock ForgeGradle 1.2-SNAPSHOT is compatible with gradle up to 4.4.1. Simply modify the  and replace the   line to.

The retired developer bartimaeusnek has a forked ForgeGradle that is compatible with gradle up to 5.6.4. Replace the  block with this to use his fork.

Code Style

 * Keep your added variables either private or constant unless absolutely necessary
 * Don't touch existing public variables' implementation, as this can break code using those variables.
 * Use thread-safe collections where you can, to make future multithreading possible
 * Comment your code, especially Javadoc-ing your methods and classes, if able
 * Try not to make one method do too much. Add helper methods if you need
 * Use the  annotation when overriding methods.
 * Please do semantic versioning.

Resources
Not every wiki/tutorial/article/... listed here contains information about Minecraft version 1.7.10 but some topics haven't changed much and often the general methodology is the same. The newer the version, the less comparable the inner workings of Minecraft/Forge are to 1.7.10.

You can look at the source-code of most mods included in GTNH here.

If you look for something specific, use the search-function of your browser!

You can find an extensive list of modding resources, made by the MMD-Team, here.

Help

 * Mathematics on StackExchange: Forum for everything related to Mathematics
 * StackOverflow: Forum for everything related to Programming
 * #mod-dev ( GTNH Discord)
 * #mc-dev-other ( Minecraft Mod Development Discord)
 * #moddev ( Minecraft Pack Development Discord)
 * #mc-dev ( CurseForge Discord)
 * #help-modded-java ( Blockbench Discord)

Miscellaneous
All GregTech methods are taken from its sourcecode, version 5.09.34.15 (12th of March, 2021).

...an Item
Vanilla Items are located in.

...a Block
Vanilla Blocks are located in.

...a Fluid
Vanilla Fluids are located in.

...an ItemStack
If you want to change the meta-data, do