001    package net.minecraftforge.common;
002    
003    import java.util.Arrays;
004    import java.util.Map;
005    
006    import net.minecraft.src.NBTBase;
007    import net.minecraft.src.NBTTagCompound;
008    import net.minecraft.src.SaveHandler;
009    import net.minecraft.src.WorldInfo;
010    
011    import com.google.common.eventbus.EventBus;
012    import com.google.common.eventbus.Subscribe;
013    
014    import cpw.mods.fml.common.DummyModContainer;
015    import cpw.mods.fml.common.LoadController;
016    import cpw.mods.fml.common.Loader;
017    import cpw.mods.fml.common.ModMetadata;
018    import cpw.mods.fml.common.WorldAccessContainer;
019    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
020    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
021    
022    import static net.minecraftforge.common.ForgeVersion.*;
023    
024    public class ForgeDummyContainer extends DummyModContainer implements WorldAccessContainer
025    {
026        public ForgeDummyContainer()
027        {
028            super(new ModMetadata());
029            ModMetadata meta = getMetadata();
030            meta.modId       = "Forge";
031            meta.name        = "Minecraft Forge";
032            meta.version     = String.format("%d.%d.%d.%d", majorVersion, minorVersion, revisionVersion, buildVersion);
033            meta.credits     = "Made possible with help from many people";
034            meta.authorList  = Arrays.asList("LexManos", "Eloraam", "Spacetoad");
035            meta.description = "Minecraft Forge is a common open source API allowing a broad range of mods " +
036                               "to work cooperatively together. It allows many mods to be created without " +
037                               "them editing the main Minecraft code.";
038            meta.url         = "http://MinecraftForge.net";
039            meta.updateUrl   = "http://MinecraftForge.net/forum/index.php/topic,5.0.html";
040            meta.screenshots = new String[0];
041            meta.logoFile    = "/forge_logo.png";
042        }
043    
044        @Override
045        public boolean registerBus(EventBus bus, LoadController controller)
046        {
047            bus.register(this);
048            return true;
049        }
050    
051        @Subscribe
052        public void preInit(FMLPreInitializationEvent evt)
053        {
054            ForgeChunkManager.captureConfig(evt.getModConfigurationDirectory());
055        }
056        @Subscribe
057        public void postInit(FMLPostInitializationEvent evt)
058        {
059            ForgeChunkManager.loadConfiguration();
060        }
061    
062        @Override
063        public NBTTagCompound getDataForWriting(SaveHandler handler, WorldInfo info)
064        {
065            NBTTagCompound forgeData = new NBTTagCompound();
066            NBTTagCompound dimData = DimensionManager.saveDimensionDataMap();
067            forgeData.setCompoundTag("DimensionData", dimData);
068            return forgeData;
069        }
070    
071        @Override
072        public void readData(SaveHandler handler, WorldInfo info, Map<String, NBTBase> propertyMap, NBTTagCompound tag)
073        {
074            if (tag.hasKey("DimensionData"))
075            {
076                DimensionManager.loadDimensionDataMap(tag.hasKey("DimensionData") ? tag.getCompoundTag("DimensionData") : null);
077            }
078        }
079    }