equivalent-exchange-3/src/main/java/com/pahimar/ee3/EquivalentExchange3.java
Pahimar f41b0279a6 Added some more NPE protection to the ID based ItemStack comparator
Added back in the small and medium sized Alchemical Chest aludel recipes
Added a recipe to make a chalk block from 4 pieces of chalk
Created an EE test suite to test EE specific energy values
Re-registered several EE items
Removed a duplicate Gson type adapter registration
Changed the ItemStackSerializer to return JsonNull in the event that there is no registered name for the item (the item would never deserialize as it wouldn't have a name to lookup)
Changed the EnergyValueMapSerializer to allow serializing of null energy values (as JsonNull). Used for energy value testing.
2016-05-26 12:02:37 -04:00

185 lines
5.5 KiB
Java

package com.pahimar.ee3;
import com.pahimar.ee3.array.AlchemyArrayRegistry;
import com.pahimar.ee3.blacklist.BlacklistRegistry;
import com.pahimar.ee3.command.CommandEE;
import com.pahimar.ee3.exchange.EnergyValueRegistry;
import com.pahimar.ee3.handler.*;
import com.pahimar.ee3.init.*;
import com.pahimar.ee3.knowledge.PlayerKnowledgeRegistry;
import com.pahimar.ee3.network.PacketHandler;
import com.pahimar.ee3.proxy.IProxy;
import com.pahimar.ee3.recipe.AludelRecipeManager;
import com.pahimar.ee3.recipe.RecipeRegistry;
import com.pahimar.ee3.reference.Files;
import com.pahimar.ee3.reference.Messages;
import com.pahimar.ee3.reference.Reference;
import com.pahimar.ee3.test.EETestSuite;
import com.pahimar.ee3.test.EnergyValueTestSuite;
import com.pahimar.ee3.test.VanillaTestSuite;
import com.pahimar.ee3.util.FluidHelper;
import com.pahimar.ee3.util.LogHelper;
import com.pahimar.ee3.util.SerializationHelper;
import com.pahimar.ee3.util.TileEntityDataHelper;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import java.io.File;
@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, certificateFingerprint = Reference.FINGERPRINT, version = Reference.MOD_VERSION, dependencies = Reference.DEPENDENCIES, guiFactory = Reference.GUI_FACTORY_CLASS)
public class EquivalentExchange3
{
@Instance(Reference.MOD_ID)
public static EquivalentExchange3 instance;
@SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS)
public static IProxy proxy;
@EventHandler
public void invalidFingerprint(FMLFingerprintViolationEvent event) {
if (Reference.FINGERPRINT.equals("@FINGERPRINT@")) {
LogHelper.info(Messages.NO_FINGERPRINT_MESSAGE);
}
else {
LogHelper.warn(Messages.INVALID_FINGERPRINT_MESSAGE);
}
}
@EventHandler
public void onServerStarting(FMLServerStartingEvent event) {
Files.updateFileReferences();
SerializationHelper.initModDataDirectories();
event.registerServerCommand(new CommandEE());
}
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
ConfigurationHandler.init(event.getSuggestedConfigurationFile());
Files.init(event);
PacketHandler.init();
proxy.registerKeybindings();
ModItems.init();
ModBlocks.init();
FluidHelper.registerFluids();
EnergyValues.init();
AlchemyArrays.registerAlchemyArrays();
}
@EventHandler
public void init(FMLInitializationEvent event) {
// Register the GUI Handler
NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
// Initialize mod tile entities
TileEntities.init();
// Initialize custom rendering and pre-load textures (Client only)
proxy.initRenderingAndTextures();
// Register the Items Event Handler
proxy.registerEventHandlers();
CraftingHandler.init();
Recipes.init();
// Register our fuels
GameRegistry.registerFuelHandler(new FuelHandler());
// Register the Waila data provider
FMLInterModComms.sendMessage("Waila", "register", "com.pahimar.ee3.waila.WailaDataProvider.callbackRegister");
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
// Initialize the blacklist registry
BlacklistRegistry.INSTANCE.load();
Abilities.init();
// Initialize our test files
new VanillaTestSuite().build().save();
new EETestSuite().build().save();
}
@EventHandler
public void onServerStopping(FMLServerStoppingEvent event) {
WorldEventHandler.hasInitilialized = false;
EnergyValueRegistry.INSTANCE.save();
PlayerKnowledgeRegistry.INSTANCE.saveAll();
BlacklistRegistry.INSTANCE.saveAll();
}
@EventHandler
public void handleMissingMappingEvent(FMLMissingMappingsEvent event) {
for (FMLMissingMappingsEvent.MissingMapping mapping : event.get()) {
if (mapping.type == GameRegistry.Type.ITEM) {
if (mapping.name.equals("EE3:alchemicalTome")) {
mapping.remap(ModItems.alchenomicon);
}
}
}
}
public EnergyValueRegistry getEnergyValueRegistry()
{
return EnergyValueRegistry.INSTANCE;
}
public RecipeRegistry getRecipeRegistry()
{
return RecipeRegistry.INSTANCE;
}
public AludelRecipeManager getAludelRecipeManager()
{
return AludelRecipeManager.getInstance();
}
public BlacklistRegistry getBlacklistRegistry() {
return BlacklistRegistry.INSTANCE;
}
public AlchemyArrayRegistry getAlchemyArrayRegistry()
{
return AlchemyArrayRegistry.getInstance();
}
public PlayerKnowledgeRegistry getPlayerKnowledgeRegistry() {
return PlayerKnowledgeRegistry.INSTANCE;
}
public TileEntityDataHelper getTileEntityDataHelper()
{
return TileEntityDataHelper.getInstance();
}
public void runEnergyValueTestSuite(File file)
{
runEnergyValueTestSuite(file, false);
}
public void runEnergyValueTestSuite(File file, boolean strict) {
new EnergyValueTestSuite(file).run(strict);
}
}