Before you do any of the following, read
this post first. (unless you already have a client base)
1. We're going to make a new class. I will name mine varHacks. In this class, we will make a public static void called update(). This void will control most of our hacks. But before it can control them, we need to call it. In GuiIngame, after the title of your client, put "YourFileNameHere.update();".
This will call the void "update" that we just made.
Calling our void
See how it's under the client name? You can put it anywhere in defined area from the
first tutorial post.

This calls the void we made.
2. In the update class (picture) you'll see we called a void called basicUpdate(); Create that void under update(); This new updater will be our void dedicated to mods that do not require separate voids like a nuker, auto dig bot, or kill aura. We're going to put our full bright code from before into this new void.
3. Now to add more hacks. I'll add a timer and a step hack. Just like our full bright code, we will a if statement for both of the hacks. In the if statement, we will add these lines. Don't forget to add booleans and checkkeys for these.
4. Time for climb!
Climb
Climb is really easy. Add your boolean / checkey.
Then head over to EntityLiving and find the public boolean isOnLadder.
Just add:
if(var.climb)
{
return true;
}
5. Now to make an Xray. Add a boolean and checkey as usual. First, go to the fullbright code. Where it says "if(var.fullrbight)" change it to "if(var.fullbright || var.xray)". This is will make sure that the blocks are bright without having to edit the block brightness code in the block class.
Also, make sure each time that xray is toggled it also does "mc.renderGlobal.loadRenderers();". Without this, xray will only show up after chunk updates.
Now, head on over to block.
We're going to need to change a few things.
Block Changes
First, we need to change how blocks render.
Then under "shouldSideBeRendered" we will have only the blocks we list rendered. To make this easy, make an array of the block ID's you want in your boolean class.
Now, put that code in "shouldSideBeRendered" and you're done!
6. Fastbreak!
Fastbreak
As usual, create a booleana and checkkey for fastbreak.
Navigate to "onPlayerDamageBlock" inside PlayerControllerMP.java.
Find the section that looks like this: (But not exactly. I'm using a snapshot instead of 1.4.6, but they're nearly identical)
if (this.curBlockDamageMP >= 1.0F)
{
this.isHittingBlock = false;
this.netClientHandler.addToSendQueue(new Packet14BlockDig(2, par1, par2, par3, par4));
this.onPlayerDestroyBlock(par1, par2, par3, par4);
this.curBlockDamageMP = 0.0F;
this.stepSoundTickCounter = 0.0F;
this.blockHitDelay = 5;
}
All you need to do if make another if statement with your fastbreak variable.
7. Adding nofall.
NoFall
Set up your checkey and boolean. Then open the classes "Packet11PlayerPosition", "Packet12PlayerLook", "Packet13PlayerLookMove"
In these classes, there's a line that they all share. " this.onGround = par(RandomNumber);"
using if/else statements, have these set to false and their default when nofall is toggled. Do this in each class and you're done.
8. Adding on to the GUI so we can easily remember what is on and off.
GuiIngame

It skips 34 because I made a derp edited the picture.
9. Done