I still mod (and play) 1.6.4 myself in part because of this:
(this is clearly not vanilla 1.6.4; Mega Taigas, 2x2 spruce trees, podzol, and coarse dirt were not added until 1.7)
(hmm... why does 1.6.4 modded with 1.7+ features, plus my own, run so much better (including server-side and chunk loading performance, which is particularly atrocious in 1.9)? Clearly, the addition of new features is NOT the problem (as often claimed) that lead to the system requirements being updated such that my computer is below the minimum, despite wild claims of improved performance - well, on certain computers)
I'm so old-school I don't even use Forge or Eclipse - I directly edit the source with Windows Notepad (I use Windows Grep if I need to find something and I don't know where it is), then run the provided batch files to recompile/run/reobfuscate; since the mods I make are for my own personal use it doesn't matter to me if nobody else ever downloads them (if anything, the threads I make for them are more so I can easily show someone what I'm playing if they want to know what mods I'm using).
One reason is because I find that editing existing code instead of starting from scratch or following a long tutorial is easier; for example, I found out how to add blocks with metadata (e.g. new stone variants) by looking at existing code, such as the code for wool, likewise, you can find out how to make a block with different textures on each side by looking at the code for blocks that already have such (as mentioned, the BlockTNT class is a good example; the sides are all the same but you can figure out that a number from 0-5 is used to determine which side to set a texture for; 0 is the bottom, 1 is the top and the rest are the sides; as well as how to register the textures).
Another advantage is that older versions of Forge used MCP instead of Gradle; for a while I used Forge in 1.6.2 to run a few mods that needed it and in order to guarantee that my own mods were compatible I edited the Forge-patched source (which I added directly to the Forge jar). I even used MCreator to make a basic ore mod that actually dropped an item ID from another mod, which is easy to do when IDs are numerical, since the mod did not have its own ore (since then I've more or less made my own non-Forge version of that mod and my own ore block by basically copying vanilla code; for example, EnumToolMaterial defines the properties of each tool material and I just copied an existing material and changed the values).
Also, the code for 1.6.4 generally has much better documentation (comments) and properly deobfuscated method names than later versions; for example, the following are from the class MapGenCaves in 1.6.4 (top) and 1.8 (bottom); I also find it easier to read the parameter list for 1.6.4 since there is only one number, which is clearly different, unlike the 1.8 code (the same base number, 180703 in this case):
* Generates a larger initial cave node than usual. Called 25% of the time.
protected void generateLargeCaveNode(long par1, int par3, int par4, byte par5ArrayOfByte, double par6, double par8, double par10)
protected void func_180703_a(long p_180703_1_, int p_180703_3_, int p_180703_4_, ChunkPrimer p_180703_5_, double p_180703_6_, double p_180703_8_, double p_180703_10_)
Likewise, this is from my BlockDirt class which adds coarse dirt and podzol to 1.6.4, and shows you how to make a block with multiple textures, both sides and metadata (the comments added by MCP are self-explanatory if you have any experience with modding; in some cases they are not present or clear); this also shows you that side 0 is the bottom, side 1 is the top and 2-5 are the sides (not exactly sure what order but some experimentation will tell you if you need this, such as for a block like logs which can face in different directions). The last method is only necessary if you use metadata:
* From the specified side and block metadata retrieves the blocks texture. Args: side, metadata
public Icon getIcon(int par1, int par2)
if (par2 < 2)
return par1 == 0 ? this.blockIcon : (par1 == 1 ? this.iconArray : this.iconArray);
* When this method is called, your block should register all the icons it needs with the given IconRegister. This
* is the only chance you get to register icons.
public void registerIcons(IconRegister par1IconRegister)
this.iconArray = new Icon;
// Normal dirt
this.blockIcon = par1IconRegister.registerIcon(this.getTextureName());
this.iconArray = this.blockIcon;
// Coarse dirt
this.iconArray = par1IconRegister.registerIcon("coarse_dirt");
this.iconArray = par1IconRegister.registerIcon("dirt_podzol_top");
this.iconArray = par1IconRegister.registerIcon("dirt_podzol_side");
* returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks)
public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
for (int var4 = 0; var4 < this.dirtVariants.length; ++var4)
par3List.add(new ItemStack(par1, 1, var4));
1.8.1 is not an available nor existent version of forge
also,youthdigital only works with 1.6.4?For 250 $?Wow
For the multitextured block please look at TNT,which uses IIcon,and the animated textures.......I think they were not introduced in 1.6.4.....so you might find yourself writing custom block rendering code
There are animated items in 1.6.4 (tried that myself), looking at TNT and trying to copy it doesn't work.