package advancedsystemsmanager.helpers; import net.minecraft.world.WorldSavedData; public abstract class SavableData extends WorldSavedData { private boolean needsLoading = true; public SavableData(String key) { super(key); } public boolean copy(WorldSavedData worldSavedData) { this.needsLoading = false; return copyFrom(worldSavedData == null ? getNew() : worldSavedData); } public void unload() { copyFrom(getNew()); this.needsLoading = true; } protected abstract SavableData getNew(); public abstract boolean copyFrom(WorldSavedData worldSavedData); public boolean needsLoading() { return needsLoading; } public void setNeedsLoading(boolean needsLoading) { this.needsLoading = needsLoading; } }