Minetest is an open source, voxel, sandbox game. It draws inspiration from Minecraft, Infiniminer, Terasology, and the like. By it's very nature its designed with modding in mind, using the lua programing language. Minetest comes with a subgame called Minetest_game, but lots of others are available to download from the subgame thread on the official Minetest forums.
Minetest can be downloaded for free from Minetest.net and runs on most operating systems.
Minetest is comprised of two components, an Engine (Minetest) and a subgame (Minetest_game) The engine is mostly written in C and exposes an API that can be used to create custom content with LUA, in the form of mods. Subgames are nothing more than a collection of mods that all work together to create a polished, or not so polished, cohesive playing experience. Minetest_game isn’t meant to be a completed game, and it shouldn’t be looked at as such. It is a good place to start with you’re starting with modding, but don’t forget that other subgames exist as well, and they can all be modded as well. Even better would be to create mods that can run on multiple games. I’ll talk more about what mods need to run in the future when we get to coding and setting up a mod. In this course when I’m referring to the engine I’ll be using the name Minetest, and when talking about the subgame I’ll be using the name Minetest_game or subgame. It’s important to not get the two mixed up, as they both do very different things.
Minetest can be played as a singleplayer world, which gives you total freedom to change things and add mods. There are also a lot of servers you can join, most of them run custom subgames, ranging from puzzles to creative to PVP and even total anarchy servers. Servers all have their own rules and standards, so be aware that there may be inappropriate language for some ages on some servers.