mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
53 lines
1.6 KiB
Java
53 lines
1.6 KiB
Java
package com.hbm.saveddata;
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.world.WorldSavedData;
|
|
|
|
public class TomSaveData extends WorldSavedData {
|
|
|
|
public final static String key = "impactData";
|
|
public float dust;
|
|
public float fire;
|
|
public boolean impact;
|
|
|
|
private static TomSaveData lastCachedUnsafe = null;
|
|
|
|
/* no caching for data per world needed, minecraft's save structure already does that! call forWorld as much as you want. */
|
|
public static TomSaveData forWorld(World world) {
|
|
TomSaveData result = (TomSaveData) world.perWorldStorage.loadData(TomSaveData.class, "impactData");
|
|
|
|
if(result == null) {
|
|
world.perWorldStorage.setData(key, new TomSaveData(key));
|
|
result = (TomSaveData) world.perWorldStorage.loadData(TomSaveData.class, "impactData");
|
|
}
|
|
lastCachedUnsafe = result;
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Certain biome events do not have access to a world instance (very very bad), in those cases we have to rely on a possibly incorrect cached result.
|
|
* However, due to the world gen invoking TomSaveData.forWorld() quite a lot, it is safe to say that in most cases, we do end up with the correct result.
|
|
*/
|
|
public static TomSaveData getLastCachedOrNull() {
|
|
return lastCachedUnsafe;
|
|
}
|
|
|
|
public TomSaveData(String tagName) {
|
|
super(tagName);
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound compound) {
|
|
this.dust = compound.getFloat("dust");
|
|
this.fire = compound.getFloat("fire");
|
|
this.impact = compound.getBoolean("impact");
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound nbt) {
|
|
nbt.setFloat("dust", dust);
|
|
nbt.setFloat("fire", fire);
|
|
nbt.setBoolean("impact", impact);
|
|
}
|
|
} |