150 lines
5.9 KiB
Java
150 lines
5.9 KiB
Java
package net.minecraftforge.common;
|
|
|
|
import java.io.File;
|
|
import java.util.Arrays;
|
|
import java.util.Map;
|
|
|
|
import net.minecraft.nbt.NBTBase;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.server.management.PlayerInstance;
|
|
import net.minecraft.world.storage.SaveHandler;
|
|
import net.minecraft.world.storage.WorldInfo;
|
|
|
|
import com.google.common.eventbus.EventBus;
|
|
import com.google.common.eventbus.Subscribe;
|
|
|
|
import cpw.mods.fml.common.DummyModContainer;
|
|
import cpw.mods.fml.common.FMLLog;
|
|
import cpw.mods.fml.common.LoadController;
|
|
import cpw.mods.fml.common.Loader;
|
|
import cpw.mods.fml.common.ModMetadata;
|
|
import cpw.mods.fml.common.WorldAccessContainer;
|
|
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
|
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
|
|
|
import static net.minecraftforge.common.ForgeVersion.*;
|
|
|
|
public class ForgeDummyContainer extends DummyModContainer implements WorldAccessContainer
|
|
{
|
|
public static int clumpingThreshold = 64;
|
|
public static boolean legacyFurnaceSides = false;
|
|
public static boolean removeErroringEntities = false;
|
|
public static boolean removeErroringTileEntities = false;
|
|
|
|
public ForgeDummyContainer()
|
|
{
|
|
super(new ModMetadata());
|
|
ModMetadata meta = getMetadata();
|
|
meta.modId = "Forge";
|
|
meta.name = "Minecraft Forge";
|
|
meta.version = String.format("%d.%d.%d.%d", majorVersion, minorVersion, revisionVersion, buildVersion);
|
|
meta.credits = "Made possible with help from many people";
|
|
meta.authorList = Arrays.asList("LexManos", "Eloraam", "Spacetoad");
|
|
meta.description = "Minecraft Forge is a common open source API allowing a broad range of mods " +
|
|
"to work cooperatively together. It allows many mods to be created without " +
|
|
"them editing the main Minecraft code.";
|
|
meta.url = "http://MinecraftForge.net";
|
|
meta.updateUrl = "http://MinecraftForge.net/forum/index.php/topic,5.0.html";
|
|
meta.screenshots = new String[0];
|
|
meta.logoFile = "/forge_logo.png";
|
|
|
|
Configuration config = null;
|
|
File cfgFile = new File(Loader.instance().getConfigDir(), "forge.cfg");
|
|
try
|
|
{
|
|
config = new Configuration(cfgFile);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
System.out.println("Error loading forge.cfg, deleting file and resetting: ");
|
|
e.printStackTrace();
|
|
|
|
if (cfgFile.exists())
|
|
cfgFile.delete();
|
|
|
|
config = new Configuration(cfgFile);
|
|
}
|
|
if (!config.isChild)
|
|
{
|
|
config.load();
|
|
Property enableGlobalCfg = config.get(Configuration.CATEGORY_GENERAL, "enableGlobalConfig", false);
|
|
if (enableGlobalCfg.getBoolean(false))
|
|
{
|
|
Configuration.enableGlobalConfig();
|
|
}
|
|
}
|
|
Property prop;
|
|
prop = config.get(Configuration.CATEGORY_GENERAL, "clumpingThreshold", 64);
|
|
prop.comment = "Controls the number threshold at which Packet51 is preferred over Packet52, default and minimum 64, maximum 1024";
|
|
clumpingThreshold = prop.getInt(64);
|
|
if (clumpingThreshold > 1024 || clumpingThreshold < 64)
|
|
{
|
|
clumpingThreshold = 64;
|
|
prop.set(64);
|
|
}
|
|
|
|
prop = config.get(Configuration.CATEGORY_GENERAL, "legacyFurnceOutput", false);
|
|
prop.comment = "Controls the sides of vanilla furnaces for Forge's ISidedInventroy, Vanilla defines the output as the bottom, but mods/Forge define it as the sides. Settings this to true will restore the old side relations.";
|
|
legacyFurnaceSides = prop.getBoolean(false);
|
|
|
|
prop = config.get(Configuration.CATEGORY_GENERAL, "removeErroringEntities", false);
|
|
prop.comment = "Set this to just remove any TileEntity that throws a error in there update method instead of closing the server and reporting a crash log. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.";
|
|
removeErroringEntities = prop.getBoolean(false);
|
|
|
|
if (removeErroringEntities)
|
|
{
|
|
FMLLog.warning("Enableing removal of erroring Entities USE AT YOUR OWN RISK");
|
|
}
|
|
|
|
prop = config.get(Configuration.CATEGORY_GENERAL, "removeErroringTileEntities", false);
|
|
prop.comment = "Set this to just remove any TileEntity that throws a error in there update method instead of closing the server and reporting a crash log. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.";
|
|
removeErroringTileEntities = prop.getBoolean(false);
|
|
|
|
if (removeErroringTileEntities)
|
|
{
|
|
FMLLog.warning("Enableing removal of erroring Tile Entities USE AT YOUR OWN RISK");
|
|
}
|
|
|
|
if (config.hasChanged())
|
|
{
|
|
config.save();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean registerBus(EventBus bus, LoadController controller)
|
|
{
|
|
bus.register(this);
|
|
return true;
|
|
}
|
|
|
|
@Subscribe
|
|
public void preInit(FMLPreInitializationEvent evt)
|
|
{
|
|
ForgeChunkManager.captureConfig(evt.getModConfigurationDirectory());
|
|
}
|
|
|
|
@Subscribe
|
|
public void postInit(FMLPostInitializationEvent evt)
|
|
{
|
|
ForgeChunkManager.loadConfiguration();
|
|
}
|
|
|
|
@Override
|
|
public NBTTagCompound getDataForWriting(SaveHandler handler, WorldInfo info)
|
|
{
|
|
NBTTagCompound forgeData = new NBTTagCompound();
|
|
NBTTagCompound dimData = DimensionManager.saveDimensionDataMap();
|
|
forgeData.setCompoundTag("DimensionData", dimData);
|
|
return forgeData;
|
|
}
|
|
|
|
@Override
|
|
public void readData(SaveHandler handler, WorldInfo info, Map<String, NBTBase> propertyMap, NBTTagCompound tag)
|
|
{
|
|
if (tag.hasKey("DimensionData"))
|
|
{
|
|
DimensionManager.loadDimensionDataMap(tag.hasKey("DimensionData") ? tag.getCompoundTag("DimensionData") : null);
|
|
}
|
|
}
|
|
}
|