Войти или зарегистрироваться

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

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);  //Нужно ли?
 
Ты бы еще динозавров там поискал :D
Ну а кто виноват, что на новых версиях нет контента... (Но это уже другая история)
А вообще, это не особо важно, т.к. такая же проблема и на остальных версиях. setForceLoaded особо не влияет, т.к. я и так прогружаю чанк. Проблема не в прогрузке чанка как таковой, а в нпс
 
Последнее редактирование:
Ну а кто виноват, что на новых версиях нет контента... (Но это уже другая история)
Поэтому ты решил использовать мертвую версию, на которой по сути не осталось поддержки?.. Если это ради модов, то и на 1.12.2 их полно, к тому же Губка продолжительное время поддерживает 1.16.5 и старается в последние версии.

Возвращаясь к теме. Citizens старается полностью имитировать игрока в подробностях - наверняка поэтому мод и считает непися оттуда валидным игроком. Вычленить, какой для этого нужен параметр, вряд ли удастся без проб и ошибок (хотя можно покопаться в исходниках). Я бы просто предложил действительно использовать Citizens, пока не решишься найти причину.
 
Добрый день. В чём суть проблемы: в моде 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);  //Нужно ли?
Как минимум забыл прописать соединение в:
Java:
entity.playerConnection
и добавить сущность игрока в трекер:
Java:
        EntityTrackerEntry entry = (EntityTrackerEntry)((WorldServer)entity.world).tracker.trackedEntities.get(entity.getId());
        entry.updatePlayer(entity);
 
Назад
Верх