package tconstruct; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; 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.NetworkCheckHandler; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.VillagerRegistry; import cpw.mods.fml.relauncher.Side; import java.util.Map; import java.util.Random; import mantle.pulsar.config.ForgeCFG; import mantle.pulsar.control.PulseManager; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraftforge.common.MinecraftForge; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import tconstruct.achievements.AchievementEvents; import tconstruct.achievements.TAchievements; import tconstruct.api.TConstructAPI; import tconstruct.armor.TinkerArmor; import tconstruct.armor.player.TPlayerHandler; import tconstruct.armor.player.TPlayerStats; import tconstruct.common.TProxyCommon; import tconstruct.gadgets.TinkerGadgets; import tconstruct.library.SlimeBounceHandler; import tconstruct.library.TConstructCreativeTab; import tconstruct.library.TConstructRegistry; import tconstruct.library.crafting.Detailing; import tconstruct.library.crafting.LiquidCasting; import tconstruct.mechworks.TinkerMechworks; import tconstruct.mechworks.landmine.behavior.Behavior; import tconstruct.mechworks.landmine.behavior.stackCombo.SpecialStackHandler; import tconstruct.plugins.TinkerThaumcraft; import tconstruct.plugins.fmp.TinkerFMP; import tconstruct.plugins.gears.TinkerGears; import tconstruct.plugins.ic2.TinkerIC2; import tconstruct.plugins.imc.TinkerAE2; import tconstruct.plugins.imc.TinkerBuildCraft; import tconstruct.plugins.imc.TinkerMystcraft; import tconstruct.plugins.imc.TinkerRfTools; import tconstruct.plugins.mfr.TinkerMFR; import tconstruct.plugins.te4.TinkerTE4; import tconstruct.plugins.te4.TinkersThermalFoundation; import tconstruct.plugins.ubc.TinkerUBC; import tconstruct.plugins.waila.TinkerWaila; import tconstruct.smeltery.TinkerSmeltery; import tconstruct.tools.TinkerTools; import tconstruct.util.IMCHandler; import tconstruct.util.config.DimensionBlacklist; import tconstruct.util.config.PHConstruct; import tconstruct.util.network.PacketPipeline; import tconstruct.weaponry.TinkerWeaponry; import tconstruct.world.TinkerWorld; import tconstruct.world.gen.SlimeIslandGen; import tconstruct.world.village.*; /** * TConstruct, the tool mod. Craft your tools with style, then modify until the * original is gone! * * @author mDiyo */ @Mod( modid = TConstruct.modID, name = "TConstruct", version = TConstruct.modVersion, dependencies = "required-after:Forge@[10.13.3.1384,11.14);" + "required-after:Mantle@[0.3.2,1.7.10),[1.7.10-0.3.2,);" + // make sure we still have the 0.3.2 requirement, even without the 1.7.10 prefix "after:MineFactoryReloaded@[1.7.10R2.8.0RC7,);" + "after:ThermalExpansion@[1.7.10R4.0.0RC2,);" + "after:ThermalFoundation@[1.7.10R1.0.0RC3,);" + "after:armourersWorkshop@[1.7.10-0.28.0,);" + "after:CoFHAPI|energy;" + "after:CoFHCore;" + "after:battlegear2;" + "after:ZeldaItemAPI;" + "after:DynamicSkillsAPI;" + "after:NotEnoughItems;" + "after:Waila;" + "before:GalacticraftCore;" + "before:UndergroundBiomes") public class TConstruct { public static final String modVersion = "GRADLETOKEN_VERSION"; /** The value of one ingot in millibuckets */ public static final int ingotLiquidValue = 144; public static final int oreLiquidValue = ingotLiquidValue * 2; public static final int blockLiquidValue = ingotLiquidValue * 9; public static final int chunkLiquidValue = ingotLiquidValue / 2; public static final int nuggetLiquidValue = ingotLiquidValue / 9; public static final int stoneLiquidValue = ingotLiquidValue / 8; public static final int liquidUpdateAmount = 6; public static final String modID = "TConstruct"; public static final Logger logger = LogManager.getLogger(modID); public static final PacketPipeline packetPipeline = new PacketPipeline(); public static Random random = new Random(); /* Instance of this mod, used for grabbing prototype fields */ @Instance(modID) public static TConstruct instance; /* Proxies for sides, used for graphics processing and client controls */ @SidedProxy(clientSide = "tconstruct.client.TProxyClient", serverSide = "tconstruct.common.TProxyCommon") public static TProxyCommon proxy; /* Loads modules in a way that doesn't clutter the @Mod list */ public static PulseManager pulsar = new PulseManager( modID, new ForgeCFG("TinkersModules", "Modules: Disabling these will disable a chunk of the mod")); public TConstruct() { if (Loader.isModLoaded("Natura")) { logger.info("Natura, what are we going to do tomorrow night?"); LogManager.getLogger("Natura").info("TConstruct, we're going to take over the world!"); } else { logger.info("Preparing to take over the world"); } } // Force the client and server to have or not have this mod @NetworkCheckHandler() public boolean matchModVersions(Map remoteVersions, Side side) { return remoteVersions.containsKey("TConstruct") && modVersion.equals(remoteVersions.get("TConstruct")); } @EventHandler public void preInit(FMLPreInitializationEvent event) { PHConstruct.initProps(event.getModConfigurationDirectory()); pulsar.registerPulse(new TinkerWorld()); pulsar.registerPulse(new TinkerTools()); pulsar.registerPulse(new TinkerSmeltery()); pulsar.registerPulse(new TinkerMechworks()); pulsar.registerPulse(new TinkerArmor()); pulsar.registerPulse(new TinkerWeaponry()); pulsar.registerPulse(new TinkerGadgets()); pulsar.registerPulse(new TinkerThaumcraft()); pulsar.registerPulse(new TinkerWaila()); pulsar.registerPulse(new TinkerBuildCraft()); pulsar.registerPulse(new TinkerAE2()); pulsar.registerPulse(new TinkerIC2()); pulsar.registerPulse(new TinkerMystcraft()); pulsar.registerPulse(new TinkerMFR()); pulsar.registerPulse(new TinkerTE4()); pulsar.registerPulse(new TinkersThermalFoundation()); pulsar.registerPulse(new TinkerFMP()); pulsar.registerPulse(new TinkerUBC()); pulsar.registerPulse(new TinkerGears()); pulsar.registerPulse(new TinkerRfTools()); /*pulsar.registerPulse(new TinkerPrayers()); pulsar.registerPulse(new TinkerCropify());*/ TConstructRegistry.materialTab = new TConstructCreativeTab("TConstructMaterials"); TConstructRegistry.toolTab = new TConstructCreativeTab("TConstructTools"); TConstructRegistry.partTab = new TConstructCreativeTab("TConstructParts"); TConstructRegistry.blockTab = new TConstructCreativeTab("TConstructBlocks"); TConstructRegistry.equipableTab = new TConstructCreativeTab("TConstructEquipables"); TConstructRegistry.weaponryTab = new TConstructCreativeTab("TConstructWeaponry"); TConstructRegistry.gadgetsTab = new TConstructCreativeTab("TConstructGadgets"); tableCasting = new LiquidCasting(); basinCasting = new LiquidCasting(); chiselDetailing = new Detailing(); // GameRegistry.registerFuelHandler(content); playerTracker = new TPlayerHandler(); // GameRegistry.registerPlayerTracker(playerTracker); FMLCommonHandler.instance().bus().register(playerTracker); MinecraftForge.EVENT_BUS.register(playerTracker); NetworkRegistry.INSTANCE.registerGuiHandler(TConstruct.instance, proxy); pulsar.preInit(event); if (PHConstruct.achievementsEnabled) { TAchievements.addDefaultAchievements(); } if (PHConstruct.addToVillages) { // adds to the villager spawner egg VillagerRegistry.instance().registerVillagerId(78943); // moved down, not needed if 'addToVillages' is false if (PHConstruct.allowVillagerTrading) VillagerRegistry.instance().registerVillageTradeHandler(78943, new TVillageTrades()); VillagerRegistry.instance().registerVillageCreationHandler(new VillageToolStationHandler()); MapGenStructureIO.func_143031_a(ComponentToolWorkshop.class, "TConstruct:ToolWorkshopStructure"); if (pulsar.isPulseLoaded("Tinkers' Smeltery")) { VillagerRegistry.instance().registerVillageCreationHandler(new VillageSmelteryHandler()); MapGenStructureIO.func_143031_a(ComponentSmeltery.class, "TConstruct:SmelteryStructure"); } } TConstructAPI.PROP_NAME = TPlayerStats.PROP_NAME; } @EventHandler public void init(FMLInitializationEvent event) { packetPipeline.initalise(); //if (event.getSide() == Side.CLIENT) { // MinecraftForge.EVENT_BUS.register(new EventCloakRender()); //} DimensionBlacklist.getBadBimensions(); GameRegistry.registerWorldGenerator(new SlimeIslandGen(TinkerWorld.slimePool, 2), 2); pulsar.init(event); } @EventHandler public void postInit(FMLPostInitializationEvent event) { packetPipeline.postInitialise(); Behavior.registerBuiltInBehaviors(); SpecialStackHandler.registerBuiltInStackHandlers(); proxy.initialize(); pulsar.postInit(event); if (PHConstruct.achievementsEnabled) { TAchievements.registerAchievementPane(); MinecraftForge.EVENT_BUS.register(new AchievementEvents()); } } /** Called on server shutdown to prevent memory leaks */ @EventHandler public void serverStopping(FMLServerStoppingEvent event) { TinkerGadgets.log.info("Cleaning up SlimeBounceHandler data."); SlimeBounceHandler.BOUNCING_ENTITIES.clear(); } /* IMC Mod Support */ @EventHandler public void handleIMC(FMLInterModComms.IMCEvent e) { IMCHandler.processIMC(e.getMessages()); } @EventHandler public void loadComplete(FMLLoadCompleteEvent evt) { IMCHandler.processIMC(FMLInterModComms.fetchRuntimeMessages(this)); } public static LiquidCasting getTableCasting() { return tableCasting; } public static LiquidCasting getBasinCasting() { return basinCasting; } public static Detailing getChiselDetailing() { return chiselDetailing; } public static TPlayerHandler playerTracker; public static LiquidCasting tableCasting; public static LiquidCasting basinCasting; public static Detailing chiselDetailing; @Mod.EventHandler public void missingMapping(FMLMissingMappingsEvent event) { // this will be called because the air-block got removed for (FMLMissingMappingsEvent.MissingMapping mapping : event.get()) { if (mapping.name.equals("TConstruct:TankAir")) mapping.ignore(); } } }