Начинающий
- Статус
- Оффлайн
- Регистрация
- 6 Июн 2024
- Сообщения
- 22
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
Пожалуйста, авторизуйтесь для просмотра ссылки.
PacketCriticals:
package DickRecode.functions.impl.combat;
import DickRecode.events.EventPacket;
import DickRecode.events.EventTarget;
import DickRecode.functions.api.Category;
import DickRecode.functions.api.Function;
import DickRecode.functions.api.FunctionRegister;
import DickRecode.functions.settings.impl.ModeSetting;
import DickRecode.utils.client.IMinecraft;
import net.minecraft.block.Blocks;
import net.minecraft.network.play.client.CPlayerPacket;
import net.minecraft.network.play.client.CUseEntityPacket;
import net.minecraft.potion.Effects;
import net.minecraft.util.math.BlockPos;
import DickRecode.events.EventTarget;
import DickRecode.events.EventUpdate;
import DickRecode.functions.api.Category;
import DickRecode.functions.api.Function;
import DickRecode.functions.api.FunctionRegister;
import DickRecode.functions.settings.Setting;
import DickRecode.functions.settings.impl.BooleanSetting;
import DickRecode.functions.settings.impl.SliderSetting;
import DickRecode.utils.math.StopWatch;
import DickRecode.utils.player.InventoryUtil;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.AirItem;
import net.minecraft.item.Items;
import net.minecraft.potion.Effects;
@FunctionRegister(
name = "PacketCriticals",
description = "Отправляет пакеты для получения критов",
type = Category.Combat
)
public class PacketCriticals extends Function implements IMinecraft {
public ModeSetting mode = new ModeSetting("Режим", "Default", "Default", "RW");
public static boolean cancelCrit = false;
public PacketCriticals() {
addSettings(mode);
}
@EventTarget
public void onPacket(EventPacket e) {
if (mc.player == null || mc.world == null) return;
if (e.isSend()) {
if (e.getPacket() instanceof CUseEntityPacket) {
CUseEntityPacket packet = (CUseEntityPacket) e.getPacket();
if (packet.getAction() == CUseEntityPacket.Action.ATTACK) {
if (mode.is("Default")) {
handleDefaultCrit(packet);
} else if (mode.is("RW")) {
handleRWCrit();
}
}
}
}
}
private void handleDefaultCrit(CUseEntityPacket packet) {
if (cancelCrit) return;
if (!mc.player.isOnGround() && !mc.player.isElytraFlying()) {
sendDefaultCrit();
}
}
private void handleRWCrit() {
if (canCritRW()) {
sendRWCritPackets();
}
}
private void sendDefaultCrit() {
critPacket(-1.0E-6, false);
}
private void critPacket(double yDelta, boolean full) {
double x = mc.player.getPosX();
double y = mc.player.getPosY() + yDelta;
double z = mc.player.getPosZ();
float yaw = mc.player.lastReportedYaw;
float pitch = mc.player.lastReportedPitch;
if (full) {
mc.player.connection.sendPacket(new CPlayerPacket.PositionPacket(x, y, z, false));
} else {
mc.player.connection.sendPacket(new CPlayerPacket.PositionRotationPacket(x, y, z, yaw, pitch, false));
}
}
private boolean canCritRW() {
boolean hasSlowFalling = mc.player.isPotionActive(Effects.SLOW_FALLING);
boolean inCobweb = isInCobweb();
return hasSlowFalling || inCobweb;
}
private boolean isInCobweb() {
BlockPos pos = mc.player.getPosition();
return mc.world.getBlockState(pos).getBlock() == Blocks.COBWEB;
}
private void sendRWCritPackets() {
double x = mc.player.getPosX();
double y = mc.player.getPosY();
double z = mc.player.getPosZ();
// Режим для ReallyWorld - двойной крит
mc.player.connection.sendPacket(new CPlayerPacket.PositionPacket(x, y + 0.0625, z, false));
mc.player.connection.sendPacket(new CPlayerPacket.PositionPacket(x, y + 0.1, z, false));
mc.player.connection.sendPacket(new CPlayerPacket.PositionPacket(x, y + 0.15, z, false));
mc.player.connection.sendPacket(new CPlayerPacket.PositionPacket(x, y + 0.1, z, false));
mc.player.connection.sendPacket(new CPlayerPacket.PositionPacket(x, y + 0.0625, z, false));
mc.player.connection.sendPacket(new CPlayerPacket.PositionPacket(x, y, z, false));
}
}