0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-19 17:02:13 +02:00

Refactor AutoBuildHack to use BlockPlacer

This commit is contained in:
Alexander01998 2024-07-14 21:39:33 +02:00
parent a90152c3e4
commit cd24e858c6

View File

@ -19,7 +19,6 @@ import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.hit.HitResult;
import net.minecraft.util.math.BlockPos;
@ -30,18 +29,13 @@ import net.wurstclient.events.RenderListener;
import net.wurstclient.events.RightClickListener;
import net.wurstclient.events.UpdateListener;
import net.wurstclient.hack.Hack;
import net.wurstclient.mixinterface.IClientPlayerInteractionManager;
import net.wurstclient.settings.CheckboxSetting;
import net.wurstclient.settings.FileSetting;
import net.wurstclient.settings.SliderSetting;
import net.wurstclient.settings.SliderSetting.ValueDisplay;
import net.wurstclient.util.AutoBuildTemplate;
import net.wurstclient.util.BlockUtils;
import net.wurstclient.util.ChatUtils;
import net.wurstclient.util.DefaultAutoBuildTemplates;
import net.wurstclient.util.RegionPos;
import net.wurstclient.util.RenderUtils;
import net.wurstclient.util.RotationUtils;
import net.wurstclient.settings.SwingHandSetting.SwingHand;
import net.wurstclient.util.*;
import net.wurstclient.util.BlockPlacer.BlockPlacingParams;
import net.wurstclient.util.json.JsonException;
public final class AutoBuildHack extends Hack
@ -226,46 +220,17 @@ public final class AutoBuildHack extends Hack
private boolean tryToPlace(BlockPos pos, Vec3d eyesPos, double rangeSq)
{
Vec3d posVec = Vec3d.ofCenter(pos);
double distanceSqPosVec = eyesPos.squaredDistanceTo(posVec);
BlockPlacingParams params = BlockPlacer.getBlockPlacingParams(pos);
if(params == null || params.distanceSq() > rangeSq)
return false;
if(checkLOS.isChecked() && !params.lineOfSight())
return false;
for(Direction side : Direction.values())
{
BlockPos neighbor = pos.offset(side);
// check if neighbor can be right clicked
if(!BlockUtils.canBeClicked(neighbor)
|| BlockUtils.getState(neighbor).isReplaceable())
continue;
Vec3d dirVec = Vec3d.of(side.getVector());
Vec3d hitVec = posVec.add(dirVec.multiply(0.5));
// check if hitVec is within range
if(eyesPos.squaredDistanceTo(hitVec) > rangeSq)
continue;
// check if side is visible (facing away from player)
if(distanceSqPosVec > eyesPos.squaredDistanceTo(posVec.add(dirVec)))
continue;
// check line of sight
if(checkLOS.isChecked()
&& !BlockUtils.hasLineOfSight(eyesPos, hitVec))
continue;
// face block
RotationUtils.getNeededRotations(hitVec).sendPlayerLookPacket();
// place block
IMC.getInteractionManager().rightClickBlock(neighbor,
side.getOpposite(), hitVec);
MC.player.swingHand(Hand.MAIN_HAND);
MC.itemUseCooldown = 4;
return true;
}
return false;
MC.itemUseCooldown = 4;
RotationUtils.getNeededRotations(params.hitVec())
.sendPlayerLookPacket();
InteractionSimulator.rightClickBlock(params.toHitResult());
return true;
}
@Override
@ -298,37 +263,19 @@ public final class AutoBuildHack extends Hack
private void buildInstantly()
{
Vec3d eyesPos = RotationUtils.getEyesPos();
IClientPlayerInteractionManager im = IMC.getInteractionManager();
double rangeSq = Math.pow(range.getValue(), 2);
double rangeSq = range.getValueSq();
for(BlockPos pos : remainingBlocks)
{
if(!BlockUtils.getState(pos).isReplaceable())
continue;
Vec3d posVec = Vec3d.ofCenter(pos);
BlockPlacingParams params = BlockPlacer.getBlockPlacingParams(pos);
if(params == null || params.distanceSq() > rangeSq)
continue;
for(Direction side : Direction.values())
{
BlockPos neighbor = pos.offset(side);
// check if neighbor can be right-clicked
if(!BlockUtils.canBeClicked(neighbor))
continue;
Vec3d sideVec = Vec3d.of(side.getVector());
Vec3d hitVec = posVec.add(sideVec.multiply(0.5));
// check if hitVec is within range
if(eyesPos.squaredDistanceTo(hitVec) > rangeSq)
continue;
// place block
im.rightClickBlock(neighbor, side.getOpposite(), hitVec);
break;
}
InteractionSimulator.rightClickBlock(params.toHitResult(),
SwingHand.OFF);
}
remainingBlocks.clear();