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: yournewmod.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 (web and mobile), SoloLearn (web and mobile), and kodevelopment(web).  You will need an IDE (Integrated Development Environment) such as IntelliJ or Eclipse to read or create class files.  This tutorial will focus on IntelliJ IDEA Community Edition 2019.
 * 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: yournewlogo.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.  There are also several websites with tools for creating pixel art.

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).

If you have been playing Minecraft Java Edition, you probably already have JRE (Java Runtime Environment). To develop a mod, you will need to find JDK (Java Development Kit), which includes the JRE and an emulator. Download JDK Standard Edition version 8 from the official site. Then follow the instructions for installing it, and make note of the location it installs to. Pay particular attention to the section on Updating the PATH Environment Variable.

With a Java Development Kit installed, and the IntelliJ Integrated Development Environment to manipulate Java with, you now have the tools to develop custom software that can be used in a variety of applications. While working on a mod, continue working through Java tutorials. The lessons will enable you to put your ideas into action, while the ideas will make the lessons more interesting and memorable.

One more tool you should set up before starting a mod is the Forge MDK (Mod Development Kit). Forge is a collection of useful resources and mod loader, designed specifically to simplify compatibility between Minecraft Java Edition and multiple community-created mods. This tutorial will focus on the MDK for version 1.12.2 of Minecraft Java Edition; as of this writing, Forge for 1.13 is still in development, while Mojang has already released 1.14.2. To begin developing for 1.14 right away, you may decide to skip the rest of this tutorial about Forge, and instead dig into Fabric. The Forge MDK will be addressed in detail in the next section.

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.

First steps with Forge
Forge has created their own tutorial, at https://mcforge.readthedocs.io. This wiki article aims to provide a foolproof walkthrough of a few key elements of Forge's tutorial. Bookmark their page, as it addresses many issues this article will not. Moreover, there are a number of valid ways to achieve the desired result. This article will focus on simplicity rather than efficiency/elegance. If you follow precisely the steps outlined here, you should soon have a functional mod that you can then tinker with to your heart's content.

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