Merge pull request #68 from B2H990/master

Added Sequential break
This commit is contained in:
noil 2021-05-15 23:01:02 -04:00 committed by GitHub
commit c853c434f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 14 deletions

View File

@ -10,7 +10,9 @@ import me.rigamortis.seppuku.api.value.Value;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
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.BlockPos;
import team.stiff.pomelo.impl.annotated.handler.annotation.Listener;
@ -24,9 +26,13 @@ public final class SpeedMineModule extends Module {
public final Value<Mode> mode = new Value<Mode>("Mode", new String[]{"Mode", "M"}, "The speed-mine mode to use.", Mode.PACKET);
private enum Mode {
PACKET, DAMAGE, INSTANT
PACKET, DAMAGE, INSTANT, SEQUENTIAL
}
public BlockPos seqPos;
public EnumFacing seqDir;
final Minecraft mc = Minecraft.getMinecraft();
public final Value<Boolean> reset = new Value<Boolean>("Reset", new String[]{"Res"}, "Stops current block destroy damage from resetting if enabled.", true);
public final Value<Boolean> doubleBreak = new Value<Boolean>("DoubleBreak", new String[]{"DoubleBreak", "Double", "DB"}, "Mining a block will also mine the block above it, if enabled.", false);
@ -41,11 +47,15 @@ public final class SpeedMineModule extends Module {
@Listener
public void onUpdate(EventPlayerUpdate event) {
if (event.getStage() == EventStageable.EventStage.PRE) {
Minecraft.getMinecraft().playerController.blockHitDelay = 0;
if (this.reset.getValue() && Minecraft.getMinecraft().gameSettings.keyBindUseItem.isKeyDown()) {
Minecraft.getMinecraft().playerController.isHittingBlock = false;
if (event.getStage() == EventStageable.EventStage.PRE) {
mc.playerController.blockHitDelay = 0;
if (seqPos != null && mc.world.getBlockState(seqPos).getBlock() != Blocks.AIR && mode.getValue() == Mode.SEQUENTIAL) {
mc.player.connection.sendPacket(new CPacketPlayerDigging(CPacketPlayerDigging.Action.STOP_DESTROY_BLOCK, seqPos, seqDir));
}
if (this.reset.getValue() && mc.gameSettings.keyBindUseItem.isKeyDown()) {
mc.playerController.isHittingBlock = false;
}
}
}
@ -60,8 +70,8 @@ public final class SpeedMineModule extends Module {
@Listener
public void clickBlock(EventClickBlock event) {
if (this.reset.getValue()) {
if (Minecraft.getMinecraft().playerController.curBlockDamageMP > 0.1f) {
Minecraft.getMinecraft().playerController.isHittingBlock = true;
if (mc.playerController.curBlockDamageMP > 0.1f) {
mc.playerController.isHittingBlock = true;
}
}
}
@ -70,8 +80,6 @@ public final class SpeedMineModule extends Module {
public void damageBlock(EventPlayerDamageBlock event) {
if (canBreak(event.getPos())) {
final Minecraft mc = Minecraft.getMinecraft();
if (this.reset.getValue()) {
mc.playerController.isHittingBlock = false;
}
@ -95,14 +103,19 @@ public final class SpeedMineModule extends Module {
mc.playerController.onPlayerDestroyBlock(event.getPos());
mc.world.setBlockToAir(event.getPos());
break;
case SEQUENTIAL:
mc.player.swingArm(EnumHand.MAIN_HAND);
mc.player.connection.sendPacket(new CPacketPlayerDigging(CPacketPlayerDigging.Action.START_DESTROY_BLOCK, event.getPos(), event.getFace()));
mc.player.connection.sendPacket(new CPacketPlayerDigging(CPacketPlayerDigging.Action.STOP_DESTROY_BLOCK, event.getPos(), event.getFace()));
seqPos = event.getPos();
seqDir = event.getFace();
event.setCanceled(true);
break;
}
}
if (this.doubleBreak.getValue()) {
final BlockPos above = event.getPos().add(0, 1, 0);
final Minecraft mc = Minecraft.getMinecraft();
if (canBreak(above) && mc.player.getDistance(above.getX(), above.getY(), above.getZ()) <= 5f) {
mc.player.swingArm(EnumHand.MAIN_HAND);
mc.player.connection.sendPacket(new CPacketPlayerDigging(CPacketPlayerDigging.Action.START_DESTROY_BLOCK, above, event.getFace()));
@ -113,11 +126,14 @@ public final class SpeedMineModule extends Module {
}
}
private boolean canBreak(BlockPos pos) {
final IBlockState blockState = Minecraft.getMinecraft().world.getBlockState(pos);
final IBlockState blockState = mc.world.getBlockState(pos);
final Block block = blockState.getBlock();
return block.getBlockHardness(blockState, Minecraft.getMinecraft().world, pos) != -1;
return block.getBlockHardness(blockState, mc.world, pos) != -1;
}
}