Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос FakePlayer 1.21.4 fabric

package thunder.hack.features.modules.misc;

import com.mojang.authlib.GameProfile;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.client.network.OtherClientPlayerEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityStatuses;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket;
import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.Hand;
import net.minecraft.util.math.Vec3d;
import thunder.hack.ThunderHack;
import thunder.hack.core.manager.client.ModuleManager;
import thunder.hack.events.impl.EventAttack;
import thunder.hack.events.impl.EventSync;
import thunder.hack.events.impl.PacketEvent;
import thunder.hack.events.impl.TotemPopEvent;
import thunder.hack.features.modules.Module;
import thunder.hack.setting.Setting;
import thunder.hack.utility.world.ExplosionUtility;
import thunder.hack.utility.player.InventoryUtility;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class FakePlayer extends Module {
private final Setting<Boolean> copyInventory = new Setting<>("CopyInventory", false);

public static OtherClientPlayerEntity fakePlayer;

public FakePlayer() {
super("FakePlayer", Category.MISC);
}

private Setting<Boolean> record = new Setting<>("Record", false);
private Setting<Boolean> play = new Setting<>("Play", false);
private Setting<Boolean> autoTotem = new Setting<>("AutoTotem", false);
private Setting<String> name = new Setting<>("Name", "Hell_Raider");

private final List<PlayerState> positions = new ArrayList<>();

int movementTick, deathTime;

@override
public void onEnable() {
fakePlayer = new OtherClientPlayerEntity(mc.world, new GameProfile(UUID.fromString("66123666-6666-6666-6666-666666666600"), name.getValue()));
fakePlayer.copyPositionAndRotation(mc.player);

if (copyInventory.getValue()) {
fakePlayer.setStackInHand(Hand.MAIN_HAND, mc.player.getMainHandStack().copy());
fakePlayer.setStackInHand(Hand.OFF_HAND, mc.player.getOffHandStack().copy());

fakePlayer.getInventory().setStack(36, mc.player.getInventory().getStack(36).copy());
fakePlayer.getInventory().setStack(37, mc.player.getInventory().getStack(37).copy());
fakePlayer.getInventory().setStack(38, mc.player.getInventory().getStack(38).copy());
fakePlayer.getInventory().setStack(39, mc.player.getInventory().getStack(39).copy());
}

mc.world.addEntity(fakePlayer);
fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 9999, 2));
fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, 9999, 4));
fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, 9999, 1));
}

@EventHandler
public void onPacketReceive(PacketEvent.Receive e) {
if (e.getPacket() instanceof ExplosionS2CPacket explosion && fakePlayer != null && fakePlayer.hurtTime == 0) {
fakePlayer.onDamaged(mc.world.getDamageSources().generic());
fakePlayer.setHealth(fakePlayer.getHealth() + fakePlayer.getAbsorptionAmount() - ExplosionUtility.getAutoCrystalDamage(new Vec3d(explosion.getX(), explosion.getY(), explosion.getZ()), fakePlayer, 0, false));
if (fakePlayer.isDead()) {
if (fakePlayer.tryUseTotem(mc.world.getDamageSources().generic())) {
fakePlayer.setHealth(10f);


ThunderHack.EVENT_BUS.post(new TotemPopEvent(fakePlayer, 1));

// new EntityStatusS2CPacket(fakePlayer, EntityStatuses.USE_TOTEM_OF_UNDYING).apply(mc.player.networkHandler);
}
}
}
}

@EventHandler
public void onSync(EventSync e) {
if (record.getValue()) {
positions.add(new PlayerState(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.getYaw(), mc.player.getPitch()));
return;
}
if (fakePlayer != null) {
if (play.getValue() && !positions.isEmpty()) {
movementTick++;

if (movementTick >= positions.size()) {
movementTick = 0;
return;
}
PlayerState p = positions.get(movementTick);
fakePlayer.setYaw(p.yaw);
fakePlayer.setPitch(p.pitch);
fakePlayer.setHeadYaw(p.yaw);

fakePlayer.updateTrackedPosition(p.x, p.y, p.z);
fakePlayer.updateTrackedPositionAndAngles(p.x, p.y, p.z, p.yaw, p.pitch, 3);
} else movementTick = 0;

if (autoTotem.getValue() && fakePlayer.getOffHandStack().getItem() != Items.TOTEM_OF_UNDYING)
fakePlayer.setStackInHand(Hand.OFF_HAND, new ItemStack(Items.TOTEM_OF_UNDYING));

if (fakePlayer.isDead()) {
deathTime++;
if (deathTime > 10) disable();
}
}
}

@EventHandler
public void onAttack(EventAttack e) {
if (fakePlayer != null && e.getEntity() == fakePlayer && fakePlayer.hurtTime == 0 && !e.isPre()) {
mc.world.playSound(mc.player, fakePlayer.getX(), fakePlayer.getY(), fakePlayer.getZ(), SoundEvents.ENTITY_PLAYER_HURT, SoundCategory.PLAYERS, 1f, 1f);

if (mc.player.fallDistance > 0 || ModuleManager.criticals.isEnabled())
mc.world.playSound(mc.player, fakePlayer.getX(), fakePlayer.getY(), fakePlayer.getZ(), SoundEvents.ENTITY_PLAYER_ATTACK_CRIT, SoundCategory.PLAYERS, 1f, 1f);
fakePlayer.onDamaged(mc.world.getDamageSources().generic());
if (ModuleManager.aura.getAttackCooldown() >= 0.85)
fakePlayer.setHealth(fakePlayer.getHealth() + fakePlayer.getAbsorptionAmount() - InventoryUtility.getHitDamage(mc.player.getMainHandStack(), fakePlayer));
else fakePlayer.setHealth(fakePlayer.getHealth() + fakePlayer.getAbsorptionAmount() - 1f);
if (fakePlayer.isDead()) {
if (fakePlayer.tryUseTotem(mc.world.getDamageSources().generic())) {
fakePlayer.setHealth(10f);
new EntityStatusS2CPacket(fakePlayer, EntityStatuses.USE_TOTEM_OF_UNDYING).apply(mc.player.networkHandler);
}
}
}
}

@override
public void onDisable() {
if (fakePlayer == null) return;
fakePlayer.kill();
fakePlayer.setRemoved(Entity.RemovalReason.KILLED);
fakePlayer.onRemoved();
fakePlayer = null;
positions.clear();
deathTime = 0;
}

private record PlayerState(double x, double y, double z, float yaw, float pitch) {
}
}
вот ссылка бери от туда там норм сурсы -
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
package thunder.hack.features.modules.misc;

import com.mojang.authlib.GameProfile;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.client.network.OtherClientPlayerEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityStatuses;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket;
import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.Hand;
import net.minecraft.util.math.Vec3d;
import thunder.hack.ThunderHack;
import thunder.hack.core.manager.client.ModuleManager;
import thunder.hack.events.impl.EventAttack;
import thunder.hack.events.impl.EventSync;
import thunder.hack.events.impl.PacketEvent;
import thunder.hack.events.impl.TotemPopEvent;
import thunder.hack.features.modules.Module;
import thunder.hack.setting.Setting;
import thunder.hack.utility.world.ExplosionUtility;
import thunder.hack.utility.player.InventoryUtility;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class FakePlayer extends Module {
private final Setting<Boolean> copyInventory = new Setting<>("CopyInventory", false);

public static OtherClientPlayerEntity fakePlayer;

public FakePlayer() {
super("FakePlayer", Category.MISC);
}

private Setting<Boolean> record = new Setting<>("Record", false);
private Setting<Boolean> play = new Setting<>("Play", false);
private Setting<Boolean> autoTotem = new Setting<>("AutoTotem", false);
private Setting<String> name = new Setting<>("Name", "Hell_Raider");

private final List<PlayerState> positions = new ArrayList<>();

int movementTick, deathTime;

@override
public void onEnable() {
fakePlayer = new OtherClientPlayerEntity(mc.world, new GameProfile(UUID.fromString("66123666-6666-6666-6666-666666666600"), name.getValue()));
fakePlayer.copyPositionAndRotation(mc.player);

if (copyInventory.getValue()) {
fakePlayer.setStackInHand(Hand.MAIN_HAND, mc.player.getMainHandStack().copy());
fakePlayer.setStackInHand(Hand.OFF_HAND, mc.player.getOffHandStack().copy());

fakePlayer.getInventory().setStack(36, mc.player.getInventory().getStack(36).copy());
fakePlayer.getInventory().setStack(37, mc.player.getInventory().getStack(37).copy());
fakePlayer.getInventory().setStack(38, mc.player.getInventory().getStack(38).copy());
fakePlayer.getInventory().setStack(39, mc.player.getInventory().getStack(39).copy());
}

mc.world.addEntity(fakePlayer);
fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 9999, 2));
fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, 9999, 4));
fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.RESISTANCE, 9999, 1));
}

@EventHandler
public void onPacketReceive(PacketEvent.Receive e) {
if (e.getPacket() instanceof ExplosionS2CPacket explosion && fakePlayer != null && fakePlayer.hurtTime == 0) {
fakePlayer.onDamaged(mc.world.getDamageSources().generic());
fakePlayer.setHealth(fakePlayer.getHealth() + fakePlayer.getAbsorptionAmount() - ExplosionUtility.getAutoCrystalDamage(new Vec3d(explosion.getX(), explosion.getY(), explosion.getZ()), fakePlayer, 0, false));
if (fakePlayer.isDead()) {
if (fakePlayer.tryUseTotem(mc.world.getDamageSources().generic())) {
fakePlayer.setHealth(10f);


ThunderHack.EVENT_BUS.post(new TotemPopEvent(fakePlayer, 1));

// new EntityStatusS2CPacket(fakePlayer, EntityStatuses.USE_TOTEM_OF_UNDYING).apply(mc.player.networkHandler);
}
}
}
}

@EventHandler
public void onSync(EventSync e) {
if (record.getValue()) {
positions.add(new PlayerState(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.getYaw(), mc.player.getPitch()));
return;
}
if (fakePlayer != null) {
if (play.getValue() && !positions.isEmpty()) {
movementTick++;

if (movementTick >= positions.size()) {
movementTick = 0;
return;
}
PlayerState p = positions.get(movementTick);
fakePlayer.setYaw(p.yaw);
fakePlayer.setPitch(p.pitch);
fakePlayer.setHeadYaw(p.yaw);

fakePlayer.updateTrackedPosition(p.x, p.y, p.z);
fakePlayer.updateTrackedPositionAndAngles(p.x, p.y, p.z, p.yaw, p.pitch, 3);
} else movementTick = 0;

if (autoTotem.getValue() && fakePlayer.getOffHandStack().getItem() != Items.TOTEM_OF_UNDYING)
fakePlayer.setStackInHand(Hand.OFF_HAND, new ItemStack(Items.TOTEM_OF_UNDYING));

if (fakePlayer.isDead()) {
deathTime++;
if (deathTime > 10) disable();
}
}
}

@EventHandler
public void onAttack(EventAttack e) {
if (fakePlayer != null && e.getEntity() == fakePlayer && fakePlayer.hurtTime == 0 && !e.isPre()) {
mc.world.playSound(mc.player, fakePlayer.getX(), fakePlayer.getY(), fakePlayer.getZ(), SoundEvents.ENTITY_PLAYER_HURT, SoundCategory.PLAYERS, 1f, 1f);

if (mc.player.fallDistance > 0 || ModuleManager.criticals.isEnabled())
mc.world.playSound(mc.player, fakePlayer.getX(), fakePlayer.getY(), fakePlayer.getZ(), SoundEvents.ENTITY_PLAYER_ATTACK_CRIT, SoundCategory.PLAYERS, 1f, 1f);
fakePlayer.onDamaged(mc.world.getDamageSources().generic());
if (ModuleManager.aura.getAttackCooldown() >= 0.85)
fakePlayer.setHealth(fakePlayer.getHealth() + fakePlayer.getAbsorptionAmount() - InventoryUtility.getHitDamage(mc.player.getMainHandStack(), fakePlayer));
else fakePlayer.setHealth(fakePlayer.getHealth() + fakePlayer.getAbsorptionAmount() - 1f);
if (fakePlayer.isDead()) {
if (fakePlayer.tryUseTotem(mc.world.getDamageSources().generic())) {
fakePlayer.setHealth(10f);
new EntityStatusS2CPacket(fakePlayer, EntityStatuses.USE_TOTEM_OF_UNDYING).apply(mc.player.networkHandler);
}
}
}
}

@override
public void onDisable() {
if (fakePlayer == null) return;
fakePlayer.kill();
fakePlayer.setRemoved(Entity.RemovalReason.KILLED);
fakePlayer.onRemoved();
fakePlayer = null;
positions.clear();
deathTime = 0;
}

private record PlayerState(double x, double y, double z, float yaw, float pitch) {
}
}
вот ссылка бери от туда там норм сурсы -
Пожалуйста, авторизуйтесь для просмотра ссылки.
спасибо
 
на:
Expand Collapse Copy
import com.mojang.authlib.GameProfile;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.SwordItem;
import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket;
import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.Hand;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffects;

import java.util.UUID;

@FieldDefaults(level = AccessLevel.PRIVATE)
public class FakePlayer extends Module {
    public static AbstractClientPlayerEntity fakePlayer = null;
    UUID uuid = UUID.fromString("70ee432d-0a96-4137-a2c0-37cc9df67f03");

    public FakePlayer() {
        super("FakePlayer", "Fake Player", ModuleCategory.MISC);
    }

    @EventHandler
    public void onRender(WorldRenderEvent event) {
        if (mc.world == null || mc.player == null || fakePlayer == null) {
            return;
        }
        if (mc.world != null && fakePlayer != null) {
            AbstractClientPlayerEntity e = fakePlayer;
            float[] rotate = new float[]{0, 0, 0, 0};
            e.setYaw(rotate[0]);
            e.setHeadYaw(rotate[0]);
            e.setPitch(rotate[1]);
            e.setMainArm(mc.player.getMainArm());
            if (mc.player.getActiveHand() != null && mc.player.isUsingItem()) {
                e.setCurrentHand(mc.player.getActiveHand());
            } else {
                e.clearActiveItem();
            }
        }
    }

    public static boolean moveKeysPressed() {
        return mc.options.forwardKey.isPressed() || mc.options.backKey.isPressed() ||
               mc.options.leftKey.isPressed() || mc.options.rightKey.isPressed();
    }

    @EventHandler
    public void onPacket(PacketEvent event) {
        if (mc.world != null && fakePlayer != null) {
            Entity targetEntity = fakePlayer;
            if (event.getPacket() instanceof PlayerInteractEntityC2SPacket p) {
                if (targetEntity.distanceTo(mc.player) < 6) {
                    if (fakePlayer.hurtTime > 0) {
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_ATTACK_NODAMAGE, mc.player.getSoundCategory(), 1.0f, 1.0f);
                        return;
                    }
                    fakePlayer.hurtTime = 9;
                    boolean cooled = (double) mc.player.getAttackCooldownProgress(1.0f) >= 0.9;

                    boolean canCrit = cooled && (!mc.player.isSprinting() || !moveKeysPressed() && !mc.player.isOnGround()) &&
                                     (mc.player.fallDistance != 0.0f && !mc.player.isOnGround());
                    boolean canKnock = cooled && !canCrit && mc.player.isSprinting();
                    boolean canSweep = cooled && !mc.player.isSprinting() && mc.player.isOnGround() &&
                                      mc.player.getMainHandStack().getItem() instanceof SwordItem;
                    boolean canStrong = !canCrit && !canKnock && !canSweep && mc.player.fallDistance == 0.0f && cooled;
                    boolean canWeak = !canStrong;
                    float f = 1.0f;
                    float f1 = 0;
                    float f2 = mc.player.getAttackCooldownProgress(0.5f);
                    f *= 0.2f + f2 * f2 * 0.8f;
                    float damage = (f1 *= f2) / 2.0f + 1.6f;

                    if (canCrit || canKnock || canSweep || canStrong || canWeak) {
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_HURT, mc.player.getSoundCategory(), 0.5f, 1.0f);
                    }

                    if (canCrit) {
                        damage = (float) ((double) damage * 1.5);
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_ATTACK_CRIT, mc.player.getSoundCategory(), 1.0f, 1.0f);
                    } else if (canKnock) {
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_ATTACK_KNOCKBACK, mc.player.getSoundCategory(), 1.0f, 1.0f);
                    } else if (canSweep) {
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_ATTACK_SWEEP, mc.player.getSoundCategory(), 1.0f, 1.0f);
                    } else if (canStrong) {
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_ATTACK_STRONG, mc.player.getSoundCategory(), 1.0f, 1.0f);
                    } else if (canWeak) {
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_ATTACK_WEAK, mc.player.getSoundCategory(), 1.0f, 1.0f);
                    }

                    if (fakePlayer.getAbsorptionAmount() != 0.0f) {
                        float addToDamageHP = fakePlayer.getAbsorptionAmount() - damage / 2.0f + fakePlayer.getAbsorptionAmount();
                        fakePlayer.setAbsorptionAmount(MathHelper.clamp(fakePlayer.getAbsorptionAmount() - damage, 0.0f, 1000.0f));
                        fakePlayer.setHealth(MathHelper.clamp(fakePlayer.getHealth() - addToDamageHP, 0.99f, 20.0f));
                    } else {
                        fakePlayer.setHealth(MathHelper.clamp(fakePlayer.getHealth() - damage + fakePlayer.getAbsorptionAmount(), 0.99f, 20.0f));
                    }

                    fakePlayer.limbAnimator.setSpeed((float) fakePlayer.hurtTime / 10.0f);
                    if (fakePlayer.getHealth() < 1.0f && fakePlayer.getAbsorptionAmount() == 0.0f) {
                        fakePlayer.clearStatusEffects();
                        mc.particleManager.addEmitter(fakePlayer, ParticleTypes.TOTEM_OF_UNDYING, 30);
                        mc.player.getWorld().playSound(mc.player, targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ITEM_TOTEM_USE, mc.player.getSoundCategory(), 1.0f, 1.0f);

                        mc.world.playSound(targetEntity.getX(), targetEntity.getY(), targetEntity.getZ(),
                                SoundEvents.ENTITY_PLAYER_HURT, targetEntity.getSoundCategory(), 1.0f, 1.0f, false);
                        fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, 100, 0));
                        fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 880, 0));
                        fakePlayer.setAbsorptionAmount(8.0f);
                        fakePlayer.setHealth(1.0f);
                    }
                }
            }

            if (event.getPacket() instanceof ExplosionS2CPacket explosion) {
                boolean canDamage;
                if (fakePlayer.hurtTime > 1) {
                    return;
                }
                Vec3d posExplosion = new Vec3d(0, 0, 0);
                boolean bl = canDamage = getDistanceAtVecToVec(fakePlayer.getPos(), posExplosion) < 11.0;
                if (!canDamage) {
                    return;
                }
                float damage = (float) ((9.0 - getDistanceAtVecToVec(fakePlayer.getPos(), posExplosion)) / 9.0) * 10.0f;
                float hp = (float) MathHelper.clamp(fakePlayer.getHealth() - damage + fakePlayer.getAbsorptionAmount(), 0.001, 20.0);
                if (fakePlayer.getAbsorptionAmount() != 0.0f) {
                    fakePlayer.setAbsorptionAmount(MathHelper.clamp(fakePlayer.getAbsorptionAmount() - damage, 0.0f, 8.0f));
                }
                if (fakePlayer.getAbsorptionAmount() == 0.0f || damage > fakePlayer.getAbsorptionAmount()) {
                    fakePlayer.setHealth((int) MathHelper.clamp(hp + 1.0f, 1.0f, 20.0f));
                }
                mc.player.getWorld().playSound(mc.player, fakePlayer.getX(), fakePlayer.getY(), fakePlayer.getZ(),
                        SoundEvents.ENTITY_PLAYER_DEATH, mc.player.getSoundCategory(), 0.5f, 1.0f);
                if (hp < 1.0f && fakePlayer.getAbsorptionAmount() < 4.0f && fakePlayer.getOffHandStack().getItem() == Items.TOTEM_OF_UNDYING) {
                    fakePlayer.clearStatusEffects();
                    mc.particleManager.addEmitter(fakePlayer, ParticleTypes.TOTEM_OF_UNDYING, 30);
                    mc.world.playSound(fakePlayer.getX(), fakePlayer.getY(), fakePlayer.getZ(),
                            SoundEvents.ENTITY_PLAYER_HURT, fakePlayer.getSoundCategory(), 1.0f, 1.0f, false);
                    fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.ABSORPTION, 100, 1));
                    fakePlayer.addStatusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 880, 0));
                    fakePlayer.setStackInHand(Hand.OFF_HAND, new ItemStack(Items.AIR, fakePlayer.getOffHandStack().getMaxCount() - 1));
                    fakePlayer.setHealth(1.0f);
                }
            }
        }
    }

    public void onToggled(boolean actived) {
        if (!actived) {
            if (mc.world != null && fakePlayer != null) {
                fakePlayer.remove(Entity.RemovalReason.DISCARDED);
                mc.world.removeEntity(fakePlayer.getId(), Entity.RemovalReason.DISCARDED);
            }
            fakePlayer = null;
        } else if (actived) {
            if (mc.world != null && mc.player != null) {
                fakePlayer = new AbstractClientPlayerEntity(mc.world, new GameProfile(UUID.fromString("32d-0a96-4137-a2c0-37cc9df67f03"),
                        "с писюном блять поиграй")) {};
                fakePlayer.copyPositionAndRotation(mc.player);
                fakePlayer.setPosition(mc.player.getX(), mc.player.getY(), mc.player.getZ());
                mc.world.addEntity(fakePlayer);
                fakePlayer.setStackInHand(Hand.OFF_HAND, new ItemStack(Items.TOTEM_OF_UNDYING, 64));
                fakePlayer.setStackInHand(Hand.MAIN_HAND, new ItemStack(Items.NETHERITE_SWORD, 1));
                fakePlayer.setHealth(20.0f);
            }
        }
    }

    public static final double getDistanceAtVecToVec(Vec3d first, Vec3d second) {
        return Math.sqrt((first.x - second.x) * (first.x - second.x) + (first.y - second.y) * (first.y - second.y) + (first.z - second.z) * (first.z - second.z));
    }

    @Override
    public void deactivate() {
        onToggled(false);
        super.deactivate();
    }

    @Override
    public void activate() {
        onToggled(true);
        super.activate();
    }
}
 
Назад
Сверху Снизу