Помогите Создание индивидуального НПС (видимость)

  • Автор темы Автор темы SaMEC
  • Дата начала Дата начала

SaMEC

Старожил
Пользователь
Баллы
173
Имя в Minecraft
Nick
Что намеревается воссоздать, это индивидуальный нпс, который видит только один игрок за которым он привязан. (ПРИВЯЗЫВАЕТСЯ ВИДИМОСТЬ, ОДИН ВИДИТ ДРУГОЙ НЕТ, ЭТО НЕ КАК НЕ ОТНОСИТСЯ К СЛЕДОВАНИЮ ЗА ИГРОКОМ)
По-видимому это реализовать возможно только с помощью пакетов, вот и вопрос в том я не прошу делать за меня, прошу направить, куда копать если кто-то ранее сталкивался с этим.
И если это реализовать на много проще просто намекните, не знаю может вообще это все делается через Citizens(вроде в нем я уже ковырялся:rolleyes:)
 
Последнее редактирование:
You could try and use Citizen's API, Link here

You can then create NPC by doing the following
Code (Text):
NPC npc = CitizensAPI.getNPCRegistry().createNPC(EntityType.PLAYER, "npcName");
For the navigation, make sure that you have a Location and use this
Code (Text):
npc.getNavigator().setTarget(loc);
Sorry if there's any mistake. I'm open for suggestions
 
You could try and use Citizen's API, Link here

You can then create NPC by doing the following
Code (Text):
NPC npc = CitizensAPI.getNPCRegistry().createNPC(EntityType.PLAYER, "npcName");
For the navigation, make sure that you have a Location and use this
Code (Text):
npc.getNavigator().setTarget(loc);
Sorry if there's any mistake. I'm open for suggestions
Что намеревается воссоздать, это индивидуальный нпс, который видит только один игрок за которым он привязан.
???
 
И еще раз здравствуйте, если кому то понадобиться то решение данной задачки вот:
Код:
    public void spawnNPC(Location loc, Player player){
        MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
        WorldServer nmsWorld = ((CraftWorld) Bukkit.getWorlds().get(0)).getHandle();
        EntityPlayer npc = new EntityPlayer(nmsServer, nmsWorld, new GameProfile(UUID.randomUUID(), "NPC"), new PlayerInteractManager(nmsWorld));
        npc.setLocation(loc.getX(), loc.getY(), loc.getZ(), 0, 0);

        PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection;
        connection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, npc));
        connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
    }
 
И еще раз здравствуйте, если кому то понадобиться то решение данной задачки вот:
Код:
    public void spawnNPC(Location loc, Player player){
        MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
        WorldServer nmsWorld = ((CraftWorld) Bukkit.getWorlds().get(0)).getHandle();
        EntityPlayer npc = new EntityPlayer(nmsServer, nmsWorld, new GameProfile(UUID.randomUUID(), "NPC"), new PlayerInteractManager(nmsWorld));
        npc.setLocation(loc.getX(), loc.getY(), loc.getZ(), 0, 0);

        PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection;
        connection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, npc));
        connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
    }
Тьху. Ты серьёзно?! Я то думал ты знаешь, как это делать. Думал, не знаешь как заставить его за собой следовать.
 
Вот и не лезь, на это есть ProtocolLib.
Собственно и с ним не хотел работать.
Но т.к. уже начал возьмусь и за него :good:
Просто зачастую нет не какой документации объясняющих работу тех или иных методов.
 
Крч, с скорбордом не работал еще, но знаю из игр в минирежим Annihilation, что можно добавив игрока(насчет других типов хз) в команду, раскрывать невидимость флагом для других игроков этой же команды команды, в итоге получается что одни игроки видят игрока с инвизом, а другие полностью нет. Ну а заставить следовать НПС за тобой с помощью репитшедулера и навигации. Надеюсь что помог, и кастомного нпс можно засунуть в команду скорборда
 
Крч, с скорбордом не работал еще, но знаю из игр в минирежим Annihilation, что можно добавив игрока(насчет других типов хз) в команду, раскрывать невидимость флагом для других игроков этой же команды команды, в итоге получается что одни игроки видят игрока с инвизом, а другие полностью нет. Ну а заставить следовать НПС за тобой с помощью репитшедулера и навигации. Надеюсь что помог, и кастомного нпс можно засунуть в команду скорборда
Не знаю, есть ли такое в скорбордах, но сказал бред. Для таких целей есть Player#hidePlayer(Plugin,player). Легальными способами ты никак не заспавнишь НПС, только библиотеки, которое тоже это делают нелегально.
 
Собственно и с ним не хотел работать.
Но т.к. уже начал возьмусь и за него :good:
Просто зачастую нет не какой документации объясняющих работу тех или иных методов.
Пакет врапер юзай, с ним проще.
 
Назад
Верх