diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/world/NukerModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/world/NukerModule.java index 5902473..aaacf66 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/world/NukerModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/world/NukerModule.java @@ -134,6 +134,12 @@ public final class NukerModule extends Module { } else { if (this.currentPos != null) { if (this.rotationTask.isOnline()) { + if (SpeedMineModule.autoPos != null) { + if (this.currentPos.equals(SpeedMineModule.autoPos)) { + return; + } + } + if (this.canBreak(this.currentPos)) { mc.playerController.onPlayerDamageBlock(this.currentPos, mc.player.getHorizontalFacing()); mc.player.swingArm(EnumHand.MAIN_HAND); @@ -180,6 +186,9 @@ public final class NukerModule extends Module { for (int revX = 0; revX <= 1; revX++, x = -x) { for (int revZ = 0; revZ <= 1; revZ++, z = -z) { final BlockPos pos = new BlockPos(mc.player.posX + x, mc.player.posY + y, mc.player.posZ + z); + if (pos.equals(SpeedMineModule.autoPos)) { + continue; + } if ((mc.world.getBlockState(pos).getBlock() != Blocks.AIR && !(mc.world.getBlockState(pos).getBlock() instanceof BlockLiquid)) && this.canBreak(pos)) { @@ -203,6 +212,9 @@ public final class NukerModule extends Module { for (float z = maxDist; z >= -maxDist; z--) { final BlockPos pos = new BlockPos(mc.player.posX + x, mc.player.posY + y, mc.player.posZ + z); final double dist = mc.player.getDistance(pos.getX(), pos.getY(), pos.getZ()); + if (pos.equals(SpeedMineModule.autoPos)) { + continue; + } if (dist <= maxDist && (mc.world.getBlockState(pos).getBlock() != Blocks.AIR && !(mc.world.getBlockState(pos).getBlock() instanceof BlockLiquid)) && canBreak(pos)) { if (selection) { if ((this.selected == null) || !mc.world.getBlockState(pos).getBlock().equals(this.selected)) { diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/world/SpeedMineModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/world/SpeedMineModule.java index a224940..596f7f6 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/world/SpeedMineModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/world/SpeedMineModule.java @@ -1,11 +1,16 @@ package me.rigamortis.seppuku.impl.module.world; +import java.awt.*; +import me.rigamortis.seppuku.Seppuku; import me.rigamortis.seppuku.api.event.EventStageable; import me.rigamortis.seppuku.api.event.player.EventClickBlock; import me.rigamortis.seppuku.api.event.player.EventPlayerDamageBlock; import me.rigamortis.seppuku.api.event.player.EventPlayerUpdate; import me.rigamortis.seppuku.api.event.player.EventResetBlockRemoving; +import me.rigamortis.seppuku.api.event.render.EventRender3D; import me.rigamortis.seppuku.api.module.Module; +import me.rigamortis.seppuku.api.util.ColorUtil; +import me.rigamortis.seppuku.api.util.RenderUtil; import me.rigamortis.seppuku.api.value.Value; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -14,6 +19,7 @@ import net.minecraft.init.Blocks; import net.minecraft.network.play.client.CPacketPlayerDigging; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; @@ -30,11 +36,15 @@ public final class SpeedMineModule extends Module { } public BlockPos seqPos; + public static BlockPos autoPos; public EnumFacing seqDir; final Minecraft mc = Minecraft.getMinecraft(); public final Value reset = new Value("Reset", new String[]{"Res"}, "Stops current block destroy damage from resetting if enabled.", true); public final Value doubleBreak = new Value("DoubleBreak", new String[]{"DoubleBreak", "Double", "DB"}, "Mining a block will also mine the block above it, if enabled.", false); + public final Value auto = new Value("Auto", new String[]{"Res"}, "Auto sets the current mode to allow for multimining", true); + + public SpeedMineModule() { super("SpeedMine", new String[]{"FastMine"}, "Allows you to break blocks faster", "NONE", -1, ModuleType.WORLD); @@ -76,6 +86,25 @@ public final class SpeedMineModule extends Module { } } + @Listener + public void onRender(EventRender3D event) { + if (!auto.getValue()) return; + if (autoPos != null && mc.world.getBlockState(autoPos).getBlock() != Blocks.AIR) { + RenderUtil.begin3D(); + final AxisAlignedBB bb = new AxisAlignedBB( + autoPos.getX() - mc.getRenderManager().viewerPosX, + autoPos.getY() - mc.getRenderManager().viewerPosY, + autoPos.getZ() - mc.getRenderManager().viewerPosZ, + autoPos.getX() + 1 - mc.getRenderManager().viewerPosX, + autoPos.getY() + 1 - mc.getRenderManager().viewerPosY, + autoPos.getZ() + 1 - mc.getRenderManager().viewerPosZ + ); + RenderUtil.drawBoundingBox(bb, 2f, new Color(255,255,255).getRGB()); + RenderUtil.end3D(); + } + } + + @Listener public void damageBlock(EventPlayerDamageBlock event) { if (canBreak(event.getPos())) { @@ -94,6 +123,9 @@ public final class SpeedMineModule extends Module { case DAMAGE: if (mc.playerController.curBlockDamageMP >= 0.7f) { mc.playerController.curBlockDamageMP = 1.0f; + if (auto.getValue()) { + mode.setValue(Mode.INSTANT); + } } break; case INSTANT: @@ -102,6 +134,10 @@ public final class SpeedMineModule extends Module { mc.player.connection.sendPacket(new CPacketPlayerDigging(CPacketPlayerDigging.Action.STOP_DESTROY_BLOCK, event.getPos(), event.getFace())); mc.playerController.onPlayerDestroyBlock(event.getPos()); mc.world.setBlockToAir(event.getPos()); + if (auto.getValue()) { + autoPos = event.getPos(); + mode.setValue(Mode.DAMAGE); + } break; case SEQUENTIAL: mc.player.swingArm(EnumHand.MAIN_HAND);