The Ultimate Guide to Minecraft Modding with Java in 2021


Recommended Posts

  • Owner

In this Minecraft Modding tutorial, we will be providing you with step by step instructions on how to get started with Minecraft modding while creating an awesome custom Sword that you’ll get to play in the game.


We’ll be using Minecraft 1.12.2 as it is the version compatible with our current Minecraft courses. Newer versions may use different setup instructions.


As a rule of thumb, Minecraft mod code is not compatible from version to version. For example, 1.12 mods will not work with 1.13 and above.


You’ll need a PC or Mac computer for this tutorial, as Chromebooks or mobile devices will not run the software properly.


At CodaKid we have taught over 30,000 students Minecraft coding, and have won numerous industry awards for online courses including a Parents’ Choice Gold Award and CODiE Finalist for Best Coding and Computational Thinking Solution.


While we teach coding for kids, this guide can be used by teachers, parents, or anyone with an interest in creating a custom Sword Mod for Minecraft Forge.


We hope that you enjoy this free step by step guide to covering one of the first courses we teach in our Minecraft Modding series.


We’ll cover the very basics of what you’ll need to start Minecraft modding, and you will learn how to use Java, one of the most popular programming languages in the world.


We’ll also teach you how to download and use the Eclipse IDE, a text editor used by professional  developers at companies such as Facebook, Google, and Amazon.


We will continue to update this blog in the coming months and transition to more recent versions of Minecraft as they become stable for mod creation. Our next big course revision will take place after the upcoming Minecraft Caves and Cliffs Update.


Minecraft modding

Step 1: Set up Java Developer Kit (JDK)


We will need to download the Java Developer Kit that will let our Minecraft Modding in Eclipse work correctly.


You can find the download link HERE for JDK 8. The version of JDK you need is JDK 8 to work properly with Minecraft Modding.


The download page should automatically detect your platform and give you the correct download. The version I am downloading that is shown in the picture is for Windows 64-bit. However, you can click “Other platforms” to find versions for other operating systems. Click the “Latest release” button to begin your download.


Now the download of the executable file will start.


Once this is finished, find the file in your downloads folder and run the executable to install the JDK.




Run through the pop up window guide to install the JDK for your computer and click on each next keeping the default settings until the JDK finishes installing.




You will need to agree to the End-User License Agreement (EULA) to continue.




Let Java run its installation until it is finished.




Now that JDK is finished, we can set up our code editor in the next step.

Step 2: Set up your Text Editor


Before we begin Minecraft modding, we’ll need to download some tools.


First, for this guide, we are going to download the Eclipse IDE, one of the most popular professional text editors for Java in the world.


To download the installer CLICK HERE and look for the Get Eclipse IDE 2020-06 Download area that looks like this:




Click the Download 64 bit button and the next page will appear where you can download. Click the Download button shown and wait for the Eclipse file to finish downloading.


Minecraft modding


Find the executable file in your download file and open it to launch the Eclipse installer.




When the launcher opens, select the Eclipse IDE for Java Developers.


Minecraft modding - Eclipse instructions


Then on the next window, keep the default install location and then click the INSTALL button.




The next window will appear and you need to accept the agreement for Eclipse. 




Then the next window will prompt to make sure you accept the license Agreement.


Checkmark the “Remember accepted licenses” box and accept the Eclipse Foundation Software User Agreement.




Once this is accepted, you are almost done with the install.


Just accept the Eclipse Foundation certificate as shown in the image below.




Once this is done, Eclipse will be downloaded and ready for when we need to use it to write our code.


The next step is going to be installing the Java Developer Kit which will let our code work properly with Minecraft.

Step 3: Set up Forge


Next you will need to download the 1.12.2 version Minecraft Forge, as this will allow us to mod Minecraft 1.12.2. The instructions shown here should work for any Minecraft version from 1.12.2 onwards.


You can find the download link HERE, and just follow the instructions we’ve laid out below.


On this page you should see the latest and recommended version for Forge. Download the Recommended version Mdk (Mod Development Kit) file for 1.12.2 as shown.




You’ll be taken to Forge’s advertisement redirect. You don’t need to click on anything but the “Skip” button in the top-right corner, highlighted in red below.




Once this is downloaded, find it in your downloads folder, right click on the zipped up folder and then select Extract All…




On the next window click the Extract button.




This is going to be our project folder. So we want to make a copy and rename and move it to a new location on our computer.


We recommend putting a copy in your Documents folder or on your Desktop.


Right click and copy and paste the unzipped forge folder in a location you want and make sure to rename it to something descriptive.


In this example we will be naming it ForgePractice.




We have the Forge folder set up and are ready to create our new project!


Step 4: Install Pinta


Next we want to install the Pinta program we will use to change the look of our Sword Texture.


Go the the link HERE to get to the Pinta download page.


On this page click the download link for the OS you are on Mac or Windows.


Minecraft modding Pinta


Once you have the installer downloaded, open it up in your downloads folder and run the installer.


Fully install the application and accepting any agreements along the way. 




Close out of the installation when it is finished.




Now we have the programs we need to create our mod.


The next step is creating our project.


Step 5: Create Your Project


Launch Eclipse. It will ask you to choose a directory to use as Eclipse’s workspace. This directory needs to be outside of your project folder. I recommend creating “eclipse-workspace” inside of your Documents folder. You can also just use the default location Eclipse gives you.




Eclipse will now open up. Close out of the Welcome tab.




In the Package Explorer, click on “Import projects…”




In the “Import” window that pops up, select “Existing Gradle Project” and click Next.




On the next page, click “Browse…” and select your project folder. Click “Select Folder”.




You should now see this. Click Finish. It should close after importing the project.




You should now see your default workspace view:




Go into the Gradle Tasks tab at the bottom of the window. It looks like this:




Expand the “fg_runs” task folder, and double-click on genEclipseRuns to run the task to set up our Minecraft launch configuration. Once it’s finished running, we need to import our new launch configurations.


Go to the File menu of Eclipse near the top of the window. Click it, then click Import in the menu that appears.




Click the arrow next to Run/Debug in the menu that appears. Select Launch Configurations and click Next.




In the next menu, checkmark the box next to ForgePractice (or your folder name if you named it differently). It should show the runClient and runServer configurations selected. Click Finish.




Just one more edit before we can run Minecraft. Click the arrow next to the green Run button. Click on Run Configurations. You can also find this from the Run menu at the top of Eclipse.




Go to the Environment tab in the new window that appears. Go to the MC_VERSION line in the list.




Double-click on the ${MC_VERSION} value and change it to 1.12. Then click Run. Your Minecraft should now launch from Eclipse.




You can close out of the Minecraft Client; you should now be able to run the game just by clicking the green “Run” button in the toolbar near the top of Eclipse.


We are now ready to start Creating a Mod and learning Java!


Step 6: Make Your Own Mod – A Custom Sword!


Finally our Minecraft modding tutorial begins!


Once Eclipse is loaded up and opened, we are ready to start typing in java code.


Let’s open an example Mod java file that is provided for us that we will be starting from.


On the left side of the window, open the project folder by clicking the arrow next to the name. Your project folder will likely be named with the same name you gave to the folder in Documents.


Now open the “src/main/java” folder and then open the “com.example.examplemod” file and inside you will find


Double click this to open up this java code file.


Minecraft modding Java code


This file contains our starting code. It contains our mod ID and name. The first thing we want to do in ExampleMod is find the lines that define our MODID and NAME.


Change the MODID to sword making sure it is all lower case.


This is the unique ID for our mod we will make.


The NAME is the name of the mod as it will appear in Minecraft.


Name this what you prefer.


Make sure these are inside quotation marks because they are String variables.


Strings are variables that are words or characters.


(We will be covering variables in a little bit).




Go to the src/main/resources folder and open the mod info file. 


Open here and change the modid to “sword” and change the name, description, author, and credits to whatever you like.


Make sure these are inside quotation marks again as they are Strings that will be read by the code.




The next step is to create variables for our ToolMaterial and sword.


Place these lines beneath the private static Logger logger line in


Variables are helpful in code because they act as boxes with names that store information inside of them we can use easily.


What we are doing here is we are creating to variables myToolMaterial and mySword.


The types of variables are the ToolMaterial and Item.




Once we have the variables created, we need to import the code files that define what a ToolMaterial and an Item do.


We can do this by mousing over the red error lines underneath ToolMaterial and Item.


In the dropdown list that appears, import the code shown.


Start with the ToolMaterial as shown below.




Next import the Item as shown below.




Now because we are making a customized sword in Minecraft, we need to define what the material is for the sword tool is we will be using.


This is where we define our custom tool material variable we created.


Go into the preInit function shown and inside below the logger line, write out  the myToolMaterial line shown.




What that line does is it fills in our myToolMaterial variable with information on what the material does for tools we apply it on.


We will be applying this tool material to our sword.  But let’s actually fill in the name, harvest level, damage etc.


Change out the name to a String variable that is the material name.


You can name this whatever you like.


The harvest level indicates which minerals it can get resources from.


If we applied this material to a pickaxe, this is where we would define if it can get diamonds from Diamond Ore.


Putting this at 4 lets it mine whatever we want it to.


maxUses is how many times we can use it before it breaks, the efficiency is applied for harvesting tools for how quickly it will mine or harvest a block.


The damage is how much damage it will do when you hit an entity with it.


The enchantability is related to how easy it is to enchant.




After this material line add in a definition for what our sword is.


This line defines the sword as a new class called CustomSword. 




We need to create this new class and we do that by mousing over the red error line and clicking


Create class ‘CustomSword’. 




A new window will open up, keep these values at the default settings and just click Finish.




This will create a new Java code file CustomSword and automatically open it up for it.


This is a Class which is code that defines what the CustomSword is and how it behaves.


What is convenient for us is we can make sure to change the import and public class lines to say “ItemSword” instead of “Item” and this defines our class with all of the information that already exists for swords in Minecraft.


This lets us swing it and damage creatures as well as pick it up and drop it and any small interaction a sword will have in the code.




Now what we need to do is add a constructor for our class.


This defines how the sword is made. Think of it as how blueprints are used when creating buildings.


We are defining specific rules for how our sword will be created.




Once the constructor is added in, change it to remove the Material reference in the parentheses and then fill in our ExampleMod.myToolMaterial.


After these changes are made, we need to set the RegistryName, UnlocalizedName, and CreativeTab for our sword.


The Registry and Unlocalized names of our sword need to specifically be “my_sword” because these are the names our code uses to identify our sword and link our texture to it.


The CreativeTab can be changed to the tab you want the sword to appear in.


We chose COMBAT but there is a list that will appear where you can choose the tab you want your sword to be in.




Once this is done, our class is ready to go.


We need to create a new java class that we will use to register our sword into Minecraft.


Go to the Package Explorer on the left side of Eclipse and right click on the com.example.examplemod package and create a new Class (as shown below).




This will open the class window we saw earlier.


This time we want to name it CommonProxy and then select Finish.




Now we want to go above the public class CommonProxy line and write the @mod.EventBusSubscriber.


This will let the class be run during the loading of Minecraft so it can register our sword into the game.




We need to import the code for mod just like how we imported Item and ToolMaterial earlier.




Once that is imported, we need to create a new function that will run specific code to register the sword Item in Minecraft.


Make sure to include the ExampleMod.mySword inside the registerAll() parentheses because this tells the register function specifically to register our sword item.




Now we need to import the code that is missing from this Class.


We need to import SubscribeEvent, RegistryEvent, and Item.


Just like before, we are importing code that already exists to help us with our register code.


Start with SubscribeEvent as shown below.



Next Import RegistryEvent as shown below.




Finally, Import Item (net.minecraft.item) as shown below.




Once these imports are done, we can actually test out or “sword” except it will not look like a sword just yet.


In order to test out our code, make sure you are clicked inside a code window and then go up to the green play button and press it only once.


Make sure you press the button that is just the green button and not the ones with little icons in the corner.


After some time, you should see a window start opening Forge Minecraft.


Wait until it fully loads Minecraft to its main menu.




Once you have finished waiting, select Single Player at the main menu.


Minecraft modding with 1.12


Next, select Create New World to start setting up a Creative mode game. 




Then change the game mode to Creative and change the name, then select Create New World.


This will open the new world and take a bit of time to open the Minecraft world.




Once the world is opened, click the “e” button to open the Creative Tab inventory.


Go to the Combat tab or whatever tab you picked when we set the Creative Tab in our code.


Scroll to the bottom of the tab and make sure you have your sword.


We will be updating the look and the name but if you put it in your inventory, you will have a sword that will function as we coded it to!




Once you are done testing your purple and black block sword, let’s go back to our code to make the model and texture linked up in our code.


Exit out of the Minecraft window and open and add a new registerRender function inside of the CommonProxy class as outlined below.


This will register the model for the sword based on the item we want to register.


We will link this to our sword in the next couple of steps.




We now need to import more code.


Make sure to import ModelLoader and ModelResourceLocation.


Start with ModelLoader.




Next, Import ModelResourceLocation as shown below.




Now let’s render our sword!


Make a registerRenders function that we will register our ExampleMod.mySword variable.




Now we need to import the ModelRegistryEvent code so our models will properly render in Minecraft.




Now we need to name our sword.


Right click on the src/main/resources and make a new untitled Text file inside.




Now add in a code line that will name the sword.


You can customize the name of your sword by changing the name to the right of the equals (=) symbol.




Now let’s save this untitled filed.


Go to File > Save as and a window will open asking you to select the location of the file.


Select the MDKExample>src>main>resources folder and change the file name to be en_us.lang and then click OK to make the file




Now we need to make our sword texture and import it into our project.


I have a picture of an Iron Sword in Minecraft below.


Go ahead and right click on it and select “Save image as…” then save the file as “my_sword.png”.


It is a small file because Minecraft needs a smaller image.


Once you have it saved, right click on the picture wherever it is saved on your computer and then copy it.




Once it is copied, let’s find the folder we need to paste it in.


Go to our project folder ForgePractice and open the src > main > resources folder and paste in the my_sword.png into here.




Now return to Eclipse and add a new Text file into the src/main/resources folder like we did before.




In this new file, type in code that will define the item sword resources.




We will now save this file as a json file so go to File > Save as and save the untitled file as my_sword.json inside of MDKExample > src > main > java > resources.




Now click the small dropdown Triangle next to Package Explorer and change the Package Presentation to Hierarchical. We do this because we will be adding in more packages to organize our code and set it up so our sword files can be properly managed by our code.




Now we need to create Packages for our resources folder.


Right click on this folder and add a New Package.




In the pop up window, name it assets.sword and then click Finish to create the package that will hold our other three packages.




Now right click on assets.sword package and add a New Package. 




In the pop up window name it assets.sword.lang.




Now make two more packages inside of assets.sword.


Name these “assets.sword.textures” and “assets.sword.lang”.


Once these are made, drag in the en_us.lang, my_sword.json, and my_sword.png to their respective folders as shown in the image below.




The last thing to do is customize our sword.


Open Pinta by searching for Pinta in our search bar and opening the Pinta program.




With Pinta opened, go to File > Open where a new window will open up.




Let’s now find our sword imagine in our project folder ForgePractice > src > main > resources > assets > sword > textures > items.




Now we need to actually paint the sword!


Zoom all the way in and turn anti aliasing to the off position and change brush width to 1.  All of these settings are highlighted in the image below.




Now all you need to do is paint your sword and erase or add anything you want.


Use the colors, the brush, and eraser tool.


Make sure to change your eraser anti aliasing and brush width as needed just like what we changed with the paint brush.


Then paint your sword to look like whatever you want! If you make a mistake you can hold down CNTL then press down on Z to undo changes. On a Mac, you’ll hold down the Command button and press down on z.


Minecraft modding - make a sword mod


Once you are done go to file > Save and make sure the new changes are saved you made.




Once this is all finished we are done with our custom Sword mod!


You can now test it by clicking on the Green play button just like what we did earlier!


Make sure everything is perfect and as you want it and then get ready to Compile your Mod and test it in Minecraft.


Step 7: Compile your Mod


Now that our code is finished, we need to compile and build our mod.


In order to build it, we need to go to the project folder we made and right click in an open space and select “Open Powershell window here” or “Open command window here”.


Minecraft modding compiling


Once the window is open, write in the command “./gradlew build” and press Enter to run this command. 




Then wait for the BUILD SUCCESSFUL message to display.




Once this build is finished, return to your project folder ForgePractice and open the build folder.


Make sure you see modid-1.0.jar.


This is our build mod file!


Now in the next step we will show you how to load your Mod onto your Minecraft game.




Step 8: Test your Mod!


Now to test our mod we need to make sure we have regular Minecraft forge downloaded.


What we were working in was the developer kit for Forge.


Now we need to access the Minecraft Forge client.


Return to the same Minecraft Forge download page we were at earlier.


Now once at this page click the regular install button shown.




Once the download finishes, open the executable file in your downloads folder.




Once this launches, you should see the Forge install window.


Make sure you have Install client selected, and keep the default location and then click OK. 


Minecraft modding with Forge


Make sure the Forge client installs successfully and then press OK when it is done installing.




Once Forge is done installing, we need to find our build mod file in our Eclipse project folder.


Open your ForgePractice folder.


Then open the build folder and find the libs folder in here.


This is where our Mod will be.


Right click and rename the modid-1.0.jar to what you want.




Once it is renamed, go ahead and right click and copy the new jar file.




Once the jar file is copied, we need to open the folder that has our mods in it.


Go to the search bar and type %appdata% and open the folder that shows up in the search.




When this folder is open, go to and open the .minecraft folder.




Inside this .minecraft folder, you should see a mods folder, open up this folder.




Next, paste in your mod we copied earlier.




Your mod is all set up to work in Minecraft!


Now we need to launch Minecraft and open the Forge version. Search and Open the regular Minecraft version.


This has to be the Java version of Minecraft.


The Windows 10 or a mobile version of Minecraft will not work.




Once the Minecraft Launcher is opened, go to the Launch Options tab and click Add new.




In the Add New window, Change the version to the release 1.12.2-forge version.


Name it Forge 1.12 or something descriptively similar.




Go back to the main Minecraft News tab and click the drop down arrow next to PLAY and select the new Forge 1.12 launch version we made.


Once this is selected, click PLAY to launch the Minecraft Forge version.




Once Minecraft is loaded, we need to make a new level just like what we did when testing our sword.


Go to Single Player and then Create New World just like we did earlier.




In the settings, change it to Creative Mode and change your World Name.


Once all of this is done, click the Create button and wait for the new Minecraft game to load.




Just like earlier, find your sword in the Creative Tab by clicking “e” on your keyboard and then head to the tab you set your Sword to appear in.


Mine is the Combat tab and as you can see, the custom sword is at the bottom of the list of items.




You’ve officially created your own Minecraft Mod from scratch and loaded it into your own Minecraft game!




You can make another sword using the same techniques or even challenge yourself to create an Axe or other tool.




What Can Kids Mod in Minecraft 1.12.2?


When it comes to creating Minecraft mods, a sword (or even weapons in general) is barely the tip of the iceberg. You can create so many awesome mods with the Java Developer Kit, Eclipse IDE, and Minecraft Forge. From mods that add thousands of new weapons for you to find and test out in-game to mods that add new cities and new adventures, the sky is literally the limit with Minecraft.


Here’s a quick overview of some of the most popular 1.12.2 Minecraft mods, so you can see (1) how creative Minecraft players can be, and (2) how you can mod almost anything imaginable:


Minecraft Lumberjack – a mod that instantly clears away anything wooden in its path (trees, leaves, logs, etc.)


JurassiCraft mod – a mod based on the Jurassic Park and Jurassic World franchises. Create in-game dinosaurs by extracting DNA from fossils and amber!


1.12.2 MoarFood Remastered – a mod that adds 100+ new and unique types of food


Minewatch Mod – a mod that combines Minecraft with another popular game, Overwatch. It adds playable heroes and usable weapons and armor that follow the look + functionality of Overwatch items.


Five Nights at Freddy’s Mod – a mod that adds new blocks, items, and mobs based off of the characters from another game, Five Nights at Freddy’s


TelePad Mod 1.12.2 – “teleportation made easy!” A mod that allows players to travel over dimensions, back and forth


Item Filter Mod (Advanced Filtering Items) – a practical mod that allows you to add specific filters with the API. This is perfect if you’re trying to comb through thousands of in-game objects in your inventory


Extra Alchemy Mod – a mod that adds hundreds of new useful potions


Xaero’s World Map Mod (Trace Your Footsteps) – a Minecraft 1.12.2 mod that introduces a self-writing fullscreen map to your client. Changes depending on the world/dimension/server


PetCraft Mod 1.12.2 – this mod adds a variety of pets (i.e., dogs, cats, hamsters, etc.) to the game


Guns Mod | Modern Edition – fairly recent mod that adds modern guns (i.e., pistols, shotguns, SMGs) to the game


UFO Mod 1.12.2 (Alien) – exactly as the name suggests; this mod introduces a full-blown UFO invasion into the Minecraft world


Yes, all these are real mods, and, yes, they’re all functional. Created by Minecraft players for Minecraft players, Minecraft modding is honestly one of the best ways the community keeps engaged with the game.


Believe us; once you’ve gotten used to mods, vanilla Minecraft may seem almost limiting (which is crazy, because Minecraft remains one of the most intuitive and extensive sandbox games of all time) in comparison. So when you start creating and downloading mods, we highly recommend you organize your mods folder. It’s very hard to stop at just a few! 




If you enjoy Minecraft Modding and want to take your skills further, CodaKid has a series of courses that can teach you how to make your own custom creature, biome, dimension, insane explosions, and special effects, and more!


Our courses even include messaging and screen share support from live engineers if you ever get stuck, and our courses even come with a two-week free trial!


We hope you enjoyed The Ultimate Guide to Minecraft Modding with Java in 2019. If you enjoyed our Minecraft modding tutorial, we’d love it if you could share it with friends.


If you have any questions or comments, please leave them below!


Happy Minecraft Modding!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.