Фейковые игроки

Версия Minecraft
1.12.2
API
Forge
727
9
108
Как создавать фейкового игрока того, у кого в руке находится предмет? Мне необязательно копировать инвентарь или что-то еще. (Хотя скопировать предмет в главной руке) Главное сохранить вращение головы в том же положении.
 
Последнее редактирование:
727
9
108
А там исходы есть?

читаешь через нбт данные нужного тебе игрока, загружаешь эти данные нбт в сущность
Это просто сделать. Я уже поискал и нашёл методы например чтобы скопировать rotationYaw и Head к фейк игроку инвентарь и т.д.

А вот как создать сущность я не понимаю, можете объяснить? Все мои попытки чщетны, ато и с крашем.
 
Последнее редактирование:
727
9
108
727
9
108
UP. И кстати забыл уточнить, мне просто нужно создать недвигающуюся копию игрока. Это будет не сущность, а просто видимая оболочка.
 
6,364
253
1,253
Ну типо с сервера на клиент отправляешь ванильный пакет о том, что такой-то игрок стоит там-то
 
727
9
108
отправляешь ванильный пакет о том, что такой-то игрок стоит там-то
Я думаю, ты меня не понял
для понятности приложу код своих попыток:

EntityPlayerCop класс:
public class EntityPlayerCop extends EntityPlayerMP
{
    public EntityPlayerCop(EntityPlayer player, World world)
    {
        super(world, player.getGameProfile());
        copyLocationAndAnglesFrom(player);
      
        // fix inventory
        //inventory.copyInventory(player.inventory);
      
        // copy model and data
        getDataManager().set(EntityPlayer.PLAYER_MODEL_FLAG,
                player.getDataManager().get(EntityPlayer.PLAYER_MODEL_FLAG));
      
        // fix rotation
        rotationYawHead = player.rotationYawHead;
        renderYawOffset = player.renderYawOffset;
      
        // fix cape movement
        chasingPosX = posX;
        chasingPosY = posY;
        chasingPosZ = posZ;
      
        // spawn
        //world.spawnEntity(this);
    }
  
    public void resetPlayerPosition(EntityPlayer player)
    {
        player.setPositionAndRotation(posX, posY, posZ,
            rotationYaw, rotationPitch);
    }*/
}
основной код:
private EntityPlayerCop playerCopy = null;

//тут типо onRightClickItem метод
playerCopy = new EntityPlayerCop();

playerCopy.resetPlayerPosition();

//тут пример удаления
// check of fakePlayer != null
if(playerCopy == null) return;
playerCopy.despawn();
playerCopy = null;
вот ещё метод despawn, я его видимо уже убрал.:
public void despawn()
{
    Minecraft.getMinecraft().world.removeEntityFromWorld(cache.id);
}
 
6,364
253
1,253
У тебя мод чисто клиентский? Если нет, то сервер же должен как-то уведомить клиентов, что там-то стоит фейк-игрок.
Сервер может отправить ванильный пакет о том, что такой-то игрок(на самом деле фейковый) залогинился
Сервер может отправить ванильный пакет о том, что этот игрок находится в такой-то точке
Сервер может отправить ванильный пакет о том, что этот игрок держит в руке такой-то предмет

Этого по идее достаточно чтобы получился требуемый визуальный эффект
Плюс, можно в капабилити мира хранить инфу о фейковых игроках, чтобы, например, присылать те пакеты реальным игрокам, которые зашли позже
 
727
9
108
У тебя мод чисто клиентский?
Нет, извиняюсь. Я имел ввиду, что еще не знаю как создавать копию игрока, не то что пакеты...


Сервер может отправить ванильный пакет о том, что такой-то игрок(на самом деле фейковый) залогинился
Сервер может отправить ванильный пакет о том, что этот игрок находится в такой-то точке
Сервер может отправить ванильный пакет о том, что этот игрок держит в руке такой-то предмет
А как собственно, правильно отправить ванильные пакеты? Или метод? Или же сделать свою пакетную систему?
 
6,364
253
1,253
Что-то вроде
Java:
player.connection.sendPacket(new SPacket<TYPE>(...))
Пакеты, отправляемые с сервера можно посмотреть в пакете net.minecraft.network.play.server
Также рекомендую посмотреть usage-ы интересующих тебя пакетов в ванили
 
727
9
108
6,364
253
1,253
Зависит от клиента и сервера. Если надпись формируется на сервере(обычно так), то не будет сообщений чата, ведь игрок реально не заходил.
Суть отправки пакетов с сервера в том ,чтобы убедить клиентов в чем-то
 
Сверху