-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
максимально тупой targetpearl
lol:
package ru.wery.functions.impl.combat;
import com.google.common.eventbus.Subscribe;
import ru.wery.events.WorldEvent;
import ru.wery.functions.api.Category;
import ru.wery.functions.api.Function;
import ru.wery.functions.api.FunctionRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EnderPearlEntity;
import net.minecraft.item.Items;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
@FunctionRegister(name = "TargetPearl", type = Category.Render)
public class TargetPearl extends Function {
private long lastPearlThrowTime = 0;
private final int PEARL_THROW_DELAY = 350; // Время задержки для броска перлов
@Subscribe
public void onRender(WorldEvent event) {
for (Entity entity : mc.world.getAllEntities()) {
if (entity instanceof EnderPearlEntity && !isOwnEnderPearl((EnderPearlEntity) entity)) {
EnderPearlEntity throwable = (EnderPearlEntity) entity;
Vector3d endPosition = getNextPearlPosition(throwable);
if (endPosition != null && System.currentTimeMillis() - lastPearlThrowTime >= PEARL_THROW_DELAY) {
Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
Vector3d direction = endPosition.subtract(playerPos).normalize();
double angleX = Math.toDegrees(Math.asin(direction.y));
double angleY = Math.toDegrees(Math.atan2(-direction.x, direction.z));
mc.player.rotationPitch = (float) angleX;
mc.player.rotationYaw = (float) angleY;
// Кидаем перл в сторону направления
throwPearl();
lastPearlThrowTime = System.currentTimeMillis(); // Обновляем время последнего броска перла
}
}
}
}
private void throwPearl() {
if (!mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.swingArm(Hand.MAIN_HAND);
}
}
private Vector3d getNextPearlPosition(EnderPearlEntity throwable) {
Vector3d motion = throwable.getMotion();
Vector3d pos = throwable.getPositionVec();
// Проверяем позиции перла на пути его движения
for (int i = 0; i < 150; i++) {
RayTraceContext rayTraceContext = new RayTraceContext(
pos,
pos.add(motion),
RayTraceContext.BlockMode.COLLIDER,
RayTraceContext.FluidMode.NONE,
throwable
);
RayTraceResult result = mc.world.rayTraceBlocks(rayTraceContext);
if (result.getType() == RayTraceResult.Type.BLOCK) {
return pos; // Возвращаем текущую позицию, так как это место столкновения
}
if (pos.y < 0) {
return pos; // Возвращаем текущую позицию, так как перл достиг нижней границы мира
}
pos = pos.add(motion); // Переходим к следующей позиции вдоль траектории
}
return pos; // Возвращаем последнюю позицию, если перл не столкнулся с блоком и не достиг нижней границы мира
}
private boolean isOwnEnderPearl(EnderPearlEntity pearl) {
Vector3d pearlPos = pearl.getPositionVec();
Vector3d playerPos = mc.player.getPositionVec();
return pearlPos.distanceTo(playerPos) < 0.5; // Проверяем, находится ли перловая пепррка очень близко к игроку
}
}