Новичок
- Статус
- Оффлайн
- Регистрация
- 18 Сен 2023
- Сообщения
- 1
- Реакции
- 0
Написал свою первую килку(часть кода спизженна со своего же старого триггербота, часть руками писал, часть гпт). И столкнулся с такой проблемой что в ней беда с регом урона, тычки идут но урон режется и большую часть тычек в целом вообще не регает, почему так?
Не бейте палками пж, я в кодинге меньше полугода и мало что понимаю.
(А еще в ней неистово дергается голова xD)
Java:
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Hand;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.text.StringTextComponent;
import java.util.List;
public class Aura {
private final Minecraft mc = Minecraft.getInstance();
private boolean isActive = false;
private boolean onlyCrit = false;
private long lastAttackTime = 0;
private static final double RANGE = 3.0;
private LivingEntity target;
private static final long MIN_ATTACK_DELAY_MS = 630;
private static final long MAX_ATTACK_DELAY_MS = 640;
private final float fov = 88.0f;
private final float yawSpeed = 6.0f;
private final float pitchSpeed = 5.0f;
public void toggle() {
isActive = !isActive;
if (mc.player != null) {
mc.player.displayClientMessage(new StringTextComponent(isActive ? "Aura Enabled" : "Aura Disabled"), true);
}
}
public void toggleOnlyCrit() {
onlyCrit = !onlyCrit;
if (mc.player != null) {
mc.player.displayClientMessage(new StringTextComponent(onlyCrit ? "OnlyCrit Enabled" : "OnlyCrit Disabled"), true);
}
}
public void onTick() {
if (!isActive || mc.player == null || mc.level == null || mc.gameMode == null) return;
try {
target = findTarget(mc.player, RANGE, fov);
if (target != null) {
setRotation(target, yawSpeed, pitchSpeed);
long attackDelay = MIN_ATTACK_DELAY_MS + (long) (Math.random() * (MAX_ATTACK_DELAY_MS - MIN_ATTACK_DELAY_MS));
if (canAttack(target) && (System.currentTimeMillis() - lastAttackTime) >= attackDelay) {
if (!onlyCrit || isPlayerFalling()) {
attackTarget(target);
lastAttackTime = System.currentTimeMillis();
}
}
}
} catch (Exception e) {
isActive = false;
if (mc.player != null) {
mc.player.displayClientMessage(new StringTextComponent("Aura Error: " + e.getMessage()), true);
}
}
}
private boolean isPlayerFalling() {
return mc.player.fallDistance > 0 && !mc.player.isOnGround();
}
private LivingEntity findTarget(ClientPlayerEntity player, double distance, double fov) {
List<Entity> entities = mc.level.getEntities(mc.player, mc.player.getBoundingBox().inflate(distance),
entity -> entity instanceof LivingEntity && entity != mc.player && entity.isAlive());
for (Entity entity : entities) {
LivingEntity potentialTarget = (LivingEntity) entity;
double angle = Math.acos(player.getLookAngle().dot(potentialTarget.position().subtract(player.position()).normalize())) * (180D / Math.PI);
if (angle <= fov) {
return potentialTarget;
}
}
return null;
}
private void setRotation(LivingEntity target, float rotationYawSpeed, float rotationPitchSpeed) {
double deltaX = target.getX() - mc.player.getX();
double deltaY = target.getY() + target.getBbHeight() / 2 - mc.player.getEyeY();
double deltaZ = target.getZ() - mc.player.getZ();
double distanceXZ = Math.sqrt(deltaX * deltaX + deltaZ * deltaZ);
float rawYaw = (float) (Math.atan2(-deltaX, deltaZ) * (180 / Math.PI));
float rawPitch = (float) MathHelper.clamp(
Math.toDegrees(Math.asin(-deltaY / Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ))),
-89,
89
);
float yawDelta = MathHelper.wrapDegrees(rawYaw - mc.player.yHeadRot);
float pitchDelta = rawPitch - mc.player.xRot;
mc.player.yHeadRot += yawDelta * 0.2f;
mc.player.yBodyRot = mc.player.yRot;
}
private boolean canAttack(LivingEntity target) {
if (mc.player.isUsingItem()) return false;
Vector3d eyePos = mc.player.getEyePosition(1.0F);
Vector3d targetPos = new Vector3d(target.getX(), target.getY() + target.getBbHeight() / 2, target.getZ());
return mc.level.clip(new net.minecraft.util.math.RayTraceContext(
eyePos, targetPos, net.minecraft.util.math.RayTraceContext.BlockMode.COLLIDER,
net.minecraft.util.math.RayTraceContext.FluidMode.NONE, mc.player
)).getType() == net.minecraft.util.math.RayTraceResult.Type.MISS;
}
private void attackTarget(LivingEntity target) {
if (!canAttack(target)) return;
if (mc.gameMode != null && target != null) {
mc.gameMode.attack(mc.player, target);
mc.player.swing(Hand.MAIN_HAND);
}
}
}
(А еще в ней неистово дергается голова xD)