Правильное использование makeDirty()

Версия Minecraft
1.17.1
API
Fabric
6
1
1
На вики Fabric в теме о создании BlockEntity упоминается метод makeDirty(), который используется для сохранения данных на диске, для последующего их восстановления при запуске мира (могу ошибаться). Каким образом использовать этот метод, в каком фрагменте кода его вызывать? Я предполагаю, что его следует разместить внутри метода writeNbt.

Код:
public class DemoBlockEntity extends BlockEntity {

    private int number = 7;

    public DemoBlockEntity(BlockPos pos, BlockState state) {
        super(ModBlockEntity.DEMO_BLOCK_ENTITY, pos, state);
    }

    // Сериализация (сохранение) параметра number у DemoBlockEntity
    @Override
    public void writeNbt(NbtCompound tag) {
        // Сохранение настоящего значения number в tag
        tag.putInt("number", number);
        super.writeNbt(tag);
        markDirty();
    }

    // Десериализация (чтение) параметра number у DemoBlockEntity
    @Override
    public void readNbt(NbtCompound tag) {
        super.readNbt(tag);
        // Получение значения number из tag
        number = tag.getInt("number");
    }
}
 
Решение
Этот метод помечает тайл измененным и при сохранении мира будет вызван writeNbt, насколько я понимаю.
Тебе не нужно его вызывать в writeNbt. Его нужно вызывать когда ты изменил переменную number (или любые другие данные, которые сохраняются в writeNbt).

tox1cozZ

aka Agravaine
8,456
598
2,892
Этот метод помечает тайл измененным и при сохранении мира будет вызван writeNbt, насколько я понимаю.
Тебе не нужно его вызывать в writeNbt. Его нужно вызывать когда ты изменил переменную number (или любые другие данные, которые сохраняются в writeNbt).
 
Сверху