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
 * Aseprite Paid
 * Photoshop Paid

Modeling

 * Blockbench
 * MagicaVoxel
 * Blender

Animation

 * Block Model Animator
 * Animated Textures Editor

Miscellaneous

 * JSONLint
 * Palette Library

From Scratch

 * 1) Create a new GitHub repository and clone it
 * 2) Download the Forge Src (build 1614!) and extract the contents of the ZIP-archive into the directory, where you cloned your repository to.
 * 3) Open   with your favorite text editor and change   to.
 * 4) Open   with your favorite text editor and replace the   part with this.
 * 5) Edit your project details (name, version, dependecies, etc.) in the   file.
 * 6) Open the command prompt in your workspace directory and execute.
 * 7) In Eclipse / IntelliJ IDEA, import your workspace as Gradle project.
 * 8) Done.

From an existing Repository

 * 1) Clone the repository
 * 2) If you want to use Eclipse, download the Forge Src (build 1614!) and copy the   folder into your workspace directory.
 * 3) In Eclipse / IntelliJ IDEA, import your workspace as Gradle project.
 * 4) Done.

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.

Wikis
Not every wiki 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.

This list will be sufficient for most basic use cases. * This wiki does not (mainly) cover specifics of Minecraft/Forge but some concepts described here apply in Minecraft aswell.

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