2012-05-09 22:43:05 +02:00
/ * *
2017-11-10 19:30:16 +01:00
* Copyright ( c ) 2011 - 2017 , SpaceToad and the BuildCraft Team
2014-02-01 17:19:07 +01:00
* http : //www.mod-buildcraft.com
2015-09-20 11:20:30 +02:00
* < p / >
2014-02-01 17:19:07 +01:00
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1 . 0 , or MMPL . Please check the contents of the license located in
* http : //www.mod-buildcraft.com/MMPL-1.0.txt
2012-05-09 22:43:05 +02:00
* /
2012-07-25 12:45:15 +02:00
package buildcraft ;
2012-05-09 22:43:05 +02:00
2014-04-25 06:40:40 +02:00
import java.util.Set ;
2015-05-07 19:49:53 +02:00
2014-08-02 17:32:04 +02:00
import org.apache.logging.log4j.Level ;
2015-05-07 19:49:53 +02:00
2014-02-16 12:14:30 +01:00
import net.minecraft.block.Block ;
2014-07-19 21:27:50 +02:00
import net.minecraft.block.material.MapColor ;
2014-02-16 12:14:30 +01:00
import net.minecraft.block.material.Material ;
import net.minecraft.init.Blocks ;
import net.minecraft.init.Items ;
import net.minecraft.item.Item ;
import net.minecraft.item.ItemStack ;
2015-03-03 21:47:33 +01:00
import net.minecraft.stats.Achievement ;
2014-02-16 12:14:30 +01:00
import net.minecraft.world.biome.BiomeGenBase ;
2015-05-29 01:19:55 +02:00
2015-04-02 14:46:57 +02:00
import cpw.mods.fml.client.event.ConfigChangedEvent ;
import cpw.mods.fml.common.FMLCommonHandler ;
2014-05-03 18:59:52 +02:00
import cpw.mods.fml.common.Mod ;
import cpw.mods.fml.common.event.FMLInitializationEvent ;
import cpw.mods.fml.common.event.FMLInterModComms ;
2015-03-06 16:45:05 +01:00
import cpw.mods.fml.common.event.FMLMissingMappingsEvent ;
2014-05-03 18:59:52 +02:00
import cpw.mods.fml.common.event.FMLPostInitializationEvent ;
import cpw.mods.fml.common.event.FMLPreInitializationEvent ;
import cpw.mods.fml.common.eventhandler.SubscribeEvent ;
import cpw.mods.fml.common.network.NetworkRegistry ;
2015-03-06 16:45:05 +01:00
import cpw.mods.fml.common.registry.GameRegistry ;
2014-05-03 18:59:52 +02:00
import cpw.mods.fml.relauncher.Side ;
import cpw.mods.fml.relauncher.SideOnly ;
2014-02-16 12:14:30 +01:00
import net.minecraftforge.client.event.TextureStitchEvent ;
2014-04-25 22:46:05 +02:00
import net.minecraftforge.common.BiomeDictionary ;
2014-02-16 12:14:30 +01:00
import net.minecraftforge.common.MinecraftForge ;
2014-05-05 12:55:40 +02:00
import net.minecraftforge.common.config.Property ;
2014-02-16 12:14:30 +01:00
import net.minecraftforge.fluids.Fluid ;
import net.minecraftforge.fluids.FluidContainerRegistry ;
import net.minecraftforge.fluids.FluidRegistry ;
import net.minecraftforge.fluids.FluidStack ;
2015-05-07 19:49:53 +02:00
2014-04-28 20:58:20 +02:00
import buildcraft.api.core.BCLog ;
2014-05-05 12:55:40 +02:00
import buildcraft.api.core.JavaTools ;
2014-08-29 11:57:10 +02:00
import buildcraft.api.core.StackKey ;
import buildcraft.api.fuels.BuildcraftFuelRegistry ;
2014-06-02 16:29:13 +02:00
import buildcraft.api.recipes.BuildcraftRecipeRegistry ;
2014-10-28 16:36:06 +01:00
import buildcraft.api.statements.ITriggerExternal ;
import buildcraft.api.statements.StatementManager ;
2015-09-29 09:54:12 +02:00
import buildcraft.core.BCRegistry ;
2013-05-01 22:31:18 +02:00
import buildcraft.core.BlockSpring ;
2012-07-25 12:45:15 +02:00
import buildcraft.core.DefaultProps ;
2013-09-12 15:27:11 +02:00
import buildcraft.core.InterModComms ;
2012-09-08 21:46:17 +02:00
import buildcraft.core.Version ;
2015-04-02 14:46:57 +02:00
import buildcraft.core.config.ConfigManager ;
2015-05-29 01:19:55 +02:00
import buildcraft.core.config.ConfigManager.RestartRequirement ;
2015-04-03 13:16:22 +02:00
import buildcraft.core.lib.block.BlockBuildCraftFluid ;
2015-03-31 23:21:00 +02:00
import buildcraft.core.lib.engines.TileEngineBase ;
import buildcraft.core.lib.engines.TileEngineBase.EnergyStage ;
2015-03-06 16:45:05 +01:00
import buildcraft.core.lib.network.ChannelHandler ;
2015-03-31 23:21:00 +02:00
import buildcraft.core.lib.network.PacketHandler ;
2014-03-29 11:34:41 +01:00
import buildcraft.energy.BucketHandler ;
2015-03-04 22:44:44 +01:00
import buildcraft.energy.EnergyGuiHandler ;
2015-03-31 23:21:00 +02:00
import buildcraft.energy.EnergyProxy ;
2015-03-04 15:49:21 +01:00
import buildcraft.energy.IMCHandlerEnergy ;
2013-07-13 01:38:03 +02:00
import buildcraft.energy.ItemBucketBuildcraft ;
2015-03-06 16:45:05 +01:00
import buildcraft.energy.TileEngineCreative ;
import buildcraft.energy.TileEngineIron ;
import buildcraft.energy.TileEngineStone ;
2015-03-31 23:21:00 +02:00
import buildcraft.energy.fuels.CoolantManager ;
import buildcraft.energy.fuels.FuelManager ;
2014-10-28 06:56:49 +01:00
import buildcraft.energy.statements.EnergyStatementProvider ;
2015-10-27 22:12:36 +01:00
import buildcraft.energy.statements.TriggerCoolantBelowThreshold ;
2014-10-26 13:20:08 +01:00
import buildcraft.energy.statements.TriggerEngineHeat ;
2015-10-27 22:12:36 +01:00
import buildcraft.energy.statements.TriggerFuelBelowThreshold ;
2013-07-08 04:57:05 +02:00
import buildcraft.energy.worldgen.BiomeGenOilDesert ;
2013-05-18 16:37:08 +02:00
import buildcraft.energy.worldgen.BiomeGenOilOcean ;
2013-05-17 19:49:41 +02:00
import buildcraft.energy.worldgen.BiomeInitializer ;
2013-07-08 04:57:05 +02:00
import buildcraft.energy.worldgen.OilPopulate ;
2014-02-01 17:19:07 +01:00
2012-12-17 23:30:54 +01:00
@Mod ( name = " BuildCraft Energy " , version = Version . VERSION , useMetadata = false , modid = " BuildCraft|Energy " , dependencies = DefaultProps . DEPENDENCY_CORE )
2014-01-13 20:26:16 +01:00
public class BuildCraftEnergy extends BuildCraftMod {
2012-05-09 22:43:05 +02:00
2014-07-28 23:51:50 +02:00
@Mod.Instance ( " BuildCraft|Energy " )
public static BuildCraftEnergy instance ;
2013-05-05 15:41:29 +02:00
public static boolean spawnOilSprings = true ;
2013-05-18 16:37:08 +02:00
public static BiomeGenOilDesert biomeOilDesert ;
public static BiomeGenOilOcean biomeOilOcean ;
2013-07-12 23:21:44 +02:00
public static Fluid fluidOil ;
public static Fluid fluidFuel ;
2014-02-01 17:19:07 +01:00
public static Fluid fluidRedPlasma ;
2013-07-12 23:21:44 +02:00
public static Block blockOil ;
2013-07-13 01:38:03 +02:00
public static Block blockFuel ;
2014-02-01 17:19:07 +01:00
public static Block blockRedPlasma ;
2012-05-09 22:43:05 +02:00
public static Item bucketOil ;
public static Item bucketFuel ;
2014-02-01 17:19:07 +01:00
public static Item bucketRedPlasma ;
2012-05-09 22:43:05 +02:00
public static Item fuel ;
2014-07-27 23:05:35 +02:00
2015-03-03 21:47:33 +01:00
public static Achievement engineAchievement2 ;
public static Achievement engineAchievement3 ;
2013-06-13 22:50:51 +02:00
public static boolean canOilBurn ;
2015-01-11 13:43:01 +01:00
public static boolean isOilDense ;
2013-12-02 06:57:31 +01:00
public static double oilWellScalar = 1 . 0 ;
2015-10-27 22:12:36 +01:00
2014-10-28 16:36:06 +01:00
public static ITriggerExternal triggerBlueEngineHeat = new TriggerEngineHeat ( EnergyStage . BLUE ) ;
public static ITriggerExternal triggerGreenEngineHeat = new TriggerEngineHeat ( EnergyStage . GREEN ) ;
public static ITriggerExternal triggerYellowEngineHeat = new TriggerEngineHeat ( EnergyStage . YELLOW ) ;
public static ITriggerExternal triggerRedEngineHeat = new TriggerEngineHeat ( EnergyStage . RED ) ;
2014-11-23 14:48:31 +01:00
public static ITriggerExternal triggerEngineOverheat = new TriggerEngineHeat ( EnergyStage . OVERHEAT ) ;
2014-07-28 23:51:50 +02:00
2015-10-27 22:12:36 +01:00
public static ITriggerExternal triggerFuelBelow25 = new TriggerFuelBelowThreshold ( 0 . 25F ) ;
public static ITriggerExternal triggerFuelBelow50 = new TriggerFuelBelowThreshold ( 0 . 50F ) ;
public static ITriggerExternal triggerCoolantBelow25 = new TriggerCoolantBelowThreshold ( 0 . 25F ) ;
public static ITriggerExternal triggerCoolantBelow50 = new TriggerCoolantBelowThreshold ( 0 . 50F ) ;
2014-05-03 18:59:52 +02:00
private static Fluid buildcraftFluidOil ;
private static Fluid buildcraftFluidFuel ;
private static Fluid buildcraftFluidRedPlasma ;
2014-04-14 18:27:59 +02:00
@Mod.EventHandler
2014-02-16 12:14:30 +01:00
public void preInit ( FMLPreInitializationEvent evt ) {
2015-03-31 23:21:00 +02:00
BuildcraftFuelRegistry . fuel = FuelManager . INSTANCE ;
BuildcraftFuelRegistry . coolant = CoolantManager . INSTANCE ;
2015-05-29 01:19:55 +02:00
int oilDesertBiomeId = BuildCraftCore . mainConfigManager . register ( " worldgen.biomes " ,
" biomeOilDesert " , DefaultProps . BIOME_OIL_DESERT , " The id for the Oil Desert biome " ,
RestartRequirement . GAME ) . getInt ( ) ;
int oilOceanBiomeId = BuildCraftCore . mainConfigManager . register ( " worldgen.biomes " ,
" biomeOilOcean " , DefaultProps . BIOME_OIL_OCEAN , " The id for the Oil Ocean biome " ,
RestartRequirement . GAME ) . getInt ( ) ;
2015-04-02 14:46:57 +02:00
BuildCraftCore . mainConfigManager . register ( " worldgen.spawnOilSprings " , true , " Should I spawn oil springs? " , ConfigManager . RestartRequirement . GAME ) ;
BuildCraftCore . mainConfigManager . register ( " worldgen.oilWellGenerationRate " , 1 . 0D , " How high should be the probability of an oil well generating? " , ConfigManager . RestartRequirement . NONE ) ;
2014-05-03 18:59:52 +02:00
2014-05-05 12:55:40 +02:00
setBiomeList (
2014-11-07 19:06:06 +01:00
OilPopulate . INSTANCE . surfaceDepositBiomes ,
2015-05-29 01:19:55 +02:00
BuildCraftCore . mainConfigManager
. register ( " worldgen.biomes " , " increasedOilIDs " ,
2015-09-20 11:20:30 +02:00
new String [ ] { BiomeDictionary . Type . SANDY . toString ( ) , BiomeGenBase . taiga . biomeName } ,
2015-05-29 01:19:55 +02:00
" IDs or Biome Types (e.g. SANDY,OCEAN) of biomes that should have increased oil generation rates. " , RestartRequirement . GAME ) ) ;
2014-05-03 18:59:52 +02:00
2014-05-05 12:55:40 +02:00
setBiomeList (
2014-11-07 19:06:06 +01:00
OilPopulate . INSTANCE . excessiveBiomes ,
2015-05-29 01:19:55 +02:00
BuildCraftCore . mainConfigManager
. register ( " worldgen.biomes " , " excessiveOilIDs " ,
2015-09-20 11:20:30 +02:00
new String [ ] { } ,
2015-05-29 01:19:55 +02:00
" IDs or Biome Types (e.g. SANDY,OCEAN) of biomes that should have GREATLY increased oil generation rates. " , RestartRequirement . GAME ) ) ;
2014-05-03 18:59:52 +02:00
2014-11-07 19:06:06 +01:00
setBiomeList ( OilPopulate . INSTANCE . excludedBiomes ,
2015-05-29 01:19:55 +02:00
BuildCraftCore . mainConfigManager
. register ( " worldgen.biomes " , " excludeOilIDs " ,
new String [ ] { BiomeGenBase . sky . biomeName , BiomeGenBase . hell . biomeName } ,
" IDs or Biome Types (e.g. SANDY,OCEAN) of biomes that are excluded from generating oil. " , RestartRequirement . GAME ) ) ;
double fuelOilMultiplier = BuildCraftCore . mainConfigManager . register ( " general " , " fuel.oil.combustion " , 1 . 0F , " adjust energy value of Oil in Combustion Engines " , RestartRequirement . GAME ) . getDouble ( ) ;
double fuelFuelMultiplier = BuildCraftCore . mainConfigManager . register ( " general " , " fuel.fuel.combustion " , 1 . 0F , " adjust energy value of Fuel in Combustion Engines " , RestartRequirement . GAME ) . getDouble ( ) ;
int fuelOilEnergyOutput = BuildCraftCore . mainConfigManager . register ( " general " , " fuel.oil.combustion.energyOutput " , 30 , " adjust output energy by Oil in Combustion Engines " , RestartRequirement . GAME ) . getInt ( ) ;
int fuelFuelEnergyOutput = BuildCraftCore . mainConfigManager . register ( " general " , " fuel.fuel.combustion.energyOutput " , 60 , " adjust output energy by Fuel in Combustion Engines " , RestartRequirement . GAME ) . getInt ( ) ;
2015-02-02 22:16:17 +01:00
2013-05-17 19:49:41 +02:00
BuildCraftCore . mainConfiguration . save ( ) ;
2012-05-09 22:43:05 +02:00
2015-10-01 08:49:48 +02:00
BiomeGenBase [ ] biomeGenArray = BiomeGenBase . getBiomeGenArray ( ) ;
2013-07-13 01:38:03 +02:00
if ( oilDesertBiomeId > 0 ) {
2015-10-03 09:37:13 +02:00
if ( oilDesertBiomeId > = biomeGenArray . length | | biomeGenArray [ oilDesertBiomeId ] ! = null ) {
2014-04-02 21:42:10 +02:00
oilDesertBiomeId = findUnusedBiomeID ( " oilDesert " ) ;
// save changes to config file
2015-04-02 14:46:57 +02:00
BuildCraftCore . mainConfiguration . get ( " worldgen.biomes " , " biomeOilDesert " , oilDesertBiomeId ) . set ( oilDesertBiomeId ) ;
2014-04-02 21:42:10 +02:00
BuildCraftCore . mainConfiguration . save ( ) ;
2013-05-17 19:49:41 +02:00
}
2013-07-13 01:38:03 +02:00
biomeOilDesert = BiomeGenOilDesert . makeBiome ( oilDesertBiomeId ) ;
2013-05-17 19:49:41 +02:00
}
2013-06-11 23:53:03 +02:00
2013-07-13 01:38:03 +02:00
if ( oilOceanBiomeId > 0 ) {
2015-10-03 09:37:13 +02:00
if ( oilOceanBiomeId > = biomeGenArray . length | | biomeGenArray [ oilOceanBiomeId ] ! = null ) {
2014-04-02 21:42:10 +02:00
oilOceanBiomeId = findUnusedBiomeID ( " oilOcean " ) ;
// save changes to config file
2015-04-02 14:46:57 +02:00
BuildCraftCore . mainConfiguration . get ( " worldgen.biomes " , " biomeOilOcean " , oilOceanBiomeId ) . set ( oilOceanBiomeId ) ;
2014-04-02 21:42:10 +02:00
BuildCraftCore . mainConfiguration . save ( ) ;
2013-05-18 16:37:08 +02:00
}
2013-07-13 01:38:03 +02:00
biomeOilOcean = BiomeGenOilOcean . makeBiome ( oilOceanBiomeId ) ;
2013-05-18 16:37:08 +02:00
}
2013-05-05 15:41:29 +02:00
2012-08-17 18:48:06 +02:00
// Oil and fuel
2015-01-11 15:12:30 +01:00
if ( ! FluidRegistry . isFluidRegistered ( " oil " ) ) {
2015-02-02 22:16:17 +01:00
buildcraftFluidOil = new Fluid ( " oil " ) . setDensity ( 800 ) . setViscosity ( 10000 ) ;
2015-01-11 15:12:30 +01:00
FluidRegistry . registerFluid ( buildcraftFluidOil ) ;
} else {
BCLog . logger . warn ( " Not using BuildCraft oil - issues might occur! " ) ;
}
2013-07-12 23:21:44 +02:00
fluidOil = FluidRegistry . getFluid ( " oil " ) ;
2013-07-13 01:38:03 +02:00
2015-01-11 15:12:30 +01:00
if ( ! FluidRegistry . isFluidRegistered ( " fuel " ) ) {
buildcraftFluidFuel = new Fluid ( " fuel " ) ;
FluidRegistry . registerFluid ( buildcraftFluidFuel ) ;
} else {
BCLog . logger . warn ( " Not using BuildCraft fuel - issues might occur! " ) ;
}
2013-07-12 23:21:44 +02:00
fluidFuel = FluidRegistry . getFluid ( " fuel " ) ;
2015-01-11 15:12:30 +01:00
if ( ! FluidRegistry . isFluidRegistered ( " redplasma " ) ) {
buildcraftFluidRedPlasma = new Fluid ( " redplasma " ) . setDensity ( 10000 ) . setViscosity ( 10000 ) . setLuminosity ( 30 ) ;
FluidRegistry . registerFluid ( buildcraftFluidRedPlasma ) ;
} else {
BCLog . logger . warn ( " Not using BuildCraft red plasma - issues might occur! " ) ;
}
2014-02-01 17:19:07 +01:00
fluidRedPlasma = FluidRegistry . getFluid ( " redplasma " ) ;
2014-02-08 14:47:31 +01:00
if ( fluidOil . getBlock ( ) = = null ) {
2015-04-02 14:46:57 +02:00
blockOil = new BlockBuildCraftFluid ( fluidOil , Material . water , MapColor . blackColor ) . setFlammability ( 0 ) ;
2014-06-01 09:48:31 +02:00
blockOil . setBlockName ( " blockOil " ) . setLightOpacity ( 8 ) ;
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . registerBlock ( blockOil , true ) ;
2014-02-16 12:14:30 +01:00
fluidOil . setBlock ( blockOil ) ;
2015-04-02 14:46:57 +02:00
BuildCraftCore . mainConfigManager . register ( " general.oilCanBurn " , true , " Should oil burn when lit on fire? " , ConfigManager . RestartRequirement . NONE ) ;
BuildCraftCore . mainConfigManager . register ( " general.oilIsDense " , true , " Should oil be dense and drag entities down? " , ConfigManager . RestartRequirement . NONE ) ;
2013-07-13 01:38:03 +02:00
} else {
2014-02-08 14:47:31 +01:00
blockOil = fluidOil . getBlock ( ) ;
2013-07-13 01:38:03 +02:00
}
2015-04-02 14:46:57 +02:00
reloadConfig ( ConfigManager . RestartRequirement . GAME ) ;
2013-07-13 01:38:03 +02:00
if ( blockOil ! = null ) {
2015-04-02 14:46:57 +02:00
spawnOilSprings = BuildCraftCore . mainConfigManager . get ( " worldgen.spawnOilSprings " ) . getBoolean ( true ) ;
2013-07-12 23:21:44 +02:00
BlockSpring . EnumSpring . OIL . canGen = spawnOilSprings ;
BlockSpring . EnumSpring . OIL . liquidBlock = blockOil ;
2013-05-02 13:19:33 +02:00
}
2012-05-09 22:43:05 +02:00
2014-02-08 14:47:31 +01:00
if ( fluidFuel . getBlock ( ) = = null ) {
2015-03-09 13:59:13 +01:00
blockFuel = new BlockBuildCraftFluid ( fluidFuel , Material . water , MapColor . yellowColor ) . setFlammable ( true ) . setFlammability ( 5 ) . setParticleColor ( 0 . 7F , 0 . 7F , 0 . 0F ) ;
2014-06-01 09:48:31 +02:00
blockFuel . setBlockName ( " blockFuel " ) . setLightOpacity ( 3 ) ;
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . registerBlock ( blockFuel , true ) ;
2014-02-16 12:14:30 +01:00
fluidFuel . setBlock ( blockFuel ) ;
2013-07-13 01:38:03 +02:00
} else {
2014-02-08 14:47:31 +01:00
blockFuel = fluidFuel . getBlock ( ) ;
2013-07-13 01:38:03 +02:00
}
2012-05-09 22:43:05 +02:00
2014-02-16 12:14:30 +01:00
if ( fluidRedPlasma . getBlock ( ) = = null ) {
2015-03-09 13:59:13 +01:00
blockRedPlasma = new BlockBuildCraftFluid ( fluidRedPlasma , Material . water , MapColor . redColor ) . setFlammable (
2015-02-26 16:55:46 +01:00
false ) . setParticleColor ( 0 . 9F , 0 , 0 ) ;
blockRedPlasma . setBlockName ( " blockRedPlasma " ) ;
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . registerBlock ( blockRedPlasma , true ) ;
2014-02-16 12:10:01 +01:00
fluidRedPlasma . setBlock ( blockRedPlasma ) ;
2014-02-01 17:19:07 +01:00
} else {
2014-02-16 12:10:01 +01:00
blockRedPlasma = fluidRedPlasma . getBlock ( ) ;
2014-02-01 17:19:07 +01:00
}
2013-07-13 01:38:03 +02:00
// Buckets
2012-05-09 22:43:05 +02:00
2014-02-08 14:47:31 +01:00
if ( blockOil ! = null ) {
2014-05-03 04:20:27 +02:00
bucketOil = new ItemBucketBuildcraft ( blockOil ) ;
2014-02-08 14:47:31 +01:00
bucketOil . setUnlocalizedName ( " bucketOil " ) . setContainerItem ( Items . bucket ) ;
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . registerItem ( bucketOil , true ) ;
2014-02-08 14:47:31 +01:00
FluidContainerRegistry . registerFluidContainer ( FluidRegistry . getFluidStack ( " oil " , FluidContainerRegistry . BUCKET_VOLUME ) , new ItemStack ( bucketOil ) , new ItemStack ( Items . bucket ) ) ;
2013-07-13 01:38:03 +02:00
}
2012-05-09 22:43:05 +02:00
2014-02-08 14:47:31 +01:00
if ( blockFuel ! = null ) {
2014-05-03 04:20:27 +02:00
bucketFuel = new ItemBucketBuildcraft ( blockFuel ) ;
2014-02-08 14:47:31 +01:00
bucketFuel . setUnlocalizedName ( " bucketFuel " ) . setContainerItem ( Items . bucket ) ;
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . registerItem ( bucketFuel , true ) ;
2014-02-08 14:47:31 +01:00
FluidContainerRegistry . registerFluidContainer ( FluidRegistry . getFluidStack ( " fuel " , FluidContainerRegistry . BUCKET_VOLUME ) , new ItemStack ( bucketFuel ) , new ItemStack ( Items . bucket ) ) ;
2013-07-13 01:38:03 +02:00
}
2013-08-16 05:23:43 +02:00
2015-09-19 12:59:05 +02:00
if ( BuildCraftCore . DEVELOPER_MODE ) {
2014-03-05 20:51:37 +01:00
if ( blockRedPlasma ! = null ) {
2014-05-03 04:20:27 +02:00
bucketRedPlasma = new ItemBucketBuildcraft ( blockRedPlasma ) ;
2014-03-05 20:51:37 +01:00
bucketRedPlasma . setUnlocalizedName ( " bucketRedPlasma " ) . setContainerItem ( Items . bucket ) ;
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . registerItem ( bucketRedPlasma , true ) ;
2014-03-05 20:51:37 +01:00
FluidContainerRegistry . registerFluidContainer ( FluidRegistry . getFluidStack ( " redplasma " , FluidContainerRegistry . BUCKET_VOLUME ) , new ItemStack ( bucketRedPlasma ) , new ItemStack ( Items . bucket ) ) ;
}
2014-02-01 17:19:07 +01:00
}
2014-02-25 10:48:39 +01:00
// BucketHandler ensures empty buckets fill with the correct liquid.
2015-01-28 14:00:42 +01:00
if ( blockOil ! = null ) {
BucketHandler . INSTANCE . buckets . put ( blockOil , bucketOil ) ;
}
if ( blockFuel ! = null ) {
BucketHandler . INSTANCE . buckets . put ( blockFuel , bucketFuel ) ;
}
2014-02-25 10:48:39 +01:00
MinecraftForge . EVENT_BUS . register ( BucketHandler . INSTANCE ) ;
2012-12-17 23:30:54 +01:00
2014-06-06 09:00:11 +02:00
BuildcraftRecipeRegistry . refinery . addRecipe ( " buildcraft:fuel " , new FluidStack ( fluidOil , 1 ) , new FluidStack (
2014-09-03 19:22:15 +02:00
fluidFuel , 1 ) , 120 , 1 ) ;
2012-05-09 22:43:05 +02:00
2014-12-22 11:27:32 +01:00
BuildcraftFuelRegistry . fuel . addFuel ( fluidOil , fuelOilEnergyOutput , ( int ) ( 5000 * fuelOilMultiplier ) ) ;
BuildcraftFuelRegistry . fuel . addFuel ( fluidFuel , fuelFuelEnergyOutput , ( int ) ( 25000 * fuelFuelMultiplier ) ) ;
2012-05-09 22:43:05 +02:00
2014-08-29 11:57:10 +02:00
BuildcraftFuelRegistry . coolant . addCoolant ( FluidRegistry . WATER , 0 . 0023f ) ;
2015-08-09 13:14:45 +02:00
BuildcraftFuelRegistry . coolant . addSolidCoolant ( StackKey . stack ( Blocks . ice ) , StackKey . fluid ( FluidRegistry . WATER ) , 1 . 5f ) ;
BuildcraftFuelRegistry . coolant . addSolidCoolant ( StackKey . stack ( Blocks . packed_ice ) , StackKey . fluid ( FluidRegistry . WATER ) , 2 . 0f ) ;
2012-08-24 19:25:54 +02:00
2015-09-29 09:54:12 +02:00
BuildCraftCore . engineBlock . registerTile ( TileEngineStone . class , 1 , " tile.engineStone " , " buildcraftenergy:engineStone " ) ;
BuildCraftCore . engineBlock . registerTile ( TileEngineIron . class , 2 , " tile.engineIron " , " buildcraftenergy:engineIron " ) ;
BuildCraftCore . engineBlock . registerTile ( TileEngineCreative . class , 3 , " tile.engineCreative " , " buildcraftenergy:engineCreative " ) ;
2015-03-06 16:45:05 +01:00
2015-03-04 15:49:21 +01:00
InterModComms . registerHandler ( new IMCHandlerEnergy ( ) ) ;
2015-04-02 14:46:57 +02:00
FMLCommonHandler . instance ( ) . bus ( ) . register ( this ) ;
2013-03-28 10:00:05 +01:00
MinecraftForge . EVENT_BUS . register ( this ) ;
}
2015-04-02 14:46:57 +02:00
public void reloadConfig ( ConfigManager . RestartRequirement restartType ) {
if ( restartType = = ConfigManager . RestartRequirement . GAME ) {
reloadConfig ( ConfigManager . RestartRequirement . WORLD ) ;
} else if ( restartType = = ConfigManager . RestartRequirement . WORLD ) {
reloadConfig ( ConfigManager . RestartRequirement . NONE ) ;
} else {
oilWellScalar = BuildCraftCore . mainConfigManager . get ( " worldgen.oilWellGenerationRate " ) . getDouble ( ) ;
if ( blockOil instanceof BlockBuildCraftFluid ) {
canOilBurn = BuildCraftCore . mainConfigManager . get ( " general.oilCanBurn " ) . getBoolean ( ) ;
isOilDense = BuildCraftCore . mainConfigManager . get ( " general.oilIsDense " ) . getBoolean ( ) ;
( ( BlockBuildCraftFluid ) blockOil ) . setFlammable ( canOilBurn ) . setDense ( isOilDense ) ;
}
if ( BuildCraftCore . mainConfiguration . hasChanged ( ) ) {
BuildCraftCore . mainConfiguration . save ( ) ;
}
}
}
@SubscribeEvent
public void onConfigChanged ( ConfigChangedEvent . PostConfigChangedEvent event ) {
if ( " BuildCraft|Core " . equals ( event . modID ) ) {
reloadConfig ( event . isWorldRunning ? ConfigManager . RestartRequirement . NONE : ConfigManager . RestartRequirement . WORLD ) ;
}
}
2014-05-05 12:55:40 +02:00
private void setBiomeList ( Set < Integer > list , Property configuration ) {
for ( String id : configuration . getStringList ( ) ) {
String strippedId = JavaTools . stripSurroundingQuotes ( id . trim ( ) ) ;
if ( strippedId . length ( ) > 0 ) {
if ( strippedId . matches ( " -? \\ d+( \\ . \\ d+)? " ) ) {
try {
list . add ( Integer . parseInt ( strippedId ) ) ;
} catch ( NumberFormatException ex ) {
BCLog . logger . log
2014-08-02 17:32:04 +02:00
( Level . WARN ,
2014-05-05 12:55:40 +02:00
configuration . getName ( ) + " : Could not find biome id: "
2015-09-20 11:20:30 +02:00
+ strippedId + " ; Skipping! " ) ;
2014-05-05 12:55:40 +02:00
}
} else {
boolean found = false ;
String biomeName = strippedId . toUpperCase ( ) ;
for ( BiomeDictionary . Type t : BiomeDictionary . Type . values ( ) ) {
String biomeType = t . name ( ) . toUpperCase ( ) ;
for ( BiomeGenBase b : BiomeDictionary . getBiomesForType ( t ) ) {
if ( b . biomeName . toUpperCase ( ) . equals ( biomeName )
| | biomeType . toUpperCase ( ) . equals ( biomeName ) ) {
list . add ( b . biomeID ) ;
found = true ;
}
}
}
if ( ! found ) {
BCLog . logger . log
2014-08-02 17:32:04 +02:00
( Level . WARN ,
2015-09-20 11:20:30 +02:00
configuration . getName ( ) + " : Could not find biome id: "
+ strippedId + " ; Skipping! " ) ;
2014-05-05 12:55:40 +02:00
}
}
}
}
}
2014-04-14 18:27:59 +02:00
@Mod.EventHandler
2013-06-11 23:53:03 +02:00
public void init ( FMLInitializationEvent evt ) {
2014-02-09 21:29:23 +01:00
channels = NetworkRegistry . INSTANCE . newChannel
2015-03-31 23:21:00 +02:00
( DefaultProps . NET_CHANNEL_NAME + " -ENERGY " , new ChannelHandler ( ) , new PacketHandler ( ) ) ;
2014-02-16 12:14:30 +01:00
2015-03-04 22:44:44 +01:00
NetworkRegistry . INSTANCE . registerGuiHandler ( instance , new EnergyGuiHandler ( ) ) ;
2013-06-11 23:53:03 +02:00
2014-10-28 06:56:49 +01:00
StatementManager . registerTriggerProvider ( new EnergyStatementProvider ( ) ) ;
2015-02-02 22:16:17 +01:00
2013-06-11 23:53:03 +02:00
if ( BuildCraftCore . loadDefaultRecipes ) {
loadRecipes ( ) ;
}
2014-07-25 08:40:47 +02:00
2013-06-11 23:53:03 +02:00
EnergyProxy . proxy . registerBlockRenderers ( ) ;
EnergyProxy . proxy . registerTileEntities ( ) ;
2015-03-03 21:47:33 +01:00
2015-03-06 16:45:05 +01:00
engineAchievement2 = BuildCraftCore . achievementManager . registerAchievement ( new Achievement ( " achievement.stirlingEngine " , " engineAchievement2 " , 3 , - 2 , new ItemStack ( BuildCraftCore . engineBlock , 1 , 1 ) , BuildCraftCore . engineRedstoneAchievement ) ) ;
engineAchievement3 = BuildCraftCore . achievementManager . registerAchievement ( new Achievement ( " achievement.combustionEngine " , " engineAchievement3 " , 5 , - 2 , new ItemStack ( BuildCraftCore . engineBlock , 1 , 2 ) , engineAchievement2 ) ) ;
2013-06-11 23:53:03 +02:00
}
2014-04-14 18:27:59 +02:00
@Mod.EventHandler
2013-06-11 23:53:03 +02:00
public void postInit ( FMLPostInitializationEvent evt ) {
if ( BuildCraftCore . modifyWorld ) {
MinecraftForge . EVENT_BUS . register ( OilPopulate . INSTANCE ) ;
MinecraftForge . TERRAIN_GEN_BUS . register ( new BiomeInitializer ( ) ) ;
}
}
2014-02-08 16:04:03 +01:00
@SubscribeEvent
2013-03-28 10:00:05 +01:00
@SideOnly ( Side . CLIENT )
public void textureHook ( TextureStitchEvent . Post event ) {
2014-02-08 16:04:03 +01:00
if ( event . map . getTextureType ( ) = = 0 ) {
2015-01-28 14:00:42 +01:00
if ( buildcraftFluidOil ! = null ) {
buildcraftFluidOil . setIcons ( blockOil . getBlockTextureFromSide ( 1 ) , blockOil . getBlockTextureFromSide ( 2 ) ) ;
}
if ( buildcraftFluidFuel ! = null ) {
buildcraftFluidFuel . setIcons ( blockFuel . getBlockTextureFromSide ( 1 ) , blockFuel . getBlockTextureFromSide ( 2 ) ) ;
}
if ( buildcraftFluidRedPlasma ! = null ) {
buildcraftFluidRedPlasma . setIcons ( blockRedPlasma . getBlockTextureFromSide ( 1 ) , blockRedPlasma . getBlockTextureFromSide ( 2 ) ) ;
}
2013-03-28 10:00:05 +01:00
}
2012-05-09 22:43:05 +02:00
}
2014-07-27 23:05:35 +02:00
public static void loadRecipes ( ) {
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . addCraftingRecipe ( new ItemStack ( BuildCraftCore . engineBlock , 1 , 1 ) ,
2014-10-24 10:31:26 +02:00
" www " , " g " , " GpG " , 'w' , " cobblestone " ,
2014-11-11 23:14:16 +01:00
'g' , " blockGlass " , 'G' , " gearStone " , 'p' , Blocks . piston ) ;
2015-09-29 09:54:12 +02:00
BCRegistry . INSTANCE . addCraftingRecipe ( new ItemStack ( BuildCraftCore . engineBlock , 1 , 2 ) ,
2014-11-11 23:14:16 +01:00
" www " , " g " , " GpG " , 'w' , " ingotIron " ,
'g' , " blockGlass " , 'G' , " gearIron " , 'p' , Blocks . piston ) ;
2012-05-09 22:43:05 +02:00
}
2014-05-04 11:09:03 +02:00
private int findUnusedBiomeID ( String biomeName ) {
2015-06-28 22:28:47 +02:00
int freeBiomeID ;
2014-04-02 21:42:10 +02:00
// code to find a free biome
2014-04-03 08:44:33 +02:00
for ( int i = 1 ; i < 256 ; i + + ) {
2014-04-02 21:42:10 +02:00
if ( BiomeGenBase . getBiomeGenArray ( ) [ i ] = = null ) {
freeBiomeID = i ;
return freeBiomeID ;
}
}
// failed to find any free biome IDs
class BiomeIdLimitException extends RuntimeException {
2014-06-15 21:05:06 +02:00
private static final long serialVersionUID = 1L ;
2014-04-02 21:42:10 +02:00
public BiomeIdLimitException ( String biome ) {
2015-10-01 08:49:48 +02:00
super ( String . format ( " You have run out of free Biome ID spaces for %s - free more Biome IDs or disable the biome by setting the ID to 0! " , biome ) ) ;
2014-04-02 21:42:10 +02:00
}
}
2014-04-03 08:44:33 +02:00
2014-04-03 04:12:26 +02:00
throw new BiomeIdLimitException ( biomeName ) ;
2014-04-02 21:42:10 +02:00
}
2014-04-14 18:27:59 +02:00
@Mod.EventHandler
2013-05-02 13:19:33 +02:00
public void processIMCRequests ( FMLInterModComms . IMCEvent event ) {
2013-10-07 18:14:51 +02:00
InterModComms . processIMC ( event ) ;
}
2014-05-08 21:57:05 +02:00
@Mod.EventHandler
public void whiteListAppliedEnergetics ( FMLInitializationEvent event ) {
FMLInterModComms . sendMessage ( " appliedenergistics2 " , " whitelist-spatial " ,
2015-03-06 16:45:05 +01:00
TileEngineBase . class . getCanonicalName ( ) ) ;
}
@Mod.EventHandler
public void remap ( FMLMissingMappingsEvent event ) {
for ( FMLMissingMappingsEvent . MissingMapping mapping : event . get ( ) ) {
if ( mapping . name . equals ( " BuildCraft|Energy:engineBlock " ) ) {
if ( mapping . type = = GameRegistry . Type . BLOCK ) {
mapping . remap ( BuildCraftCore . engineBlock ) ;
} else if ( mapping . type = = GameRegistry . Type . ITEM ) {
mapping . remap ( Item . getItemFromBlock ( BuildCraftCore . engineBlock ) ) ;
}
}
}
2014-05-08 21:57:05 +02:00
}
2012-05-09 22:43:05 +02:00
}