Tutorials/Creating Forge mods

Overview
Note: This tutorial is in the very earliest stages. Its aim is to point you to the resources needed to get started making mods for Minecraft Java Edition. It will not be exhaustive.

Mods (short for 'modifications') can modify or add items, blocks, entities, and much more. Minecraft mods consist of jar files (example: niftymod.jar) which contain class files, json files, and image files, to name a few of the most common.
 * Class files are specific to the Java programming language. A few Java tutorials to try include w3schools (https://www.w3schools.com/java) and SoloLearn.  You will need an IDE (Integrated Development Environment) such as IntelliJ IDEA or Eclipse to read or create class files.
 * JSON files are a means of detailing the characteristics of objects used by Java class files. JSON is much simpler than Java.  You will need a text editor such as Notepad++ to read or create json files.  You probably already have Notepad on your computer, but there are many advantages to using Notepad++ instead.
 * Image files you may be familiar with include .bmp and .jpg formats, but Minecraft requires .png format (example: niftylogo.png) in multiples of 16 pixels square (example: 16x16, 32x32, 64x64). You will need an image editor such as Paint.NET or Gimp to edit or create png files.  You probably already have MS Paint on your computer, but Gimp has so much more functionality, and Paint.NET is quite user-friendly.

Assuming you intend to use Forge Modloader, you will need to download the JDK (Java Development Kit) from Forge, and set up its gradle file in your IDE of choice.

What not to do
There are some things that you should not do before creating a mod. Here is a list of don'ts:
 * Don't do anything that violates Mojang's terms of use for Minecraft.
 * Don't release Minecraft versions or modifications that allow you to play without having bought Minecraft from Mojang.
 * Don't release the decompiled source code of Minecraft in any way.
 * Don't modify existing mods without permission from that mod's author(s). Check their License, usually available in the author's GitHub repository.  If you can't find the license, then you do not have permission to share a modified version with anybody.  You may tinker with the files for personal use only.

Creating a mod for Forge
Presumably you already have an idea for a mod you want to create. If you simply want to add custom advancements, functions, loot tables, structures, recipes or tags to your game, look into how to make a Data pack, which does not require programming. Or look into how to make a Resource_pack if you simply want to customize textures (colors and designs), models, music, sounds, languages, splashes, fonts, or the end poem. Or perhaps you want to 'fork' a favorite mod to update for newer versions of Minecraft. In any case, this guide will cover (eventually) only the most basic elements of creating an item (example: sword) and creating an entity (example: zombie).

Setting up your development environment
Assuming that you installed IntelliJ IDEA, go to the File menu and Open the folder you created. Find the Project panel on the left, clicking on the name to open the panel if needed. Below the subfolders in your folder, find build.gradle (with an icon of a gray elephant), right-click on it, and choose Import.

Go to the File menu and choose Project Structure. In the next window, find the Add new SDK button (hotkey Alt+Insert).

Finally, go to the Run menu to launch the game.

The Project's Structure (Important)
The ...yourmod\src\main\resources folder should contain an assets subfolder, as well as a pack.mcmeta file and mcmod.info" file. Inside the assets folder, find or create a subfolder named textures. This is where you will put any image files you want to show in-game. The ...yourPC\.gradle\caches\minecraft\net\minecraftforge\forge folder should contain a subfolder designating the version of Minecraft and the version of Forge (example: 1.12.2-14.23.5.2838).  A few levels deeper, we find a jar file containing vanilla items: forgeSrc-1.12.2-14.23.5.2838.jar (In this case, the nearly-complete path to the jar is C:\Users\yourPC\.gradle\caches\minecraft\net\minecraftforge\forge\1.12.2-14.23.5.2838\stable\39\forgeSrc-1.12.2-14.23.5.2838.jar, nearly'' because in any such path you need to put your actual PC name where the placeholder "yourPC" is in these examples.

Creating a Custom Tool
Let's make a simple sword, with greater damage ability than a diamond sword. C:\Users\Tiane\.gradle\caches\minecraft\net\minecraftforge\forge\1.12.2-14.23.5.2838\stable\39\forgeSrc-1.12.2-14.23.5.2838.jar

Textures from Scratch
Open Paint.NET and create a new image, with a canvas size of 64x64 (more or less, but in a multiple of 16).

Sharing Your Mod
To build your mod, run gradlew build. This will output a file in build/libs with the name [archivesBaseName]-[version].jar. This file can be placed in the mods folder of a forge enabled Minecraft setup, and distributed.

Next Steps
https://mcforge.readthedocs.io/en/latest/gettingstarted/

Additional Info
Recommended:
 * create a GitHub account to manage versions of your mod, and collaborate