├── README.md ├── client └── main │ ├── Client.java │ ├── KeyWrapper.java │ ├── Location.java │ ├── Reflection.java │ ├── event │ ├── Event.java │ ├── EventAttack.java │ ├── EventBlockBreak.java │ ├── EventBlockSwing.java │ ├── EventCanHarvestBlock.java │ ├── EventCancellable.java │ ├── EventCancellableValue.java │ ├── EventChat.java │ ├── EventCooldown.java │ ├── EventDigSpeed.java │ ├── EventDisconnect.java │ ├── EventDrawChat.java │ ├── EventEntityRender.java │ ├── EventGetHeldItem.java │ ├── EventInLava.java │ ├── EventInWater.java │ ├── EventIsOnLadder.java │ ├── EventIsPushed.java │ ├── EventIsSneaking.java │ ├── EventIsSpectator.java │ ├── EventLoadBlock.java │ ├── EventManager.java │ ├── EventOnLiving.java │ ├── EventPlayerDamageBlock.java │ ├── EventRecPacket.java │ ├── EventRender.java │ ├── EventResetBlockRemoving.java │ ├── EventRespawn.java │ ├── EventSendPacket.java │ ├── EventSetSprint.java │ ├── EventStr.java │ ├── EventTick.java │ ├── EventUpdateEntity.java │ ├── EventValue.java │ └── Subscribe.java │ ├── helper │ └── InventoryHelper.java │ ├── hook │ ├── EntityPlayerSPHook.java │ ├── EntityRendererHook.java │ ├── GuiIngameHook.java │ ├── GuiNewChatHook.java │ ├── InventoryPlayerHook.java │ ├── NetHandlerPlayClientHook.java │ ├── PlayerControllerMPHook.java │ └── RenderGlobalHook.java │ └── module │ ├── AntiAFK.java │ ├── ArmorUI.java │ ├── AutoFish.java │ ├── AutoRun.java │ ├── Build.java │ ├── Camera.java │ ├── Chat.java │ ├── CoordUI.java │ ├── Dig.java │ ├── Disconnect.java │ ├── Friend.java │ ├── Fullbright.java │ ├── KillAura.java │ ├── Module.java │ ├── ModuleUI.java │ ├── NoCheat.java │ ├── PotionUI.java │ ├── Reconnect.java │ ├── RegisterModule.java │ ├── Reharvest.java │ ├── Sink.java │ ├── Sneak.java │ ├── Sprint.java │ ├── Tool.java │ ├── TraceESP.java │ ├── Turtle.java │ ├── Wallhack.java │ └── Waypoint.java ├── patch.patch └── screenshots ├── 2016-07-01_04.37.56.png └── 2016-07-01_23.10.08.png /README.md: -------------------------------------------------------------------------------- 1 | # CubClient 2 | 3 | A repo for the codebase of my updated 1.10+ Minecraft client using **event handling**. 4 | 5 | Currently supports 1.12.2. 6 | 7 | To update from version to version see `patch.patch` which is a git diff of the changes made to the base Minecraft client (which are very few so that updating is as simple as copying over the `es/` directory) into `src`. 8 | 9 | # Why? 10 | 11 | Because it takes me 10 minutes to update this where it used to take over 6 hours. 12 | 13 | # Features/Usage 14 | 15 | Everything in the client works in multiplayer. 16 | 17 | - ArmorUI 18 | - fancy armor durability bar 19 | - AutoFish (K) 20 | - away from keyboard fishing 21 | - works in camera mode 22 | - Tool 23 | - silent tool switching within hotbar when hitting blocks (invisible to clientside) 24 | - "silent" behaviour achieved by sending a packet to switch the player's slot 25 | - also known as "auto tool" 26 | - Disconnect (O) 27 | - disconnect if players are nearby or if you're about to die 28 | - use `-d distance` to set the desired range of players 29 | - ignores friends 30 | - Sink (Z) 31 | - sink like a stone in water 32 | - Antiaway from keyboard (N) 33 | - swing your arm so you don't disconnect every 60s 34 | - Sprint (F) 35 | - easily toggle sprinting, no FOV switch 36 | - AutoRun (H) 37 | - automatically run in a given direction, doesn't run you off cliffs or into lava 38 | - Build (J) 39 | - copy and paste block models built in world within specified boundaries 40 | - load in models using `-load modelfile` and save them with `-save`. 41 | - use `-start` and `-end` to specify the boundaries of the model that is copied 42 | - automatically places blocks for you silently if you have them in your inventory (run around and build!) 43 | - probably the coolest thing in the entire client 44 | - Coordinates (P) 45 | - Dig (N) 46 | - auto digging with destroy count 47 | - Turtle (M) 48 | - algorithmically dig out an entire region of ground (specified by the player) 49 | - use `-start` and `-end` to specify the boundaries of the quarried land 50 | - entirely away from keyboard 51 | - NoCheat (`) 52 | - lets you avoid taking fall damage by automatically dispensing water beneath you 53 | - PotionUI 54 | - shows off potion effects in the bottom right 55 | - Reharvest 56 | - away from keyboard land farming using bonemeal (bot mode) 57 | - Fullbright (C) 58 | - Reconnect 59 | - automatically reconnect to a server upon disconnection at a given interval 60 | - Sneak (R) 61 | - toggle sneak 62 | - TraceESP 63 | - line tracing towards dropped items/players 64 | - Wallhack (X) 65 | - fancy rendering of block meshes 66 | - track a block with `-w blockid` 67 | - clear all with `-clear` 68 | - Camera (V) 69 | - step out of the player and clip through terrain to analyze the world 70 | - Waypoint 71 | - set a visible waypoint using `-f x y z` 72 | - tracks distance 73 | - Friends 74 | - make friends with others (serves as a filter) 75 | - KillAura (G) 76 | - automatically attack entities nearby 77 | - doesn't attack friends 78 | - uses highest calculated damage 79 | - takes into account swing/power meter 80 | - use `-g distance` to set the effective range 81 | - Item Nameplates 82 | - shows the items/armor other players are wearing above their nameplates 83 | 84 | 85 | # Screenshots 86 | 87 | ![](screenshots/2016-07-01_23.10.08.png) 88 | ![](screenshots/2016-07-01_04.37.56.png) 89 | -------------------------------------------------------------------------------- /client/main/Client.java: -------------------------------------------------------------------------------- 1 | package client.main; 2 | 3 | import org.apache.logging.log4j.LogManager; 4 | 5 | import client.main.hook.EntityRendererHook; 6 | import client.main.hook.GuiIngameHook; 7 | import client.main.hook.RenderGlobalHook; 8 | import client.main.module.Module; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.gui.ScaledResolution; 11 | 12 | public class Client { 13 | 14 | private static Minecraft mc; 15 | 16 | public Client(Minecraft mc) { 17 | this.mc = mc; 18 | registerHooks(); 19 | Module.registerModules("client.main.module"); 20 | LogManager.getLogger().info(Client.getMinecraft().getSession().getSessionID()); 21 | } 22 | 23 | private void registerHooks() { 24 | mc.ingameGUI = new GuiIngameHook(mc); 25 | mc.entityRenderer = new EntityRendererHook(mc, mc.getResourceManager()); 26 | mc.renderGlobal = new RenderGlobalHook(mc); 27 | } 28 | 29 | public static Minecraft getMinecraft() { 30 | return mc; 31 | } 32 | 33 | public static ScaledResolution res() { 34 | return new ScaledResolution(mc); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /client/main/KeyWrapper.java: -------------------------------------------------------------------------------- 1 | package client.main; 2 | 3 | import net.minecraft.client.settings.KeyBinding; 4 | 5 | public class KeyWrapper { 6 | 7 | private KeyBinding bind; 8 | 9 | private boolean pressed, active; 10 | 11 | public KeyWrapper(int keyCode, boolean pressed) { 12 | this.pressed = pressed; 13 | this.bind = new KeyBinding("key."+keyCode, keyCode, "key.categories.misc"); 14 | } 15 | 16 | public int getKeyCode() { 17 | return this.bind.getKeyCode(); 18 | } 19 | 20 | public boolean isToggled() { 21 | if(bind.getKeyCode() == -1) return true; 22 | 23 | if(pressed) { 24 | return this.bind.isKeyDown(); 25 | } 26 | 27 | if(this.bind.isPressed()) { 28 | active = !active; 29 | } 30 | return active; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /client/main/Location.java: -------------------------------------------------------------------------------- 1 | package client.main; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | 5 | public class Location { 6 | 7 | private int x, y, z, id; 8 | 9 | private BlockPos pos; 10 | 11 | public Location(int x, int y, int z, int id) { 12 | this.pos = new BlockPos(x, y, z); 13 | this.id = id; 14 | } 15 | 16 | public Location(BlockPos pos){ 17 | this(pos, -1); 18 | } 19 | 20 | public Location(BlockPos pos, int id) { 21 | this(pos.getX(), pos.getY(), pos.getZ(), id); 22 | this.pos = pos; 23 | this.id = id; 24 | } 25 | 26 | @Override 27 | public int hashCode() { 28 | return (pos.getY() + pos.getZ() * 859433) * 859433 + pos.getX(); // choose a huge prime 29 | } 30 | 31 | public BlockPos getPos() { 32 | return this.pos; 33 | } 34 | 35 | public int getX() { 36 | return pos.getX(); 37 | } 38 | 39 | public int getY() { 40 | return pos.getY(); 41 | } 42 | 43 | public int getZ() { 44 | return pos.getZ(); 45 | } 46 | 47 | public int getId() { 48 | return this.id; 49 | } 50 | 51 | public static Location readBytes(byte[] b) { 52 | byte id = b[0]; 53 | int x = (b[1] & 255) | ((b[2] << 8) & 32767); 54 | if((b[2] & 128) == 128) { 55 | x = -x; 56 | } 57 | int y = (b[3] & 255) | ((b[4] << 8) & 32767); 58 | if((b[4] & 128) == 128) { 59 | y = -y; 60 | } 61 | int z = (b[5] & 255) | ((b[6] << 8) & 32767); 62 | if((b[6] & 128) == 128) { 63 | z = -z; 64 | } 65 | return new Location(x, y, z, id); 66 | } 67 | 68 | public Location add(int x, int y, int z) { 69 | return new Location(new BlockPos(pos.getX()+x, pos.getY()+y, pos.getZ()+z), id); 70 | } 71 | 72 | public void setPos(BlockPos p) { 73 | this.pos = p; 74 | } 75 | 76 | public byte[] toBytes() { 77 | byte[] b = new byte[7]; 78 | int x = getX(); 79 | int y = getY(); 80 | int z = getZ(); 81 | b[0] = (byte)(this.id&255); 82 | b[1] = (byte) (Math.abs(x) & 255); 83 | b[2] = (byte)(((Math.abs(x) >> 8) & 255) | (x < 0 ? 128 : 0)); 84 | b[3] = (byte) (Math.abs(y) & 255); 85 | b[4] = (byte)((Math.abs(y) >> 8) & 127 | (y < 0 ? 128 : 0)); 86 | b[5] = (byte) (Math.abs(z) & 255); 87 | b[6] = (byte)((Math.abs(z) >> 8) & 127 | (z < 0 ? 128 : 0)); 88 | return b; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /client/main/Reflection.java: -------------------------------------------------------------------------------- 1 | package client.main; 2 | 3 | import java.util.ArrayList; 4 | 5 | import com.google.common.reflect.ClassPath; 6 | 7 | public class Reflection { 8 | 9 | public static ArrayList> getClasses(final String packageName) { 10 | final ArrayList> classes = new ArrayList>(); 11 | try { 12 | final ClassLoader loader = Thread.currentThread().getContextClassLoader(); 13 | for (final ClassPath.ClassInfo info : ClassPath.from(loader).getAllClasses()) { 14 | if (info.getName().startsWith(packageName)) { 15 | classes.add(info.load()); 16 | } 17 | } 18 | } catch (Exception e) { 19 | e.printStackTrace(); 20 | } 21 | return classes; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client/main/event/Event.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public interface Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventAttack.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.entity.Entity; 4 | 5 | public class EventAttack extends EventCancellableValue { 6 | 7 | public EventAttack(Entity value) { 8 | super(value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client/main/event/EventBlockBreak.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | 5 | public class EventBlockBreak implements Event { 6 | 7 | private BlockPos pos; 8 | 9 | public EventBlockBreak(BlockPos pos) { 10 | this.pos = pos; 11 | } 12 | 13 | public BlockPos getBlockPos() { 14 | return this.pos; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /client/main/event/EventBlockSwing.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.util.EnumFacing; 4 | import net.minecraft.util.math.BlockPos; 5 | 6 | public class EventBlockSwing implements Event { 7 | 8 | private BlockPos loc; 9 | private EnumFacing face; 10 | 11 | public EventBlockSwing(BlockPos loc, EnumFacing face) { 12 | this.loc = loc; 13 | this.face = face; 14 | } 15 | 16 | public BlockPos getBlockPos() { 17 | return this.loc; 18 | } 19 | 20 | public EnumFacing getFace() { 21 | return this.face; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client/main/event/EventCanHarvestBlock.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.block.state.IBlockState; 4 | 5 | public class EventCanHarvestBlock extends EventValue { 6 | 7 | private IBlockState state; 8 | 9 | public EventCanHarvestBlock(Boolean value, IBlockState state) { 10 | super(value); 11 | this.state = state; 12 | } 13 | 14 | public IBlockState getBlock() { 15 | return this.state; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/main/event/EventCancellable.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public interface EventCancellable { 4 | 5 | public boolean isCancelled(); 6 | 7 | public void setCancelled(boolean cancelled); 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventCancellableValue.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventCancellableValue extends EventValue implements EventCancellable { 4 | 5 | private boolean cancelled; 6 | 7 | public EventCancellableValue(T value) { 8 | super(value); 9 | } 10 | 11 | @Override 12 | public boolean isCancelled() { 13 | return this.cancelled; 14 | } 15 | 16 | @Override 17 | public void setCancelled(boolean cancelled) { 18 | this.cancelled = cancelled; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /client/main/event/EventChat.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventChat extends EventCancellableValue { 4 | 5 | public EventChat(String value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventCooldown.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventCooldown extends EventValue { 4 | 5 | public EventCooldown(Float value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventDigSpeed.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.block.state.IBlockState; 4 | 5 | public class EventDigSpeed extends EventValue { 6 | 7 | private IBlockState state; 8 | 9 | public EventDigSpeed(IBlockState state, Float value) { 10 | super(value); 11 | this.state = state; 12 | } 13 | 14 | public IBlockState getBlock() { 15 | return this.state; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/main/event/EventDisconnect.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventDisconnect implements Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventDrawChat.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventDrawChat extends EventCancellableValue { 4 | 5 | public EventDrawChat(Integer value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventEntityRender.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventEntityRender extends EventValue { 4 | 5 | public EventEntityRender(Float value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventGetHeldItem.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | public class EventGetHeldItem extends EventValue { 6 | 7 | public EventGetHeldItem(ItemStack value) { 8 | super(value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client/main/event/EventInLava.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventInLava extends EventValue { 4 | 5 | public EventInLava(Boolean value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventInWater.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventInWater extends EventValue { 4 | 5 | public EventInWater(Boolean value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventIsOnLadder.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventIsOnLadder extends EventValue { 4 | 5 | public EventIsOnLadder(Boolean value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventIsPushed.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventIsPushed extends EventValue { 4 | 5 | public EventIsPushed(Boolean value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventIsSneaking.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventIsSneaking extends EventValue { 4 | 5 | public EventIsSneaking(Boolean value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventIsSpectator.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventIsSpectator extends EventValue { 4 | 5 | public EventIsSpectator(Boolean value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventLoadBlock.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import client.main.Location; 4 | 5 | public class EventLoadBlock extends EventValue { 6 | 7 | public EventLoadBlock(Location loc) { 8 | super(loc); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client/main/event/EventManager.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import java.lang.reflect.Method; 4 | import java.util.HashMap; 5 | import java.util.List; 6 | import java.util.concurrent.CopyOnWriteArrayList; 7 | 8 | public class EventManager { 9 | 10 | private static final HashMap, List> REGISTRY = new HashMap, List>(); 11 | 12 | /** 13 | * Add the target listener to the registry based on the event it's subscribed to. 14 | * @param target 15 | */ 16 | public static void register(Object target) { 17 | Method[] methods = target.getClass().getDeclaredMethods(); 18 | for(final Method method : methods) { 19 | if(validAnnotation(method)) { 20 | Class key = (Class) method.getParameterTypes()[0]; 21 | CopyOnWriteArrayList l = new CopyOnWriteArrayList(); 22 | REGISTRY.putIfAbsent(key, l); 23 | if(!REGISTRY.get(key).contains(method)) { 24 | REGISTRY.get(key).add(new MethodData(method, target)); 25 | } 26 | } 27 | } 28 | } 29 | 30 | /** 31 | * Fire an event to all of our listeners associated with the event. 32 | * @param event 33 | * @return 34 | */ 35 | public static Event fire(Event event) { 36 | List methods = REGISTRY.get(event.getClass()); 37 | if(methods != null) { 38 | for(MethodData m : methods) { 39 | try { 40 | m.getMethod().invoke(m.getTarget(), event); 41 | } catch(Exception e) { 42 | continue; 43 | } 44 | } 45 | } 46 | return event; 47 | } 48 | 49 | private static boolean validAnnotation(Method method) { 50 | return method.isAnnotationPresent(Subscribe.class) && method.getParameterCount() == 1; 51 | } 52 | 53 | public static final class MethodData { 54 | 55 | private final Method method; 56 | private final Object target; 57 | 58 | public MethodData(Method m, Object target) { 59 | this.method = m; 60 | this.target = target; 61 | } 62 | 63 | public Method getMethod() { 64 | return this.method; 65 | } 66 | 67 | public Object getTarget() { 68 | return this.target; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /client/main/event/EventOnLiving.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventOnLiving implements Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventPlayerDamageBlock.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.util.EnumFacing; 4 | import net.minecraft.util.math.BlockPos; 5 | 6 | public class EventPlayerDamageBlock implements Event { 7 | 8 | private BlockPos loc; 9 | private EnumFacing face; 10 | 11 | public EventPlayerDamageBlock(BlockPos loc, EnumFacing face) { 12 | this.loc = loc; 13 | this.face = face; 14 | } 15 | 16 | public BlockPos getBlockPos() { 17 | return this.loc; 18 | } 19 | 20 | public EnumFacing getFace() { 21 | return this.face; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client/main/event/EventRecPacket.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.network.Packet; 4 | 5 | public class EventRecPacket extends EventCancellableValue{ 6 | 7 | public EventRecPacket(Packet value) { 8 | super(value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client/main/event/EventRender.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventRender implements Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventResetBlockRemoving.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventResetBlockRemoving implements Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventRespawn.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventRespawn implements Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventSendPacket.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.network.Packet; 4 | 5 | public class EventSendPacket extends EventCancellableValue { 6 | 7 | public EventSendPacket(Packet value) { 8 | super(value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client/main/event/EventSetSprint.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventSetSprint extends EventValue { 4 | 5 | public EventSetSprint(Boolean value) { 6 | super(value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /client/main/event/EventStr.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import net.minecraft.block.state.IBlockState; 4 | 5 | public class EventStr extends EventValue { 6 | 7 | private IBlockState block; 8 | 9 | public EventStr(float f, IBlockState block) { 10 | super(f); 11 | this.block = block; 12 | } 13 | 14 | public IBlockState getBlock() { 15 | return this.block; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/main/event/EventTick.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventTick implements Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventUpdateEntity.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventUpdateEntity implements Event { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /client/main/event/EventValue.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | public class EventValue implements Event { 4 | 5 | private T value; 6 | 7 | public EventValue(T value) { 8 | this.value = value; 9 | } 10 | 11 | public T getValue() { 12 | return this.value; 13 | } 14 | 15 | public void setValue(T value) { 16 | this.value = value; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /client/main/event/Subscribe.java: -------------------------------------------------------------------------------- 1 | package client.main.event; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.Target; 5 | 6 | import static java.lang.annotation.RetentionPolicy.*; 7 | import static java.lang.annotation.ElementType.*; 8 | 9 | @Retention(value = RUNTIME) 10 | @Target(value = METHOD) 11 | public @interface Subscribe { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /client/main/helper/InventoryHelper.java: -------------------------------------------------------------------------------- 1 | package client.main.helper; 2 | 3 | import client.main.Client; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.client.multiplayer.PlayerControllerMP; 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.inventory.ClickType; 8 | import net.minecraft.item.Item; 9 | import net.minecraft.item.ItemStack; 10 | 11 | public class InventoryHelper { 12 | 13 | public static void move(int from, int to) { 14 | Minecraft mc = Client.getMinecraft(); 15 | EntityPlayer p = mc.player; 16 | PlayerControllerMP controller = mc.playerController; 17 | controller.windowClick(0, from, to, ClickType.SWAP, p); 18 | } 19 | 20 | public static int getItem(int id) { 21 | EntityPlayer p = Client.getMinecraft().player; 22 | for(int i = 0; i < 36; i++) { 23 | ItemStack o = p.inventory.mainInventory.get(i); 24 | if(o != null && Item.getIdFromItem(o.getItem()) == id) { 25 | return i; 26 | } 27 | } 28 | return -1; 29 | } 30 | 31 | public static int getEmptySlot() { 32 | EntityPlayer p = Client.getMinecraft().player; 33 | for(int i = 0; i < 9; i++) { 34 | ItemStack o = p.inventory.mainInventory.get(i); 35 | if(o == null) { 36 | return i; 37 | } 38 | } 39 | return p.inventory.currentItem; 40 | } 41 | 42 | public static boolean isItem(int slot, int id) { 43 | try { 44 | return Item.getIdFromItem(Client.getMinecraft().player.inventory.mainInventory.get(slot).getItem()) == id; 45 | } catch(Exception e) { 46 | return false; 47 | } 48 | } 49 | 50 | public static boolean isItemOffhand(int id) { 51 | return Item.getIdFromItem(Client.getMinecraft().player.inventory.offHandInventory.get(0).getItem()) == id; 52 | } 53 | } -------------------------------------------------------------------------------- /client/main/hook/EntityPlayerSPHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import client.main.event.EventCanHarvestBlock; 4 | import client.main.event.EventChat; 5 | import client.main.event.EventDigSpeed; 6 | import client.main.event.EventGetHeldItem; 7 | import client.main.event.EventInLava; 8 | import client.main.event.EventInWater; 9 | import client.main.event.EventIsOnLadder; 10 | import client.main.event.EventIsPushed; 11 | import client.main.event.EventIsSneaking; 12 | import client.main.event.EventIsSpectator; 13 | import client.main.event.EventManager; 14 | import client.main.event.EventOnLiving; 15 | import client.main.event.EventRespawn; 16 | import client.main.event.EventSetSprint; 17 | import client.main.event.EventUpdateEntity; 18 | import net.minecraft.block.state.IBlockState; 19 | import net.minecraft.client.Minecraft; 20 | import net.minecraft.client.entity.EntityPlayerSP; 21 | import net.minecraft.client.network.NetHandlerPlayClient; 22 | import net.minecraft.item.ItemStack; 23 | import net.minecraft.stats.RecipeBook; 24 | import net.minecraft.stats.StatisticsManager; 25 | import net.minecraft.world.World; 26 | 27 | public class EntityPlayerSPHook extends EntityPlayerSP { 28 | 29 | private NetHandlerPlayClient connection; 30 | 31 | public EntityPlayerSPHook(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandler, StatisticsManager statFile, RecipeBook recipe) { 32 | super(mcIn, worldIn, netHandler, statFile, recipe); 33 | this.connection = netHandler; 34 | } 35 | 36 | public NetHandlerPlayClient getConnection() { 37 | return this.connection; 38 | } 39 | 40 | public boolean isInWater() { 41 | EventInWater e = new EventInWater(super.isInWater()); 42 | EventManager.fire(e); 43 | return e.getValue(); 44 | } 45 | 46 | public boolean isInLava() { 47 | EventInLava e = new EventInLava(super.isInLava()); 48 | EventManager.fire(e); 49 | return e.getValue(); 50 | } 51 | 52 | public void setSprinting(boolean sprinting) { 53 | EventSetSprint e = new EventSetSprint(sprinting); 54 | EventManager.fire(e); 55 | super.setSprinting(e.getValue()); 56 | } 57 | 58 | public boolean isSneaking() { 59 | EventIsSneaking e = new EventIsSneaking(super.isSneaking()); 60 | EventManager.fire(e); 61 | return e.getValue(); 62 | } 63 | 64 | public boolean canHarvestBlock(IBlockState state) { 65 | EventCanHarvestBlock e = new EventCanHarvestBlock(super.canHarvestBlock(state), state); 66 | EventManager.fire(e); 67 | return e.getValue(); 68 | } 69 | 70 | public float getDigSpeed(IBlockState state) { 71 | EventDigSpeed e = new EventDigSpeed(state, super.getDigSpeed(state)); 72 | EventManager.fire(e); 73 | return e.getValue(); 74 | } 75 | 76 | public ItemStack getHeldItemMainhand() { 77 | EventGetHeldItem e = new EventGetHeldItem(super.getHeldItemMainhand()); 78 | EventManager.fire(e); 79 | return e.getValue(); 80 | } 81 | 82 | public boolean isSpectator() { 83 | EventIsSpectator e = new EventIsSpectator(super.isSpectator()); 84 | EventManager.fire(e); 85 | return e.getValue(); 86 | } 87 | 88 | public void sendChatMessage(String message) { 89 | EventChat e = new EventChat(message); 90 | EventManager.fire(e); 91 | if(!e.isCancelled()) { 92 | super.sendChatMessage(message); 93 | } 94 | } 95 | 96 | public void onLivingUpdate() { 97 | super.onLivingUpdate(); 98 | EventManager.fire(new EventOnLiving()); 99 | } 100 | 101 | public boolean isOnLadder() { 102 | EventIsOnLadder e = new EventIsOnLadder(super.isOnLadder()); 103 | EventManager.fire(e); 104 | return e.getValue(); 105 | } 106 | 107 | public void updateEntityActionState() { 108 | super.updateEntityActionState(); 109 | EventManager.fire(new EventUpdateEntity()); 110 | } 111 | 112 | public boolean isPushedByWater() { 113 | EventIsPushed e = new EventIsPushed(super.isPushedByWater()); 114 | EventManager.fire(e); 115 | return e.getValue(); 116 | } 117 | 118 | public void respawnPlayer() { 119 | EventRespawn e = new EventRespawn(); 120 | EventManager.fire(e); 121 | super.respawnPlayer(); 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /client/main/hook/EntityRendererHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.renderer.EntityRenderer; 5 | import net.minecraft.client.resources.IResourceManager; 6 | 7 | public class EntityRendererHook extends EntityRenderer { 8 | 9 | public EntityRendererHook(Minecraft mcIn, IResourceManager resourceManagerIn) { 10 | super(mcIn, resourceManagerIn); 11 | } 12 | 13 | public float getFOVModifier(float partialTicks, boolean useFOVSetting) { 14 | return 90.0F; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /client/main/hook/GuiIngameHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.gui.GuiIngame; 5 | import net.minecraft.client.gui.ScaledResolution; 6 | import net.minecraft.client.renderer.GlStateManager; 7 | 8 | public class GuiIngameHook extends GuiIngame { 9 | 10 | public GuiIngameHook(Minecraft mcIn) { 11 | super(mcIn); 12 | } 13 | 14 | protected void renderPotionEffects(ScaledResolution resolution) { 15 | return; 16 | } 17 | 18 | public void renderSelectedItem(ScaledResolution scaledRes) { 19 | return; 20 | } 21 | 22 | protected void renderVignette(float lightLevel, ScaledResolution scaledRes) { 23 | GlStateManager.depthMask(true); 24 | GlStateManager.enableDepth(); 25 | return; 26 | } 27 | 28 | protected void renderPumpkinOverlay(ScaledResolution scaledRes) { 29 | return; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /client/main/hook/GuiNewChatHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import client.main.event.EventDrawChat; 4 | import client.main.event.EventManager; 5 | import net.minecraft.client.Minecraft; 6 | import net.minecraft.client.gui.GuiNewChat; 7 | 8 | public class GuiNewChatHook extends GuiNewChat { 9 | 10 | public GuiNewChatHook(Minecraft mcIn) { 11 | super(mcIn); 12 | } 13 | 14 | public void drawChat(int updateCounter) { 15 | EventDrawChat e = new EventDrawChat(updateCounter); 16 | EventManager.fire(e); 17 | if(!e.isCancelled()) { 18 | super.drawChat(updateCounter); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /client/main/hook/InventoryPlayerHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import client.main.event.EventManager; 4 | import client.main.event.EventStr; 5 | import net.minecraft.block.state.IBlockState; 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.entity.player.InventoryPlayer; 8 | 9 | public class InventoryPlayerHook extends InventoryPlayer { 10 | 11 | public InventoryPlayerHook(EntityPlayer playerIn) { 12 | super(playerIn); 13 | } 14 | 15 | public float getStrVsBlock(IBlockState state) { 16 | EventStr e = new EventStr(super.getStrVsBlock(state), state); 17 | EventManager.fire(e); 18 | return e.getValue(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /client/main/hook/NetHandlerPlayClientHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import com.mojang.authlib.GameProfile; 4 | 5 | import client.main.event.EventDisconnect; 6 | import client.main.event.EventManager; 7 | import client.main.event.EventSendPacket; 8 | import net.minecraft.client.Minecraft; 9 | import net.minecraft.client.gui.GuiScreen; 10 | import net.minecraft.client.network.NetHandlerPlayClient; 11 | import net.minecraft.network.NetworkManager; 12 | import net.minecraft.network.Packet; 13 | import net.minecraft.util.text.ITextComponent; 14 | 15 | public class NetHandlerPlayClientHook extends NetHandlerPlayClient { 16 | 17 | public NetHandlerPlayClientHook(Minecraft mcIn, GuiScreen p_i46300_2_, NetworkManager networkManagerIn, GameProfile profileIn) { 18 | super(mcIn, p_i46300_2_, networkManagerIn, profileIn); 19 | } 20 | 21 | public void sendPacket(Packet packetIn) { 22 | EventSendPacket e = new EventSendPacket(packetIn); 23 | EventManager.fire(e); 24 | if(!e.isCancelled()) { 25 | super.sendPacket(e.getValue()); 26 | } 27 | } 28 | 29 | public void onDisconnect(ITextComponent reason) { 30 | EventManager.fire(new EventDisconnect()); 31 | super.onDisconnect(reason); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /client/main/hook/PlayerControllerMPHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventAttack; 5 | import client.main.event.EventBlockBreak; 6 | import client.main.event.EventBlockSwing; 7 | import client.main.event.EventManager; 8 | import client.main.event.EventPlayerDamageBlock; 9 | import client.main.event.EventResetBlockRemoving; 10 | import net.minecraft.client.Minecraft; 11 | import net.minecraft.client.entity.EntityPlayerSP; 12 | import net.minecraft.client.multiplayer.PlayerControllerMP; 13 | import net.minecraft.client.network.NetHandlerPlayClient; 14 | import net.minecraft.entity.Entity; 15 | import net.minecraft.entity.player.EntityPlayer; 16 | import net.minecraft.stats.RecipeBook; 17 | import net.minecraft.stats.StatisticsManager; 18 | import net.minecraft.util.EnumFacing; 19 | import net.minecraft.util.math.BlockPos; 20 | import net.minecraft.world.World; 21 | 22 | public class PlayerControllerMPHook extends PlayerControllerMP { 23 | 24 | private NetHandlerPlayClient connection; 25 | 26 | public PlayerControllerMPHook(Minecraft mcIn, NetHandlerPlayClient netHandler) { 27 | super(mcIn, netHandler); 28 | this.connection = netHandler; 29 | } 30 | 31 | public boolean onPlayerDestroyBlock(BlockPos pos) { 32 | EventManager.fire(new EventBlockBreak(pos)); 33 | return super.onPlayerDestroyBlock(pos); 34 | } 35 | 36 | public boolean clickBlock(BlockPos loc, EnumFacing face) { 37 | EventManager.fire(new EventBlockSwing(loc,face)); 38 | return super.clickBlock(loc, face); 39 | } 40 | 41 | public EntityPlayerSP func_192830_a(World worldIn, StatisticsManager statWriter, RecipeBook recipe) { 42 | return new EntityPlayerSPHook(Client.getMinecraft(), worldIn, this.connection, statWriter, recipe); 43 | } 44 | 45 | public boolean onPlayerDamageBlock(BlockPos posBlock, EnumFacing directionFacing) { 46 | EventManager.fire(new EventPlayerDamageBlock(posBlock, directionFacing)); 47 | return super.onPlayerDamageBlock(posBlock, directionFacing); 48 | } 49 | 50 | public void resetBlockRemoving() { 51 | EventManager.fire(new EventResetBlockRemoving()); 52 | super.resetBlockRemoving(); 53 | } 54 | 55 | public void attackEntity(EntityPlayer playerIn, Entity targetEntity) { 56 | EventAttack e = new EventAttack(targetEntity); 57 | EventManager.fire(e); 58 | if(!e.isCancelled()) { 59 | super.attackEntity(playerIn, targetEntity); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /client/main/hook/RenderGlobalHook.java: -------------------------------------------------------------------------------- 1 | package client.main.hook; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.renderer.RenderGlobal; 5 | import net.minecraft.client.renderer.culling.ICamera; 6 | import net.minecraft.entity.Entity; 7 | 8 | public class RenderGlobalHook extends RenderGlobal { 9 | 10 | public RenderGlobalHook(Minecraft mcIn) { 11 | super(mcIn); 12 | } 13 | 14 | public void renderEntities(Entity renderViewEntity, ICamera camera, float partialTicks) { 15 | super.renderEntities(renderViewEntity, camera, partialTicks); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/main/module/AntiAFK.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventRender; 5 | import client.main.event.Subscribe; 6 | import client.main.hook.EntityPlayerSPHook; 7 | import net.minecraft.network.play.client.CPacketAnimation; 8 | import net.minecraft.util.EnumHand; 9 | 10 | @RegisterModule(key = 49, color = 0x665EFF, listed = true) 11 | public class AntiAFK extends Module { 12 | 13 | private long lastPacket; 14 | 15 | private int nextDelay = 60; 16 | 17 | @Subscribe 18 | public void onRender(EventRender e) { 19 | if (lastPacket == 0) 20 | lastPacket = System.currentTimeMillis(); 21 | if (isEnabled()) { 22 | if (getElapsed() >= nextDelay) { 23 | lastPacket = System.currentTimeMillis(); 24 | EntityPlayerSPHook p = (EntityPlayerSPHook) Client.getMinecraft().player; 25 | p.getConnection().sendPacket(new CPacketAnimation(EnumHand.MAIN_HAND)); 26 | } 27 | } 28 | } 29 | 30 | private int getElapsed() { 31 | return (int) (System.currentTimeMillis() - lastPacket) / 1000; 32 | } 33 | 34 | @Override 35 | public void onEnabled() { 36 | lastPacket = System.currentTimeMillis(); 37 | } 38 | 39 | @Override 40 | public void onDisabled() { 41 | 42 | } 43 | 44 | @Override 45 | public String getName() { 46 | return "AntiAFK \2479" + getElapsed(); 47 | } 48 | } -------------------------------------------------------------------------------- /client/main/module/ArmorUI.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventRender; 5 | import client.main.event.Subscribe; 6 | import net.minecraft.block.material.Material; 7 | import net.minecraft.client.gui.ScaledResolution; 8 | import net.minecraft.client.renderer.BufferBuilder; 9 | import net.minecraft.client.renderer.GlStateManager; 10 | import net.minecraft.client.renderer.Tessellator; 11 | import net.minecraft.client.renderer.vertex.DefaultVertexFormats; 12 | import net.minecraft.entity.player.EntityPlayer; 13 | import net.minecraft.item.ItemAir; 14 | import net.minecraft.item.ItemStack; 15 | import net.minecraft.util.NonNullList; 16 | 17 | @RegisterModule 18 | public class ArmorUI extends Module { 19 | 20 | @Subscribe 21 | public void onRender(EventRender e) { 22 | EntityPlayer player = Client.getMinecraft().player; 23 | NonNullList equipped = player.inventory.armorInventory; 24 | ScaledResolution res = Client.res(); 25 | int barWidth = 60; 26 | int k = 0; 27 | if (player.isCreative()) 28 | return; 29 | for (int i = 0; i < equipped.size(); i++) { 30 | ItemStack o = equipped.get(i); 31 | if (!(o.getItem() instanceof ItemAir)) { 32 | float dura = (float) (o.getMaxDamage() - o.getItemDamage()) / o.getMaxDamage(); 33 | int j = (int) Math.round(dura * barWidth); 34 | int z = (int) Math.round(255.0D - (double) o.getItemDamage() * 255.0D / (double) o.getMaxDamage()); 35 | GlStateManager.disableDepth(); 36 | GlStateManager.disableTexture2D(); 37 | GlStateManager.disableAlpha(); 38 | GlStateManager.disableBlend(); 39 | Tessellator tessellator = Tessellator.getInstance(); 40 | BufferBuilder vertexbuffer = tessellator.getBuffer(); 41 | int dX = res.getScaledWidth() / 2 + 30; 42 | int dY = res.getScaledHeight() - 43 - k * 2 - (player.isInsideOfMaterial(Material.WATER) ? 10 : 0); 43 | draw(vertexbuffer, dX, dY, barWidth, 2, 0, 0, 0, 255); 44 | draw(vertexbuffer, dX, dY, barWidth, 1, (255 - z) / 4, 69, 0, 255); 45 | draw(vertexbuffer, barWidth - j + dX, dY, j, 1, 255 - z, z, 0, 255); 46 | GlStateManager.enableBlend(); 47 | GlStateManager.enableAlpha(); 48 | GlStateManager.enableTexture2D(); 49 | GlStateManager.enableDepth(); 50 | k++; 51 | } 52 | } 53 | } 54 | 55 | private void draw(BufferBuilder renderer, int x, int y, int width, int height, int red, int green, int blue, 56 | int alpha) { 57 | renderer.begin(7, DefaultVertexFormats.POSITION_COLOR); 58 | renderer.pos((double) (x + 0), (double) (y + 0), 0.0D).color(red, green, blue, alpha).endVertex(); 59 | renderer.pos((double) (x + 0), (double) (y + height), 0.0D).color(red, green, blue, alpha).endVertex(); 60 | renderer.pos((double) (x + width), (double) (y + height), 0.0D).color(red, green, blue, alpha).endVertex(); 61 | renderer.pos((double) (x + width), (double) (y + 0), 0.0D).color(red, green, blue, alpha).endVertex(); 62 | Tessellator.getInstance().draw(); 63 | } 64 | 65 | @Override 66 | public void onEnabled() { 67 | 68 | } 69 | 70 | @Override 71 | public void onDisabled() { 72 | 73 | } 74 | 75 | @Override 76 | public String getName() { 77 | return null; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /client/main/module/AutoFish.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventRecPacket; 5 | import client.main.event.EventRender; 6 | import client.main.event.EventSendPacket; 7 | import client.main.event.Subscribe; 8 | import client.main.helper.InventoryHelper; 9 | import client.main.hook.EntityPlayerSPHook; 10 | import net.minecraft.client.Minecraft; 11 | import net.minecraft.entity.Entity; 12 | import net.minecraft.entity.player.EntityPlayer; 13 | import net.minecraft.entity.projectile.EntityFishHook; 14 | import net.minecraft.network.Packet; 15 | import net.minecraft.network.play.client.CPacketHeldItemChange; 16 | import net.minecraft.network.play.client.CPacketPlayerTryUseItem; 17 | import net.minecraft.network.play.server.SPacketParticles; 18 | import net.minecraft.util.EnumHand; 19 | import net.minecraft.util.EnumParticleTypes; 20 | import net.minecraft.util.math.RayTraceResult; 21 | import net.minecraft.util.math.Vec3d; 22 | 23 | @RegisterModule(key = 37, color = 0x3F7F47, secondary_color = 0xFF1C07, listed = true) 24 | public class AutoFish extends Module { 25 | 26 | private long nextTick; 27 | 28 | private int lastSlot = -1; 29 | 30 | private final int FISHING_ROD = 346; 31 | 32 | @Subscribe 33 | public void onSendPacket(EventSendPacket e) { 34 | Packet packet = e.getValue(); 35 | if (isEnabled() && packet instanceof CPacketHeldItemChange && getFishingRod() != -1) { 36 | CPacketHeldItemChange change = (CPacketHeldItemChange) packet; 37 | if (lastSlot != -1 && change.getSlotId() != lastSlot) { 38 | e.setValue(new CPacketHeldItemChange(lastSlot)); 39 | } 40 | } 41 | } 42 | 43 | @Subscribe 44 | public void onReceivePacket(EventRecPacket e) { 45 | Packet packet = e.getValue(); 46 | if (isEnabled() && packet instanceof SPacketParticles) { 47 | SPacketParticles particle = (SPacketParticles) packet; 48 | if (particle.getParticleType() == EnumParticleTypes.WATER_WAKE) { 49 | if (particle.getParticleCount() == 6 && particle.getParticleSpeed() == 0.2F) { 50 | EntityFishHook o = getFishHook(); 51 | if (o != null && o.getDistance(particle.getXCoordinate(), particle.getYCoordinate(), 52 | particle.getZCoordinate()) < 1.5) { 53 | if (equipRod()) { 54 | toss(); 55 | toss(); 56 | } 57 | } 58 | } 59 | } 60 | } 61 | } 62 | 63 | private boolean equipRod() { 64 | int slot = getFishingRod(); 65 | if (slot < 0) 66 | return false; 67 | EntityPlayerSPHook p = (EntityPlayerSPHook) Client.getMinecraft().player; 68 | lastSlot = slot; 69 | if (slot >= 9) { 70 | int chosenSlot = InventoryHelper.getEmptySlot(); 71 | InventoryHelper.move(slot, chosenSlot); 72 | lastSlot = chosenSlot; 73 | } 74 | p.getConnection().sendPacket(new CPacketHeldItemChange(lastSlot)); 75 | return true; 76 | } 77 | 78 | private int getFishingRod() { 79 | return InventoryHelper.getItem(FISHING_ROD); 80 | } 81 | 82 | private void toss() { 83 | EntityPlayerSPHook p = (EntityPlayerSPHook) Client.getMinecraft().player; 84 | p.getConnection().sendPacket(new CPacketPlayerTryUseItem(EnumHand.MAIN_HAND)); 85 | } 86 | 87 | private EntityFishHook getFishHook() { 88 | Minecraft mc = Client.getMinecraft(); 89 | for (Entity e : mc.world.loadedEntityList) { 90 | if (e instanceof EntityFishHook) { 91 | EntityFishHook o = (EntityFishHook) e; 92 | if (o.angler == mc.player) { 93 | return o; 94 | } 95 | } 96 | } 97 | return mc.player.fishEntity; 98 | } 99 | 100 | private boolean isFishing() { 101 | return getFishHook() != null; 102 | } 103 | 104 | private boolean facingWater(int dist) { 105 | Minecraft mc = Client.getMinecraft(); 106 | EntityPlayer p = mc.player; 107 | Vec3d vec3d = ((Entity) p).getPositionEyes(1F); 108 | Vec3d vec3d1 = ((Entity) p).getLook(1F); 109 | Vec3d vec3d2 = vec3d.addVector(vec3d1.xCoord * dist, vec3d1.yCoord * dist, vec3d1.zCoord * dist); 110 | RayTraceResult result = mc.world.rayTraceBlocks(vec3d, vec3d2, true, false, true); 111 | if (result.typeOfHit == RayTraceResult.Type.BLOCK) { 112 | return mc.world.getBlockState(result.getBlockPos()).toString().contains("water"); 113 | } 114 | return false; 115 | } 116 | 117 | @Subscribe 118 | public void onRender(EventRender e) { 119 | if (isEnabled()) { 120 | if (lastSlot == -1 || Client.getMinecraft().player.inventory.mainInventory.isEmpty() || !isFishing()) { 121 | if (System.currentTimeMillis() >= nextTick) { 122 | onEnabled(); 123 | } 124 | } 125 | active_color = getFishingRod() != -1 ? getColor() : getSecondaryColor(); 126 | } 127 | } 128 | 129 | @Override 130 | public void onEnabled() { 131 | if (equipRod() && facingWater(15)) { 132 | toss(); 133 | } 134 | nextTick = System.currentTimeMillis() + 1500; 135 | } 136 | 137 | @Override 138 | public void onDisabled() { 139 | if (isFishing()) { 140 | onEnabled(); 141 | } 142 | EntityPlayerSPHook p = (EntityPlayerSPHook) Client.getMinecraft().player; 143 | p.getConnection().sendPacket(new CPacketHeldItemChange(p.inventory.currentItem)); 144 | } 145 | 146 | @Override 147 | public String getName() { 148 | return getFishingRod() != -1 ? "AutoFish" : "No rod!"; 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /client/main/module/AutoRun.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventChat; 5 | import client.main.event.EventSendPacket; 6 | import client.main.event.EventUpdateEntity; 7 | import client.main.event.Subscribe; 8 | import net.minecraft.block.material.MaterialLiquid; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.entity.EntityPlayerSP; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraft.network.Packet; 13 | import net.minecraft.network.play.client.CPacketPlayerDigging; 14 | import net.minecraft.util.math.BlockPos; 15 | import net.minecraft.util.text.TextComponentString; 16 | 17 | @RegisterModule(key = 35, color = 0xFF21F3, listed = true) 18 | public class AutoRun extends Module { 19 | 20 | private boolean snapPitch = true, snapYaw = true; 21 | 22 | @Subscribe 23 | public void onSendPacket(EventSendPacket e) { 24 | Packet packet = e.getValue(); 25 | if (isEnabled() && packet instanceof CPacketPlayerDigging) { 26 | CPacketPlayerDigging digging = (CPacketPlayerDigging) packet; 27 | e.setCancelled(isNearLiquid(digging.getPosition())); 28 | } 29 | } 30 | 31 | @Subscribe 32 | public void onUpdateEntity(EventUpdateEntity e) { 33 | Minecraft mc = Client.getMinecraft(); 34 | EntityPlayerSP p = mc.player; 35 | 36 | if (isEnabled()) { 37 | boolean b = true; 38 | for (double i = -2; i < 3; i += 0.1) { 39 | b = b & !(mc.world.getBlockState( 40 | new BlockPos(p.posX + p.getLookVec().xCoord, p.posY - 1 + i, p.posZ + p.getLookVec().zCoord)) 41 | .getMaterial() instanceof MaterialLiquid); 42 | } 43 | 44 | BlockPos pos = new BlockPos(p.posX + p.motionX, p.posY, p.posZ + p.motionZ).down(); 45 | if (b && mc.world.isBlockFullCube(pos) && !mc.world.isAirBlock(pos)) { 46 | mc.gameSettings.keyBindForward.setKeyBindState(mc.gameSettings.keyBindForward.getKeyCode(), true); 47 | } 48 | 49 | if ((snapYaw || snapPitch) && mc.mouseHelper.deltaX + mc.mouseHelper.deltaY == 0) { 50 | if (snapYaw) { 51 | p.rotationYaw = Math.round(p.rotationYaw / 45) * 45; 52 | } 53 | if (snapPitch) { 54 | p.rotationPitch = Math.round(p.rotationPitch / 90) * 90; 55 | } 56 | } 57 | } 58 | } 59 | 60 | @Subscribe 61 | public void onChat(EventChat e) { 62 | String message = e.getValue(); 63 | if (message.equals("-snapPitch")) { 64 | snapPitch = !snapPitch; 65 | message((snapPitch ? "\247aEn" : "\247cDis") + "abled snapPitch!"); 66 | e.setCancelled(true); 67 | } else if (message.equals("-snapYaw")) { 68 | snapYaw = !snapYaw; 69 | message((snapYaw ? "\247aEn" : "\247cDis") + "abled snapYaw!"); 70 | e.setCancelled(true); 71 | } 72 | } 73 | 74 | private boolean isNearLiquid(BlockPos pos) { 75 | return isLiquid(pos.east()) || isLiquid(pos.west()) || isLiquid(pos.south()) || isLiquid(pos.north()) 76 | || isLiquid(pos.up()) || isLiquid(pos.down()); 77 | } 78 | 79 | private boolean isLiquid(BlockPos pos) { 80 | return Client.getMinecraft().world.getBlockState(pos).getMaterial() instanceof MaterialLiquid; 81 | } 82 | 83 | private void message(String s) { 84 | EntityPlayer p = Client.getMinecraft().player; 85 | p.addChatMessage(new TextComponentString(s)); 86 | } 87 | 88 | @Override 89 | public void onEnabled() { 90 | 91 | } 92 | 93 | @Override 94 | public void onDisabled() { 95 | 96 | } 97 | 98 | @Override 99 | public String getName() { 100 | return "AutoRun"; 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /client/main/module/Build.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.awt.Color; 4 | import java.io.FileInputStream; 5 | import java.io.FileNotFoundException; 6 | import java.io.FileOutputStream; 7 | import java.io.IOException; 8 | import java.util.ArrayList; 9 | import java.util.HashMap; 10 | import java.util.Iterator; 11 | import java.util.Map; 12 | 13 | import org.lwjgl.input.Keyboard; 14 | import org.lwjgl.opengl.GL11; 15 | 16 | import client.main.Client; 17 | import client.main.Location; 18 | import client.main.event.EventChat; 19 | import client.main.event.EventEntityRender; 20 | import client.main.event.EventRender; 21 | import client.main.event.Subscribe; 22 | import client.main.helper.InventoryHelper; 23 | import client.main.hook.EntityPlayerSPHook; 24 | import net.minecraft.block.Block; 25 | import net.minecraft.block.state.IBlockState; 26 | import net.minecraft.client.Minecraft; 27 | import net.minecraft.client.multiplayer.PlayerControllerMP; 28 | import net.minecraft.client.renderer.entity.RenderManager; 29 | import net.minecraft.entity.player.EntityPlayer; 30 | import net.minecraft.init.Blocks; 31 | import net.minecraft.inventory.ClickType; 32 | import net.minecraft.network.play.client.CPacketAnimation; 33 | import net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock; 34 | import net.minecraft.util.EnumFacing; 35 | import net.minecraft.util.EnumHand; 36 | import net.minecraft.util.math.BlockPos; 37 | import net.minecraft.util.math.Vec3d; 38 | import net.minecraft.util.text.TextComponentString; 39 | 40 | @RegisterModule(key = Keyboard.KEY_J, color = 0x2FC997, listed = true) 41 | public class Build extends Module { 42 | 43 | private static HashMap work = new HashMap(); 44 | 45 | private static int distance = 3; 46 | 47 | private static int renderDistance = 100; 48 | 49 | private final int OFFHAND = 45; 50 | 51 | private long last = 0; 52 | 53 | private Color color = new Color(151 | (201 << 8) | (47 << 16)); 54 | 55 | private Location start, end; 56 | 57 | private boolean equipBlock(int id) { 58 | if (!InventoryHelper.isItemOffhand(id)) { 59 | int slot = InventoryHelper.getItem(id); 60 | if (slot != -1) { 61 | EntityPlayer p = Client.getMinecraft().player; 62 | Minecraft mc = Client.getMinecraft(); 63 | PlayerControllerMP controller = mc.playerController; 64 | if (slot <= 8) { 65 | slot = 45 - (9 - slot); 66 | } 67 | controller.windowClick(0, slot, 0, ClickType.PICKUP, p); 68 | controller.windowClick(0, OFFHAND, 0, ClickType.PICKUP, p); 69 | } else { 70 | return false; 71 | } 72 | } 73 | return true; 74 | } 75 | 76 | @Subscribe 77 | public void onChat(EventChat e) { 78 | String message = e.getValue(); 79 | if (message.startsWith("-start")) { 80 | start = new Location(Client.getMinecraft().player.getPosition()); 81 | e.setCancelled(true); 82 | } else if (message.startsWith("-end")) { 83 | end = new Location(Client.getMinecraft().player.getPosition()); 84 | e.setCancelled(true); 85 | } else if (message.startsWith("-save")) { 86 | e.setCancelled(true); 87 | String[] args = message.split(" "); 88 | if (args.length > 1) { 89 | try { 90 | saveBounds(args[1]); 91 | } catch (IOException e1) { 92 | e1.printStackTrace(); 93 | } 94 | } 95 | } else if (message.startsWith("-load")) { 96 | e.setCancelled(true); 97 | String[] args = message.split(" "); 98 | if (start == null && args.length <= 3) { 99 | message("\247cSet a start position first."); 100 | } else { 101 | if (args.length > 1) { 102 | if (args.length > 3) { 103 | start = new Location(new BlockPos(Integer.parseInt(args[2]), Integer.parseInt(args[3]), 104 | Integer.parseInt(args[4])), -1); 105 | } 106 | loadModel(args[1]); 107 | } 108 | } 109 | } else if (message.startsWith("-rotate")) { 110 | rotateYaw(Math.PI / 2); 111 | message("\2479Rotated by 90 degrees on the y-axis."); 112 | e.setCancelled(true); 113 | } else if (message.startsWith("-render")) { 114 | String[] args = message.split(" "); 115 | if (args.length > 1) { 116 | renderDistance = Integer.parseInt(args[1]); 117 | } 118 | e.setCancelled(true); 119 | } 120 | } 121 | 122 | private void message(String s) { 123 | EntityPlayer p = Client.getMinecraft().player; 124 | p.addChatMessage(new TextComponentString(s)); 125 | } 126 | 127 | public void rotateYaw(double angle) { 128 | double cos = Math.cos(angle); 129 | double sin = Math.sin(angle); 130 | Iterator it = work.entrySet().iterator(); 131 | 132 | double mx = (double) (start.getX() + (end.getX() - start.getX()) / 2); 133 | double mz = (double) (start.getZ() + (end.getZ() - start.getZ()) / 2); 134 | 135 | HashMap new_work = new HashMap(); 136 | // easier to generate a new_work hashmap when rotating since the hashcodes 137 | // change 138 | 139 | start = new Location(rotateYaw(start.getPos(), angle, mx, mz), start.getId()); 140 | end = new Location(rotateYaw(end.getPos(), angle, mx, mz), end.getId()); 141 | 142 | while (it.hasNext()) { 143 | Map.Entry pair = (Map.Entry) it.next(); 144 | Location l = (Location) (pair.getValue()); 145 | BlockPos pos = l.getPos(); 146 | BlockPos rotated = rotateYaw(pos, angle, mx, mz); 147 | Location newloc = new Location(rotated, l.getId()); 148 | new_work.put(newloc.hashCode(), newloc); 149 | } 150 | work = new_work; 151 | } 152 | 153 | private BlockPos rotateYaw(BlockPos pos, double angle, double mx, double mz) { 154 | double cos = Math.cos(angle); 155 | double sin = Math.sin(angle); 156 | double x = pos.getX() - mx; 157 | double z = pos.getZ() - mz; 158 | double newX = (double) (cos * x + sin * z); 159 | double newY = (double) pos.getY(); 160 | double newZ = (double) (-sin * x + cos * z); 161 | return new BlockPos((int) (mx + newX), (int) newY, (int) (mz + newZ)); 162 | } 163 | 164 | public void saveBounds(String filename) throws IOException { 165 | if (!filename.endsWith(".model")) { 166 | filename += ".model"; 167 | } 168 | 169 | FileOutputStream out = null; 170 | 171 | try { 172 | out = new FileOutputStream(filename); 173 | } catch (FileNotFoundException e1) { 174 | e1.printStackTrace(); 175 | } 176 | 177 | Iterator it = BlockPos.getAllInBox(start.getPos(), end.getPos()).iterator(); 178 | 179 | out.write(new Location( 180 | new BlockPos(end.getX() - start.getX(), end.getY() - start.getY(), end.getZ() - start.getZ()), -1) 181 | .toBytes()); 182 | 183 | while (it.hasNext()) { 184 | BlockPos pos = it.next(); 185 | IBlockState state = Client.getMinecraft().world.getBlockState(pos); 186 | if (state.getBlock() != Blocks.AIR && state.isFullBlock()) { 187 | if (out != null) { 188 | out.write(new Location(new BlockPos(pos.getX() - start.getX(), pos.getY() - start.getY(), 189 | pos.getZ() - start.getZ()), Block.getIdFromBlock(state.getBlock())).toBytes()); 190 | } 191 | } 192 | } 193 | 194 | if (out != null) { 195 | try { 196 | out.close(); 197 | message("\247aSaved " + filename + "!"); 198 | } catch (IOException e) { 199 | message("\247cError writing to " + filename + "."); 200 | e.printStackTrace(); 201 | } 202 | } 203 | } 204 | 205 | @Subscribe 206 | public void onEntityRender(EventEntityRender e) { 207 | Minecraft mc = Client.getMinecraft(); 208 | if (isEnabled()) { 209 | Iterator it = work.entrySet().iterator(); 210 | while (it.hasNext()) { 211 | Map.Entry pair = (Map.Entry) it.next(); 212 | BlockPos pos = ((Location) (pair.getValue())).getPos(); 213 | if (mc.player.getDistanceSqToCenter(pos) <= renderDistance) { 214 | drawBlock(pos, false); 215 | } 216 | } 217 | 218 | if (start != null & end != null) { 219 | drawBound(); 220 | } 221 | } 222 | } 223 | 224 | private void drawBound() { 225 | Minecraft mc = Client.getMinecraft(); 226 | RenderManager r = mc.getRenderManager(); 227 | GL11.glDisable(GL11.GL_LIGHTING); 228 | GL11.glLineWidth(1.0F); 229 | 230 | GL11.glDepthMask(true); 231 | GL11.glEnable(GL11.GL_DEPTH_TEST); 232 | GL11.glPushMatrix(); 233 | GL11.glEnable(GL11.GL_BLEND); 234 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 235 | 236 | double dX = end.getX() - start.getX(); 237 | double dZ = end.getZ() - start.getZ(); 238 | double dY = end.getY() - start.getY(); 239 | 240 | if (dX == 0) { 241 | dX = 1; 242 | } 243 | 244 | if (dZ == 0) { 245 | dZ = 1; 246 | } 247 | 248 | if (dY == 0) { 249 | dY = 1; 250 | } 251 | 252 | double sx = (double) dX / Math.abs(dX); 253 | double sz = (double) dZ / Math.abs(dZ); 254 | double sy = (double) dY / Math.abs(dY); 255 | 256 | double a = 0.01; 257 | double b = 0.01; 258 | double c = 0.01; 259 | double d = 0.01; 260 | 261 | double e = 0.01; 262 | double f = 0.01; 263 | 264 | if (sx > 0 && sz > 0) { 265 | c = 0.99; 266 | d = 0.99; 267 | } 268 | 269 | if (sx > 0 && sz < 0) { 270 | b = 0.99; 271 | c = 0.99; 272 | } 273 | 274 | if (sy > 0) { 275 | e = 0.01; 276 | f = 0.99; 277 | } else { 278 | e = 0.99; 279 | f = 0.01; 280 | } 281 | 282 | if (sx < 0 && sz > 0) { 283 | a = 0.99; 284 | d = 0.99; 285 | } 286 | 287 | if (sx < 0 && sz < 0) { 288 | a = 0.99; 289 | b = 0.99; 290 | } 291 | 292 | double startX = start.getX() + a; 293 | double startY = start.getY() + e; 294 | double startZ = start.getZ() + b; 295 | 296 | double endX = end.getX() + c; 297 | double endY = end.getY() + f; 298 | double endZ = end.getZ() + d; 299 | 300 | GL11.glDisable(GL11.GL_TEXTURE_2D); 301 | 302 | GL11.glBegin(GL11.GL_LINES); 303 | 304 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 305 | (double) color.getBlue() / 255.0, 0.5); 306 | 307 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 308 | GL11.glVertex3d(endX - r.renderPosX + (startX - endX), endY - r.renderPosY, endZ - r.renderPosZ); 309 | 310 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 311 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 312 | 313 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 314 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 315 | 316 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 317 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 318 | 319 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 320 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 321 | 322 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 323 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 324 | 325 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 326 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 327 | 328 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 329 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 330 | 331 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 332 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 333 | 334 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 335 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 336 | 337 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 338 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 339 | 340 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 341 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 342 | 343 | GL11.glEnd(); 344 | 345 | GL11.glDisable(GL11.GL_CULL_FACE); 346 | 347 | GL11.glBegin(GL11.GL_QUADS); 348 | 349 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 350 | (double) color.getBlue() / 255.0, (double) 0.1011); 351 | 352 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 353 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 354 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 355 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 356 | 357 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 358 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 359 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 360 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 361 | 362 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 363 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 364 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 365 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 366 | 367 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 368 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 369 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 370 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 371 | 372 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 373 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 374 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 375 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 376 | 377 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 378 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 379 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 380 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 381 | 382 | GL11.glEnd(); 383 | 384 | GL11.glEnable(GL11.GL_CULL_FACE); 385 | GL11.glDepthMask(true); 386 | GL11.glEnable(GL11.GL_TEXTURE_2D); 387 | GL11.glEnable(GL11.GL_DEPTH_TEST); 388 | GL11.glPopMatrix(); 389 | } 390 | 391 | private void drawBlock(BlockPos l, boolean depth) { 392 | Minecraft mc = Client.getMinecraft(); 393 | IBlockState state = mc.world.getBlockState(l); 394 | RenderManager r = mc.getRenderManager(); 395 | GL11.glDisable(GL11.GL_LIGHTING); 396 | GL11.glLineWidth(1.0F); 397 | 398 | if (!depth) { 399 | GL11.glDepthMask(false); 400 | GL11.glDisable(GL11.GL_DEPTH_TEST); 401 | } 402 | 403 | GL11.glPushMatrix(); 404 | GL11.glEnable(GL11.GL_BLEND); 405 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 406 | 407 | double varX = l.getX() + 0.5; 408 | double varY = l.getY(); 409 | double varZ = l.getZ() + 0.5; 410 | 411 | GL11.glDisable(GL11.GL_TEXTURE_2D); 412 | double w = 0.5; 413 | double h = 1.0; 414 | 415 | GL11.glBegin(GL11.GL_LINES); 416 | 417 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 418 | (double) color.getBlue() / 255.0, 0.5); 419 | 420 | Location up = work.get(new Location(new BlockPos(l.getX(), l.getY() + 1, l.getZ()), 1).hashCode()); 421 | Location down = work.get(new Location(new BlockPos(l.getX(), l.getY() - 1, l.getZ()), 1).hashCode()); 422 | Location left = work.get(new Location(new BlockPos(l.getX() - 1, l.getY(), l.getZ()), 1).hashCode()); 423 | Location right = work.get(new Location(new BlockPos(l.getX() + 1, l.getY(), l.getZ()), 1).hashCode()); 424 | Location forward = work.get(new Location(new BlockPos(l.getX(), l.getY(), l.getZ() + 1), 1).hashCode()); 425 | Location backward = work.get(new Location(new BlockPos(l.getX(), l.getY(), l.getZ() - 1), 1).hashCode()); 426 | 427 | if (forward == null) { 428 | if (down == null) { 429 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 430 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 431 | } 432 | 433 | if (left == null) { 434 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 435 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 436 | } 437 | 438 | if (right == null) { 439 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 440 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 441 | } 442 | 443 | if (up == null) { 444 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 445 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 446 | } 447 | } 448 | 449 | if (right == null) { 450 | if (down == null) { 451 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 452 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 453 | } 454 | 455 | if (up == null) { 456 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 457 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 458 | } 459 | 460 | if (backward == null) { 461 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 462 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 463 | } 464 | } 465 | 466 | if (backward == null) { 467 | if (left == null) { 468 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 469 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 470 | } 471 | 472 | if (up == null) { 473 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 474 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 475 | } 476 | 477 | if (down == null) { 478 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 479 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 480 | } 481 | } 482 | 483 | if (left == null) { 484 | if (down == null) { 485 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 486 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 487 | } 488 | 489 | if (up == null) { 490 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 491 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 492 | } 493 | } 494 | 495 | GL11.glEnd(); 496 | 497 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 498 | (double) color.getBlue() / 255.0, (double) 0.12); 499 | GL11.glDisable(GL11.GL_CULL_FACE); 500 | GL11.glBegin(GL11.GL_QUADS); 501 | 502 | if (backward == null) { 503 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 504 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 505 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 506 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 507 | } 508 | 509 | if (forward == null) { 510 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 511 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 512 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 513 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 514 | } 515 | 516 | if (right == null) { 517 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 518 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 519 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 520 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 521 | } 522 | 523 | if (left == null) { 524 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 525 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 526 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 527 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 528 | } 529 | 530 | if (down == null) { 531 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 532 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 533 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 534 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 535 | } 536 | 537 | if (up == null) { 538 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 539 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 540 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 541 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 542 | } 543 | 544 | GL11.glEnd(); 545 | GL11.glEnable(GL11.GL_CULL_FACE); 546 | 547 | if (!depth) { 548 | GL11.glDepthMask(true); 549 | GL11.glEnable(GL11.GL_DEPTH_TEST); 550 | } 551 | 552 | GL11.glEnable(GL11.GL_TEXTURE_2D); 553 | GL11.glPopMatrix(); 554 | } 555 | 556 | private BlockPos getMin() { 557 | Minecraft mc = Client.getMinecraft(); 558 | EntityPlayer p = mc.player; 559 | BlockPos min = null; 560 | Iterator it = work.entrySet().iterator(); 561 | while (it.hasNext()) { 562 | Map.Entry pair = (Map.Entry) it.next(); 563 | BlockPos pos = (BlockPos) pair.getValue(); 564 | if (min == null || p.getDistance(pos.getX(), pos.getY(), pos.getZ()) < p.getDistance(min.getX(), min.getY(), 565 | min.getZ())) { 566 | if (mc.world.getBlockState(pos.add(0, -1, 0)).getBlock() != Blocks.AIR) { 567 | min = pos; 568 | } 569 | } 570 | } 571 | return min; 572 | } 573 | 574 | private int getLowestLevel(int distance) { 575 | Minecraft mc = Client.getMinecraft(); 576 | EntityPlayer p = mc.player; 577 | int i = (int) p.posY + 1; 578 | Iterator it = work.entrySet().iterator(); 579 | while (it.hasNext()) { 580 | Map.Entry pair = (Map.Entry) it.next(); 581 | Location l = (Location) pair.getValue(); 582 | BlockPos pos = l.getPos(); 583 | double dx = p.posX - pos.getX(); 584 | double dy = p.posY - pos.getY(); 585 | double dz = p.posZ - pos.getZ(); 586 | if (Math.sqrt(dx * dx + dz * dz + dy * dy) <= distance) { 587 | if (pos.getY() < i) { 588 | i = pos.getY(); 589 | } 590 | } 591 | } 592 | return i; 593 | } 594 | 595 | @Subscribe 596 | public void onRender(EventRender e) { 597 | if (isEnabled() && System.currentTimeMillis() > last) { 598 | Minecraft mc = Client.getMinecraft(); 599 | EntityPlayer p = mc.player; 600 | 601 | Iterator it = work.entrySet().iterator(); 602 | int count = 0; 603 | 604 | boolean under = false; 605 | 606 | int lowest = getLowestLevel(4); 607 | 608 | while (it.hasNext()) { 609 | Map.Entry pair = (Map.Entry) it.next(); 610 | Location l = (Location) pair.getValue(); 611 | BlockPos pos = l.getPos(); 612 | Block forward = mc.world.getBlockState(pos.add(0, 0, 1)).getBlock(); 613 | Block backward = mc.world.getBlockState(pos.add(0, 0, -1)).getBlock(); 614 | Block left = mc.world.getBlockState(pos.add(-1, 0, 0)).getBlock(); 615 | Block right = mc.world.getBlockState(pos.add(1, 0, 0)).getBlock(); 616 | Block down = mc.world.getBlockState(pos.add(0, -1, 0)).getBlock(); 617 | Block up = mc.world.getBlockState(pos.add(0, 1, 0)).getBlock(); 618 | float dist = 10; 619 | 620 | double dot = p.getLookVec().dotProduct( 621 | new Vec3d((int) p.posX - pos.getX(), (int) p.posY - pos.getY(), (int) p.posZ - pos.getZ()) 622 | .normalize()); 623 | if (lowest == pos.getY() && p.getDistance(pos.getX(), pos.getY(), pos.getZ()) <= distance && dot < 0) { 624 | if (down != Blocks.AIR) { 625 | placeBlock(l.getId(), pos.add(0, -1, 0), EnumFacing.UP); 626 | count++; 627 | } else if (left != Blocks.AIR) { 628 | placeBlock(l.getId(), pos.add(-1, 0, 0), EnumFacing.EAST); 629 | count++; 630 | } else if (right != Blocks.AIR) { 631 | placeBlock(l.getId(), pos.add(1, 0, 0), EnumFacing.WEST); 632 | count++; 633 | } else if (forward != Blocks.AIR) { 634 | placeBlock(l.getId(), pos.add(0, 0, 1), EnumFacing.NORTH); 635 | count++; 636 | } else if (backward != Blocks.AIR) { 637 | placeBlock(l.getId(), pos.add(0, 0, -1), EnumFacing.SOUTH); 638 | count++; 639 | } else if (up != Blocks.AIR) { 640 | placeBlock(l.getId(), pos.add(0, 1, 0), EnumFacing.DOWN); 641 | count++; 642 | } 643 | 644 | if (count > 4) { 645 | break; 646 | } 647 | } 648 | } 649 | last = System.currentTimeMillis() + 150; 650 | } 651 | } 652 | 653 | private void removeFilled() { 654 | Minecraft mc = Client.getMinecraft(); 655 | 656 | Iterator it = work.entrySet().iterator(); 657 | ArrayList remove = new ArrayList(); 658 | 659 | while (it.hasNext()) { 660 | Map.Entry pair = (Map.Entry) it.next(); 661 | Location pos = (Location) pair.getValue(); 662 | if (mc.world.getBlockState(pos.getPos()).getBlock() != Blocks.AIR) { 663 | remove.add(pair.getKey()); 664 | } 665 | } 666 | 667 | for (Object o : remove) { 668 | work.remove(o); 669 | } 670 | } 671 | 672 | private void loadModel(String filename) { 673 | if (!filename.endsWith(".model")) { 674 | filename += ".model"; 675 | } 676 | 677 | try { 678 | FileInputStream input = new FileInputStream(filename); 679 | byte[] b; 680 | work.clear(); 681 | try { 682 | b = new byte[input.available()]; 683 | input.read(b); 684 | for (int i = 0; i < 7; i += 7) { 685 | byte[] slice = new byte[7]; 686 | for (int k = 0; k < slice.length; k++) { 687 | slice[k] = b[i + k]; 688 | } 689 | Location l = Location.readBytes(slice); 690 | end = start.add(l.getX(), l.getY(), l.getZ()); 691 | } 692 | 693 | for (int i = 7; i < b.length; i += 7) { 694 | byte[] slice = new byte[7]; 695 | for (int k = 0; k < slice.length; k++) { 696 | slice[k] = b[i + k]; 697 | } 698 | Location l = Location.readBytes(slice); 699 | l = l.add(start.getX(), start.getY(), start.getZ()); 700 | work.put(l.hashCode(), l); 701 | } 702 | 703 | if (input != null) { 704 | message("\2476Loaded " + filename + " with " + work.size() + " entries at " + start.getPos().getX() 705 | + "," + start.getPos().getY() + "," + start.getPos().getZ()); 706 | input.close(); 707 | } 708 | 709 | } catch (IOException e) { 710 | message("\247cError loading file."); 711 | e.printStackTrace(); 712 | } 713 | } catch (FileNotFoundException e) { 714 | message("\247cFile not found."); 715 | e.printStackTrace(); 716 | } 717 | } 718 | 719 | @Override 720 | public void onEnabled() { 721 | removeFilled(); 722 | } 723 | 724 | private void placeBlock(int id, BlockPos pos, EnumFacing face) { 725 | if (equipBlock(id) && InventoryHelper.isItemOffhand(id)) { 726 | Minecraft mc = Client.getMinecraft(); 727 | EntityPlayerSPHook p = (EntityPlayerSPHook) mc.player; 728 | p.getConnection().sendPacket(new CPacketPlayerTryUseItemOnBlock(pos, face, EnumHand.OFF_HAND, 0, 1, 0)); 729 | p.getConnection().sendPacket(new CPacketAnimation(EnumHand.OFF_HAND)); 730 | removeFilled(); 731 | } 732 | } 733 | 734 | @Override 735 | public void onDisabled() { 736 | 737 | } 738 | 739 | @Override 740 | public String getName() { 741 | int n = work.size(); 742 | return "Build" + (n != 0 ? " " + work.size() : ""); 743 | } 744 | 745 | } 746 | -------------------------------------------------------------------------------- /client/main/module/Camera.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventIsSpectator; 5 | import client.main.event.EventRender; 6 | import client.main.event.EventSendPacket; 7 | import client.main.event.Subscribe; 8 | import net.minecraft.client.entity.EntityOtherPlayerMP; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | import net.minecraft.network.Packet; 11 | import net.minecraft.network.play.client.CPacketEntityAction; 12 | import net.minecraft.network.play.client.CPacketPlayer; 13 | 14 | @RegisterModule(key = 47, color = 10485618, listed = true) 15 | public class Camera extends Module { 16 | 17 | private Position lastPos; 18 | 19 | @Subscribe 20 | public void onSendPacket(EventSendPacket e) { 21 | Packet packet = e.getValue(); 22 | if (isEnabled() && (packet instanceof CPacketPlayer || packet instanceof CPacketEntityAction)) { 23 | e.setCancelled(true); 24 | } 25 | } 26 | 27 | @Subscribe 28 | public void onIsSpectator(EventIsSpectator e) { 29 | if (isEnabled()) { 30 | e.setValue(true); 31 | } 32 | } 33 | 34 | @Subscribe 35 | public void onRender(EventRender e) { 36 | if (isEnabled()) { 37 | EntityPlayer player = Client.getMinecraft().player; 38 | player.noClip = true; 39 | player.setInvisible(true); 40 | player.capabilities.isFlying = true; 41 | } 42 | } 43 | 44 | @Override 45 | public void onEnabled() { 46 | EntityPlayer player = Client.getMinecraft().player; 47 | lastPos = new Position(player.posX, player.posY, player.posZ); 48 | EntityOtherPlayerMP spawn = new EntityOtherPlayerMP(Client.getMinecraft().world, player.getGameProfile()); 49 | spawn.inventory = player.inventory; 50 | spawn.inventoryContainer = player.inventoryContainer; 51 | spawn.rotationYawHead = player.rotationYawHead; 52 | spawn.setSneaking(player.isSneaking()); 53 | spawn.setPositionAndRotation(player.posX, player.posY, player.posZ, player.rotationYaw, player.rotationPitch); 54 | Client.getMinecraft().world.addEntityToWorld(-420, spawn); 55 | } 56 | 57 | @Override 58 | public void onDisabled() { 59 | EntityPlayer player = Client.getMinecraft().player; 60 | player.setPosition(lastPos.getX(), lastPos.getY(), lastPos.getZ()); 61 | player.capabilities.isFlying = false; 62 | player.noClip = false; 63 | player.motionX = 0; 64 | player.motionY = 0; 65 | player.setInvisible(false); 66 | player.motionZ = 0; 67 | Client.getMinecraft().world.removeEntityFromWorld(-420); 68 | } 69 | 70 | @Override 71 | public String getName() { 72 | return "Camera"; 73 | } 74 | 75 | class Position { 76 | private double x, y, z; 77 | 78 | public Position(double x, double y, double z) { 79 | this.x = x; 80 | this.y = y; 81 | this.z = z; 82 | } 83 | 84 | public double getX() { 85 | return this.x; 86 | } 87 | 88 | public double getY() { 89 | return this.y; 90 | } 91 | 92 | public double getZ() { 93 | return this.z; 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /client/main/module/Chat.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.event.EventDrawChat; 4 | import client.main.event.Subscribe; 5 | 6 | @RegisterModule(key = 52) 7 | public class Chat extends Module { 8 | 9 | @Subscribe 10 | public void onDrawChat(EventDrawChat e) { 11 | if (isEnabled()) { 12 | e.setCancelled(true); 13 | } 14 | } 15 | 16 | @Override 17 | public void onEnabled() { 18 | 19 | } 20 | 21 | @Override 22 | public void onDisabled() { 23 | 24 | } 25 | 26 | @Override 27 | public String getName() { 28 | return null; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /client/main/module/CoordUI.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventRender; 5 | import client.main.event.Subscribe; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.client.entity.EntityOtherPlayerMP; 8 | import net.minecraft.entity.Entity; 9 | import net.minecraft.entity.monster.EntityMob; 10 | 11 | @RegisterModule(key = 25) 12 | public class CoordUI extends Module { 13 | 14 | @Subscribe 15 | public void onRender(EventRender e) { 16 | Minecraft mc = Client.getMinecraft(); 17 | if (isEnabled() && mc.inGameHasFocus) { 18 | int[] count = getCount(); 19 | int mobCount = count[0]; 20 | int playerCount = count[1]; 21 | int posX = (int) mc.player.posX; 22 | int posY = (int) mc.player.posY; 23 | int posZ = (int) mc.player.posZ; 24 | String s = (posX >= 0 ? "+" : "") + (int) posX + ", " + (posY >= 0 ? "+" : "") + (int) posY + ", " 25 | + (posZ >= 0 ? "+" : "") + (int) posZ + (mobCount != 0 ? "\247f \247c" + mobCount + "" : "") 26 | + (playerCount != 0 ? " \247b" + playerCount : "") + "\247a " + mc.getDebugFPS() + "fps"; 27 | mc.fontRendererObj.drawStringWithShadow(s, 5, 4, 16777215); 28 | } 29 | } 30 | 31 | private int[] getCount() { 32 | int i[] = { 0, 0 }; 33 | Minecraft mc = Client.getMinecraft(); 34 | for (Entity e : mc.world.getLoadedEntityList()) { 35 | if (e instanceof EntityMob && e.getDistanceSqToEntity(mc.player) < 30) { 36 | i[0]++; 37 | } else if (e instanceof EntityOtherPlayerMP) { 38 | EntityOtherPlayerMP p = (EntityOtherPlayerMP) e; 39 | if (p.getGameProfile() != mc.player.getGameProfile() && !Friend.isFriend(p)) { 40 | i[1]++; 41 | } 42 | } 43 | } 44 | return i; 45 | } 46 | 47 | @Override 48 | public void onEnabled() { 49 | 50 | } 51 | 52 | @Override 53 | public void onDisabled() { 54 | 55 | } 56 | 57 | @Override 58 | public String getName() { 59 | return null; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /client/main/module/Dig.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventBlockBreak; 5 | import client.main.event.EventRender; 6 | import client.main.event.EventTick; 7 | import client.main.event.Subscribe; 8 | import net.minecraft.block.material.Material; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.entity.EntityPlayerSP; 11 | import net.minecraft.util.EnumFacing; 12 | import net.minecraft.util.EnumHand; 13 | import net.minecraft.util.math.BlockPos; 14 | import net.minecraft.util.math.RayTraceResult; 15 | 16 | @RegisterModule(key = 39, color = 16760629, listed = true) 17 | public class Dig extends Module { 18 | 19 | private int digCount, n; 20 | 21 | public Dig() { 22 | digCount = 0; 23 | n = 0; 24 | } 25 | 26 | @Subscribe 27 | public void onBlockBreak(EventBlockBreak e) { 28 | if (isEnabled()) { 29 | digCount++; 30 | Minecraft mc = Client.getMinecraft(); 31 | EntityPlayerSP p = mc.player; 32 | mc.playerController.processRightClickBlock(p, mc.world, e.getBlockPos(), EnumFacing.DOWN, p.getLookVec(), 33 | EnumHand.MAIN_HAND); 34 | } 35 | } 36 | 37 | @Subscribe 38 | public void onTick(EventTick e) { 39 | if (isEnabled()) { 40 | Minecraft mc = Client.getMinecraft(); 41 | if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == RayTraceResult.Type.BLOCK) { 42 | BlockPos blockpos = mc.objectMouseOver.getBlockPos(); 43 | if (mc.world.getBlockState(blockpos).getMaterial() != Material.AIR 44 | && mc.playerController.onPlayerDamageBlock(blockpos, mc.objectMouseOver.sideHit)) { 45 | mc.effectRenderer.addBlockHitEffects(blockpos, mc.objectMouseOver.sideHit); 46 | mc.player.swingArm(EnumHand.MAIN_HAND); 47 | } 48 | } 49 | n = (n + 4) % 480; 50 | } 51 | } 52 | 53 | @Subscribe 54 | public void onRender(EventRender e) { 55 | Minecraft mc = Client.getMinecraft(); 56 | if (isEnabled() && mc.player != null) { 57 | if (digCount != 0) { 58 | double frequency = .2; 59 | int red = (int) (Math.sin(frequency * n / 5) * 127 + 128); 60 | int green = (int) (Math.sin(frequency * n / 5 + 2 * Math.PI / 3) * 127 + 128); 61 | int blue = (int) (Math.sin(frequency * n / 5 + 4 * Math.PI / 3) * 127 + 128); 62 | int col = (red << 16) | (green << 8) | blue; 63 | mc.fontRendererObj.drawStringWithShadow("+" + digCount, 30, Client.res().getScaledHeight() - 10, col); 64 | } 65 | } 66 | } 67 | 68 | @Override 69 | public void onEnabled() { 70 | digCount = 0; 71 | } 72 | 73 | @Override 74 | public void onDisabled() { 75 | digCount = 0; 76 | Client.getMinecraft().playerController.resetBlockRemoving(); 77 | } 78 | 79 | @Override 80 | public String getName() { 81 | return "Dig"; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /client/main/module/Disconnect.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventChat; 5 | import client.main.event.EventRender; 6 | import client.main.event.Subscribe; 7 | import net.minecraft.client.Minecraft; 8 | import net.minecraft.client.entity.EntityOtherPlayerMP; 9 | import net.minecraft.client.gui.GuiMainMenu; 10 | import net.minecraft.entity.Entity; 11 | import net.minecraft.util.ScreenShotHelper; 12 | 13 | @RegisterModule(key = 24, color = 0xFF664F, listed = true) 14 | public class Disconnect extends Module { 15 | 16 | private int threshold = 10; 17 | 18 | @Subscribe 19 | public void onRender(EventRender e) { 20 | if (isEnabled()) { 21 | Minecraft mc = Client.getMinecraft(); 22 | if (getClosestPlayer(mc) != null || mc.player.getFoodStats().getFoodLevel() <= 0 23 | || mc.player.getHealth() / 2 <= 5) { 24 | ScreenShotHelper.saveScreenshot(mc.mcDataDir, mc.displayWidth, mc.displayHeight, mc.getFramebuffer()); 25 | disconnect(mc); 26 | } 27 | } 28 | } 29 | 30 | @Subscribe 31 | public void onChat(EventChat e) { 32 | String message = e.getValue(); 33 | if (message.startsWith("-d")) { 34 | if (message.split(" ").length > 1) { 35 | this.threshold = Integer.parseInt(message.split(" ")[1]); 36 | } else { 37 | this.threshold = -1; 38 | } 39 | e.setCancelled(true); 40 | } 41 | } 42 | 43 | private EntityOtherPlayerMP getClosestPlayer(Minecraft mc) { 44 | for (Entity o : mc.world.getLoadedEntityList()) { 45 | if (o instanceof EntityOtherPlayerMP) { 46 | EntityOtherPlayerMP p = (EntityOtherPlayerMP) o; 47 | if (p.getGameProfile() != mc.player.getGameProfile() && !Friend.isFriend(p)) { 48 | if (p.getDistanceToEntity(mc.player) <= threshold || threshold < 0) { 49 | return p; 50 | } 51 | } 52 | } 53 | } 54 | return null; 55 | } 56 | 57 | private void disconnect(Minecraft mc) { 58 | mc.world.sendQuittingDisconnectingPacket(); 59 | mc.loadWorld(null); 60 | mc.displayGuiScreen(new GuiMainMenu()); 61 | super.remove(this); 62 | } 63 | 64 | @Override 65 | public void onEnabled() { 66 | 67 | } 68 | 69 | @Override 70 | public void onDisabled() { 71 | } 72 | 73 | @Override 74 | public String getName() { 75 | return "Disconnect" + (this.threshold > 0 ? " \247c" + this.threshold : ""); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /client/main/module/Friend.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.util.ArrayList; 4 | 5 | import client.main.Client; 6 | import client.main.event.EventAttack; 7 | import client.main.event.EventChat; 8 | import client.main.event.Subscribe; 9 | import net.minecraft.client.entity.EntityOtherPlayerMP; 10 | import net.minecraft.entity.Entity; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraft.util.text.TextComponentString; 13 | 14 | @RegisterModule(listed = false) 15 | public class Friend extends Module { 16 | 17 | private static ArrayList friends = new ArrayList(); 18 | 19 | @Subscribe 20 | public void onChat(EventChat e) { 21 | String message = e.getValue(); 22 | if (message.startsWith("-a")) { 23 | e.setCancelled(true); 24 | String s = message.split(" ")[1].toLowerCase(); 25 | if (!friends.contains(s)) { 26 | friends.add(s); 27 | message("\247aAdded " + s + "!"); 28 | } else { 29 | friends.remove(s); 30 | message("\247cRemoved " + s + "!"); 31 | } 32 | } 33 | } 34 | 35 | @Subscribe 36 | public void onAttack(EventAttack e) { 37 | Entity o = e.getValue(); 38 | if (o instanceof EntityOtherPlayerMP) { 39 | e.setCancelled(isFriend((EntityOtherPlayerMP) o)); 40 | } 41 | } 42 | 43 | public static boolean isFriend(EntityOtherPlayerMP p) { 44 | return friends.contains(p.getDisplayName().getUnformattedText().toLowerCase()); 45 | } 46 | 47 | private void message(String s) { 48 | EntityPlayer p = Client.getMinecraft().player; 49 | p.addChatMessage(new TextComponentString(s)); 50 | } 51 | 52 | @Override 53 | public void onEnabled() { 54 | 55 | } 56 | 57 | @Override 58 | public void onDisabled() { 59 | } 60 | 61 | @Override 62 | public String getName() { 63 | return null; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /client/main/module/Fullbright.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventRender; 5 | import client.main.event.Subscribe; 6 | 7 | @RegisterModule(key = 46, listed = true, color = 16755200) 8 | public class Fullbright extends Module { 9 | 10 | private float lastBrightness; 11 | 12 | @Subscribe 13 | public void onRender(EventRender e) { 14 | setBrightness(isEnabled() ? 141 : lastBrightness); 15 | } 16 | 17 | private void setBrightness(float f) { 18 | if (Client.getMinecraft().gameSettings.gammaSetting != f) { 19 | Client.getMinecraft().gameSettings.gammaSetting = f; 20 | } 21 | } 22 | 23 | @Override 24 | public void onEnabled() { 25 | lastBrightness = Client.getMinecraft().gameSettings.gammaSetting; 26 | } 27 | 28 | @Override 29 | public void onDisabled() { 30 | setBrightness(lastBrightness); 31 | } 32 | 33 | @Override 34 | public String getName() { 35 | return "Fullbright"; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /client/main/module/KillAura.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.util.List; 4 | 5 | import client.main.Client; 6 | import client.main.event.EventChat; 7 | import client.main.event.EventRender; 8 | import client.main.event.Subscribe; 9 | import client.main.hook.EntityPlayerSPHook; 10 | import net.minecraft.client.Minecraft; 11 | import net.minecraft.client.entity.EntityOtherPlayerMP; 12 | import net.minecraft.client.multiplayer.PlayerControllerMP; 13 | import net.minecraft.client.util.ITooltipFlag; 14 | import net.minecraft.entity.Entity; 15 | import net.minecraft.entity.EntityLiving; 16 | import net.minecraft.entity.EntityLivingBase; 17 | import net.minecraft.entity.player.EntityPlayer; 18 | import net.minecraft.item.ItemStack; 19 | import net.minecraft.network.play.client.CPacketPlayer; 20 | import net.minecraft.util.EnumHand; 21 | import net.minecraft.util.math.MathHelper; 22 | import net.minecraft.util.math.Vec3d; 23 | 24 | @RegisterModule(key = 34, color = 16775680, listed = true) 25 | public class KillAura extends Module { 26 | 27 | private static double distanceThreshold = 36.0D; 28 | 29 | private long nextSwing; 30 | 31 | private int delay; 32 | 33 | @Subscribe 34 | public void onRender(EventRender e) { 35 | if (isEnabled()) { 36 | Minecraft mc = Client.getMinecraft(); 37 | EntityPlayer p = mc.player; 38 | if (p.getCooledAttackStrength(1.0F) == 1.0 && !p.isHandActive()) { 39 | Entity o = getClosestEntity(); 40 | if (o != null && !p.isSwingInProgress && System.currentTimeMillis() >= nextSwing) { 41 | hit(p, o); 42 | nextSwing = System.currentTimeMillis() + delay; 43 | } 44 | } 45 | } 46 | } 47 | 48 | @Subscribe 49 | public void onChat(EventChat e) { 50 | String message = e.getValue(); 51 | if (message.startsWith("-g")) { 52 | e.setCancelled(true); 53 | this.distanceThreshold = Double.parseDouble(message.split(" ")[1]); 54 | this.delay = Integer.parseInt(message.split(" ")[2]); 55 | } 56 | } 57 | 58 | private int getWeaponSlot() { 59 | int slot = -1; 60 | double w = -1; 61 | EntityPlayer p = Client.getMinecraft().player; 62 | 63 | for (int i = 0; i < p.inventory.getHotbarSize(); i++) { 64 | ItemStack o = p.inventory.mainInventory.get(i); 65 | if (!(o.getItem() instanceof net.minecraft.item.ItemAir)) { 66 | List data = o.getTooltip(p, ITooltipFlag.TooltipFlags.ADVANCED); 67 | double damage = -1; 68 | double speed = -1; 69 | for (String s : data) { 70 | try { 71 | if (s.contains("Damage")) { 72 | damage = Double.parseDouble(s.split(" ")[1]); 73 | } else if (s.contains("Speed")) { 74 | speed = Double.parseDouble(s.split(" ")[1]); 75 | } 76 | } catch (Exception e) { 77 | continue; 78 | } 79 | } 80 | 81 | if (damage != -1 && speed != -1) { 82 | double weight = damage * speed; 83 | if (weight > w) { 84 | w = weight; 85 | slot = i; 86 | } 87 | } 88 | } 89 | } 90 | return slot == -1 ? p.inventory.currentItem : slot; 91 | } 92 | 93 | public boolean canEntityBeSeen(Entity entityIn) { 94 | EntityPlayer p = Client.getMinecraft().player; 95 | return Client.getMinecraft().world.rayTraceBlocks(new Vec3d(p.posX, p.posY + (double) p.getEyeHeight(), p.posZ), 96 | new Vec3d(entityIn.posX, entityIn.posY + (double) entityIn.getEyeHeight(), entityIn.posZ), false, true, 97 | false) == null; 98 | } 99 | 100 | private void faceEntity(Entity par1Entity) { 101 | EntityPlayerSPHook player = (EntityPlayerSPHook) Client.getMinecraft().player; 102 | double var4 = par1Entity.posX - player.posX; 103 | double var8 = par1Entity.posZ - player.posZ; 104 | double var6; 105 | 106 | if (par1Entity instanceof EntityLivingBase) { 107 | EntityLivingBase var10 = (EntityLivingBase) par1Entity; 108 | var6 = var10.posY + (double) var10.getEyeHeight() - (player.posY + (double) player.getEyeHeight()); 109 | } else { 110 | var6 = (par1Entity.getEntityBoundingBox().minY + par1Entity.getEntityBoundingBox().maxY) / 2.0D 111 | - (player.posY + (double) player.getEyeHeight()); 112 | } 113 | 114 | double var14 = (double) MathHelper.sqrt(var4 * var4 + var8 * var8); 115 | float var12 = (float) (Math.atan2(var8, var4) * 180.0D / Math.PI) - 90.0F; 116 | float var13 = (float) (-(Math.atan2(var6, var14) * 180.0D / Math.PI)); 117 | player.getConnection().sendPacket(new CPacketPlayer.PositionRotation(player.posX, player.posY, player.posZ, 118 | var12, var13, player.onGround)); 119 | } 120 | 121 | private Entity getClosestEntity() { 122 | Minecraft mc = Client.getMinecraft(); 123 | List l = mc.world.getLoadedEntityList(); 124 | EntityPlayer p = mc.player; 125 | Entity e = null; 126 | for (Entity o : l) { 127 | if (o != p && (o instanceof EntityOtherPlayerMP || o instanceof EntityLiving)) { 128 | if (o instanceof EntityOtherPlayerMP && Friend.isFriend((EntityOtherPlayerMP) o)) { 129 | continue; 130 | } 131 | if (o.isEntityAlive() && (canEntityBeSeen(o) || mc.objectMouseOver.entityHit == o)) { 132 | if (e == null || o.getDistanceSqToEntity(p) <= e.getDistanceSqToEntity(p)) { 133 | if (o.getDistanceSqToEntity(p) <= distanceThreshold) { 134 | e = o; 135 | } 136 | } 137 | } 138 | } 139 | } 140 | return e; 141 | } 142 | 143 | private void hit(EntityPlayer p, Entity e) { 144 | if (p.inventory.currentItem != getWeaponSlot()) 145 | p.inventory.currentItem = getWeaponSlot(); 146 | PlayerControllerMP controller = Client.getMinecraft().playerController; 147 | faceEntity(e); 148 | controller.attackEntity(p, e); 149 | p.swingArm(EnumHand.MAIN_HAND); 150 | } 151 | 152 | @Override 153 | public void onEnabled() { 154 | Client.getMinecraft().player.inventory.currentItem = getWeaponSlot(); 155 | } 156 | 157 | @Override 158 | public void onDisabled() { 159 | 160 | } 161 | 162 | @Override 163 | public String getName() { 164 | return String.format("%.1f", new Object[] { Double.valueOf(distanceThreshold) }) + "m" 165 | + (this.delay != 0 166 | ? " \2476" + (this.delay < 1000 ? this.delay + "ms" : (double) this.delay / 1000 + "s") 167 | : ""); 168 | } 169 | } 170 | -------------------------------------------------------------------------------- /client/main/module/Module.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.util.ArrayList; 4 | 5 | import client.main.KeyWrapper; 6 | import client.main.Reflection; 7 | import client.main.event.EventManager; 8 | 9 | public abstract class Module { 10 | 11 | private static final ArrayList activeModules = new ArrayList(); 12 | 13 | private KeyWrapper bind; 14 | 15 | private boolean listed; 16 | 17 | protected int active_color; 18 | 19 | private int color, secondary_color; 20 | 21 | public Module setBind(int key, boolean pressed) { 22 | this.bind = new KeyWrapper(key, pressed); 23 | return this; 24 | } 25 | 26 | public static ArrayList getActiveModules() { 27 | return activeModules; 28 | } 29 | 30 | public static boolean isEnabled(Class module) { 31 | for (Module m : activeModules) { 32 | if (m.getClass() == module) { 33 | return true; 34 | } 35 | } 36 | return false; 37 | } 38 | 39 | public boolean isEnabled() { 40 | boolean toggle = this.bind.isToggled(); 41 | if (listed) { 42 | update(toggle); 43 | } 44 | return toggle; 45 | } 46 | 47 | public int getActiveColor() { 48 | return active_color; 49 | } 50 | 51 | protected int getColor() { 52 | return color; 53 | } 54 | 55 | protected int getSecondaryColor() { 56 | return secondary_color; 57 | } 58 | 59 | public Module setListed(boolean listed) { 60 | this.listed = listed; 61 | return this; 62 | } 63 | 64 | public Module setColor(int color, int secondary_color) { 65 | this.active_color = color; 66 | this.color = active_color; 67 | this.secondary_color = secondary_color; 68 | return this; 69 | } 70 | 71 | private void update(boolean toggle) { 72 | if (toggle) 73 | add(this); 74 | else 75 | remove(this); 76 | } 77 | 78 | private void add(Module m) { 79 | if (!activeModules.contains(m)) { 80 | activeModules.add(m); 81 | this.onEnabled(); 82 | } 83 | } 84 | 85 | protected void remove(Module m) { 86 | if (activeModules.contains(m)) { 87 | activeModules.remove(m); 88 | this.setBind(this.bind.getKeyCode(), false); 89 | this.onDisabled(); 90 | } 91 | } 92 | 93 | public abstract void onEnabled(); 94 | 95 | public abstract void onDisabled(); 96 | 97 | public abstract String getName(); 98 | 99 | public static void registerModules(String packageName) { 100 | for (Class c : Reflection.getClasses(packageName)) { 101 | if (c.isAnnotationPresent(RegisterModule.class)) { 102 | try { 103 | Object o = c.newInstance(); 104 | if (o instanceof Module) { 105 | RegisterModule r = c.getAnnotation(RegisterModule.class); 106 | ((Module) o).setBind(r.key(), r.pressed()).setListed(r.listed()).setColor(r.color(), 107 | r.secondary_color()); 108 | EventManager.register(o); 109 | } 110 | } catch (Exception e) { 111 | } 112 | } 113 | } 114 | } 115 | } -------------------------------------------------------------------------------- /client/main/module/ModuleUI.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventRender; 5 | import client.main.event.Subscribe; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.client.gui.FontRenderer; 8 | import net.minecraft.client.gui.ScaledResolution; 9 | import net.minecraft.client.renderer.GlStateManager; 10 | 11 | @RegisterModule 12 | public class ModuleUI extends Module { 13 | 14 | @Subscribe 15 | public void onRender(EventRender e) { 16 | Minecraft mc = Client.getMinecraft(); 17 | if (!mc.inGameHasFocus) 18 | return; 19 | int i = 0; 20 | ScaledResolution res = Client.res(); 21 | FontRenderer f = mc.fontRendererObj; 22 | for (Module m : Module.getActiveModules()) { 23 | mc.fontRendererObj.drawStringWithShadow(m.getName(), 24 | res.getScaledWidth() - f.getStringWidth(m.getName()) - 4, i * 8 + 4, m.getActiveColor()); 25 | i++; 26 | } 27 | GlStateManager.disableLighting(); 28 | } 29 | 30 | @Override 31 | public void onEnabled() { 32 | } 33 | 34 | @Override 35 | public void onDisabled() { 36 | 37 | } 38 | 39 | @Override 40 | public String getName() { 41 | return null; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /client/main/module/NoCheat.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventIsPushed; 5 | import client.main.event.EventRecPacket; 6 | import client.main.event.EventSendPacket; 7 | import client.main.event.EventTick; 8 | import client.main.event.Subscribe; 9 | import client.main.hook.EntityPlayerSPHook; 10 | import net.minecraft.client.Minecraft; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraft.item.Item; 13 | import net.minecraft.item.ItemStack; 14 | import net.minecraft.network.Packet; 15 | import net.minecraft.network.play.client.CPacketHeldItemChange; 16 | import net.minecraft.network.play.client.CPacketPlayer; 17 | import net.minecraft.network.play.client.CPacketPlayerTryUseItem; 18 | import net.minecraft.network.play.server.SPacketEntityVelocity; 19 | import net.minecraft.util.EnumHand; 20 | import net.minecraft.util.math.BlockPos; 21 | import net.minecraft.world.WorldProviderHell; 22 | 23 | @RegisterModule(key = 41, color = 11514879, listed = true) 24 | public class NoCheat extends Module { 25 | 26 | private boolean falling, wasFalling; 27 | 28 | private long lastPickup; 29 | 30 | @Subscribe 31 | public void onSendPacket(EventSendPacket e) { 32 | Packet packet = e.getValue(); 33 | if (isEnabled() && packet instanceof CPacketPlayer) { 34 | ((CPacketPlayer) packet).onGround = true; 35 | EntityPlayer p = Client.getMinecraft().player; 36 | if (getWaterBucket() != -1 && p.fallDistance > 1 && p.motionY < -0.4) { 37 | e.setValue(new CPacketPlayer.PositionRotation(p.posX, p.posY, p.posZ, p.rotationYaw, 90, p.onGround)); 38 | } 39 | } 40 | } 41 | 42 | @Subscribe 43 | public void onReceivePacket(EventRecPacket e) { 44 | Packet packet = e.getValue(); 45 | if (super.isEnabled() && packet instanceof SPacketEntityVelocity) { 46 | e.setCancelled(true); 47 | } 48 | } 49 | 50 | @Subscribe 51 | public void onTick(EventTick e) { 52 | Minecraft mc = Client.getMinecraft(); 53 | EntityPlayerSPHook p = (EntityPlayerSPHook) mc.player; 54 | int slot = getWaterBucket(); 55 | if (isEnabled() && slot != -1) { 56 | if (p.motionY < -0.70) { 57 | falling = true; 58 | if (falling && !Client.getMinecraft().world 59 | .isAirBlock(new BlockPos(p.posX, p.getEntityBoundingBox().minY - 4, p.posZ))) { 60 | falling = false; 61 | p.getConnection().sendPacket(new CPacketHeldItemChange(slot)); 62 | p.getConnection().sendPacket(new CPacketPlayerTryUseItem(EnumHand.MAIN_HAND)); 63 | lastPickup = System.currentTimeMillis(); 64 | wasFalling = true; 65 | } 66 | } 67 | if (p.fallDistance > 3) { 68 | p.motionX = 0; 69 | p.motionZ = 0; 70 | } 71 | } 72 | if (p.onGround && getElapsed() >= 300 && wasFalling) { 73 | p.getConnection().sendPacket( 74 | new CPacketPlayer.PositionRotation(p.posX, p.posY, p.posZ, p.rotationYaw, 90, p.onGround)); 75 | p.getConnection().sendPacket(new CPacketPlayerTryUseItem(EnumHand.MAIN_HAND)); 76 | p.getConnection().sendPacket(new CPacketHeldItemChange(p.inventory.currentItem)); 77 | p.getConnection().sendPacket( 78 | new CPacketPlayer.PositionRotation(p.posX, p.posY, p.posZ, p.rotationYaw, 0, p.onGround)); 79 | wasFalling = false; 80 | } 81 | } 82 | 83 | private int getWaterBucket() { 84 | for (int i = 0; i < 9; i++) { 85 | ItemStack o = Client.getMinecraft().player.inventory.mainInventory.get(i); 86 | if (o != null && Item.getIdFromItem(o.getItem()) == 326) { 87 | return i; 88 | } 89 | } 90 | return -1; 91 | } 92 | 93 | private int getElapsed() { 94 | return (int) (System.currentTimeMillis() - lastPickup); 95 | } 96 | 97 | public boolean isEnabled() { 98 | return super.isEnabled() && !(Client.getMinecraft().world.provider instanceof WorldProviderHell); 99 | } 100 | 101 | @Subscribe 102 | public void onIsPushed(EventIsPushed e) { 103 | e.setValue(isEnabled() ? false : e.getValue()); 104 | } 105 | 106 | @Override 107 | public void onEnabled() { 108 | 109 | } 110 | 111 | @Override 112 | public void onDisabled() { 113 | 114 | } 115 | 116 | @Override 117 | public String getName() { 118 | return "NoCheat"; 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /client/main/module/PotionUI.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.util.Collection; 4 | import java.util.List; 5 | 6 | import com.google.common.collect.Lists; 7 | import com.google.common.collect.Ordering; 8 | 9 | import client.main.Client; 10 | import client.main.event.EventRender; 11 | import client.main.event.Subscribe; 12 | import net.minecraft.client.Minecraft; 13 | import net.minecraft.client.gui.ScaledResolution; 14 | import net.minecraft.client.resources.I18n; 15 | import net.minecraft.potion.Potion; 16 | import net.minecraft.potion.PotionEffect; 17 | 18 | @RegisterModule 19 | public class PotionUI extends Module { 20 | 21 | @Subscribe 22 | public void onRender(EventRender e) { 23 | ScaledResolution res = Client.res(); 24 | Minecraft mc = Client.getMinecraft(); 25 | if (mc.inGameHasFocus) { 26 | int i = 0; 27 | Collection collection = mc.player.getActivePotionEffects(); 28 | List sorted = Lists.reverse(Ordering.natural().sortedCopy(collection)); 29 | for (PotionEffect potioneffect : sorted) { 30 | Potion potion = potioneffect.getPotion(); 31 | ++i; 32 | String s1 = I18n.format(potion.getName(), new Object[0]); 33 | if (potioneffect.getAmplifier() == 1) { 34 | s1 = s1 + " " + I18n.format("enchantment.level.2", new Object[0]); 35 | } else if (potioneffect.getAmplifier() == 2) { 36 | s1 = s1 + " " + I18n.format("enchantment.level.3", new Object[0]); 37 | } else if (potioneffect.getAmplifier() == 3) { 38 | s1 = s1 + " " + I18n.format("enchantment.level.4", new Object[0]); 39 | } 40 | s1 = s1 + " \u00a7f" + Potion.getPotionDurationString(potioneffect, 1.0F); 41 | mc.fontRendererObj.drawStringWithShadow(s1, 42 | res.getScaledWidth() - mc.fontRendererObj.getStringWidth(s1) - 4, 43 | res.getScaledHeight() - 8 * i - 4, potion.getLiquidColor()); 44 | } 45 | } 46 | } 47 | 48 | @Override 49 | public void onEnabled() { 50 | 51 | } 52 | 53 | @Override 54 | public void onDisabled() { 55 | 56 | } 57 | 58 | @Override 59 | public String getName() { 60 | return null; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /client/main/module/Reconnect.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventDisconnect; 5 | import client.main.event.EventRender; 6 | import client.main.event.Subscribe; 7 | import net.minecraft.client.Minecraft; 8 | import net.minecraft.client.gui.GuiMainMenu; 9 | import net.minecraft.client.multiplayer.GuiConnecting; 10 | import net.minecraft.client.multiplayer.ServerData; 11 | 12 | @RegisterModule(color = 0xFF9028) 13 | public class Reconnect extends Module { 14 | 15 | private String lastIp; 16 | 17 | private long lastReconnect; 18 | 19 | @Subscribe 20 | public void onRender(EventRender e) { 21 | Minecraft mc = Client.getMinecraft(); 22 | ServerData data = mc.getCurrentServerData(); 23 | if (data != null) { 24 | lastIp = data.serverIP; 25 | } 26 | if (lastIp != null && mc.world == null && !(mc.currentScreen instanceof GuiConnecting)) { 27 | if (lastReconnect == 0) 28 | lastReconnect = System.currentTimeMillis(); 29 | mc.fontRendererObj.drawStringWithShadow(getName(), 0, 0, getActiveColor()); 30 | if (getElapsed() >= 5) { 31 | mc.displayGuiScreen(new GuiConnecting(new GuiMainMenu(), mc, lastIp, 25565)); 32 | lastReconnect = System.currentTimeMillis(); 33 | } 34 | } 35 | } 36 | 37 | @Subscribe 38 | public void onDisconnect(EventDisconnect e) { 39 | lastReconnect = System.currentTimeMillis(); 40 | } 41 | 42 | private int getElapsed() { 43 | return (int) (System.currentTimeMillis() - lastReconnect) / 1000; 44 | } 45 | 46 | @Override 47 | public void onEnabled() { 48 | 49 | } 50 | 51 | @Override 52 | public void onDisabled() { 53 | 54 | } 55 | 56 | @Override 57 | public String getName() { 58 | return getElapsed() + "s"; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /client/main/module/RegisterModule.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.Target; 5 | 6 | import static java.lang.annotation.RetentionPolicy.*; 7 | import static java.lang.annotation.ElementType.*; 8 | 9 | @Retention(value = RUNTIME) 10 | @Target(value = TYPE) 11 | public @interface RegisterModule { 12 | 13 | int key() default -1; 14 | 15 | boolean pressed() default false; 16 | 17 | boolean listed() default false; 18 | 19 | int color() default 0xFFFFFF; 20 | 21 | int secondary_color() default 0xFFFFFF; 22 | } 23 | -------------------------------------------------------------------------------- /client/main/module/Reharvest.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventChat; 5 | import client.main.event.EventSendPacket; 6 | import client.main.event.EventTick; 7 | import client.main.event.Subscribe; 8 | import client.main.helper.InventoryHelper; 9 | import client.main.hook.EntityPlayerSPHook; 10 | import net.minecraft.client.Minecraft; 11 | import net.minecraft.client.multiplayer.PlayerControllerMP; 12 | import net.minecraft.entity.player.EntityPlayer; 13 | import net.minecraft.inventory.ClickType; 14 | import net.minecraft.item.Item; 15 | import net.minecraft.network.Packet; 16 | import net.minecraft.network.play.client.CPacketAnimation; 17 | import net.minecraft.network.play.client.CPacketHeldItemChange; 18 | import net.minecraft.network.play.client.CPacketPlayerDigging; 19 | import net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock; 20 | import net.minecraft.util.EnumFacing; 21 | import net.minecraft.util.EnumHand; 22 | import net.minecraft.util.math.BlockPos; 23 | import net.minecraft.util.math.RayTraceResult; 24 | 25 | @RegisterModule(key = 200, color = 0xFF1C36, listed = true) 26 | public class Reharvest extends Module { 27 | 28 | private long nextTick; 29 | 30 | private int lastSlot = -1; 31 | private int delay = 150; 32 | 33 | private final int BONEMEAL = 351; 34 | private final int WHEAT_SEEDS = 295; 35 | private final int BONEBLOCK = 216; 36 | 37 | private BlockPos soil; 38 | 39 | @Subscribe 40 | public void onSendPacket(EventSendPacket e) { 41 | Packet packet = e.getValue(); 42 | if (isEnabled() && packet instanceof CPacketHeldItemChange && getBonemeal() != -1) { 43 | CPacketHeldItemChange change = (CPacketHeldItemChange) packet; 44 | if (lastSlot != -1 && change.getSlotId() != lastSlot) { 45 | e.setValue(new CPacketHeldItemChange(lastSlot)); 46 | } 47 | } 48 | } 49 | 50 | @Subscribe 51 | public void onTick(EventTick e) { 52 | if (isEnabled() && (InventoryHelper.isItem(lastSlot, BONEMEAL) || equipBonemeal())) { 53 | Minecraft mc = Client.getMinecraft(); 54 | EntityPlayerSPHook p = (EntityPlayerSPHook) Client.getMinecraft().player; 55 | if (System.currentTimeMillis() >= nextTick && (p.noClip || p.getDistanceSq(soil) < 6)) { 56 | String seeds = mc.world.getBlockState(soil.up()).toString(); 57 | String block = mc.world.getBlockState(soil).toString(); 58 | if (seeds.contains("wheat")) { 59 | if (!seeds.contains("age=7")) { 60 | p.getConnection().sendPacket(new CPacketPlayerTryUseItemOnBlock(soil.up(), EnumFacing.UP, 61 | EnumHand.MAIN_HAND, 0, 0, 0)); 62 | p.getConnection().sendPacket(new CPacketAnimation(EnumHand.MAIN_HAND)); 63 | } else { 64 | p.getConnection().sendPacket(new CPacketPlayerDigging( 65 | CPacketPlayerDigging.Action.START_DESTROY_BLOCK, soil.up(), EnumFacing.DOWN)); 66 | p.getConnection().sendPacket(new CPacketPlayerDigging( 67 | CPacketPlayerDigging.Action.STOP_DESTROY_BLOCK, soil.up(), EnumFacing.DOWN)); 68 | p.getConnection().sendPacket(new CPacketAnimation(EnumHand.MAIN_HAND)); 69 | } 70 | } else if (block.contains("moisture")) { 71 | p.getConnection().sendPacket(new CPacketPlayerTryUseItemOnBlock(soil, EnumFacing.UP, 72 | EnumHand.OFF_HAND, soil.getX(), soil.getY(), soil.getZ())); 73 | p.getConnection().sendPacket(new CPacketAnimation(EnumHand.OFF_HAND)); 74 | } 75 | nextTick = System.currentTimeMillis() + delay; 76 | } 77 | } 78 | } 79 | 80 | @Subscribe 81 | public void onChat(EventChat e) { 82 | String message = e.getValue(); 83 | if (message.startsWith("-r")) { 84 | if (message.split(" ").length > 1) { 85 | this.delay = Integer.parseInt(message.split(" ")[1]); 86 | } else { 87 | this.delay = 150; 88 | } 89 | e.setCancelled(true); 90 | } 91 | } 92 | 93 | public boolean isEnabled() { 94 | return super.isEnabled() 95 | && Item.getIdFromItem(Client.getMinecraft().player.getHeldItemOffhand().getItem()) == WHEAT_SEEDS 96 | && findSoil(); 97 | } 98 | 99 | private boolean equipBonemeal() { 100 | int slot = getBonemeal(); 101 | if (slot < 0) { 102 | boneBlock(); 103 | slot = getBonemeal(); 104 | if (slot < 0) { 105 | return false; 106 | } 107 | } 108 | EntityPlayerSPHook p = (EntityPlayerSPHook) Client.getMinecraft().player; 109 | lastSlot = slot; 110 | if (slot >= 9) { 111 | int chosenSlot = InventoryHelper.getEmptySlot(); 112 | InventoryHelper.move(slot, chosenSlot); 113 | lastSlot = chosenSlot; 114 | } 115 | p.getConnection().sendPacket(new CPacketHeldItemChange(lastSlot)); 116 | return true; 117 | } 118 | 119 | private void boneBlock() { 120 | int slot = InventoryHelper.getItem(BONEBLOCK); 121 | if (slot != -1) { 122 | EntityPlayer p = Client.getMinecraft().player; 123 | PlayerControllerMP controller = Client.getMinecraft().playerController; 124 | controller.windowClick(0, slot < 9 ? slot + 36 : slot, 0, ClickType.PICKUP, p); 125 | controller.windowClick(0, 1, 0, ClickType.PICKUP, p); 126 | controller.windowClick(0, 0, 0, ClickType.QUICK_MOVE, p); 127 | } 128 | } 129 | 130 | private int getBonemeal() { 131 | return InventoryHelper.getItem(BONEMEAL); 132 | } 133 | 134 | private boolean findSoil() { 135 | Minecraft mc = Client.getMinecraft(); 136 | if (soil == null && mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == RayTraceResult.Type.BLOCK) { 137 | soil = mc.objectMouseOver.getBlockPos(); 138 | String block = mc.world.getBlockState(soil).toString(); 139 | if (!block.contains("moisture")) { 140 | soil = soil.down(); 141 | block = mc.world.getBlockState(soil).toString(); 142 | if (!block.contains("moisture")) { 143 | soil = null; 144 | } 145 | } 146 | } 147 | return soil != null; 148 | } 149 | 150 | @Override 151 | public void onEnabled() { 152 | findSoil(); 153 | equipBonemeal(); 154 | } 155 | 156 | @Override 157 | public void onDisabled() { 158 | soil = null; 159 | EntityPlayerSPHook p = (EntityPlayerSPHook) Client.getMinecraft().player; 160 | p.getConnection().sendPacket(new CPacketHeldItemChange(p.inventory.currentItem)); 161 | } 162 | 163 | @Override 164 | public String getName() { 165 | return soil != null ? delay != 150 ? delay + "ms" : "Reharvest" : "Can't find soil"; 166 | } 167 | } 168 | -------------------------------------------------------------------------------- /client/main/module/Sink.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.event.EventInLava; 4 | import client.main.event.EventInWater; 5 | import client.main.event.Subscribe; 6 | 7 | @RegisterModule(key = 44, color = 8372735, listed = true, pressed = true) 8 | public class Sink extends Module { 9 | 10 | @Subscribe 11 | public void onInWater(EventInWater e) { 12 | e.setValue(isEnabled() ? false : e.getValue()); 13 | } 14 | 15 | @Subscribe 16 | public void isInLava(EventInLava e) { 17 | e.setValue(isEnabled() ? false : e.getValue()); 18 | } 19 | 20 | @Override 21 | public void onEnabled() { 22 | 23 | } 24 | 25 | @Override 26 | public void onDisabled() { 27 | 28 | } 29 | 30 | @Override 31 | public String getName() { 32 | return "Sink"; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /client/main/module/Sneak.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventIsSneaking; 5 | import client.main.event.EventSendPacket; 6 | import client.main.event.Subscribe; 7 | import client.main.hook.EntityPlayerSPHook; 8 | import net.minecraft.client.entity.EntityPlayerSP; 9 | import net.minecraft.network.Packet; 10 | import net.minecraft.network.play.client.CPacketEntityAction; 11 | 12 | @RegisterModule(key = 19, color = 0xFF0000, secondary_color = 0x00FF00, listed = true) 13 | public class Sneak extends Module { 14 | 15 | @Subscribe 16 | public void onSendPacket(EventSendPacket e) { 17 | Packet packet = e.getValue(); 18 | if (isEnabled() && packet instanceof CPacketEntityAction) { 19 | if (((CPacketEntityAction) packet).getAction() == CPacketEntityAction.Action.STOP_SNEAKING) { 20 | e.setCancelled(true); 21 | } 22 | } 23 | } 24 | 25 | @Subscribe 26 | public void onIsSneaking(EventIsSneaking e) { 27 | if (isEnabled()) { 28 | EntityPlayerSP p = Client.getMinecraft().player; 29 | e.setValue(true); 30 | p.movementInput.sneak = true; 31 | if (!Module.isEnabled(Camera.class)) { 32 | p.motionX *= 0.2F; 33 | p.motionZ *= 0.2F; 34 | } 35 | } 36 | } 37 | 38 | @Override 39 | public void onEnabled() { 40 | EntityPlayerSP playerSP = Client.getMinecraft().player; 41 | EntityPlayerSPHook player = (EntityPlayerSPHook) playerSP; 42 | player.getConnection().sendPacket(new CPacketEntityAction(playerSP, CPacketEntityAction.Action.START_SNEAKING)); 43 | } 44 | 45 | @Override 46 | public void onDisabled() { 47 | EntityPlayerSP playerSP = Client.getMinecraft().player; 48 | EntityPlayerSPHook player = (EntityPlayerSPHook) playerSP; 49 | player.getConnection().sendPacket(new CPacketEntityAction(playerSP, CPacketEntityAction.Action.STOP_SNEAKING)); 50 | } 51 | 52 | @Override 53 | public String getName() { 54 | return "Sneak"; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /client/main/module/Sprint.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventRender; 5 | import client.main.event.EventSetSprint; 6 | import client.main.event.Subscribe; 7 | import net.minecraft.client.Minecraft; 8 | import net.minecraft.client.entity.EntityPlayerSP; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | 11 | @RegisterModule(key = 33, color = 0x00FF21, secondary_color = 0x969696, listed = true) 12 | public class Sprint extends Module { 13 | 14 | @Subscribe 15 | public void onSetSprint(EventSetSprint e) { 16 | Minecraft mc = Client.getMinecraft(); 17 | EntityPlayer player = mc.player; 18 | if (isEnabled() && mc.gameSettings.keyBindForward.isKeyDown()) { 19 | if (!e.getValue() && (float) player.getFoodStats().getFoodLevel() > 6.0F) { 20 | e.setValue(true); 21 | } 22 | } 23 | } 24 | 25 | @Subscribe 26 | public void onRender(EventRender e) { 27 | Minecraft mc = Client.getMinecraft(); 28 | EntityPlayerSP player = mc.player; 29 | if (isEnabled() && mc.gameSettings.keyBindForward.isKeyDown()) { 30 | if (!player.isSprinting()) { 31 | player.setSprinting((float) player.getFoodStats().getFoodLevel() > 6.0F); 32 | } 33 | } else if (!isEnabled()) { 34 | if (player.isSprinting()) { 35 | player.setSprinting(false); 36 | } 37 | } 38 | active_color = player.isSprinting() ? getColor() : getSecondaryColor(); 39 | } 40 | 41 | @Override 42 | public void onEnabled() { 43 | 44 | } 45 | 46 | @Override 47 | public void onDisabled() { 48 | 49 | } 50 | 51 | @Override 52 | public String getName() { 53 | return "Sprint"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /client/main/module/Tool.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import client.main.Client; 4 | import client.main.event.EventBlockSwing; 5 | import client.main.event.EventCanHarvestBlock; 6 | import client.main.event.EventDigSpeed; 7 | import client.main.event.EventResetBlockRemoving; 8 | import client.main.event.EventStr; 9 | import client.main.event.Subscribe; 10 | import client.main.hook.EntityPlayerSPHook; 11 | import net.minecraft.block.state.IBlockState; 12 | import net.minecraft.entity.player.EntityPlayer; 13 | import net.minecraft.item.ItemStack; 14 | import net.minecraft.network.play.client.CPacketHeldItemChange; 15 | 16 | @RegisterModule 17 | public class Tool extends Module { 18 | 19 | private int lastSlot = -1; 20 | 21 | @Subscribe 22 | public void onPlayerSwing(EventBlockSwing e) { 23 | IBlockState block = Client.getMinecraft().world.getBlockState(e.getBlockPos()); 24 | swap(getSlot(block)); 25 | } 26 | 27 | @Subscribe 28 | public void onResetBlockRemoving(EventResetBlockRemoving e) { 29 | if (lastSlot != Client.getMinecraft().player.inventory.currentItem) { 30 | swap(Client.getMinecraft().player.inventory.currentItem); 31 | } 32 | } 33 | 34 | @Subscribe 35 | public void onCanHarvestBlock(EventCanHarvestBlock e) { 36 | if (getTool(e.getBlock()) != null) { 37 | e.setValue(true); 38 | } 39 | } 40 | 41 | @Subscribe 42 | public void onStrVsBlock(EventStr e) { 43 | float var2 = 1.0F; 44 | ItemStack tool = getTool(e.getBlock()); 45 | if (tool != null) { 46 | var2 *= tool.getStrVsBlock(e.getBlock()); 47 | e.setValue(var2); 48 | } 49 | } 50 | 51 | @Subscribe 52 | public void onDigSpeed(EventDigSpeed e) { 53 | EntityPlayer p = Client.getMinecraft().player; 54 | ItemStack tool = getTool(e.getBlock()); 55 | if (tool != null && p.getHeldItemMainhand() != tool) { 56 | ItemStack last = p.getHeldItemMainhand(); 57 | p.inventory.mainInventory.set(p.inventory.currentItem, tool); 58 | e.setValue(p.getDigSpeed(e.getBlock())); 59 | p.inventory.mainInventory.set(p.inventory.currentItem, last); 60 | } 61 | } 62 | 63 | private void swap(int slot) { 64 | if (slot == -1) 65 | return; 66 | lastSlot = slot; 67 | EntityPlayerSPHook player = (EntityPlayerSPHook) Client.getMinecraft().player; 68 | player.getConnection().sendPacket(new CPacketHeldItemChange(slot)); 69 | } 70 | 71 | private ItemStack getTool(IBlockState block) { 72 | return Client.getMinecraft().player.inventory.getStackInSlot(getSlot(block)); 73 | } 74 | 75 | private int getSlot(IBlockState block) { 76 | int slot = -1; 77 | float f = 1.0F; 78 | EntityPlayer p = Client.getMinecraft().player; 79 | for (int i = 0; i < 9; i++) { 80 | ItemStack o = p.inventory.mainInventory.get(i); 81 | if (o != null && o.getStrVsBlock(block) > f) { 82 | slot = i; 83 | f = o.getStrVsBlock(block); 84 | } 85 | } 86 | return slot; 87 | } 88 | 89 | @Override 90 | public void onEnabled() { 91 | 92 | } 93 | 94 | @Override 95 | public void onDisabled() { 96 | 97 | } 98 | 99 | @Override 100 | public String getName() { 101 | return null; 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /client/main/module/TraceESP.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.awt.Color; 4 | 5 | import org.lwjgl.opengl.GL11; 6 | 7 | import client.main.Client; 8 | import client.main.event.EventEntityRender; 9 | import client.main.event.Subscribe; 10 | import net.minecraft.client.Minecraft; 11 | import net.minecraft.client.entity.EntityOtherPlayerMP; 12 | import net.minecraft.client.gui.FontRenderer; 13 | import net.minecraft.client.renderer.BufferBuilder; 14 | import net.minecraft.client.renderer.GlStateManager; 15 | import net.minecraft.client.renderer.ItemRenderer; 16 | import net.minecraft.client.renderer.Tessellator; 17 | import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; 18 | import net.minecraft.client.renderer.entity.RenderManager; 19 | import net.minecraft.client.renderer.vertex.DefaultVertexFormats; 20 | import net.minecraft.entity.Entity; 21 | import net.minecraft.entity.item.EntityEnderPearl; 22 | import net.minecraft.entity.item.EntityItem; 23 | import net.minecraft.item.ItemBlock; 24 | import net.minecraft.item.ItemShield; 25 | import net.minecraft.item.ItemStack; 26 | import net.minecraft.util.math.Vec3d; 27 | 28 | @RegisterModule 29 | public class TraceESP extends Module { 30 | 31 | @Subscribe 32 | public void onEntityRender(EventEntityRender e) { 33 | Minecraft mc = Client.getMinecraft(); 34 | for (Object o : mc.world.loadedEntityList) { 35 | if (o instanceof EntityItem) { 36 | trace(mc, (EntityItem) o, e.getValue(), "#FFD105"); 37 | } else if (o instanceof EntityEnderPearl) { 38 | trace(mc, (EntityEnderPearl) o, e.getValue(), "#00FF90"); 39 | } else if (o instanceof EntityOtherPlayerMP) { 40 | EntityOtherPlayerMP g = (EntityOtherPlayerMP) o; 41 | double opacity = Friend.isFriend(g) ? 0.4 : 1.0; 42 | box(mc, g, e.getValue(), opacity); 43 | trace(mc, g, e.getValue(), opacity); 44 | RenderManager r = mc.getRenderManager(); 45 | double d0 = g.lastTickPosX + (g.posX - g.lastTickPosX) * (double) e.getValue(); 46 | double d1 = g.lastTickPosY + (g.posY - g.lastTickPosY) * (double) e.getValue(); 47 | double d2 = g.lastTickPosZ + (g.posZ - g.lastTickPosZ) * (double) e.getValue(); 48 | renderLivingLabel(g, r.getFontRenderer(), g.getName(), (float) (d0 - r.renderPosX), 49 | (float) (d1 - r.renderPosY) + g.getEyeHeight() * 1.5F, (float) (d2 - r.renderPosZ), 0, 50 | e.getValue(), r.options.thirdPersonView == 2, false); 51 | } 52 | } 53 | } 54 | 55 | private void box(Minecraft mc, EntityOtherPlayerMP e, float par1, double opacity) { 56 | RenderManager r = mc.getRenderManager(); 57 | GL11.glDisable(GL11.GL_LIGHTING); 58 | GL11.glLineWidth(1.0F); 59 | float hp = e.getHealth(); 60 | Color c = Color.decode("#" + (hp / 2 > 7 ? "55FF55" : hp / 2 >= 4 ? "FFFF55" : "FF5555")); 61 | GL11.glPushMatrix(); 62 | GL11.glDepthMask(false); 63 | GL11.glEnable(GL11.GL_BLEND); 64 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 65 | GL11.glColor4d((double) c.getRed() / 255.0, (double) c.getGreen() / 255.0, (double) c.getBlue() / 255.0, 66 | opacity); 67 | double var3 = e.lastTickPosX + (e.posX - e.lastTickPosX) * (double) par1; 68 | double var5 = e.lastTickPosY + (e.posY - e.lastTickPosY) * (double) par1; 69 | double var7 = e.lastTickPosZ + (e.posZ - e.lastTickPosZ) * (double) par1; 70 | GL11.glDisable(GL11.GL_DEPTH_TEST); 71 | GL11.glDisable(GL11.GL_TEXTURE_2D); 72 | GL11.glBegin(GL11.GL_LINES); 73 | 74 | double w = e.width - 0.2; 75 | double h = e.height + 0.3; 76 | 77 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 78 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 79 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY, var7 - r.renderPosZ - w); 80 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 81 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY, var7 - r.renderPosZ - w); 82 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 83 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY, var7 - r.renderPosZ - w); 84 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY, var7 - r.renderPosZ - w); 85 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 86 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 87 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY + h, var7 - r.renderPosZ - w); 88 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY + h, var7 - r.renderPosZ + w); 89 | 90 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY + h, var7 - r.renderPosZ - w); 91 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY + h, var7 - r.renderPosZ + w); 92 | 93 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY + h, var7 - r.renderPosZ - w); 94 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY + h, var7 - r.renderPosZ - w); 95 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY + h, var7 - r.renderPosZ + w); 96 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY + h, var7 - r.renderPosZ + w); 97 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 98 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY + h, var7 - r.renderPosZ + w); 99 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY, var7 - r.renderPosZ + w); 100 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY + h, var7 - r.renderPosZ + w); 101 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY, var7 - r.renderPosZ - w); 102 | GL11.glVertex3d(var3 - r.renderPosX - w, var5 - r.renderPosY + h, var7 - r.renderPosZ - w); 103 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY, var7 - r.renderPosZ - w); 104 | GL11.glVertex3d(var3 - r.renderPosX + w, var5 - r.renderPosY + h, var7 - r.renderPosZ - w); 105 | 106 | GL11.glEnd(); 107 | GL11.glDepthMask(true); 108 | GL11.glEnable(GL11.GL_LIGHTING); 109 | GL11.glEnable(GL11.GL_TEXTURE_2D); 110 | GL11.glEnable(GL11.GL_DEPTH_TEST); 111 | GL11.glPopMatrix(); 112 | } 113 | 114 | private void trace(Minecraft mc, Entity e, float par1, String color) { 115 | if (mc.getRenderManager().renderViewEntity != null) { 116 | GL11.glDisable(GL11.GL_DEPTH_TEST); 117 | GL11.glDisable(GL11.GL_LIGHTING); 118 | GL11.glLineWidth(1F); 119 | Color c = Color.decode(color); 120 | GL11.glPushMatrix(); 121 | GL11.glDepthMask(false); 122 | GL11.glColor3d((double) c.getRed() / 255.0, (double) c.getGreen() / 255.0, (double) c.getBlue() / 255.0); 123 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 124 | GL11.glDisable(GL11.GL_TEXTURE_2D); 125 | GL11.glBegin(GL11.GL_LINES); 126 | RenderManager r = mc.getRenderManager(); 127 | Vec3d v = new Vec3d(0.0D, 0.0D, 1.0D) 128 | .rotatePitch(-((float) Math.toRadians((double) mc.player.rotationPitch))) 129 | .rotateYaw(-((float) Math.toRadians((double) mc.player.rotationYaw))); 130 | GL11.glVertex3d(v.xCoord, mc.player.getEyeHeight() + v.yCoord, v.zCoord); 131 | double var3 = e.lastTickPosX + (e.posX - e.lastTickPosX) * (double) par1; 132 | double var5 = e.lastTickPosY + (e.posY - e.lastTickPosY) * (double) par1; 133 | double var7 = e.lastTickPosZ + (e.posZ - e.lastTickPosZ) * (double) par1; 134 | GL11.glVertex3d(var3 - r.renderPosX, var5 - r.renderPosY + 0.25, var7 - r.renderPosZ); 135 | GL11.glEnd(); 136 | GL11.glDepthMask(true); 137 | GL11.glEnable(GL11.GL_DEPTH_TEST); 138 | GL11.glEnable(GL11.GL_TEXTURE_2D); 139 | GL11.glPopMatrix(); 140 | } 141 | } 142 | 143 | private void renderLivingLabel(EntityOtherPlayerMP e, FontRenderer p_189692_0_, String p_189692_1_, 144 | float p_189692_2_, float p_189692_3_, float p_189692_4_, float p_189692_6_, float p_189692_7_, 145 | boolean p_189692_8_, boolean p_189692_9_) { 146 | Minecraft mc = Client.getMinecraft(); 147 | RenderManager r = mc.getRenderManager(); 148 | GlStateManager.pushMatrix(); 149 | GlStateManager.translate(p_189692_2_, p_189692_3_, p_189692_4_); 150 | GlStateManager.glNormal3f(0.0F, 1.0F, 0.0F); 151 | float var10 = e.getDistanceToEntity(r.renderViewEntity); 152 | float var13 = var10 / 3F; 153 | float var14 = 0.01966667F * var13; 154 | GL11.glRotatef(-r.playerViewY, 0.0F, 1.0F, 0.0F); 155 | GL11.glRotatef(Minecraft.getMinecraft().gameSettings.thirdPersonView == 2 ? -r.playerViewX : r.playerViewX, 156 | 1.0F, 0.0F, 0.0F); 157 | GL11.glScalef(-var14, -var14, var14); 158 | GlStateManager.disableLighting(); 159 | GlStateManager.disableDepth(); 160 | GlStateManager.enableBlend(); 161 | GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, 162 | GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, 163 | GlStateManager.DestFactor.ZERO); 164 | double health = e.getHealth() / 2; 165 | String c = health > 7 ? "\247a" : health >= 4 ? "\247e" : "\247c"; 166 | p_189692_1_ = p_189692_1_ + " " + c + (int) Math.ceil(health); 167 | int i = p_189692_0_.getStringWidth(p_189692_1_) / 2; 168 | GlStateManager.disableTexture2D(); 169 | Tessellator tessellator = Tessellator.getInstance(); 170 | BufferBuilder vertexbuffer = tessellator.getBuffer(); 171 | vertexbuffer.begin(7, DefaultVertexFormats.POSITION_COLOR); 172 | vertexbuffer.pos((double) (-i - 2), (double) (-2), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 173 | vertexbuffer.pos((double) (-i - 2), (double) (9), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 174 | vertexbuffer.pos((double) (i + 2), (double) (9), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 175 | vertexbuffer.pos((double) (i + 2), (double) (-2), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 176 | tessellator.draw(); 177 | GlStateManager.enableTexture2D(); 178 | int p = 0; 179 | for (ItemStack o : e.getEquipmentAndArmor()) { 180 | if (o != null) { 181 | if (!(o.getItem() instanceof ItemBlock) && !(o.getItem() instanceof ItemShield)) { 182 | p++; 183 | } 184 | } 185 | } 186 | p_189692_0_.drawStringWithShadow(p_189692_1_, -p_189692_0_.getStringWidth(p_189692_1_) / 2, 0, 187 | e.isInvisible() ? 0xFFBF35 : e.isSneaking() ? 0xFF0000 : 0xFFFFFF); 188 | GlStateManager.pushMatrix(); 189 | GlStateManager.translate(-p * 7 + ((p <= 3) ? -2 : 0) + (((p == 1)) ? -3 : 0), -8, 0); 190 | GlStateManager.scale(12.0F, -12.0F, 12.0F); 191 | ItemRenderer x = Client.getMinecraft().getItemRenderer(); 192 | for (ItemStack o : e.getEquipmentAndArmor()) { 193 | if (o != null) { 194 | if (!(o.getItem() instanceof ItemBlock) && !(o.getItem() instanceof ItemShield)) { 195 | GlStateManager.translate(1.0, 0, 0); 196 | GlStateManager.disableLighting(); 197 | x.renderItemSide(e, o, TransformType.NONE, false); 198 | } 199 | } 200 | } 201 | GlStateManager.popMatrix(); 202 | int l = 0; 203 | GlStateManager.pushMatrix(); 204 | double scale = 1.0; 205 | GlStateManager.scale(scale, scale, scale); 206 | int m = 0; 207 | GlStateManager.disableLighting(); 208 | GlStateManager.disableDepth(); 209 | GlStateManager.disableAlpha(); 210 | GlStateManager.disableBlend(); 211 | for (ItemStack o : e.getEquipmentAndArmor()) { 212 | if (o != null) { 213 | if (!(o.getItem() instanceof ItemBlock)) { 214 | int w = 0; 215 | if (o.isItemStackDamageable()) { 216 | w = p_189692_0_.getStringWidth( 217 | "" + 100 * (o.getMaxDamage() - o.getItemDamage()) / o.getMaxDamage()) + 1; 218 | int k = (int) Math 219 | .round(255.0D - (double) o.getItemDamage() * 255.0D / (double) o.getMaxDamage()); 220 | if (o.getItemDamage() != o.getMaxDamage()) { 221 | if (o.getItemDamage() == 0) { 222 | m += w / 1.5 - 1; 223 | continue; 224 | } 225 | if (p <= 2) { 226 | p_189692_0_.drawStringWithShadow( 227 | "" + 100 * (o.getMaxDamage() - o.getItemDamage()) / o.getMaxDamage(), 228 | (int) (m - 5), -8, ((255 - k) << 16) | (k << 8)); 229 | } else { 230 | p_189692_0_.drawStringWithShadow( 231 | "" + 100 * (o.getMaxDamage() - o.getItemDamage()) / o.getMaxDamage(), 232 | (int) (m - p * 5), -8, ((255 - k) << 16) | (k << 8)); 233 | } 234 | m += w; 235 | } 236 | l++; 237 | } else { 238 | m += 12; 239 | } 240 | } 241 | } 242 | } 243 | GlStateManager.popMatrix(); 244 | GlStateManager.depthMask(true); 245 | GlStateManager.disableBlend(); 246 | GlStateManager.enableDepth(); 247 | GlStateManager.popMatrix(); 248 | } 249 | 250 | private void trace(Minecraft mc, EntityOtherPlayerMP e, float par1, double opacity) { 251 | RenderManager r = mc.getRenderManager(); 252 | GL11.glDisable(GL11.GL_LIGHTING); 253 | GL11.glLineWidth(1F); 254 | float hp = e.getHealth(); 255 | Color c = Color.decode("#" + (hp / 2 > 7 ? "55FF55" : hp / 2 >= 4 ? "FFFF55" : "FF5555")); 256 | GL11.glPushMatrix(); 257 | GL11.glDepthMask(false); 258 | GL11.glColor4d((double) c.getRed() / 255.0, (double) c.getGreen() / 255.0, (double) c.getBlue() / 255.0, 259 | opacity); 260 | double var3 = e.lastTickPosX + (e.posX - e.lastTickPosX) * (double) par1; 261 | double var5 = e.lastTickPosY + (e.posY - e.lastTickPosY) * (double) par1; 262 | double var7 = e.lastTickPosZ + (e.posZ - e.lastTickPosZ) * (double) par1; 263 | Vec3d v = new Vec3d(0.0D, 0.0D, 1.0D).rotatePitch(-((float) Math.toRadians((double) mc.player.rotationPitch))) 264 | .rotateYaw(-((float) Math.toRadians((double) mc.player.rotationYaw))); 265 | GL11.glDisable(GL11.GL_TEXTURE_2D); 266 | GL11.glDisable(GL11.GL_DEPTH_TEST); 267 | GL11.glBegin(GL11.GL_LINES); 268 | GL11.glVertex3d(v.xCoord, mc.player.getEyeHeight() + v.yCoord, v.zCoord); 269 | GL11.glVertex3d(var3 - r.renderPosX, var5 - r.renderPosY, var7 - r.renderPosZ); 270 | GL11.glEnd(); 271 | GL11.glDisable(GL11.GL_BLEND); 272 | GL11.glDepthMask(true); 273 | GL11.glEnable(GL11.GL_DEPTH_TEST); 274 | GL11.glEnable(GL11.GL_TEXTURE_2D); 275 | GL11.glPopMatrix(); 276 | } 277 | 278 | @Override 279 | public void onEnabled() { 280 | 281 | } 282 | 283 | @Override 284 | public void onDisabled() { 285 | 286 | } 287 | 288 | @Override 289 | public String getName() { 290 | return null; 291 | } 292 | } 293 | -------------------------------------------------------------------------------- /client/main/module/Turtle.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.awt.Color; 4 | import java.util.LinkedList; 5 | 6 | import org.lwjgl.input.Keyboard; 7 | import org.lwjgl.opengl.GL11; 8 | 9 | import client.main.Client; 10 | import client.main.event.EventBlockBreak; 11 | import client.main.event.EventChat; 12 | import client.main.event.EventEntityRender; 13 | import client.main.event.EventUpdateEntity; 14 | import client.main.event.Subscribe; 15 | import net.minecraft.block.material.Material; 16 | import net.minecraft.block.state.IBlockState; 17 | import net.minecraft.client.Minecraft; 18 | import net.minecraft.client.entity.EntityPlayerSP; 19 | import net.minecraft.client.renderer.entity.RenderManager; 20 | import net.minecraft.entity.player.EntityPlayer; 21 | import net.minecraft.init.Blocks; 22 | import net.minecraft.util.EnumFacing; 23 | import net.minecraft.util.EnumHand; 24 | import net.minecraft.util.math.BlockPos; 25 | import net.minecraft.util.text.TextComponentString; 26 | 27 | @RegisterModule(key = Keyboard.KEY_M, color = 0xBBAAFF, listed = true, pressed = false) 28 | public class Turtle extends Module { 29 | 30 | private Color color = new Color(255 | (170 << 8) | (187 << 16)); 31 | 32 | private BlockPos start, end; 33 | 34 | private long nextBuild = 0; 35 | 36 | private boolean running = false; 37 | 38 | private LinkedList queue = new LinkedList(); 39 | 40 | @Override 41 | public void onEnabled() { 42 | build(); 43 | } 44 | 45 | @Override 46 | public void onDisabled() { 47 | if (running) { 48 | running = false; 49 | message(running ? "\247aTurtle mode enabled." : "\247cTurtle mode disabled."); 50 | } 51 | } 52 | 53 | @Subscribe 54 | public void onChat(EventChat e) { 55 | String message = e.getValue(); 56 | if (message.startsWith("-tstart")) { 57 | start = new BlockPos(Client.getMinecraft().player.getPosition()); 58 | e.setCancelled(true); 59 | } else if (message.startsWith("-tend")) { 60 | end = new BlockPos(Client.getMinecraft().player.getPosition()); 61 | e.setCancelled(true); 62 | } else if (message.startsWith("-turtle")) { 63 | running = !running; 64 | message(running ? "\247aTurtle mode enabled." : "\247cTurtle mode disabled."); 65 | e.setCancelled(true); 66 | } else if (message.startsWith("-tclear")) { 67 | start = end = null; 68 | queue.clear(); 69 | e.setCancelled(true); 70 | } 71 | 72 | if (message.startsWith("-tend") || message.startsWith("-tstart")) { 73 | build(); 74 | } 75 | } 76 | 77 | // all of these occurrences should be static at some point in time 78 | private void message(String s) { 79 | EntityPlayer p = Client.getMinecraft().player; 80 | p.addChatMessage(new TextComponentString(s)); 81 | } 82 | 83 | // build the queue by which blocks are dug out 84 | private void build() { 85 | queue.clear(); 86 | 87 | int dx = end.getX() - start.getX(); 88 | int dy = end.getY() - start.getY(); 89 | int dz = end.getZ() - start.getZ(); 90 | 91 | int adx = Math.abs(dx); 92 | int ady = Math.abs(dy); 93 | int adz = Math.abs(dz); 94 | for (int i = 0; i <= ady; i++) { 95 | for (int j = 0; j <= adx; j++) { 96 | for (int k = j % 2 == 0 ? 0 : adz; j % 2 == 0 ? k <= adz : k >= 0; k = k + (j % 2 == 0 ? 1 : -1)) { 97 | BlockPos pos = new BlockPos(start.getX() + j * dx / Math.abs(dx), 98 | start.getY() + i * dy / Math.abs(dy), start.getZ() + k * dz / Math.abs(dz)); 99 | IBlockState state = Client.getMinecraft().world.getBlockState(pos); 100 | if (state.getBlock() != Blocks.AIR) { 101 | queue.add(pos); 102 | } 103 | } 104 | } 105 | } 106 | } 107 | 108 | private void drawBound() { 109 | Minecraft mc = Client.getMinecraft(); 110 | RenderManager r = mc.getRenderManager(); 111 | GL11.glDisable(GL11.GL_LIGHTING); 112 | GL11.glLineWidth(1.0F); 113 | 114 | GL11.glDepthMask(false); 115 | GL11.glDisable(GL11.GL_DEPTH_TEST); 116 | GL11.glPushMatrix(); 117 | GL11.glEnable(GL11.GL_BLEND); 118 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 119 | 120 | double dX = end.getX() - start.getX(); 121 | double dZ = end.getZ() - start.getZ(); 122 | double dY = end.getY() - start.getY(); 123 | 124 | if (dX == 0) { 125 | dX = 1; 126 | } 127 | 128 | if (dZ == 0) { 129 | dZ = 1; 130 | } 131 | 132 | if (dY == 0) { 133 | dY = 1; 134 | } 135 | 136 | double sx = (double) dX / Math.abs(dX); 137 | double sz = (double) dZ / Math.abs(dZ); 138 | double sy = (double) dY / Math.abs(dY); 139 | 140 | double a = 0.01; 141 | double b = 0.01; 142 | double c = 0.01; 143 | double d = 0.01; 144 | 145 | double e = 0.01; 146 | double f = 0.01; 147 | 148 | if (sx > 0 && sz > 0) { 149 | c = 0.99; 150 | d = 0.99; 151 | } 152 | 153 | if (sx > 0 && sz < 0) { 154 | b = 0.99; 155 | c = 0.99; 156 | } 157 | 158 | if (sy > 0) { 159 | e = 0.01; 160 | f = 0.99; 161 | } else { 162 | e = 0.99; 163 | f = 0.01; 164 | } 165 | 166 | if (sx < 0 && sz > 0) { 167 | a = 0.99; 168 | d = 0.99; 169 | } 170 | 171 | if (sx < 0 && sz < 0) { 172 | a = 0.99; 173 | b = 0.99; 174 | } 175 | 176 | double startX = start.getX() + a; 177 | double startY = start.getY() + e; 178 | double startZ = start.getZ() + b; 179 | 180 | double endX = end.getX() + c; 181 | double endY = end.getY() + f; 182 | double endZ = end.getZ() + d; 183 | 184 | GL11.glDisable(GL11.GL_TEXTURE_2D); 185 | 186 | GL11.glBegin(GL11.GL_LINES); 187 | 188 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 189 | (double) color.getBlue() / 255.0, 0.5); 190 | 191 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 192 | GL11.glVertex3d(endX - r.renderPosX + (startX - endX), endY - r.renderPosY, endZ - r.renderPosZ); 193 | 194 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 195 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 196 | 197 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 198 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 199 | 200 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 201 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 202 | 203 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 204 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 205 | 206 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 207 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 208 | 209 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 210 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 211 | 212 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 213 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 214 | 215 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 216 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 217 | 218 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 219 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 220 | 221 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 222 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 223 | 224 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 225 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 226 | 227 | GL11.glEnd(); 228 | 229 | GL11.glDisable(GL11.GL_CULL_FACE); 230 | 231 | GL11.glDepthMask(true); 232 | GL11.glEnable(GL11.GL_DEPTH_TEST); 233 | GL11.glBegin(GL11.GL_QUADS); 234 | 235 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 236 | (double) color.getBlue() / 255.0, (double) 0.1011); 237 | 238 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 239 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 240 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 241 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 242 | 243 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 244 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 245 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 246 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 247 | 248 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 249 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 250 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 251 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 252 | 253 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 254 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 255 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 256 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 257 | 258 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 259 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, endZ - r.renderPosZ); 260 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 261 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, endZ - r.renderPosZ); 262 | 263 | GL11.glVertex3d(startX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 264 | GL11.glVertex3d(endX - r.renderPosX, startY - r.renderPosY, startZ - r.renderPosZ); 265 | GL11.glVertex3d(endX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 266 | GL11.glVertex3d(startX - r.renderPosX, endY - r.renderPosY, startZ - r.renderPosZ); 267 | 268 | GL11.glEnd(); 269 | 270 | GL11.glEnable(GL11.GL_CULL_FACE); 271 | GL11.glDepthMask(true); 272 | GL11.glEnable(GL11.GL_TEXTURE_2D); 273 | GL11.glPopMatrix(); 274 | } 275 | 276 | private void drawBlock(BlockPos l, boolean depth) { 277 | Minecraft mc = Client.getMinecraft(); 278 | IBlockState state = mc.world.getBlockState(l); 279 | RenderManager r = mc.getRenderManager(); 280 | GL11.glDisable(GL11.GL_LIGHTING); 281 | GL11.glLineWidth(1.0F); 282 | 283 | if (!depth) { 284 | GL11.glDepthMask(false); 285 | GL11.glDisable(GL11.GL_DEPTH_TEST); 286 | } 287 | 288 | GL11.glPushMatrix(); 289 | GL11.glEnable(GL11.GL_BLEND); 290 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 291 | 292 | double varX = l.getX() + 0.5; 293 | double varY = l.getY(); 294 | double varZ = l.getZ() + 0.5; 295 | 296 | GL11.glDisable(GL11.GL_TEXTURE_2D); 297 | 298 | double w = 0.5; 299 | double h = 1.0; 300 | 301 | GL11.glBegin(GL11.GL_LINES); 302 | 303 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 304 | (double) color.getBlue() / 255.0, 0.5); 305 | 306 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 307 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 308 | 309 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 310 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 311 | 312 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 313 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 314 | 315 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 316 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 317 | 318 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 319 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 320 | 321 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 322 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 323 | 324 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 325 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 326 | 327 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 328 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 329 | 330 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 331 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 332 | 333 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 334 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 335 | 336 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 337 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 338 | 339 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 340 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 341 | 342 | GL11.glEnd(); 343 | 344 | GL11.glColor4d((double) color.getRed() / 255.0, (double) color.getGreen() / 255.0, 345 | (double) color.getBlue() / 255.0, (double) 0.12); 346 | GL11.glDisable(GL11.GL_CULL_FACE); 347 | 348 | GL11.glBegin(GL11.GL_QUADS); 349 | 350 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 351 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 352 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 353 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 354 | 355 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 356 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 357 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 358 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 359 | 360 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 361 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 362 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 363 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 364 | 365 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 366 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 367 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 368 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 369 | 370 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 371 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 372 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 373 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 374 | 375 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 376 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 377 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 378 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 379 | 380 | GL11.glEnd(); 381 | GL11.glEnable(GL11.GL_CULL_FACE); 382 | 383 | if (!depth) { 384 | GL11.glDepthMask(true); 385 | GL11.glEnable(GL11.GL_DEPTH_TEST); 386 | } 387 | 388 | GL11.glEnable(GL11.GL_TEXTURE_2D); 389 | GL11.glPopMatrix(); 390 | } 391 | 392 | @Subscribe 393 | public void onUpdateEntity(EventUpdateEntity e) { 394 | if (isEnabled() && running) { 395 | Minecraft mc = Client.getMinecraft(); 396 | EntityPlayerSP p = mc.player; 397 | BlockPos next = queue.peek(); 398 | if (next != null) { 399 | double dx = p.posX - (double) (next.getX() + 0.5); 400 | double dy = p.posY - (double) (next.getY() + 0.5); 401 | double dz = p.posZ - (double) (next.getZ() + 0.5); 402 | float dist = (float) Math.sqrt(dx * dx + dz * dz); 403 | if (dist > 0.2) { // approximation of sqrt(2) 404 | float r = (float) Math.sqrt(dx * dx + dy * dy + dz * dz); 405 | float yaw = (float) (Math.atan2(dx, dz) * 180f / Math.PI); 406 | yaw = 180 - yaw; 407 | mc.gameSettings.keyBindForward.setKeyBindState(mc.gameSettings.keyBindForward.getKeyCode(), true); 408 | p.rotationYaw = yaw; 409 | if ((int) p.posY > next.getY()) { 410 | p.rotationPitch = 90f; 411 | } else { 412 | p.rotationPitch = 45f; 413 | } 414 | } 415 | 416 | if (p.getDistanceSqToCenter(next) < 3) { 417 | if (mc.world.getBlockState(next).getMaterial() != Material.AIR 418 | && mc.playerController.onPlayerDamageBlock(next, EnumFacing.UP)) { 419 | mc.effectRenderer.addBlockHitEffects(next, EnumFacing.UP); 420 | mc.player.swingArm(EnumHand.MAIN_HAND); 421 | } else { 422 | queue.removeFirst(); 423 | } 424 | } 425 | } 426 | } 427 | } 428 | 429 | @Subscribe 430 | public void onEntityRender(EventEntityRender e) { 431 | if (isEnabled()) { 432 | if (queue.size() > 0) { 433 | drawBlock(queue.peek(), false); 434 | } 435 | 436 | if (start != null && end != null) { 437 | drawBound(); 438 | } else { 439 | if (start != null) { 440 | drawBlock(start, false); 441 | } 442 | 443 | if (end != null) { 444 | drawBlock(end, false); 445 | } 446 | } 447 | 448 | Minecraft mc = Client.getMinecraft(); 449 | EntityPlayer p = mc.player; 450 | 451 | if (System.currentTimeMillis() > nextBuild) { 452 | build(); 453 | nextBuild = System.currentTimeMillis() + 5000; 454 | } 455 | } 456 | } 457 | 458 | @Subscribe 459 | public void onBlockBreak(EventBlockBreak e) { 460 | if (isEnabled()) { 461 | Minecraft mc = Client.getMinecraft(); 462 | EntityPlayerSP p = mc.player; 463 | mc.playerController.processRightClickBlock(p, mc.world, e.getBlockPos(), EnumFacing.DOWN, p.getLookVec(), 464 | EnumHand.MAIN_HAND); 465 | } 466 | } 467 | 468 | @Override 469 | public String getName() { 470 | int n = queue.size(); 471 | return "Turtle" + (n != 0 ? " " + n : ""); 472 | } 473 | 474 | } 475 | -------------------------------------------------------------------------------- /client/main/module/Wallhack.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import java.awt.Color; 4 | import java.util.ArrayList; 5 | 6 | import org.lwjgl.opengl.GL11; 7 | 8 | import client.main.Client; 9 | import client.main.Location; 10 | import client.main.event.EventChat; 11 | import client.main.event.EventEntityRender; 12 | import client.main.event.EventLoadBlock; 13 | import client.main.event.Subscribe; 14 | import net.minecraft.block.Block; 15 | import net.minecraft.block.state.IBlockState; 16 | import net.minecraft.client.Minecraft; 17 | import net.minecraft.client.renderer.entity.RenderManager; 18 | import net.minecraft.entity.player.EntityPlayer; 19 | import net.minecraft.util.math.BlockPos; 20 | 21 | @RegisterModule(key = 45, color = 32526, listed = true) 22 | public class Wallhack extends Module { 23 | 24 | private ArrayList blocks = new ArrayList(); 25 | 26 | private ArrayList tempList = new ArrayList(); 27 | 28 | @Subscribe 29 | public void onEntityRender(EventEntityRender e) { 30 | Minecraft mc = Client.getMinecraft(); 31 | if (isEnabled()) { 32 | for (Location l : blocks) { 33 | Block block = mc.world 34 | .getBlockState(new BlockPos((double) l.getX(), (double) l.getY(), (double) l.getZ())) 35 | .getBlock(); 36 | double dist = mc.getRenderViewEntity().getDistance(l.getX(), l.getY(), l.getZ()); 37 | if (dist >= mc.gameSettings.renderDistanceChunks * 16 || Block.getIdFromBlock(block) != l.getId()) { 38 | blocks.remove(l); 39 | continue; 40 | } 41 | drawBlock(l); 42 | } 43 | } 44 | } 45 | 46 | @Subscribe 47 | public void onChat(EventChat e) { 48 | String message = e.getValue(); 49 | if (message.startsWith("-w")) { 50 | String k = message.split(" ")[1]; 51 | boolean found = false; 52 | for (String s : tempList) { 53 | found |= s.equals(k); 54 | } 55 | if (!found) { 56 | tempList.add(k); 57 | } 58 | refresh(); 59 | e.setCancelled(true); 60 | } else if (message.equals("-clear")) { 61 | blocks.clear(); 62 | tempList.clear(); 63 | e.setCancelled(true); 64 | } else if (message.startsWith("-c")) { 65 | String k = message.split(" ")[1]; 66 | boolean found = false; 67 | for (String s : tempList) { 68 | found |= s.equals(k); 69 | if (found) { 70 | tempList.remove(s); 71 | break; 72 | } 73 | } 74 | ArrayList removed = new ArrayList(); 75 | int z = 0; 76 | for (Location loc : blocks) { 77 | if (loc.getId() == Integer.parseInt(k)) { 78 | removed.add(blocks.indexOf(loc) - z); 79 | z++; 80 | } 81 | } 82 | for (Integer remove : removed) { 83 | blocks.remove(blocks.get(remove)); 84 | } 85 | e.setCancelled(true); 86 | } 87 | } 88 | 89 | @Subscribe 90 | public void onLoadBlock(EventLoadBlock e) { 91 | Location pos = e.getValue(); 92 | boolean found = false; 93 | for (String s : tempList) { 94 | found |= Integer.parseInt(s.split(":")[0]) == pos.getId(); 95 | if (found) { 96 | break; 97 | } 98 | } 99 | if (!found) 100 | return; 101 | for (Location loc : blocks) { 102 | if (loc.getX() == pos.getX() && loc.getY() == pos.getY() && loc.getZ() == pos.getZ()) { 103 | return; 104 | } 105 | } 106 | boolean max = countBlocks(pos.getId()) <= 200; 107 | double dist = Client.getMinecraft().player 108 | .getDistanceSqToCenter(new BlockPos((double) pos.getX(), (double) pos.getY(), (double) pos.getZ())); 109 | if (max || (!max && dist <= 100)) { 110 | blocks.add(e.getValue()); 111 | } 112 | } 113 | 114 | private int countBlocks(int id) { 115 | int i = 0; 116 | for (Location l : blocks) { 117 | if (l.getId() == id) { 118 | i++; 119 | } 120 | } 121 | return i; 122 | } 123 | 124 | private void refresh() { 125 | Minecraft mc = Client.getMinecraft(); 126 | EntityPlayer p = mc.player; 127 | int d = mc.gameSettings.renderDistanceChunks * 16; 128 | mc.world.markBlockRangeForRenderUpdate(new BlockPos(p.posX - d, p.posY - d, p.posZ - d), 129 | new BlockPos(p.posX + d, p.posY + d, p.posZ + d)); 130 | } 131 | 132 | private void drawBlock(Location l) { 133 | Minecraft mc = Client.getMinecraft(); 134 | IBlockState state = mc.world 135 | .getBlockState(new BlockPos((double) l.getX(), (double) l.getY(), (double) l.getZ())); 136 | RenderManager r = mc.getRenderManager(); 137 | GL11.glDisable(GL11.GL_LIGHTING); 138 | GL11.glLineWidth(1.0F); 139 | Color c = new Color(state.getMapColor(mc.world, 140 | new BlockPos((double) l.getX(), (double) l.getY(), (double) l.getZ())).colorValue); 141 | GL11.glPushMatrix(); 142 | GL11.glDepthMask(false); 143 | GL11.glEnable(GL11.GL_BLEND); 144 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 145 | GL11.glColor4d((double) c.getRed() / 255.0, (double) c.getGreen() / 255.0, (double) c.getBlue() / 255.0, 1); 146 | 147 | double varX = l.getX() + 0.5; 148 | double varY = l.getY(); 149 | double varZ = l.getZ() + 0.5; 150 | GL11.glDisable(GL11.GL_DEPTH_TEST); 151 | GL11.glDisable(GL11.GL_TEXTURE_2D); 152 | double w = 0.5; 153 | double h = 1.0; 154 | GL11.glBegin(GL11.GL_LINES); 155 | 156 | Block current = state.getBlock(); 157 | Block up = mc.world.getBlockState(new BlockPos((double) l.getX(), (double) l.getY() + 1, (double) l.getZ())) 158 | .getBlock(); 159 | Block down = mc.world.getBlockState(new BlockPos((double) l.getX(), (double) l.getY() - 1, (double) l.getZ())) 160 | .getBlock(); 161 | Block left = mc.world.getBlockState(new BlockPos((double) l.getX() - 1, (double) l.getY(), (double) l.getZ())) 162 | .getBlock(); 163 | Block right = mc.world.getBlockState(new BlockPos((double) l.getX() + 1, (double) l.getY(), (double) l.getZ())) 164 | .getBlock(); // gonna use adjacent later 165 | Block forward = mc.world 166 | .getBlockState(new BlockPos((double) l.getX(), (double) l.getY(), (double) l.getZ() + 1)).getBlock(); 167 | Block backward = mc.world 168 | .getBlockState(new BlockPos((double) l.getX(), (double) l.getY(), (double) l.getZ() - 1)).getBlock(); 169 | 170 | if (forward != current) { 171 | if (down != current) { 172 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 173 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 174 | } 175 | 176 | if (left != current) { 177 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 178 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 179 | } 180 | 181 | if (right != current) { 182 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 183 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 184 | } 185 | 186 | if (up != current) { 187 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 188 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 189 | } 190 | } 191 | 192 | if (right != current) { 193 | if (down != current) { 194 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 195 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 196 | } 197 | 198 | if (up != current) { 199 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 200 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 201 | } 202 | 203 | if (backward != current) { 204 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 205 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 206 | } 207 | } 208 | 209 | if (backward != current) { 210 | if (left != current) { 211 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 212 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 213 | } 214 | 215 | if (up != current) { 216 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 217 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 218 | } 219 | 220 | if (down != current) { 221 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 222 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 223 | } 224 | } 225 | 226 | if (left != current) { 227 | if (down != current) { 228 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 229 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 230 | } 231 | 232 | if (up != current) { 233 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 234 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 235 | } 236 | } 237 | 238 | GL11.glEnd(); 239 | 240 | GL11.glColor4d((double) c.getRed() / 255.0, (double) c.getGreen() / 255.0, (double) c.getBlue() / 255.0, 0.15); 241 | GL11.glDisable(GL11.GL_CULL_FACE); 242 | GL11.glBegin(GL11.GL_QUADS); 243 | 244 | if (current != backward) { 245 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 246 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 247 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 248 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 249 | } 250 | 251 | if (current != forward) { 252 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 253 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 254 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 255 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 256 | } 257 | 258 | if (current != right) { 259 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 260 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 261 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 262 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 263 | } 264 | 265 | if (current != left) { 266 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 267 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 268 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 269 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 270 | } 271 | 272 | if (current != down) { 273 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ + w); 274 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ + w); 275 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY, varZ - r.renderPosZ - w); 276 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY, varZ - r.renderPosZ - w); 277 | } 278 | 279 | if (current != up) { 280 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 281 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ + w); 282 | GL11.glVertex3d(varX - r.renderPosX - w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 283 | GL11.glVertex3d(varX - r.renderPosX + w, varY - r.renderPosY + h, varZ - r.renderPosZ - w); 284 | } 285 | 286 | GL11.glEnd(); 287 | GL11.glEnable(GL11.GL_CULL_FACE); 288 | GL11.glDepthMask(true); 289 | GL11.glEnable(GL11.GL_TEXTURE_2D); 290 | GL11.glEnable(GL11.GL_DEPTH_TEST); 291 | GL11.glPopMatrix(); 292 | } 293 | 294 | @Override 295 | public void onEnabled() { 296 | refresh(); 297 | } 298 | 299 | @Override 300 | public void onDisabled() { 301 | 302 | } 303 | 304 | @Override 305 | public String getName() { 306 | return "Wallhack\u00a72" + (blocks.size() > 0 ? " " + blocks.size() : ""); 307 | } 308 | } 309 | -------------------------------------------------------------------------------- /client/main/module/Waypoint.java: -------------------------------------------------------------------------------- 1 | package client.main.module; 2 | 3 | import org.lwjgl.opengl.GL11; 4 | 5 | import client.main.Client; 6 | import client.main.event.EventChat; 7 | import client.main.event.EventEntityRender; 8 | import client.main.event.EventRespawn; 9 | import client.main.event.Subscribe; 10 | import net.minecraft.client.gui.FontRenderer; 11 | import net.minecraft.client.renderer.BufferBuilder; 12 | import net.minecraft.client.renderer.Tessellator; 13 | import net.minecraft.client.renderer.entity.RenderManager; 14 | import net.minecraft.client.renderer.vertex.DefaultVertexFormats; 15 | import net.minecraft.entity.player.EntityPlayer; 16 | import net.minecraft.util.text.TextComponentString; 17 | 18 | @RegisterModule 19 | public class Waypoint extends Module { 20 | 21 | private Marker marker; 22 | 23 | @Subscribe 24 | public void onEntityRender(EventEntityRender e) { 25 | if (marker != null) { 26 | renderMarker(marker); 27 | } 28 | } 29 | 30 | @Subscribe 31 | public void onChat(EventChat e) { 32 | String message = e.getValue(); 33 | if (message.startsWith("-f")) { 34 | if (message.split(" ").length == 4) { 35 | int x = Integer.parseInt(message.split(" ")[1]); 36 | int y = Integer.parseInt(message.split(" ")[2]); 37 | int z = Integer.parseInt(message.split(" ")[3]); 38 | this.marker = new Marker(x, y, z); 39 | } else if (message.split(" ").length == 3) { 40 | int x = Integer.parseInt(message.split(" ")[1]); 41 | int z = Integer.parseInt(message.split(" ")[2]); 42 | this.marker = new Marker(x, (int) Client.getMinecraft().player.posY, z); 43 | } else { 44 | this.marker = null; 45 | } 46 | e.setCancelled(true); 47 | } 48 | } 49 | 50 | @Subscribe 51 | public void onRespawn(EventRespawn e) { 52 | EntityPlayer p = Client.getMinecraft().player; 53 | int posX = (int) p.posX; 54 | int posY = (int) p.posY; 55 | int posZ = (int) p.posZ; 56 | p.addChatMessage(new TextComponentString( 57 | "You died at " + (posX >= 0 ? "\247a+" : "\247c") + (int) posX + ", " + (posY >= 0 ? "\247a+" : "\247c") 58 | + (int) posY + ", " + (posZ >= 0 ? "\247a+" : "\247c") + (int) posZ)); 59 | } 60 | 61 | @Override 62 | public void onEnabled() { 63 | 64 | } 65 | 66 | @Override 67 | public void onDisabled() { 68 | 69 | } 70 | 71 | @Override 72 | public String getName() { 73 | return null; 74 | } 75 | 76 | private void renderMarker(Marker m) { 77 | RenderManager r = Client.getMinecraft().getRenderManager(); 78 | 79 | int par3 = m.getX(); 80 | int par5 = m.getY(); 81 | int par7 = m.getZ(); 82 | 83 | float var10 = (int) r.renderViewEntity.getDistance(par3, par5, par7); 84 | FontRenderer var12 = Client.getMinecraft().fontRendererObj; 85 | String par2Str = "\2477" + (int) r.renderViewEntity.getDistance(par3, par5, par7) + "m"; 86 | 87 | par3 -= r.renderPosX; 88 | par5 -= r.renderPosY; 89 | par7 -= r.renderPosZ; 90 | int d = Client.getMinecraft().gameSettings.renderDistanceChunks * 16; 91 | if (var10 > d) { 92 | par3 *= d / var10; 93 | par5 *= d / var10; 94 | par7 *= d / var10; 95 | var10 = d; 96 | } 97 | float var14 = 0.00896667F * var10; 98 | GL11.glDisable(GL11.GL_FOG); 99 | GL11.glDisable(GL11.GL_DEPTH_TEST); 100 | GL11.glPushMatrix(); 101 | GL11.glDepthMask(false); 102 | GL11.glTranslated((float) par3 + 0.0F, (float) par5, (float) par7); 103 | GL11.glNormal3f(0.0F, 1.0F, 0.0F); 104 | GL11.glRotatef(-r.playerViewY, 0.0F, 1.0F, 0.0F); 105 | GL11.glRotatef(Client.getMinecraft().gameSettings.thirdPersonView == 2 ? -r.playerViewX : r.playerViewX, 1.0F, 106 | 0.0F, 0.0F); 107 | GL11.glScalef(-var14, -var14, var14); 108 | GL11.glEnable(GL11.GL_BLEND); 109 | GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 110 | byte var16 = 0; 111 | var16 -= 0; 112 | GL11.glDisable(GL11.GL_TEXTURE_2D); 113 | int var17 = var12.getStringWidth(par2Str) / 2; 114 | Tessellator tessellator = Tessellator.getInstance(); 115 | BufferBuilder vertexbuffer = tessellator.getBuffer(); 116 | vertexbuffer.begin(7, DefaultVertexFormats.POSITION_COLOR); 117 | vertexbuffer.pos((double) (-var17 - 2), (double) (-2), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 118 | vertexbuffer.pos((double) (-var17 - 2), (double) (9), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 119 | vertexbuffer.pos((double) (var17 + 2), (double) (9), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 120 | vertexbuffer.pos((double) (var17 + 2), (double) (-2), 0.0D).color(0.0F, 0.0F, 0.0F, 0.20F).endVertex(); 121 | tessellator.draw(); 122 | GL11.glEnable(GL11.GL_TEXTURE_2D); 123 | var12.drawStringWithShadow(par2Str, -var12.getStringWidth(par2Str) / 2, var16, 0xFFFFFF); 124 | GL11.glEnable(GL11.GL_DEPTH_TEST); 125 | GL11.glDepthMask(true); 126 | GL11.glDisable(GL11.GL_BLEND); 127 | GL11.glPopMatrix(); 128 | } 129 | 130 | class Marker { 131 | private int x, y, z; 132 | 133 | public Marker(int x, int y, int z) { 134 | this.x = x; 135 | this.y = y; 136 | this.z = z; 137 | } 138 | 139 | public int getX() { 140 | return this.x; 141 | } 142 | 143 | public int getY() { 144 | return this.y; 145 | } 146 | 147 | public int getZ() { 148 | return this.z; 149 | } 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /patch.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/minecraft/net/minecraft/client/Minecraft.java b/src2/minecraft/net/minecraft/client/Minecraft.java 2 | index 2dea5d6..1ebd760 100644 3 | --- a/src/minecraft/net/minecraft/client/Minecraft.java 4 | +++ b/src2/minecraft/net/minecraft/client/Minecraft.java 5 | @@ -633,6 +633,7 @@ public class Minecraft implements IThreadListener, ISnooperInfo 6 | } 7 | 8 | this.renderGlobal.makeEntityOutlineShader(); 9 | + new es.blueberrypancak.Client(this); 10 | } 11 | 12 | private void func_193986_ar() 13 | @@ -1199,6 +1200,8 @@ public class Minecraft implements IThreadListener, ISnooperInfo 14 | this.field_193034_aS.func_191783_a(new ScaledResolution(this)); 15 | this.mcProfiler.endSection(); 16 | } 17 | + 18 | + es.blueberrypancak.event.EventManager.fire(new es.blueberrypancak.event.EventRender()); 19 | 20 | this.mcProfiler.endSection(); 21 | 22 | @@ -1897,6 +1900,8 @@ public class Minecraft implements IThreadListener, ISnooperInfo 23 | } 24 | } 25 | 26 | + es.blueberrypancak.event.EventManager.fire(new es.blueberrypancak.event.EventTick()); 27 | + 28 | if (this.currentScreen == null || this.currentScreen.allowUserInput) 29 | { 30 | this.mcProfiler.endStartSection("mouse"); 31 | diff --git a/src/minecraft/net/minecraft/client/entity/EntityPlayerSP.java b/src2/minecraft/net/minecraft/client/entity/EntityPlayerSP.java 32 | index 990f31d..29ec724 100644 33 | --- a/src/minecraft/net/minecraft/client/entity/EntityPlayerSP.java 34 | +++ b/src2/minecraft/net/minecraft/client/entity/EntityPlayerSP.java 35 | @@ -967,8 +967,8 @@ public class EntityPlayerSP extends AbstractClientPlayer 36 | 37 | if (this.isHandActive() && !this.isRiding()) 38 | { 39 | - this.movementInput.moveStrafe *= 0.2F; 40 | - this.movementInput.field_192832_b *= 0.2F; 41 | + /*this.movementInput.moveStrafe *= 0.2F; 42 | + this.movementInput.field_192832_b *= 0.2F;*/ 43 | this.sprintToggleTimer = 0; 44 | } 45 | 46 | diff --git a/src/minecraft/net/minecraft/client/gui/GuiIngame.java b/src2/minecraft/net/minecraft/client/gui/GuiIngame.java 47 | index 05a9237..4d9dab6 100644 48 | --- a/src/minecraft/net/minecraft/client/gui/GuiIngame.java 49 | +++ b/src2/minecraft/net/minecraft/client/gui/GuiIngame.java 50 | @@ -125,7 +125,7 @@ public class GuiIngame extends Gui 51 | this.itemRenderer = mcIn.getRenderItem(); 52 | this.overlayDebug = new GuiOverlayDebug(mcIn); 53 | this.spectatorGui = new GuiSpectator(mcIn); 54 | - this.persistantChatGUI = new GuiNewChat(mcIn); 55 | + this.persistantChatGUI = new es.blueberrypancak.hook.GuiNewChatHook(mcIn); 56 | this.overlayPlayerList = new GuiPlayerTabOverlay(mcIn, this); 57 | this.overlayBoss = new GuiBossOverlay(mcIn); 58 | this.overlaySubtitle = new GuiSubtitleOverlay(mcIn); 59 | diff --git a/src/minecraft/net/minecraft/client/network/NetHandlerLoginClient.java b/src2/minecraft/net/minecraft/client/network/NetHandlerLoginClient.java 60 | index 3f7ffde..a5d5f5a 100644 61 | --- a/src/minecraft/net/minecraft/client/network/NetHandlerLoginClient.java 62 | +++ b/src2/minecraft/net/minecraft/client/network/NetHandlerLoginClient.java 63 | @@ -105,7 +105,7 @@ public class NetHandlerLoginClient implements INetHandlerLoginClient 64 | { 65 | this.gameProfile = packetIn.getProfile(); 66 | this.networkManager.setConnectionState(EnumConnectionState.PLAY); 67 | - this.networkManager.setNetHandler(new NetHandlerPlayClient(this.mc, this.previousGuiScreen, this.networkManager, this.gameProfile)); 68 | + this.networkManager.setNetHandler(new es.blueberrypancak.hook.NetHandlerPlayClientHook(this.mc, this.previousGuiScreen, this.networkManager, this.gameProfile)); 69 | } 70 | 71 | /** 72 | diff --git a/src/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java b/src2/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java 73 | index 7e62acd..e809abb 100644 74 | --- a/src/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java 75 | +++ b/src2/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java 76 | @@ -324,7 +324,7 @@ public class NetHandlerPlayClient implements INetHandlerPlayClient 77 | public void handleJoinGame(SPacketJoinGame packetIn) 78 | { 79 | PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.gameController); 80 | - this.gameController.playerController = new PlayerControllerMP(this.gameController, this); 81 | + this.gameController.playerController = new es.blueberrypancak.hook.PlayerControllerMPHook(this.gameController, this); 82 | this.clientWorldController = new WorldClient(this, new WorldSettings(0L, packetIn.getGameType(), false, packetIn.isHardcoreMode(), packetIn.getWorldType()), packetIn.getDimension(), packetIn.getDifficulty(), this.gameController.mcProfiler); 83 | this.gameController.gameSettings.difficulty = packetIn.getDifficulty(); 84 | this.gameController.loadWorld(this.clientWorldController); 85 | diff --git a/src/minecraft/net/minecraft/client/renderer/EntityRenderer.java b/src2/minecraft/net/minecraft/client/renderer/EntityRenderer.java 86 | index 438b8aa..2edd216 100644 87 | --- a/src/minecraft/net/minecraft/client/renderer/EntityRenderer.java 88 | +++ b/src2/minecraft/net/minecraft/client/renderer/EntityRenderer.java 89 | @@ -539,7 +539,7 @@ public class EntityRenderer implements IResourceManagerReloadListener 90 | /** 91 | * Changes the field of view of the player depending on if they are underwater or not 92 | */ 93 | - private float getFOVModifier(float partialTicks, boolean useFOVSetting) 94 | + protected float getFOVModifier(float partialTicks, boolean useFOVSetting) 95 | { 96 | if (this.debugView) 97 | { 98 | @@ -1476,6 +1476,8 @@ public class EntityRenderer implements IResourceManagerReloadListener 99 | GlStateManager.enableCull(); 100 | GlStateManager.disableBlend(); 101 | GlStateManager.disableFog(); 102 | + 103 | + es.blueberrypancak.event.EventManager.fire(new es.blueberrypancak.event.EventEntityRender(partialTicks)); 104 | 105 | if (entity.posY + (double)entity.getEyeHeight() >= 128.0D) 106 | { 107 | @@ -2084,14 +2086,16 @@ public class EntityRenderer implements IResourceManagerReloadListener 108 | GlStateManager.glNormal3f(0.0F, 1.0F, 0.0F); 109 | GlStateManager.rotate(-viewerYaw, 0.0F, 1.0F, 0.0F); 110 | GlStateManager.rotate((float)(isThirdPersonFrontal ? -1 : 1) * viewerPitch, 1.0F, 0.0F, 0.0F); 111 | - GlStateManager.scale(-0.025F, -0.025F, 0.025F); 112 | + GlStateManager.scale(-0.025F*2, -0.025F*2, 0.025F*2); 113 | GlStateManager.disableLighting(); 114 | - GlStateManager.depthMask(false); 115 | + /*GlStateManager.depthMask(false); 116 | 117 | if (!isSneaking) 118 | { 119 | GlStateManager.disableDepth(); 120 | - } 121 | + }*/ 122 | + 123 | + GlStateManager.disableDepth(); 124 | 125 | GlStateManager.enableBlend(); 126 | GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); 127 | @@ -2107,16 +2111,17 @@ public class EntityRenderer implements IResourceManagerReloadListener 128 | tessellator.draw(); 129 | GlStateManager.enableTexture2D(); 130 | 131 | - if (!isSneaking) 132 | + /*if (!isSneaking) 133 | { 134 | fontRendererIn.drawString(str, -fontRendererIn.getStringWidth(str) / 2, verticalShift, 553648127); 135 | GlStateManager.enableDepth(); 136 | - } 137 | + }*/ 138 | 139 | - GlStateManager.depthMask(true); 140 | fontRendererIn.drawString(str, -fontRendererIn.getStringWidth(str) / 2, verticalShift, isSneaking ? 553648127 : -1); 141 | GlStateManager.enableLighting(); 142 | + GlStateManager.depthMask(true); 143 | GlStateManager.disableBlend(); 144 | + GlStateManager.enableDepth(); 145 | GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); 146 | GlStateManager.popMatrix(); 147 | } 148 | diff --git a/src/minecraft/net/minecraft/client/renderer/ItemRenderer.java b/src2/minecraft/net/minecraft/client/renderer/ItemRenderer.java 149 | index 46fdf71..42de96d 100644 150 | --- a/src/minecraft/net/minecraft/client/renderer/ItemRenderer.java 151 | +++ b/src2/minecraft/net/minecraft/client/renderer/ItemRenderer.java 152 | @@ -478,11 +478,6 @@ public class ItemRenderer 153 | 154 | if (!this.mc.player.isSpectator()) 155 | { 156 | - if (this.mc.player.isInsideOfMaterial(Material.WATER)) 157 | - { 158 | - this.renderWaterOverlayTexture(partialTicks); 159 | - } 160 | - 161 | if (this.mc.player.isBurning()) 162 | { 163 | this.renderFireInFirstPerson(); 164 | @@ -562,7 +557,7 @@ public class ItemRenderer 165 | { 166 | Tessellator tessellator = Tessellator.getInstance(); 167 | BufferBuilder bufferbuilder = tessellator.getBuffer(); 168 | - GlStateManager.color(1.0F, 1.0F, 1.0F, 0.9F); 169 | + GlStateManager.color(1.0F, 1.0F, 1.0F, 1F); 170 | GlStateManager.depthFunc(519); 171 | GlStateManager.depthMask(false); 172 | GlStateManager.enableBlend(); 173 | @@ -586,10 +581,11 @@ public class ItemRenderer 174 | GlStateManager.translate((float)(-(i * 2 - 1)) * 0.24F, -0.3F, 0.0F); 175 | GlStateManager.rotate((float)(i * 2 - 1) * 10.0F, 0.0F, 1.0F, 0.0F); 176 | bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX); 177 | - bufferbuilder.pos(-0.5D, -0.5D, -0.5D).tex((double)f2, (double)f4).endVertex(); 178 | - bufferbuilder.pos(0.5D, -0.5D, -0.5D).tex((double)f1, (double)f4).endVertex(); 179 | - bufferbuilder.pos(0.5D, 0.5D, -0.5D).tex((double)f1, (double)f3).endVertex(); 180 | - bufferbuilder.pos(-0.5D, 0.5D, -0.5D).tex((double)f2, (double)f3).endVertex(); 181 | + float scale = 0.4F; 182 | + bufferbuilder.pos(-0.5D*scale, -0.5D*scale, -0.5D*scale).tex((double)f2, (double)f4).endVertex(); 183 | + bufferbuilder.pos(0.5D*scale, -0.5D*scale*0.5, -0.5D*scale).tex((double)f1, (double)f4).endVertex(); 184 | + bufferbuilder.pos(0.5D*scale, 0.5D*scale, -0.5D*scale).tex((double)f1, (double)f3).endVertex(); 185 | + bufferbuilder.pos(-0.5D*scale, 0.5D*scale, -0.5D*scale).tex((double)f2, (double)f3).endVertex(); 186 | tessellator.draw(); 187 | GlStateManager.popMatrix(); 188 | } 189 | diff --git a/src/minecraft/net/minecraft/client/renderer/RenderItem.java b/src2/minecraft/net/minecraft/client/renderer/RenderItem.java 190 | index 4db2364..2f82f89 100644 191 | --- a/src/minecraft/net/minecraft/client/renderer/RenderItem.java 192 | +++ b/src2/minecraft/net/minecraft/client/renderer/RenderItem.java 193 | @@ -426,23 +426,19 @@ public class RenderItem implements IResourceManagerReloadListener 194 | { 195 | GlStateManager.disableLighting(); 196 | GlStateManager.disableDepth(); 197 | - GlStateManager.disableTexture2D(); 198 | GlStateManager.disableAlpha(); 199 | GlStateManager.disableBlend(); 200 | - Tessellator tessellator = Tessellator.getInstance(); 201 | - BufferBuilder bufferbuilder = tessellator.getBuffer(); 202 | - float f = (float)stack.getItemDamage(); 203 | - float f1 = (float)stack.getMaxDamage(); 204 | - float f2 = Math.max(0.0F, (f1 - f) / f1); 205 | - int i = Math.round(13.0F - f * 13.0F / f1); 206 | - int j = MathHelper.hsvToRGB(f2 / 3.0F, 1.0F, 1.0F); 207 | - this.draw(bufferbuilder, xPosition + 2, yPosition + 13, 13, 2, 0, 0, 0, 255); 208 | - this.draw(bufferbuilder, xPosition + 2, yPosition + 13, i, 1, j >> 16 & 255, j >> 8 & 255, j & 255, 255); 209 | - GlStateManager.enableBlend(); 210 | - GlStateManager.enableAlpha(); 211 | - GlStateManager.enableTexture2D(); 212 | + int i = (int)Math.round(255.0D - (double)stack.getItemDamage() * 255.0D / (double)stack.getMaxDamage()); 213 | + String s = ""+100*(stack.getMaxDamage()-stack.getItemDamage())/stack.getMaxDamage(); 214 | + if(stack.getItemDamage() != stack.getMaxDamage()) { 215 | + fr.drawStringWithShadow(s, (float)(xPosition + 19 - 2 - fr.getStringWidth(s)), (float)(yPosition + 6 + 3), ((255-i)<<16)|(i<<8)); 216 | + GlStateManager.color(1, 1, 1, 1); 217 | + } 218 | + 219 | GlStateManager.enableLighting(); 220 | GlStateManager.enableDepth(); 221 | + GlStateManager.enableAlpha(); 222 | + GlStateManager.enableBlend(); 223 | } 224 | 225 | EntityPlayerSP entityplayersp = Minecraft.getMinecraft().player; 226 | diff --git a/src/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.java b/src2/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.java 227 | index ef332b5..480a8c4 100644 228 | --- a/src/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.java 229 | +++ b/src2/minecraft/net/minecraft/client/renderer/chunk/RenderChunk.java 230 | @@ -181,6 +181,10 @@ public class RenderChunk 231 | } 232 | } 233 | } 234 | + 235 | + if(iblockstate.getMaterial() != net.minecraft.block.material.Material.AIR) { 236 | + es.blueberrypancak.event.EventManager.fire(new es.blueberrypancak.event.EventLoadBlock(new es.blueberrypancak.Location(blockpos$mutableblockpos.getX(), blockpos$mutableblockpos.getY(), blockpos$mutableblockpos.getZ(), Block.getIdFromBlock(block)))); 237 | + } 238 | 239 | BlockRenderLayer blockrenderlayer1 = block.getBlockLayer(); 240 | int j = blockrenderlayer1.ordinal(); 241 | diff --git a/src/minecraft/net/minecraft/client/renderer/entity/Render.java b/src2/minecraft/net/minecraft/client/renderer/entity/Render.java 242 | index 1149867..b03e617 100644 243 | --- a/src/minecraft/net/minecraft/client/renderer/entity/Render.java 244 | +++ b/src2/minecraft/net/minecraft/client/renderer/entity/Render.java 245 | @@ -101,7 +101,7 @@ public abstract class Render 246 | 247 | protected void renderEntityName(T entityIn, double x, double y, double z, String name, double distanceSq) 248 | { 249 | - this.renderLivingLabel(entityIn, name, x, y, z, 64); 250 | + //this.renderLivingLabel(entityIn, name, x, y, z, 64); 251 | } 252 | 253 | @Nullable 254 | @@ -365,16 +365,13 @@ public abstract class Render 255 | { 256 | double d0 = entityIn.getDistanceSqToEntity(this.renderManager.renderViewEntity); 257 | 258 | - if (d0 <= (double)(maxDistance * maxDistance)) 259 | - { 260 | - boolean flag = entityIn.isSneaking(); 261 | - float f = this.renderManager.playerViewY; 262 | - float f1 = this.renderManager.playerViewX; 263 | - boolean flag1 = this.renderManager.options.thirdPersonView == 2; 264 | - float f2 = entityIn.height + 0.5F - (flag ? 0.25F : 0.0F); 265 | - int i = "deadmau5".equals(str) ? -10 : 0; 266 | - EntityRenderer.drawNameplate(this.getFontRendererFromRenderManager(), str, (float)x, (float)y + f2, (float)z, i, f, f1, flag1, flag); 267 | - } 268 | + boolean flag = entityIn.isSneaking(); 269 | + float f = this.renderManager.playerViewY; 270 | + float f1 = this.renderManager.playerViewX; 271 | + boolean flag1 = this.renderManager.options.thirdPersonView == 2; 272 | + float f2 = entityIn.height + 0.5F - (flag ? 0.25F : 0.0F); 273 | + int i = "deadmau5".equals(str) ? -10 : 0; 274 | + EntityRenderer.drawNameplate(this.getFontRendererFromRenderManager(), str, (float)x, (float)y + f2, (float)z, i, f, f1, flag1, flag); 275 | } 276 | 277 | public RenderManager getRenderManager() 278 | diff --git a/src/minecraft/net/minecraft/client/renderer/entity/RenderManager.java b/src2/minecraft/net/minecraft/client/renderer/entity/RenderManager.java 279 | index cabc9c3..b0c92af 100644 280 | --- a/src/minecraft/net/minecraft/client/renderer/entity/RenderManager.java 281 | +++ b/src2/minecraft/net/minecraft/client/renderer/entity/RenderManager.java 282 | @@ -121,9 +121,9 @@ public class RenderManager 283 | 284 | /** Renders fonts */ 285 | private FontRenderer textRenderer; 286 | - private double renderPosX; 287 | - private double renderPosY; 288 | - private double renderPosZ; 289 | + public double renderPosX; 290 | + public double renderPosY; 291 | + public double renderPosZ; 292 | public TextureManager renderEngine; 293 | 294 | /** Reference to the World object. */ 295 | diff --git a/src/minecraft/net/minecraft/entity/EntityLivingBase.java b/src2/minecraft/net/minecraft/entity/EntityLivingBase.java 296 | index 3e6bec2..ee51d71 100644 297 | --- a/src/minecraft/net/minecraft/entity/EntityLivingBase.java 298 | +++ b/src2/minecraft/net/minecraft/entity/EntityLivingBase.java 299 | @@ -2151,12 +2151,12 @@ public abstract class EntityLivingBase extends Entity 300 | this.motionY = -0.15D; 301 | } 302 | 303 | - boolean flag = this.isSneaking() && this instanceof EntityPlayer; 304 | + /*boolean flag = this.isSneaking() && this instanceof EntityPlayer; 305 | 306 | if (flag && this.motionY < 0.0D) 307 | { 308 | this.motionY = 0.0D; 309 | - } 310 | + }*/ 311 | } 312 | 313 | this.moveEntity(MoverType.SELF, this.motionX, this.motionY, this.motionZ); 314 | diff --git a/src/minecraft/net/minecraft/entity/player/EntityPlayer.java b/src2/minecraft/net/minecraft/entity/player/EntityPlayer.java 315 | index c9f07d5..7166dd8 100644 316 | --- a/src/minecraft/net/minecraft/entity/player/EntityPlayer.java 317 | +++ b/src2/minecraft/net/minecraft/entity/player/EntityPlayer.java 318 | @@ -102,7 +102,7 @@ public abstract class EntityPlayer extends EntityLivingBase 319 | protected static final DataParameter field_192033_bu = EntityDataManager.createKey(EntityPlayer.class, DataSerializers.field_192734_n); 320 | 321 | /** Inventory of the player */ 322 | - public InventoryPlayer inventory = new InventoryPlayer(this); 323 | + public InventoryPlayer inventory = new es.blueberrypancak.hook.InventoryPlayerHook(this); 324 | protected InventoryEnderChest theInventoryEnderChest = new InventoryEnderChest(); 325 | 326 | /** 327 | @@ -2623,7 +2623,9 @@ public abstract class EntityPlayer extends EntityLivingBase 328 | 329 | public float getCooldownPeriod() 330 | { 331 | - return (float)(1.0D / this.getEntityAttribute(SharedMonsterAttributes.ATTACK_SPEED).getAttributeValue() * 20.0D); 332 | + es.blueberrypancak.event.EventCooldown e = new es.blueberrypancak.event.EventCooldown((float)(1.0D / this.getEntityAttribute(SharedMonsterAttributes.ATTACK_SPEED).getAttributeValue() * 20.0D)); 333 | + es.blueberrypancak.event.EventManager.fire(e); 334 | + return e.getValue(); 335 | } 336 | 337 | /** 338 | diff --git a/src/minecraft/net/minecraft/entity/projectile/EntityFishHook.java b/src2/minecraft/net/minecraft/entity/projectile/EntityFishHook.java 339 | index fceef29..a79168b 100644 340 | --- a/src/minecraft/net/minecraft/entity/projectile/EntityFishHook.java 341 | +++ b/src2/minecraft/net/minecraft/entity/projectile/EntityFishHook.java 342 | @@ -36,7 +36,7 @@ public class EntityFishHook extends Entity 343 | private static final DataParameter DATA_HOOKED_ENTITY = EntityDataManager.createKey(EntityFishHook.class, DataSerializers.VARINT); 344 | private boolean inGround; 345 | private int ticksInGround; 346 | - private EntityPlayer angler; 347 | + public EntityPlayer angler; 348 | private int ticksInAir; 349 | private int ticksCatchable; 350 | private int ticksCaughtDelay; 351 | diff --git a/src/minecraft/net/minecraft/network/NetworkManager.java b/src2/minecraft/net/minecraft/network/NetworkManager.java 352 | index 2de7347..3b2c9bf 100644 353 | --- a/src/minecraft/net/minecraft/network/NetworkManager.java 354 | +++ b/src2/minecraft/net/minecraft/network/NetworkManager.java 355 | @@ -148,7 +148,9 @@ public class NetworkManager extends SimpleChannelInboundHandler < Packet> 356 | { 357 | try 358 | { 359 | - ((Packet)p_channelRead0_2_).processPacket(this.packetListener); 360 | + es.blueberrypancak.event.EventRecPacket e = new es.blueberrypancak.event.EventRecPacket(p_channelRead0_2_); 361 | + es.blueberrypancak.event.EventManager.fire(e); 362 | + if(!e.isCancelled()) ((Packet)e.getValue()).processPacket(this.packetListener); 363 | } 364 | catch (ThreadQuickExitException var4) 365 | { 366 | diff --git a/src/minecraft/net/minecraft/network/play/client/CPacketPlayer.java b/src2/minecraft/net/minecraft/network/play/client/CPacketPlayer.java 367 | index d66f3d0..d117d02 100644 368 | --- a/src/minecraft/net/minecraft/network/play/client/CPacketPlayer.java 369 | +++ b/src2/minecraft/net/minecraft/network/play/client/CPacketPlayer.java 370 | @@ -12,7 +12,7 @@ public class CPacketPlayer implements Packet 371 | protected double z; 372 | protected float yaw; 373 | protected float pitch; 374 | - protected boolean onGround; 375 | + public boolean onGround; 376 | protected boolean moving; 377 | protected boolean rotating; 378 | 379 | -------------------------------------------------------------------------------- /screenshots/2016-07-01_04.37.56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qubard/CubClient/d68acd8c11cff78010d0a3ee28ddfc27b11304ec/screenshots/2016-07-01_04.37.56.png -------------------------------------------------------------------------------- /screenshots/2016-07-01_23.10.08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qubard/CubClient/d68acd8c11cff78010d0a3ee28ddfc27b11304ec/screenshots/2016-07-01_23.10.08.png --------------------------------------------------------------------------------