Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Исходник AirStuck | 1.21.4 mcp base

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
9 Ноя 2024
Сообщения
19
Реакции
0
Выберите загрузчик игры
  1. Forge
  2. OptiFine
Хз хз мож кому то под доработку будет полезено
Woveline base - тык
2 Режима
Fake player - Создает вашу копию на месте стака и можно свободно ходить
Locked - просто лочит вас на месте стака с возможностью осматриваться
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.



AirStuck:
Expand Collapse Copy
package woveline.fun.module.impl.movement;

import com.darkmagician6.eventapi.EventTarget;
import com.mojang.authlib.GameProfile;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.minecraft.client.player.RemotePlayer;
import net.minecraft.network.protocol.game.ClientboundPlayerPositionPacket;
import net.minecraft.network.protocol.game.ServerboundAcceptTeleportationPacket;
import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket;
import net.minecraft.world.entity.Entity;
import woveline.fun.events.impl.packet.EventReceivePacket;
import woveline.fun.events.impl.packet.EventSendPacket;
import woveline.fun.events.impl.player.EventUpdate;
import woveline.fun.module.api.Category;
import woveline.fun.module.api.Module;
import woveline.fun.module.setting.api.Nameable;
import woveline.fun.module.setting.impl.EnumSetting;
import woveline.fun.utils.network.NetworkUtil;

import java.util.UUID;

public class AirStuck extends Module {
    private final EnumSetting<Mode> mode = new EnumSetting<>("Mode", Mode.FakePlayer);
    
    private int teleportId = 0;
    private double startX, startY, startZ;
    private float startYaw, startPitch;
    private Entity fakePlayer;
    
    public AirStuck() {
        super("AirStuck", Category.Movement);
    }
    
    @Override
    public void onEnable() {
        super.onEnable();
        if (mc.player != null) {
            startX = mc.player.getX();
            startY = mc.player.getY();
            startZ = mc.player.getZ();
            startYaw = mc.player.getYRot();
            startPitch = mc.player.getXRot();
            
            if (mode.getValue() == Mode.FakePlayer) {
                createFakePlayer();
            }
        }
    }

    @EventTarget
    public void onUpdate(EventUpdate event) {
        if (nullCheck()) return;
        
        mc.player.fallDistance = 0;
        
        if (mode.getValue() == Mode.Locked) {
            mc.player.setDeltaMovement(0, 0, 0);
            if (mc.player.position().distanceToSqr(startX, startY, startZ) > 0.01) {
                mc.player.setPos(startX, startY, startZ);
            }
        }
    }

    @EventTarget
    public void onSendPacket(EventSendPacket event) {
        if (nullCheck()) return;
        
        if (event.getPacket() instanceof ServerboundMovePlayerPacket) {
            event.setCancelled(true);
            
            if (mode.getValue() == Mode.Locked) {
                ServerboundMovePlayerPacket fakePacket = new ServerboundMovePlayerPacket.PosRot(
                    startX, startY, startZ, startYaw, startPitch, mc.player.onGround(), false
                );
                NetworkUtil.sendPacket(fakePacket);
            }
        }
    }

    @EventTarget
    public void onReceivePacket(EventReceivePacket event) {
        if (nullCheck()) return;
        
        if (event.getPacket() instanceof ClientboundPlayerPositionPacket packet) {
            teleportId = packet.id();
            NetworkUtil.sendPacket(new ServerboundAcceptTeleportationPacket(teleportId));
            
            var change = packet.change();
            mc.player.absMoveTo(
                change.position().x,
                change.position().y,
                change.position().z,
                change.yRot(),
                change.xRot()
            );
            
            event.setCancelled(true);
        }
    }

    private void createFakePlayer() {
        if (mc.level == null || mc.player == null) return;
        
        try {
            GameProfile profile = new GameProfile(UUID.randomUUID(), mc.player.getName().getString());
            RemotePlayer fake = new RemotePlayer(mc.level, profile);
            
            fake.setPos(startX, startY, startZ);
            fake.setYRot(startYaw);
            fake.setXRot(startPitch);
            fake.yBodyRot = mc.player.yBodyRot;
            fake.setYHeadRot(startYaw);
            fake.setYBodyRot(mc.player.yBodyRot);
            
            fake.getInventory().replaceWith(mc.player.getInventory());
            
            mc.level.addEntity(fake);
            fakePlayer = fake;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    private void removeFakePlayer() {
        if (fakePlayer != null && mc.level != null) {
            try {
                mc.level.removeEntity(fakePlayer.getId(), Entity.RemovalReason.DISCARDED);
                fakePlayer = null;
            } catch (Exception ignored) {}
        }
    }

    @Override
    public void onDisable() {
        super.onDisable();
        if (mc.player != null) {
            mc.player.setPos(startX, startY, startZ);
            mc.player.setYRot(startYaw);
            mc.player.setXRot(startPitch);
            mc.player.setDeltaMovement(0, 0, 0);
        }
        removeFakePlayer();
    }
    
    @AllArgsConstructor
    @Getter
    enum Mode implements Nameable {
        FakePlayer("FakePlayer"),
        Locked("Locked");
        
        private final String name;
    }
}
 
Хз хз мож кому то под доработку будет полезено
Woveline base - тык
2 Режима
Fake player - Создает вашу копию на месте стака и можно свободно ходить
Locked - просто лочит вас на месте стака с возможностью осматриваться
SS -
Пожалуйста, авторизуйтесь для просмотра ссылки.



AirStuck:
Expand Collapse Copy
package woveline.fun.module.impl.movement;

import com.darkmagician6.eventapi.EventTarget;
import com.mojang.authlib.GameProfile;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.minecraft.client.player.RemotePlayer;
import net.minecraft.network.protocol.game.ClientboundPlayerPositionPacket;
import net.minecraft.network.protocol.game.ServerboundAcceptTeleportationPacket;
import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket;
import net.minecraft.world.entity.Entity;
import woveline.fun.events.impl.packet.EventReceivePacket;
import woveline.fun.events.impl.packet.EventSendPacket;
import woveline.fun.events.impl.player.EventUpdate;
import woveline.fun.module.api.Category;
import woveline.fun.module.api.Module;
import woveline.fun.module.setting.api.Nameable;
import woveline.fun.module.setting.impl.EnumSetting;
import woveline.fun.utils.network.NetworkUtil;

import java.util.UUID;

public class AirStuck extends Module {
    private final EnumSetting<Mode> mode = new EnumSetting<>("Mode", Mode.FakePlayer);
   
    private int teleportId = 0;
    private double startX, startY, startZ;
    private float startYaw, startPitch;
    private Entity fakePlayer;
   
    public AirStuck() {
        super("AirStuck", Category.Movement);
    }
   
    @Override
    public void onEnable() {
        super.onEnable();
        if (mc.player != null) {
            startX = mc.player.getX();
            startY = mc.player.getY();
            startZ = mc.player.getZ();
            startYaw = mc.player.getYRot();
            startPitch = mc.player.getXRot();
           
            if (mode.getValue() == Mode.FakePlayer) {
                createFakePlayer();
            }
        }
    }

    @EventTarget
    public void onUpdate(EventUpdate event) {
        if (nullCheck()) return;
       
        mc.player.fallDistance = 0;
       
        if (mode.getValue() == Mode.Locked) {
            mc.player.setDeltaMovement(0, 0, 0);
            if (mc.player.position().distanceToSqr(startX, startY, startZ) > 0.01) {
                mc.player.setPos(startX, startY, startZ);
            }
        }
    }

    @EventTarget
    public void onSendPacket(EventSendPacket event) {
        if (nullCheck()) return;
       
        if (event.getPacket() instanceof ServerboundMovePlayerPacket) {
            event.setCancelled(true);
           
            if (mode.getValue() == Mode.Locked) {
                ServerboundMovePlayerPacket fakePacket = new ServerboundMovePlayerPacket.PosRot(
                    startX, startY, startZ, startYaw, startPitch, mc.player.onGround(), false
                );
                NetworkUtil.sendPacket(fakePacket);
            }
        }
    }

    @EventTarget
    public void onReceivePacket(EventReceivePacket event) {
        if (nullCheck()) return;
       
        if (event.getPacket() instanceof ClientboundPlayerPositionPacket packet) {
            teleportId = packet.id();
            NetworkUtil.sendPacket(new ServerboundAcceptTeleportationPacket(teleportId));
           
            var change = packet.change();
            mc.player.absMoveTo(
                change.position().x,
                change.position().y,
                change.position().z,
                change.yRot(),
                change.xRot()
            );
           
            event.setCancelled(true);
        }
    }

    private void createFakePlayer() {
        if (mc.level == null || mc.player == null) return;
       
        try {
            GameProfile profile = new GameProfile(UUID.randomUUID(), mc.player.getName().getString());
            RemotePlayer fake = new RemotePlayer(mc.level, profile);
           
            fake.setPos(startX, startY, startZ);
            fake.setYRot(startYaw);
            fake.setXRot(startPitch);
            fake.yBodyRot = mc.player.yBodyRot;
            fake.setYHeadRot(startYaw);
            fake.setYBodyRot(mc.player.yBodyRot);
           
            fake.getInventory().replaceWith(mc.player.getInventory());
           
            mc.level.addEntity(fake);
            fakePlayer = fake;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
   
    private void removeFakePlayer() {
        if (fakePlayer != null && mc.level != null) {
            try {
                mc.level.removeEntity(fakePlayer.getId(), Entity.RemovalReason.DISCARDED);
                fakePlayer = null;
            } catch (Exception ignored) {}
        }
    }

    @Override
    public void onDisable() {
        super.onDisable();
        if (mc.player != null) {
            mc.player.setPos(startX, startY, startZ);
            mc.player.setYRot(startYaw);
            mc.player.setXRot(startPitch);
            mc.player.setDeltaMovement(0, 0, 0);
        }
        removeFakePlayer();
    }
   
    @AllArgsConstructor
    @Getter
    enum Mode implements Nameable {
        FakePlayer("FakePlayer"),
        Locked("Locked");
       
        private final String name;
    }
}
прям годно, +rep
 
мешок с каллом, сделай чтоб после выключения не флагало, как в нурике
p.s. да и кому ваще нужен аир срак, когда фрикам делает тоже самое и у всех всегда забинджен
 
мешок с каллом, сделай чтоб после выключения не флагало, как в нурике
p.s. да и кому ваще нужен аир срак, когда фрикам делает тоже самое и у всех всегда забинджен
Знал бы еще как реализовать , а так спасибо за совет
 
Назад
Сверху Снизу