-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
С такой функцией можно фармить много денег на фантайме
Ждём во всяких пастах, которые смогут это адаптировать под свои экспенсивы и экселенты
PiglinTarget:
package ru.nedan.vulcan.module.impl;
import net.minecraft.entity.Entity;
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.entity.mob.PiglinBruteEntity;
import net.minecraft.entity.mob.PiglinEntity;
import net.minecraft.entity.mob.ZombifiedPiglinEntity;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.math.Vec2f;
import org.lwjgl.glfw.GLFW;
import ru.nedan.vulcan.event.impl.EventClientTick;
import ru.nedan.vulcan.event.impl.EventMotion;
import ru.nedan.vulcan.event.system.Listener;
import ru.nedan.vulcan.module.api.Module;
import ru.nedan.vulcan.module.api.setting.ModeSetting;
import ru.nedan.vulcan.module.api.setting.NumberSetting;
import ru.nedan.vulcan.util.Rotation;
import ru.nedan.vulcan.util.RotationUtil;
import ru.nedan.vulcan.util.TimerUtil;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class PiglinTarget extends Module {
private Vec2f rotation = new Vec2f(0, 0);
private Entity target;
private final ModeSetting sort = new ModeSetting()
.setName("Сортировка по")
.setValue("Здоровье")
.values("Здоровье", "Дистанция");
private final NumberSetting distance = new NumberSetting()
.setName("Макс. Дистанция")
.setValue(5)
.setMin(3)
.setMax(10)
.setIncrement(0.1);
private final TimerUtil attackCooldown = new TimerUtil();
public PiglinTarget() {
super("PiglinTarget");
addSettings(sort, distance);
onlyTester = true;
}
Listener<EventClientTick> playerTickListener = playerTick -> {
if (mc.player == null) return;
pickTargetAndRotate();
if (target != null)
attackPiglin();
};
private void attackPiglin() {
if (mc.player.distanceTo(target) > 3 || !target.isAlive()) return;
Entity entity = RotationUtil.getMouseOver(target, rotation.x, rotation.y, 3);
if (entity != target) return;
float attackStrength = mc.player.getAttackCooldownProgress(1.5f);
if (attackStrength < 0.92f || !attackCooldown.timeElapsed(450))
return;
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
attackCooldown.resetLast();
}
public void onDisable() {
reset();
target = null;
super.onDisable();
}
Listener<EventMotion> eventMotionListener = eventMotion -> {
if (target != null) {
eventMotion.setYaw(rotation.x);
eventMotion.setPitch(rotation.y);
Rotation.rotationPitchHead = rotation.y;
mc.player.bodyYaw = rotation.x;
mc.player.headYaw = rotation.x;
}
};
private void pickTargetAndRotate()
{
List<Entity> piglins = new ArrayList<>();
for (Entity entity : mc.world.getEntities()) {
if (entity instanceof PiglinEntity || entity instanceof PiglinBruteEntity || entity instanceof ItemEntity || entity instanceof ZombifiedPiglinEntity) {
if (entity instanceof ItemEntity) {
ItemEntity item = (ItemEntity) entity;
if (item.getStack().getItem() != Items.SOUL_LANTERN) continue;
}
if (mc.player.distanceTo(entity) > distance.getValue()) continue;
piglins.add(entity);
}
}
if (piglins.isEmpty()) {
reset();
target = null;
return;
}
if (piglins.size() != 1) {
if (sort.getValue().equalsIgnoreCase("здоровье")) {
piglins.sort(Comparator.comparingDouble(entity -> {
if (entity instanceof LivingEntity)
return ((LivingEntity) entity).getHealth();
return 0;
}));
} else if (sort.getValue().equalsIgnoreCase("дистанция")) {
piglins.sort(Comparator.comparingDouble(mc.player::distanceTo));
}
}
piglins.sort(Comparator.comparingInt(entity -> {
if (entity instanceof ItemEntity) return 0;
return 999;
}));
target = piglins.get(0);
double deltaX = target.getX() - mc.player.getX();
double deltaY = target.getEyeY() - mc.player.getEyeY() - 0.5;
double deltaZ = target.getZ() - mc.player.getZ();
double distanceXZ = Math.sqrt(deltaX * deltaX + deltaZ * deltaZ);
float yaw = (float) Math.toDegrees(Math.atan2(-deltaX, deltaZ));
float pitch = (float) Math.toDegrees(Math.atan2(-deltaY, distanceXZ));
rotation = new Vec2f(yaw, pitch);
Rotation.YAW_OFFSET = rotation.x;
}
private void reset() {
rotation = new Vec2f(mc.player.yaw, mc.player.pitch);
Rotation.YAW_OFFSET = Integer.MIN_VALUE;
}
}
RotationUtil.getMouseOver:
public Entity getMouseOver(Entity target,
float yaw,
float pitch,
double distance) {
if (target == null)
return null;
HitResult objectMouseOver;
Entity entity = mc.getCameraEntity();
if (entity != null && mc.world != null) {
objectMouseOver = null;
boolean flag = distance > 3;
Vec3d startVec = entity.getCameraPosVec(1);
Vec3d directionVec = getVectorForRotation(pitch, yaw);
Vec3d endVec = startVec.add(
directionVec.x * distance,
directionVec.y * distance,
directionVec.z * distance
);
Box axisalignedbb = target.getBoundingBox().contract(target.getTargetingMargin());
EntityHitResult entityraytraceresult = rayTraceEntities(entity,
startVec,
endVec,
axisalignedbb,
(p_lambda$getMouseOver$0_0_) ->
!p_lambda$getMouseOver$0_0_.isSpectator()
&& p_lambda$getMouseOver$0_0_.collides(), distance
);
if (entityraytraceresult != null) {
if (flag && startVec.distanceTo(startVec) > distance) {
objectMouseOver = BlockHitResult.createMissed(startVec, null, new BlockPos(startVec));
}
if ((distance < distance || objectMouseOver == null)) {
objectMouseOver = entityraytraceresult;
}
}
if (objectMouseOver == null) {
return null;
}
try {
return ((EntityHitResult) objectMouseOver).getEntity();
} catch (ClassCastException e) {
return null;
}
}
return null;
}