buildcraft/common/buildcraft/BuildCraftEnergy.java

478 lines
20 KiB
Java
Raw Normal View History

2012-05-09 22:43:05 +02: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
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
import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor;
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;
import net.minecraft.world.biome.BiomeGenBase;
2015-04-02 14:46:57 +02:00
import cpw.mods.fml.client.event.ConfigChangedEvent;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent;
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;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Property;
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
import buildcraft.api.core.BCLog;
import buildcraft.api.core.JavaTools;
import buildcraft.api.core.StackKey;
import buildcraft.api.fuels.BuildcraftFuelRegistry;
import buildcraft.api.recipes.BuildcraftRecipeRegistry;
import buildcraft.api.statements.ITriggerExternal;
import buildcraft.api.statements.StatementManager;
import buildcraft.core.BCRegistry;
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;
import buildcraft.core.config.ConfigManager.RestartRequirement;
import buildcraft.core.lib.block.BlockBuildCraftFluid;
import buildcraft.core.lib.engines.TileEngineBase;
import buildcraft.core.lib.engines.TileEngineBase.EnergyStage;
import buildcraft.core.lib.network.ChannelHandler;
import buildcraft.core.lib.network.PacketHandler;
2014-03-29 11:34:41 +01:00
import buildcraft.energy.BucketHandler;
import buildcraft.energy.EnergyGuiHandler;
import buildcraft.energy.EnergyProxy;
2015-03-04 15:49:21 +01:00
import buildcraft.energy.IMCHandlerEnergy;
import buildcraft.energy.ItemBucketBuildcraft;
import buildcraft.energy.TileEngineCreative;
import buildcraft.energy.TileEngineIron;
import buildcraft.energy.TileEngineStone;
import buildcraft.energy.fuels.CoolantManager;
import buildcraft.energy.fuels.FuelManager;
import buildcraft.energy.statements.EnergyStatementProvider;
import buildcraft.energy.statements.TriggerCoolantBelowThreshold;
2014-10-26 13:20:08 +01:00
import buildcraft.energy.statements.TriggerEngineHeat;
import buildcraft.energy.statements.TriggerFuelBelowThreshold;
2013-07-08 04:57:05 +02:00
import buildcraft.energy.worldgen.BiomeGenOilDesert;
import buildcraft.energy.worldgen.BiomeGenOilOcean;
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)
public class BuildCraftEnergy extends BuildCraftMod {
2012-05-09 22:43:05 +02:00
@Mod.Instance("BuildCraft|Energy")
public static BuildCraftEnergy instance;
public static boolean spawnOilSprings = true;
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;
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;
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;
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);
public static ITriggerExternal triggerEngineOverheat = new TriggerEngineHeat(EnergyStage.OVERHEAT);
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);
private static Fluid buildcraftFluidOil;
private static Fluid buildcraftFluidFuel;
private static Fluid buildcraftFluidRedPlasma;
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent evt) {
BuildcraftFuelRegistry.fuel = FuelManager.INSTANCE;
BuildcraftFuelRegistry.coolant = CoolantManager.INSTANCE;
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);
setBiomeList(
2014-11-07 19:06:06 +01:00
OilPopulate.INSTANCE.surfaceDepositBiomes,
BuildCraftCore.mainConfigManager
.register("worldgen.biomes", "increasedOilIDs",
2015-09-20 11:20:30 +02:00
new String[]{BiomeDictionary.Type.SANDY.toString(), BiomeGenBase.taiga.biomeName},
"IDs or Biome Types (e.g. SANDY,OCEAN) of biomes that should have increased oil generation rates.", RestartRequirement.GAME));
setBiomeList(
2014-11-07 19:06:06 +01:00
OilPopulate.INSTANCE.excessiveBiomes,
BuildCraftCore.mainConfigManager
.register("worldgen.biomes", "excessiveOilIDs",
2015-09-20 11:20:30 +02:00
new String[]{},
"IDs or Biome Types (e.g. SANDY,OCEAN) of biomes that should have GREATLY increased oil generation rates.", RestartRequirement.GAME));
2014-11-07 19:06:06 +01:00
setBiomeList(OilPopulate.INSTANCE.excludedBiomes,
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();
BuildCraftCore.mainConfiguration.save();
2012-05-09 22:43:05 +02:00
2015-10-01 08:49:48 +02:00
BiomeGenBase[] biomeGenArray = BiomeGenBase.getBiomeGenArray();
if (oilDesertBiomeId > 0) {
2015-10-03 09:37:13 +02:00
if (oilDesertBiomeId >= biomeGenArray.length || biomeGenArray[oilDesertBiomeId] != null) {
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);
BuildCraftCore.mainConfiguration.save();
}
biomeOilDesert = BiomeGenOilDesert.makeBiome(oilDesertBiomeId);
}
if (oilOceanBiomeId > 0) {
2015-10-03 09:37:13 +02:00
if (oilOceanBiomeId >= biomeGenArray.length || biomeGenArray[oilOceanBiomeId] != null) {
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);
BuildCraftCore.mainConfiguration.save();
}
biomeOilOcean = BiomeGenOilOcean.makeBiome(oilOceanBiomeId);
}
// Oil and fuel
if (!FluidRegistry.isFluidRegistered("oil")) {
buildcraftFluidOil = new Fluid("oil").setDensity(800).setViscosity(10000);
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");
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");
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);
BCRegistry.INSTANCE.registerBlock(blockOil, true);
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);
} else {
2014-02-08 14:47:31 +01:00
blockOil = fluidOil.getBlock();
}
2015-04-02 14:46:57 +02:00
reloadConfig(ConfigManager.RestartRequirement.GAME);
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;
}
2012-05-09 22:43:05 +02:00
2014-02-08 14:47:31 +01:00
if (fluidFuel.getBlock() == null) {
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);
BCRegistry.INSTANCE.registerBlock(blockFuel, true);
fluidFuel.setBlock(blockFuel);
} else {
2014-02-08 14:47:31 +01:00
blockFuel = fluidFuel.getBlock();
}
2012-05-09 22:43:05 +02:00
if (fluidRedPlasma.getBlock() == null) {
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");
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
}
// Buckets
2012-05-09 22:43:05 +02:00
2014-02-08 14:47:31 +01:00
if (blockOil != null) {
bucketOil = new ItemBucketBuildcraft(blockOil);
2014-02-08 14:47:31 +01:00
bucketOil.setUnlocalizedName("bucketOil").setContainerItem(Items.bucket);
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));
}
2012-05-09 22:43:05 +02:00
2014-02-08 14:47:31 +01:00
if (blockFuel != null) {
bucketFuel = new ItemBucketBuildcraft(blockFuel);
2014-02-08 14:47:31 +01:00
bucketFuel.setUnlocalizedName("bucketFuel").setContainerItem(Items.bucket);
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-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) {
bucketRedPlasma = new ItemBucketBuildcraft(blockRedPlasma);
2014-03-05 20:51:37 +01:00
bucketRedPlasma.setUnlocalizedName("bucketRedPlasma").setContainerItem(Items.bucket);
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
}
// 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);
}
MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE);
2012-12-17 23:30:54 +01: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
BuildcraftFuelRegistry.fuel.addFuel(fluidOil, fuelOilEnergyOutput, (int) (5000 * fuelOilMultiplier));
BuildcraftFuelRegistry.fuel.addFuel(fluidFuel, fuelFuelEnergyOutput, (int) (25000 * fuelFuelMultiplier));
2012-05-09 22:43:05 +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);
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-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);
}
}
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,
configuration.getName() + ": Could not find biome id: "
2015-09-20 11:20:30 +02:00
+ strippedId + " ; Skipping!");
}
} 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!");
}
}
}
}
}
@Mod.EventHandler
public void init(FMLInitializationEvent evt) {
2014-02-09 21:29:23 +01:00
channels = NetworkRegistry.INSTANCE.newChannel
(DefaultProps.NET_CHANNEL_NAME + "-ENERGY", new ChannelHandler(), new PacketHandler());
NetworkRegistry.INSTANCE.registerGuiHandler(instance, new EnergyGuiHandler());
StatementManager.registerTriggerProvider(new EnergyStatementProvider());
if (BuildCraftCore.loadDefaultRecipes) {
loadRecipes();
}
2014-07-25 08:40:47 +02:00
EnergyProxy.proxy.registerBlockRenderers();
EnergyProxy.proxy.registerTileEntities();
2015-03-03 21:47:33 +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));
}
@Mod.EventHandler
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
}
public static void loadRecipes() {
BCRegistry.INSTANCE.addCraftingRecipe(new ItemStack(BuildCraftCore.engineBlock, 1, 1),
"www", " g ", "GpG", 'w', "cobblestone",
2014-11-11 23:14:16 +01:00
'g', "blockGlass", 'G', "gearStone", 'p', Blocks.piston);
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
}
private int findUnusedBiomeID(String biomeName) {
2015-06-28 22:28:47 +02:00
int freeBiomeID;
// code to find a free biome
2014-04-03 08:44:33 +02:00
for (int i = 1; i < 256; i++) {
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;
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-03 08:44:33 +02:00
2014-04-03 04:12:26 +02:00
throw new BiomeIdLimitException(biomeName);
}
@Mod.EventHandler
public void processIMCRequests(FMLInterModComms.IMCEvent event) {
2013-10-07 18:14:51 +02:00
InterModComms.processIMC(event);
}
@Mod.EventHandler
public void whiteListAppliedEnergetics(FMLInitializationEvent event) {
FMLInterModComms.sendMessage("appliedenergistics2", "whitelist-spatial",
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));
}
}
}
}
2012-05-09 22:43:05 +02:00
}