Система временных эффектов (Замена Potion)

Система временных эффектов (Замена Potion)

Нет прав для скачивания

CMTV

Основатель
Администратор
1,304
4
601
Прикрепил ссылку на GitHub репозиторий к кнопке "Дополнительная информация" на странице ресурса. Перенес в учебник на сайте. Достижение выдал.

Завтра открою конкурс Супер-гайд 2018 официально.
 
7,099
324
1,509
Можно ли как-то перебрать все капабилити определенной сущности?
 
243
28
202
@hohserg1, всё зависит от того что в конечном счёте нужно сделать.

Все капабилити сущности хранит экземпляр CapabilityDispatcher (инициализируется в конструкторе Entity
запуская AttachCapabilitiesEvent для этой Entity).
CapabilityDispatcher хранит данные для капабилити разделяя их по трём массивам (имена (String),
хранилища (INBTSerializable<NBTBase>) и провайдеры (ICapabilityProvider)) для быстрой работы с ними.
Не имея инстанса конкретного ICapabilityProvider не представляю как можно работать с капой при таком уровне абстракции,
я не вникал.

Однако можно получить актуальные данные всех капабилити в виде одного NBTCompoundTag сереализовав
CapabilityDispatcher (CapabilityDispatcher#serializeNBT()) или каждое хранилище по отдельности для конкретной капы.
По идее можно и перезаписать эти данные (CapabilityDispatcher#deserializeNBT(NBTCompoundTag)), но на загруженную
сущность эффекта это не окажет.

Я накидал пример получения данных капабилити игрока, если интересно могу залить на GitHub и скинуть.
 
7,099
324
1,509
Мне нужно было целиком сохранить сущность, заюзал serializeNBT
 
Сверху