// Path: src/speiger/src/api/common/core/SpmodMod.java
// public interface SpmodMod
// {	
// 	
// 	/**
// 	 * @return Logging name
// 	 */
// 	public String getModName();
// 	
// 	/**
// 	 * @return custom Logger
// 	 * @Default can be found in the registry
// 	 */
// 	public LogProxy getLogger();
// 	
// }
// 
// Path: src/speiger/src/api/common/core/SpmodModRegistry.java
// public class SpmodModRegistry
// {
// 	private static HashMap<String, SpmodMod> addons = new HashMap<String, SpmodMod>();
// 	private static LogProxy defaultProxy;
// 	
// 	static
// 	{
// 		SpmodMod baseMod = new SpmodMod(){
// 			@Override
// 			public LogProxy getLogger()
// 			{
// 				return defaultProxy;
// 			}
// 			@Override
// 			public String getModName()
// 			{
// 				return "Spmod Mod";
// 			}
// 		};
// 		addons.put("Spmod Mod", baseMod);
// 		defaultProxy = new LogProxy(baseMod);
// 	}
// 	
// 	public static void registerMod(SpmodMod par1)
// 	{
// 		if (par1.getClass().isAnnotationPresent(Mod.class) && !Strings.isNullOrEmpty(par1.getModName()))
// 		{
// 			addons.put(par1.getModName(), par1);
// 		}
// 		else
// 		{
// 			FMLLog.getLogger().info(par1.getModName() + " Is not a valid SpmodMod, He will not registered");
// 		}
// 	}
// 	
// 	public static boolean isAddonRegistered(SpmodMod par1)
// 	{
// 		if(par1 == null)
// 		{
// 			return false;
// 		}
// 		return isAddonRegistered(par1.getModName());
// 	}
// 	
// 	public static boolean isAddonRegistered(String par1)
// 	{
// 		return addons.containsKey(par1);
// 	}
// 	
// 	public static boolean areAddonsEqual(SpmodMod par1, SpmodMod par2)
// 	{
// 		if(!isAddonRegistered(par1) || !isAddonRegistered(par2))
// 		{
// 			return false;
// 		}
// 		return par1.getModName().equals(par2.getModName());
// 	}
// 	
// 	public static SpmodMod getModFromName(String par1)
// 	{
// 		return addons.get(par1);
// 	}
// 	
// 	public static Collection<SpmodMod> getRegisteredMods()
// 	{
// 		return addons.values();
// 	}
// 	
// 	public static LogProxy getDefaultLogger(SpmodMod par1)
// 	{
// 		if(!isAddonRegistered(par1))
// 		{
// 			return null;
// 		}
// 		return defaultProxy;
// 	}
// 	
// 	public static void log(SpmodMod mod, String par2)
// 	{
// 		mod.getLogger().print(par2);
// 	}
// 	
// 	public static void log(SpmodMod mod, Object par2)
// 	{
// 		mod.getLogger().print(par2);
// 	}
// }
// 
// Path: src/speiger/src/api/common/data/nbt/INBTListener.java
// public static enum LoadingState
// {
// 	Loading,
// 	Loaded,
// 	FailedLoading,
// 	Saving,
// 	RequestedSaving,
// 	Saved,
// 	FailedSaving,
// 	Done;
// }


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.server.MinecraftServer;
import speiger.src.api.common.core.SpmodMod;
import speiger.src.api.common.core.SpmodModRegistry;
import speiger.src.api.common.data.nbt.INBTListener.LoadingState;
import cpw.mods.fml.common.FMLLog;

package speiger.src.api.common.data.nbt;



public class NBTStorage
{
	private static Map<SpmodMod, List<INBTListener>> listeners = new HashMap<SpmodMod, List<INBTListener>>();
	private static List<SpmodMod> requestedUpdates = new LinkedList<SpmodMod>();
	
	public static void registerNBTListener(INBTListener par1)
	{

// Path: src/speiger/src/api/common/core/SpmodMod.java
// public interface SpmodMod
// {	
// 	
// 	/**
// 	 * @return Logging name
// 	 */
// 	public String getModName();
// 	
// 	/**
// 	 * @return custom Logger
// 	 * @Default can be found in the registry
// 	 */
// 	public LogProxy getLogger();
// 	
// }
// 
// Path: src/speiger/src/api/common/core/SpmodModRegistry.java
// public class SpmodModRegistry
// {
// 	private static HashMap<String, SpmodMod> addons = new HashMap<String, SpmodMod>();
// 	private static LogProxy defaultProxy;
// 	
// 	static
// 	{
// 		SpmodMod baseMod = new SpmodMod(){
// 			@Override
// 			public LogProxy getLogger()
// 			{
// 				return defaultProxy;
// 			}
// 			@Override
// 			public String getModName()
// 			{
// 				return "Spmod Mod";
// 			}
// 		};
// 		addons.put("Spmod Mod", baseMod);
// 		defaultProxy = new LogProxy(baseMod);
// 	}
// 	
// 	public static void registerMod(SpmodMod par1)
// 	{
// 		if (par1.getClass().isAnnotationPresent(Mod.class) && !Strings.isNullOrEmpty(par1.getModName()))
// 		{
// 			addons.put(par1.getModName(), par1);
// 		}
// 		else
// 		{
// 			FMLLog.getLogger().info(par1.getModName() + " Is not a valid SpmodMod, He will not registered");
// 		}
// 	}
// 	
// 	public static boolean isAddonRegistered(SpmodMod par1)
// 	{
// 		if(par1 == null)
// 		{
// 			return false;
// 		}
// 		return isAddonRegistered(par1.getModName());
// 	}
// 	
// 	public static boolean isAddonRegistered(String par1)
// 	{
// 		return addons.containsKey(par1);
// 	}
// 	
// 	public static boolean areAddonsEqual(SpmodMod par1, SpmodMod par2)
// 	{
// 		if(!isAddonRegistered(par1) || !isAddonRegistered(par2))
// 		{
// 			return false;
// 		}
// 		return par1.getModName().equals(par2.getModName());
// 	}
// 	
// 	public static SpmodMod getModFromName(String par1)
// 	{
// 		return addons.get(par1);
// 	}
// 	
// 	public static Collection<SpmodMod> getRegisteredMods()
// 	{
// 		return addons.values();
// 	}
// 	
// 	public static LogProxy getDefaultLogger(SpmodMod par1)
// 	{
// 		if(!isAddonRegistered(par1))
// 		{
// 			return null;
// 		}
// 		return defaultProxy;
// 	}
// 	
// 	public static void log(SpmodMod mod, String par2)
// 	{
// 		mod.getLogger().print(par2);
// 	}
// 	
// 	public static void log(SpmodMod mod, Object par2)
// 	{
// 		mod.getLogger().print(par2);
// 	}
// }
// 
// Path: src/speiger/src/api/common/data/nbt/INBTListener.java
// public static enum LoadingState
// {
// 	Loading,
// 	Loaded,
// 	FailedLoading,
// 	Saving,
// 	RequestedSaving,
// 	Saved,
// 	FailedSaving,
// 	Done;
// }


// Path: src/speiger/src/api/common/data/nbt/NBTStorage.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.server.MinecraftServer;
import speiger.src.api.common.core.SpmodMod;
import speiger.src.api.common.core.SpmodModRegistry;
import speiger.src.api.common.data.nbt.INBTListener.LoadingState;
import cpw.mods.fml.common.FMLLog;

package speiger.src.api.common.data.nbt;



public class NBTStorage
{
	private static Map<SpmodMod, List<INBTListener>> listeners = new HashMap<SpmodMod, List<INBTListener>>();
	private static List<SpmodMod> requestedUpdates = new LinkedList<SpmodMod>();
	
	public static void registerNBTListener(INBTListener par1)
	{

		if(SpmodModRegistry.isAddonRegistered(par1.getOwner()))
