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