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 }