I have created an EntityData that I want to save when the world closes and load that save when the world opens.
private static final EntityDataAccessor<Float> ENGINE_POWER = SynchedEntityData.defineId(AircraftVehicle.class, EntityDataSerializers.FLOAT);
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
builder.define(ENGINE_POWER, 0f);
}
@Override
protected void addAdditionalSaveData(CompoundTag compoundTag) {
super.addAdditionalSaveData(compoundTag);
compoundTag.putFloat("EnginePower", entityData.get(ENGINE_POWER));
}
@Override
protected void readAdditionalSaveData(CompoundTag compoundTag) {
super.readAdditionalSaveData(compoundTag);
if (compoundTag.contains("EnginePower")) {
entityData.set(ENGINE_POWER, compoundTag.getFloat("EnginePower"));
}
}
The problem is that entityData.get(ENGINE_POWER) in addAdditionalSaveData method always return the default value