1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Прогрузка чанка с помощью NPC

Тема в разделе "Разработка плагинов для новичков", создана пользователем AlexDeluxe, 19 июл 2022.

  1. Автор темы
    AlexDeluxe

    AlexDeluxe Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    FadingFog
    Добрый день. В чём суть проблемы: в моде RailCraft есть якорь, который прогружает чанки. Чтобы он включился, нужно, чтобы игрок (любой) прогрузил чанк, в котором он (якорь) стоит. Я делаю это с помощью плагина: прогружаю чанк, а потом создаю в нём NPC. Но правильно ли я его создаю?
    Если всё правильно, то почему якорь не включается, хотя всё работает, если игрок прогружает чанк. Так же всё работает с нпс из плагина Citizens...

    Код:
    World world = Bukkit.getWorlds().get(0);
    world.loadChunk(x, z);
    world.refreshChunk(x, z);
    Код:
    MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
    WorldServer nmsWorld =((CraftWorld)Bukkit.getWorld("world")).getHandle();
    GameProfile gameProfile = new GameProfile(UUID.randomUUID(), "Tobi");
    EntityPlayer npc = new EntityPlayer(nmsServer, nmsWorld, gameProfile, new PlayerInteractManager(nmsWorld));
    
    npc.spawnIn(nmsWorld);
    npc.setLocation(x * 16, 66, z * 16, 1, 1);
    nmsWorld.getChunkAt(x, z).a(npc);  //Нужно ли?
    nmsWorld.getPlayerChunkMap().addPlayer(npc);  //Нужно ли?
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
  3. Автор темы
    AlexDeluxe

    AlexDeluxe Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    FadingFog
    Проблема... на 1.7.10 нет setForceLoaded :(
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ты бы еще динозавров там поискал :D
     
  5. Автор темы
    AlexDeluxe

    AlexDeluxe Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    FadingFog
    Ну а кто виноват, что на новых версиях нет контента... (Но это уже другая история)
    А вообще, это не особо важно, т.к. такая же проблема и на остальных версиях. setForceLoaded особо не влияет, т.к. я и так прогружаю чанк. Проблема не в прогрузке чанка как таковой, а в нпс
     
    Последнее редактирование: 19 июл 2022
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Держи в курсе.
     
  7. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Поэтому ты решил использовать мертвую версию, на которой по сути не осталось поддержки?.. Если это ради модов, то и на 1.12.2 их полно, к тому же Губка продолжительное время поддерживает 1.16.5 и старается в последние версии.

    Возвращаясь к теме. Citizens старается полностью имитировать игрока в подробностях - наверняка поэтому мод и считает непися оттуда валидным игроком. Вычленить, какой для этого нужен параметр, вряд ли удастся без проб и ошибок (хотя можно покопаться в исходниках). Я бы просто предложил действительно использовать Citizens, пока не решишься найти причину.
     
  8. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Как минимум забыл прописать соединение в:
    Код:
    entity.playerConnection
    и добавить сущность игрока в трекер:
    Код:
      
            EntityTrackerEntry entry = (EntityTrackerEntry)((WorldServer)entity.world).tracker.trackedEntities.get(entity.getId());
            entry.updatePlayer(entity);
    
     

Поделиться этой страницей