Сохранение IAttribute

Версия Minecraft
1.7.10
1,976
68
220
Доброго времени суток! о/

Один хороший человек посоветовал мне вместо IExtendedEntityProperties использовать IAttribute для хранения данных в игроке.
Но забыл упомянуть одну особенность - IAttribute при смерти стираются и вновь добавляются через EntityConstructing.

Вот вопрос, это я что-то накосячил, или так происходит у всех? В том или ином случае - подскажите, пожалуйста, как по-человечески (без всяких костылей сохранения в файл и загрузки из него) можно сохранять данные игрока после его смерти?

Заранее спасибо :3
 
Решение
Таки я тупанул - с кем не бывает хд
А переносятся значения точно так же, как и в случае IEEP:
Java:
@SubscribeEvent
public void onClonePlayer(PlayerEvent.Clone e) {
    double a = ((EntityPlayer) e.original).getEntityAttribute(ATTRIBUTE).getAttributeValue();
    ((EntityPlayer) e.entityPlayer).getEntityAttribute(ATTRIBUTE).setBaseValue(a);
}

Тему можно закрыть.
1,976
68
220
Таки я тупанул - с кем не бывает хд
А переносятся значения точно так же, как и в случае IEEP:
Java:
@SubscribeEvent
public void onClonePlayer(PlayerEvent.Clone e) {
    double a = ((EntityPlayer) e.original).getEntityAttribute(ATTRIBUTE).getAttributeValue();
    ((EntityPlayer) e.entityPlayer).getEntityAttribute(ATTRIBUTE).setBaseValue(a);
}

Тему можно закрыть.
 
Последнее редактирование модератором:
2,505
81
397
В этой штуке есть несколько минусов, если что.
1. Только float.
2. Модификаторы. (Скорее всего они не будут использоваться, поэтому и минус).
3. Синхронизация со всеми игроками (если синхронизация вообще включена) - главный минус. Зачем синхронить всем, если нужно только владельцу.
Все это нужно понимать, если важен перфоманс.
 
2,505
81
397
А, точно. Забыл уже.
2. Что это такое и что с этим можно сделать? (пример???)
Пример - здоровье игрока. Обычно добавляют модификаторы, а не увеличивают родное значение. Тоже самое со мувспидом. Всякие зельки устанавливают именно модификаторы.
 
1,976
68
220
Обычно добавляют модификаторы, а не увеличивают родное значение
То есть вместо .setDefaultValue используется модификатор, меняющий значение здоровья? И это происходит каждый удар? А сам атрибут здоровья всё так же равен 20?
 
Сверху