To get a feel for it, watch the trailer, the official four part beginner's tutorial, a third-party tutorial, and a few pop song parodies based on the game. (Teachers, see the "Teaching Minecraft" video series from MinecraftEdu, or the links at GamingEdus.org.)
If you use Linux, the launcher you want is Minecraft.jar. Install java (e.g. 'sudo apt-get install openjdk-7-jre'), then run the launcher (e.g. 'java -jar Minecraft.jar'). This will download and install Minecraft proper into your ~/.minecraft folder. It's how you will always launch minecraft. (See also the Minecraftwiki FAQ.)
One map that requires a resource pack is Mysterious East. (See the yogscast video for some idea of how to play it once you have the save unpacked and the resource pack downloaded.) Give it a try.
Unfortunately, there is no authoritative source for mods, though there are a few lists, at e.g. minecraftforum.net, planetminecraft.com, and minecraftwiki.net. People seem to just find out about a mod and google it or search for it on youtube.
Installation methods used to vary wildly, and incompatibility was rife, but these days, most mods are compatible with MinecraftForge, a convenient mod loader.
Once you have it installed, to install a mod, you download it to the ~/.minecraft/mods folder, and then start Minecraft, choosing the Forge profile; installed mods are always active.
See my Using Mods page for semi-detailed instructions for how to install a couple interesting mods on Windows, Mac, and Linux.
The original way to create mods was to install the Minecraft Coder Pack. I've done this, and successfully created a trivial mod with it, but it's probably not where you should start.
To install it, see MinecraftForge's Installation/Source page.
Unzip it, cd to the forge directory it creates and run python install.py. This will take ten or so minutes on a fast machine. If it complains about hunks of patches not applying, try it again after installing the prerequisites listed on the page linked above (e.g. "sudo apt-get install wine astyle").
Minecraftforge has a very scary tutorial, and wuppygaming has even more.
There are an infinite number of Java tutorials out there, for instance:
To get one of the items you created in your mod, start a world in creative mode, then press 'e', click on the rightmost tab of your inventory, and scroll to the bottom; you should see it on the bottom right. Drag that to the bottom row of the inventory window, and press escape; then press the number for the slot the item is in. Voila, you're wielding it.
import net.minecraft.item.ItemFood;an item in the class:
private final static Item genericFood = new ItemFood(5002, 5, 5, false).setCreativeTab(CreativeTabs.tabMisc).setUnlocalizedName("genericFood");and give it a name in the load() method:
LanguageRegistry.addName(genericFood, "Generic Food");Now to try eating your food, press Play, wield the new item as above, then switch to survival mode (/gamemode 0), run around until you get hungry (the wine glasses on the lower right of the HUD will start emptying), then right click and hold. You should now be messily eating the food you were holding, and your hunger should go down.
First, tell eclipse you're going to add textures for your mod. Right-click on src in Project Explorer, pick New / Package, and name it, say, assets.generic.textures.items. This will jog eclipse into creating a directory forget/mcp/src/minecraft/assets/generic/textures/item.
Then use your favorite paint program to create a 16x16 image, and save it as file foo.png in that folder.
Finally, in your Generic.java, in the constructor for Generic where you have a line like
private final static Item genericFood = new ItemFood(5002, 5, 5, false) .setCreativeTab(CreativeTabs.tabMisc) .setUnlocalizedName("genericFood") ;tack on .func_111206_d("generic:Qu") to the end, before the semicolon. e.g.
private final static Item genericFood = new ItemFood(5002, 5, 5, false) .setCreativeTab(CreativeTabs.tabMisc) .setUnlocalizedName("genericFood") .func_111206_d("generic:foo") ;(Why func_111206_d? Well, minecraft wasn't quite designed for modding, and the name for the function that sets textures got optimized away; and the best mcp could come up with as a replacement name is a random string of digits.)
Press the 'Run' button, and you should now see your genericFood item looks less boring in your inventory and when you drop it!
See also the minecraftforge texture tutorial.