diff --git a/README.md b/README.md index f9f5283a..b1c86a27 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ this repository will have to be rejected. add the following to your build.gradle file ``` dependencies { - compile 'com.mod-buildcraft:buildcraft:5.0.0.+' + compile 'com.mod-buildcraft:buildcraft:5.0.0.+:dev' } ``` where `5.0.0` is the desired version of BuildCraft diff --git a/common/buildcraft/BuildCraftEnergy.java b/common/buildcraft/BuildCraftEnergy.java index 628df3f1..b5eab9b2 100644 --- a/common/buildcraft/BuildCraftEnergy.java +++ b/common/buildcraft/BuildCraftEnergy.java @@ -8,10 +8,25 @@ */ package buildcraft; +import java.util.TreeMap; + +import net.minecraft.block.Block; +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; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; import buildcraft.api.fuels.IronEngineCoolant; import buildcraft.api.fuels.IronEngineFuel; import buildcraft.api.recipes.BuildcraftRecipes; -import buildcraft.core.recipes.RefineryRecipeManager; import buildcraft.core.BlockIndex; import buildcraft.core.BlockSpring; import buildcraft.core.DefaultProps; @@ -21,12 +36,11 @@ import buildcraft.core.proxy.CoreProxy; import buildcraft.core.triggers.BCTrigger; import buildcraft.energy.BlockBuildcraftFluid; import buildcraft.energy.BlockEngine; -import buildcraft.energy.BptBlockEngine; +import buildcraft.energy.BucketHandler; import buildcraft.energy.EnergyProxy; import buildcraft.energy.GuiHandler; import buildcraft.energy.ItemBucketBuildcraft; import buildcraft.energy.ItemEngine; -import buildcraft.energy.BucketHandler; import buildcraft.energy.TileEngine.EnergyStage; import buildcraft.energy.triggers.TriggerEngineHeat; import buildcraft.energy.worldgen.BiomeGenOilDesert; @@ -47,24 +61,6 @@ import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import java.util.TreeMap; - -import net.minecraft.block.Block; -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; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.common.config.Configuration; -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; - @Mod(name = "BuildCraft Energy", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Energy", dependencies = DefaultProps.DEPENDENCY_CORE) public class BuildCraftEnergy extends BuildCraftMod { @@ -94,7 +90,7 @@ public class BuildCraftEnergy extends BuildCraftMod { public static BuildCraftEnergy instance; @EventHandler - public void preInit(FMLPreInitializationEvent evt) { + public void preInit(FMLPreInitializationEvent evt) { int oilDesertBiomeId = BuildCraftCore.mainConfiguration.get("biomes", "biomeOilDesert", DefaultProps.BIOME_OIL_DESERT).getInt(DefaultProps.BIOME_OIL_DESERT); int oilOceanBiomeId = BuildCraftCore.mainConfiguration.get("biomes", "biomeOilOcean", DefaultProps.BIOME_OIL_OCEAN).getInt(DefaultProps.BIOME_OIL_OCEAN); canOilBurn = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "burnOil", true, "Can oil burn?").getBoolean(true); @@ -104,28 +100,26 @@ public class BuildCraftEnergy extends BuildCraftMod { double fuelFuelMultiplier = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "fuel.fuel.combustion", 1.0F, "adjust energy value of Fuel in Combustion Engines").getDouble(1.0F); BuildCraftCore.mainConfiguration.save(); - class BiomeIdException extends RuntimeException { - - public BiomeIdException(String biome, int id) { - super(String.format("You have a Biome Id conflict at %d for %s", id, biome)); - } - } - if (oilDesertBiomeId > 0) { if (BiomeGenBase.getBiomeGenArray () [oilDesertBiomeId] != null) { - throw new BiomeIdException("oilDesert", oilDesertBiomeId); + oilDesertBiomeId = findUnusedBiomeID("oilDesert"); + // save changes to config file + BuildCraftCore.mainConfiguration.get("biomes", "biomeOilDesert", oilDesertBiomeId).set(oilDesertBiomeId); + BuildCraftCore.mainConfiguration.save(); } biomeOilDesert = BiomeGenOilDesert.makeBiome(oilDesertBiomeId); } if (oilOceanBiomeId > 0) { if (BiomeGenBase.getBiomeGenArray () [oilOceanBiomeId] != null) { - throw new BiomeIdException("oilOcean", oilOceanBiomeId); + oilOceanBiomeId = findUnusedBiomeID("oilOcean"); + // save changes to config file + BuildCraftCore.mainConfiguration.get("biomes", "biomeOilOcean", oilOceanBiomeId).set(oilOceanBiomeId); + BuildCraftCore.mainConfiguration.save(); } biomeOilOcean = BiomeGenOilOcean.makeBiome(oilOceanBiomeId); } - engineBlock = new BlockEngine(); CoreProxy.proxy.registerBlock(engineBlock, ItemEngine.class); @@ -148,7 +142,7 @@ public class BuildCraftEnergy extends BuildCraftMod { blockOil = new BlockBuildcraftFluid(fluidOil, Material.water).setFlammable(canOilBurn).setFlammability(0); blockOil.setBlockName("blockOil"); CoreProxy.proxy.registerBlock(blockOil); - fluidOil.setBlock(blockOil); + fluidOil.setBlock(blockOil); } else { blockOil = fluidOil.getBlock(); } @@ -163,7 +157,7 @@ public class BuildCraftEnergy extends BuildCraftMod { blockFuel = new BlockBuildcraftFluid(fluidFuel, Material.water).setFlammable(true).setFlammability(5).setParticleColor(0.7F, 0.7F, 0.0F); blockFuel.setBlockName("blockFuel"); CoreProxy.proxy.registerBlock(blockFuel); - fluidFuel.setBlock(blockFuel); + fluidFuel.setBlock(blockFuel); } else { blockFuel = fluidFuel.getBlock(); } @@ -209,8 +203,8 @@ public class BuildCraftEnergy extends BuildCraftMod { public void init(FMLInitializationEvent evt) { channels = NetworkRegistry.INSTANCE.newChannel (DefaultProps.NET_CHANNEL_NAME + "-ENERGY", new PacketHandlerTransport()); - - NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); + + NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); //new BptBlockEngine(engineBlock.blockID); @@ -248,6 +242,25 @@ public class BuildCraftEnergy extends BuildCraftMod { 'g', Blocks.glass, 'G', BuildCraftCore.ironGearItem, 'p', Blocks.piston}); } + private int findUnusedBiomeID (String biomeName) { + int freeBiomeID = 0; + // code to find a free biome + 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 { + public BiomeIdLimitException(String biome) { + super(String.format("You have a run out of free Biome Ids for %s", biome)); + } + } + + throw new BiomeIdLimitException(biomeName); + } + @EventHandler public void processIMCRequests(FMLInterModComms.IMCEvent event) { InterModComms.processIMC(event); diff --git a/common/buildcraft/core/DefaultProps.java b/common/buildcraft/core/DefaultProps.java index 33d77c54..2c056f9f 100644 --- a/common/buildcraft/core/DefaultProps.java +++ b/common/buildcraft/core/DefaultProps.java @@ -124,6 +124,6 @@ public class DefaultProps { public static final int FILLER_LIFESPAN_TOUGH = 20; public static final int FILLER_LIFESPAN_NORMAL = 6000; - public static int BIOME_OIL_OCEAN = 215; - public static int BIOME_OIL_DESERT = 216; + public static int BIOME_OIL_OCEAN = 126; + public static int BIOME_OIL_DESERT = 127; } diff --git a/common/buildcraft/energy/worldgen/BiomeInitializer.java b/common/buildcraft/energy/worldgen/BiomeInitializer.java index 05bd9ce2..bb6e7ffc 100644 --- a/common/buildcraft/energy/worldgen/BiomeInitializer.java +++ b/common/buildcraft/energy/worldgen/BiomeInitializer.java @@ -19,29 +19,16 @@ public class BiomeInitializer { @SubscribeEvent public void initBiomes(WorldTypeEvent.InitBiomeGens event) { + int i; if (BuildCraftEnergy.biomeOilDesert != null) { - event.newBiomeGens[0] = new GenLayerAddOilDesert(event.seed, 1500L, event.newBiomeGens[0]); - event.newBiomeGens[1] = new GenLayerAddOilDesert(event.seed, 1500L, event.newBiomeGens[1]); - event.newBiomeGens[2] = new GenLayerAddOilDesert(event.seed, 1500L, event.newBiomeGens[2]); + for (i=0; i noiseThreshold) { -// System.out.printf("Oil Biome: %d, %d\n", x, z); -// } -// } -// } } } diff --git a/common/buildcraft/factory/TileFloodGate.java b/common/buildcraft/factory/TileFloodGate.java index 57cfa131..fb976ed4 100644 --- a/common/buildcraft/factory/TileFloodGate.java +++ b/common/buildcraft/factory/TileFloodGate.java @@ -8,15 +8,6 @@ */ package buildcraft.factory; -import buildcraft.api.core.SafeTimeTracker; -import buildcraft.core.BlockIndex; -import buildcraft.core.TileBuildCraft; -import buildcraft.core.fluids.FluidUtils; -import buildcraft.core.fluids.Tank; -import buildcraft.core.proxy.CoreProxy; -import buildcraft.core.utils.BlockUtil; -import buildcraft.core.utils.Utils; - import java.util.Deque; import java.util.HashSet; import java.util.LinkedList; @@ -26,12 +17,19 @@ import java.util.TreeMap; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.BlockFluidBase; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import buildcraft.core.BlockIndex; +import buildcraft.core.TileBuildCraft; +import buildcraft.core.fluids.FluidUtils; +import buildcraft.core.fluids.Tank; +import buildcraft.core.utils.BlockUtil; +import buildcraft.core.utils.Utils; public class TileFloodGate extends TileBuildCraft implements IFluidHandler { @@ -63,19 +61,22 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { public void updateEntity() { super.updateEntity(); - if (worldObj.isRemote) + if (worldObj.isRemote) { return; + } - if (powered) + if (powered) { return; + } tick++; if (tick % 16 == 0) { FluidStack fluidtoFill = tank.drain(FluidContainerRegistry.BUCKET_VOLUME, false); if (fluidtoFill != null && fluidtoFill.amount == FluidContainerRegistry.BUCKET_VOLUME) { Fluid fluid = fluidtoFill.getFluid(); - if (fluid == null || !fluid.canBePlacedInWorld()) + if (fluid == null || !fluid.canBePlacedInWorld()) { return; + } if (fluid == FluidRegistry.WATER && worldObj.provider.dimensionId == -1) { tank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); @@ -84,8 +85,9 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { if (tick % REBUILD_DELAY[rebuildDelay] == 0) { rebuildDelay++; - if (rebuildDelay >= REBUILD_DELAY.length) + if (rebuildDelay >= REBUILD_DELAY.length) { rebuildDelay = REBUILD_DELAY.length - 1; + } rebuildQueue(); } BlockIndex index = getNextIndexToFill(true); @@ -100,14 +102,26 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { private boolean placeFluid(int x, int y, int z, Fluid fluid) { Block block = worldObj.getBlock(x, y, z); + if (canPlaceFluidAt(block, x, y, z)) { - boolean placed = worldObj.setBlock(x, y, z, FluidUtils.getFluidBlock(fluid, true)); + boolean placed; + Block b = FluidUtils.getFluidBlock(fluid, true); + + if(b instanceof BlockFluidBase) { + BlockFluidBase blockFluid = (BlockFluidBase) b; + placed = worldObj.setBlock(x, y, z, b, blockFluid.getMaxRenderHeightMeta(), 3); + } else { + placed = worldObj.setBlock(x, y, z, b); + } + if (placed) { queueAdjacent(x, y, z); expandQueue(); } + return placed; } + return false; } @@ -119,8 +133,9 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { Deque bottomLayer = pumpLayerQueues.firstEntry().getValue(); if (bottomLayer != null) { - if (bottomLayer.isEmpty()) + if (bottomLayer.isEmpty()) { pumpLayerQueues.pollFirstEntry(); + } if (remove) { BlockIndex index = bottomLayer.pollFirst(); return index; @@ -154,8 +169,9 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { } private void expandQueue() { - if (tank.getFluidType() == null) + if (tank.getFluidType() == null) { return; + } while (!fluidsFound.isEmpty()) { Deque fluidsToExpand = fluidsFound; fluidsFound = new LinkedList(); @@ -167,8 +183,9 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { } public void queueAdjacent(int x, int y, int z) { - if (tank.getFluidType() == null) + if (tank.getFluidType() == null) { return; + } queueForFilling(x, y - 1, z); queueForFilling(x + 1, y, z); queueForFilling(x - 1, y, z); @@ -179,8 +196,9 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { public void queueForFilling(int x, int y, int z) { BlockIndex index = new BlockIndex(x, y, z); if (visitedBlocks.add(index)) { - if ((x - xCoord) * (x - xCoord) + (z - zCoord) * (z - zCoord) > 64 * 64) + if ((x - xCoord) * (x - xCoord) + (z - zCoord) * (z - zCoord) > 64 * 64) { return; + } Block block = worldObj.getBlock(x, y, z); if (BlockUtil.getFluid(block) == tank.getFluidType()) { @@ -200,8 +218,9 @@ public class TileFloodGate extends TileBuildCraft implements IFluidHandler { boolean p = worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord); if (powered != p) { powered = p; - if (!p) + if (!p) { rebuildQueue(); + } } }