Hi I'm trying to save a simple string to the world nbt data but it isn't working at all, in the same game session I'm able to set and get the data to the WorldSavedData but when I unload and reload the world the data wasn't saved.
Here is my code for the WorldSavedData.java
package vazkii.ambience.Util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.annotation.Nullable;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World;
import net.minecraft.world.storage.MapStorage;
import net.minecraft.world.storage.WorldSavedData;
import vazkii.ambience.Ambience;
import vazkii.ambience.World.Biomes.Area;
public class WorldData extends WorldSavedData {
final static String key = Ambience.MOD_ID;
public static MapStorage storage;
public String test="4";
public String getTeste() {
return test;
}
public void setTest(String teste) {
this.test = teste;
}
public static WorldData getSavedDataforWorld(World world) {
storage = world.getMapStorage();//.getPerWorldStorage();
WorldData result = (WorldData) storage.getOrLoadData(WorldData.class, key);
if (result == null) {
result = new WorldData(key);
storage.setData(key, result);
}
return result;
}
private NBTTagCompound data = new NBTTagCompound();
public WorldData(String name) {
super(name);
}
public NBTTagCompound saveData() {
//NBTTagCompound tag=data;
data.setString("teste", "3");
//I tried to force save the classe itself
storage.setData(key, this);
this.markDirty();
return data;
}
@Override
public void readFromNBT(NBTTagCompound compound) {
data = compound.getCompoundTag(key);
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
compound.setTag(key, data);
return compound;
}
}
And here is how I'm calling it to store data:
WorldData data= WorldData.forWorld(Minecraft.getMinecraft().player.world);
NBTTagCompound tag = data.saveData();