Помогите Получение Entity после рестарта

  • Автор темы Автор темы Cool_boy
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Cool_boy

Активный участник
Пользователь
Баллы
96
Имя в Minecraft
prettydude
Всех с 2к18! (у меня он и так через час)
У меня возник вопрос: как получить Entity после рестарта? Надо читать со списка стенды для брони, а потом делать над ними штуки...
Есть вариант через world.getEntities() и UUID, но тогда надо проитерировать сквозь всех существ в мире, и проверять их UUID. Пускать цикл в асинхрон (у меня на сервере стабильно ~2к существ), или существует другой вариант?
Над сериализацией тоже задумывался, но файл разжиреет через предметы в слотах стенда.
 
Попробуй убивать их по выключению сервера и спавнить снова
 
Попробуй убивать их по выключению сервера и спавнить снова
Тогда надо сериализировать, чтобы знать где спавнить. А стенд может занять достаточно много места, учитывая 5 слотов под предметы.
 
Там в crafword или в нмс ворлде есть мапа с ентити id и с entity uuid
 
Там в crafword или в нмс ворлде есть мапа с ентити id и с entity uuid
Порылся, декомпилятор не смог взять World и WorldServer, но методы прочитал:
Код:
WorldServer:
getEntity(UUID): Entity
World:
entitiesById: IntHashMap
В мире сохранение Entity происходит по EntityID. Боюсь что он может быть не уникальным.

Попытаюсь использовать getEntitiesByClass(ArmorStand.class) в асинхроне, если всё будет плохо - буду сохранять стенды в файл.
 
Порылся, декомпилятор не смог взять World и WorldServer, но методы прочитал:
Код:
WorldServer:
getEntity(UUID): Entity
World:
entitiesById: IntHashMap
В мире сохранение Entity происходит по EntityID. Боюсь что он может быть не уникальным.

Попытаюсь использовать getEntitiesByClass(ArmorStand.class) в асинхроне, если всё будет плохо - буду сохранять стенды в файл.
Посмотри там в методе спавна ентити какого-нибудь, там он в мапу добавляет uuid, это точно есть. А на счет айди то там есть static count, при запуске сервера айди уникальные, но в следующий раз гарантий нет
 
Порылся, декомпилятор не смог взять World и WorldServer, но методы прочитал:
Код:
WorldServer:
getEntity(UUID): Entity
World:
entitiesById: IntHashMap
В мире сохранение Entity происходит по EntityID. Боюсь что он может быть не уникальным.

Попытаюсь использовать getEntitiesByClass(ArmorStand.class) в асинхроне, если всё будет плохо - буду сохранять стенды в файл.
upload_2018-1-1_15-59-29.png
Так вот же как раз в worldserver есть метод для этого, uuid он уникальный всегда, в чем проблема?
 
Тему закрою, но оставлю вам гифку того что я делал. Доделаю - выложу.
(на форуме все любят facepalm)
lx6LmOY.gif
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх