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