package com.hbm.saveddata; import java.util.ArrayList; import java.util.List; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; public class AuxSavedData extends WorldSavedData { public List data = new ArrayList(); private World worldObj; public AuxSavedData(String p_i2141_1_) { super(p_i2141_1_); } public AuxSavedData(World p_i1678_1_) { super("hbmauxdata"); this.worldObj = p_i1678_1_; this.markDirty(); } static class DataPair { String key = ""; int value; public DataPair() { } public DataPair(String s, int i) { key = s; value = i; } void readFromNBT(NBTTagCompound nbt, int i) { this.key = nbt.getString("aux_key_" + i); this.value = nbt.getInteger("aux_val_" + i); } void writeToNBT(NBTTagCompound nbt, int i) { nbt.setString("aux_key_" + i, key); nbt.setInteger("aux_val_" + i, value); } } @Override public void readFromNBT(NBTTagCompound nbt) { int count = nbt.getInteger("dCount"); for(int i = 0; i < count; i++) { DataPair struct = new DataPair(); struct.readFromNBT(nbt, i); data.add(struct); } } @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("dCount", data.size()); for(int i = 0; i < data.size(); i++) { data.get(i).writeToNBT(nbt, i); } } public static AuxSavedData getData(World worldObj) { AuxSavedData data = (AuxSavedData)worldObj.perWorldStorage.loadData(AuxSavedData.class, "hbmauxdata"); if(data == null) { worldObj.perWorldStorage.setData("hbmauxdata", new AuxSavedData(worldObj)); data = (AuxSavedData)worldObj.perWorldStorage.loadData(AuxSavedData.class, "hbmauxdata"); } return data; } public static void setThunder(World world, int dura) { AuxSavedData data = getData(world); if(data.data == null) { data.data = new ArrayList(); data.data.add(new DataPair("thunder", dura)); } else { DataPair thunder = null; for(DataPair pair : data.data) { if(pair.key.equals("thunder")) { thunder = pair; break; } } if(thunder == null) { data.data.add(new DataPair("thunder", dura)); } else { thunder.value = dura; } } data.markDirty(); } public static int getThunder(World world) { AuxSavedData data = getData(world); if(data == null) return 0; for(DataPair pair : data.data) { if(pair.key.equals("thunder")) { return pair.value; } } return 0; } }