Проблемы с массивом Capability

Версия Minecraft
1.16.5
API
Forge
15
1
0
Решил создать массив(int) capability, однако возникла проблема - массив не хочет принимать новые значения. Всё ли я делаю правильно при начислении?

ПКМ по предмету должно начислять очко:
@Override
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity entity, Hand hand) {
    ActionResult<ItemStack> retval = super.onItemRightClick(world, entity, hand);
    ItemStack itemstack = retval.getResult();
    entity.getCapability(Points.CAPABILITY).ifPresent(capability -> {
        capability.points[0]++;
        capability.syncPoints(entity);
        });
    System.out.println(entity.getCapability(Points.CAPABILITY).map(capability -> capability.points[0]).orElse(1));
    return retval;
}
Выводит всегда 1. Как можно исправить?
 
Последнее редактирование:
15
1
0
Разобрался с проблемой, теперь всё работает.
Однако появился вопрос - как сохранять капабилити после смерти, выхода из игры и т.д.? Пробовал использовать PlayerEvent.Clone, но видимо что-то делаю не так.
Код - https://github.com/Hyrancood/HyraRPG/tree/main/src/main/java/com/hyrancood/hyrarpg
 
15
1
0
Что я делаю не так?

PlayerEvent.Clone:
@SubscribeEvent
    public void clone(PlayerEvent.Clone event) {
        IPoints original = event.getOriginal().getCapability(PointsProvider.capability, null).orElseGet(Points::new);
        IPoints clone = event.getEntity().getCapability(PointsProvider.capability, null).orElseGet(Points::new);
        clone.setPointsArray(original.getPointsArray());
    }
 
153
21
41
Что я делаю не так?
EventListener:
@SubscribeEvent
public void onPlayerClone(PlayerEvent.Clone event)
{
    if (event.isWasDeath())
        event.getOriginal().getCapability(CAPABILITIES).ifPresent((capabilities) -> event.getPlayer().getCapability(CAPABILITIES).orElse(new Capabilities()).deserializeNBT(capabilities.serializeNBT()));
}
 
Сверху