From 0f5848d67ccf09e0238ca5567edbb40d885bc627 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 2 Oct 2019 18:29:59 +0200 Subject: [PATCH] Add AutoMineHack --- .../java/net/wurstclient/hack/HackList.java | 2 +- .../net/wurstclient/hacks/AutoMineHack.java | 85 +++++++++++++++++++ .../java/net/wurstclient/hacks/NukerHack.java | 2 + 3 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/wurstclient/hacks/AutoMineHack.java diff --git a/src/main/java/net/wurstclient/hack/HackList.java b/src/main/java/net/wurstclient/hack/HackList.java index 37a69bed..28bbc7df 100644 --- a/src/main/java/net/wurstclient/hack/HackList.java +++ b/src/main/java/net/wurstclient/hack/HackList.java @@ -37,7 +37,7 @@ public final class HackList implements UpdateListener // public final AutoEatHack autoEatHack = new AutoEatHack(); public final AutoFarmHack autoFarmHack = new AutoFarmHack(); public final AutoFishHack autoFishHack = new AutoFishHack(); - // public final AutoMineHack autoMineHack = new AutoMineHack(); + public final AutoMineHack autoMineHack = new AutoMineHack(); public final AutoRespawnHack autoRespawnHack = new AutoRespawnHack(); // public final AutoSignHack autoSignHack = new AutoSignHack(); // public final AutoSplashPotHack autoSplashPotHack = new diff --git a/src/main/java/net/wurstclient/hacks/AutoMineHack.java b/src/main/java/net/wurstclient/hacks/AutoMineHack.java new file mode 100644 index 00000000..7c5eff60 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/AutoMineHack.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2014 - 2019 | Wurst-Imperium | All rights reserved. + * + * This source code is subject to the terms of the GNU General Public + * License, version 3. If a copy of the GPL was not distributed with this + * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt + */ +package net.wurstclient.hacks; + +import java.util.Arrays; + +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; +import net.wurstclient.Category; +import net.wurstclient.SearchTags; +import net.wurstclient.events.UpdateListener; +import net.wurstclient.hack.Hack; +import net.wurstclient.util.BlockBreaker; + +@SearchTags({"auto mine", "AutoBreak", "auto break"}) +public final class AutoMineHack extends Hack implements UpdateListener +{ + private BlockPos currentBlock; + + public AutoMineHack() + { + super("AutoMine", "Automatically mines any block that you look at."); + setCategory(Category.BLOCKS); + } + + @Override + public void onEnable() + { + WURST.getHax().nukerHack.setEnabled(false); + EVENTS.add(UpdateListener.class, this); + } + + @Override + public void onDisable() + { + EVENTS.remove(UpdateListener.class, this); + stopMiningAndResetProgress(); + } + + @Override + public void onUpdate() + { + setCurrentBlockFromHitResult(); + + if(currentBlock != null) + breakCurrentBlock(); + } + + private void setCurrentBlockFromHitResult() + { + if(MC.hitResult == null || MC.hitResult.getPos() == null + || MC.hitResult.getType() != HitResult.Type.BLOCK + || !(MC.hitResult instanceof BlockHitResult)) + { + stopMiningAndResetProgress(); + return; + } + + currentBlock = ((BlockHitResult)MC.hitResult).getBlockPos(); + } + + private void breakCurrentBlock() + { + if(MC.player.abilities.creativeMode) + BlockBreaker.breakBlocksWithPacketSpam(Arrays.asList(currentBlock)); + else + BlockBreaker.breakOneBlock(currentBlock); + } + + private void stopMiningAndResetProgress() + { + if(currentBlock == null) + return; + + IMC.getInteractionManager().setBreakingBlock(true); + MC.interactionManager.cancelBlockBreaking(); + currentBlock = null; + } +} diff --git a/src/main/java/net/wurstclient/hacks/NukerHack.java b/src/main/java/net/wurstclient/hacks/NukerHack.java index e87ecd2f..73efe018 100644 --- a/src/main/java/net/wurstclient/hacks/NukerHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerHack.java @@ -85,6 +85,8 @@ public final class NukerHack extends Hack @Override protected void onEnable() { + WURST.getHax().autoMineHack.setEnabled(false); + EVENTS.add(UpdateListener.class, this); EVENTS.add(LeftClickListener.class, this); EVENTS.add(RenderListener.class, this);