Advertisement
CaptainLepidus

WorldSavedData

Aug 7th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.38 KB | None | 0 0
  1. package com.ramon.hellow;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import com.ramon.hellow.worldgen.WorldStructure;
  7.  
  8. import net.minecraft.nbt.NBTTagCompound;
  9. import net.minecraft.nbt.NBTTagList;
  10. import net.minecraft.world.World;
  11. import net.minecraft.world.WorldSavedData;
  12. import net.minecraftforge.common.DimensionManager;
  13. import net.minecraftforge.common.util.Constants;
  14.  
  15. public class BikeWorldData extends WorldSavedData {
  16.    
  17.     private static final String IDENTIFIER = "bikemod";
  18.     List<WorldStructure> structs = new ArrayList<WorldStructure>();
  19.  
  20.     public BikeWorldData(String identifier) {
  21.         super(identifier);
  22.     }
  23.    
  24.     public BikeWorldData() {
  25.         super(IDENTIFIER);
  26.     }
  27.  
  28.     @Override
  29.     public void readFromNBT(NBTTagCompound nbt) {
  30.         NBTTagList list = nbt.getTagList("structures", Constants.NBT.TAG_COMPOUND);
  31.         Context context = Main.instance().context;
  32.         for (int i=0;i<list.tagCount();i++) {
  33.             NBTTagCompound compound = list.getCompoundTagAt(i);
  34.             WorldStructure struct = new WorldStructure(compound.getString("name"), compound.getInteger("x"), compound.getInteger("y"), compound.getInteger("z"), DimensionManager.getWorld(compound.getInteger("world")), context.getStructure(compound.getString("structure")), context.getTheme(compound.getString("theme")));
  35.             structs.add(struct);
  36.         }
  37.     }
  38.  
  39.     @Override
  40.     public void writeToNBT(NBTTagCompound nbt) {
  41.         NBTTagList list = new NBTTagList();
  42.         for (WorldStructure struct: structs) {
  43.             NBTTagCompound tag = new NBTTagCompound();
  44.             tag.setString("name", struct.getName());
  45.             tag.setInteger("x", struct.getX());
  46.             tag.setInteger("y", struct.getY());
  47.             tag.setInteger("z", struct.getZ());
  48.             tag.setString("structure", struct.getStructure().getName());
  49.             tag.setString("theme", struct.getTheme().getName());
  50.             tag.setInteger("world", struct.getWorld().provider.dimensionId);
  51.             list.appendTag(tag);
  52.         }
  53.         nbt.setTag("structures", list);
  54.     }
  55.    
  56.     public void updateStructures(List<WorldStructure> list) {
  57.         structs = new ArrayList<WorldStructure>(list);
  58.         markDirty();
  59.     }
  60.    
  61.     public List<WorldStructure> getStructures() {
  62.         return structs;
  63.     }
  64.    
  65.     public static BikeWorldData get(World world) {
  66.         BikeWorldData data = (BikeWorldData) world.mapStorage.loadData(BikeWorldData.class, IDENTIFIER);
  67.         if (data==null) {
  68.             data = new BikeWorldData();
  69.             world.mapStorage.setData(IDENTIFIER, data);
  70.         }
  71.         return data;
  72.     }
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement