diff --git a/common/buildcraft/BuildCraftBuilders.java b/common/buildcraft/BuildCraftBuilders.java index f32a1b92..5fad6e7e 100644 --- a/common/buildcraft/BuildCraftBuilders.java +++ b/common/buildcraft/BuildCraftBuilders.java @@ -310,9 +310,11 @@ public class BuildCraftBuilders { new ItemStack(Item.dyePowder, 1, 0), Character.valueOf('t'), markerBlock, Character.valueOf('y'), new ItemStack(Item.dyePowder, 1, 11), Character.valueOf('c'), Block.workbench, Character.valueOf('g'), BuildCraftCore.goldGearItem, Character.valueOf('C'), Block.chest }); + /* CoreProxy.proxy.addCraftingRecipe(new ItemStack(builderBlock, 1), new Object[] { "btb", "ycy", "gCg", Character.valueOf('b'), new ItemStack(Item.dyePowder, 1, 0), Character.valueOf('t'), markerBlock, Character.valueOf('y'), new ItemStack(Item.dyePowder, 1, 11), Character.valueOf('c'), Block.workbench, Character.valueOf('g'), BuildCraftCore.diamondGearItem, Character.valueOf('C'), Block.chest }); + */ CoreProxy.proxy.addCraftingRecipe(new ItemStack(architectBlock, 1), new Object[] { "btb", "ycy", "gCg", Character.valueOf('b'), new ItemStack(Item.dyePowder, 1, 0), Character.valueOf('t'), markerBlock, Character.valueOf('y'), new ItemStack(Item.dyePowder, 1, 11), diff --git a/common/buildcraft/BuildCraftEnergy.java b/common/buildcraft/BuildCraftEnergy.java index bbf698a4..e33e326d 100644 --- a/common/buildcraft/BuildCraftEnergy.java +++ b/common/buildcraft/BuildCraftEnergy.java @@ -8,12 +8,15 @@ package buildcraft; import java.util.TreeMap; +import java.util.logging.Level; +import java.util.logging.Logger; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; 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.Configuration; import net.minecraftforge.common.MinecraftForge; @@ -58,9 +61,6 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import java.util.logging.Level; -import java.util.logging.Logger; -import net.minecraft.world.biome.BiomeGenBase; @Mod(name = "BuildCraft Energy", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Energy", dependencies = DefaultProps.DEPENDENCY_CORE) @NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandler.class, clientSideRequired = true, serverSideRequired = true) diff --git a/common/buildcraft/BuildCraftFactory.java b/common/buildcraft/BuildCraftFactory.java index f5883f42..a4733148 100644 --- a/common/buildcraft/BuildCraftFactory.java +++ b/common/buildcraft/BuildCraftFactory.java @@ -42,6 +42,7 @@ import buildcraft.factory.BptBlockTank; import buildcraft.factory.FactoryProxy; import buildcraft.factory.FactoryProxyClient; import buildcraft.factory.GuiHandler; +import buildcraft.factory.PumpDimensionList; import buildcraft.factory.TileAutoWorkbench; import buildcraft.factory.TileHopper; import buildcraft.factory.TileMiningWell; @@ -82,6 +83,8 @@ public class BuildCraftFactory { public static boolean hopperDisabled; public static boolean allowMining = true; + + public static PumpDimensionList pumpDimensionList; @Instance("BuildCraft|Factory") public static BuildCraftFactory instance; @@ -155,6 +158,8 @@ public class BuildCraftFactory { @PreInit public void initialize(FMLPreInitializationEvent evt) { allowMining = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "mining.enabled", true).getBoolean(true); + + pumpDimensionList = new PumpDimensionList(BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "pumping.controlList", DefaultProps.PUMP_DIMENSION_LIST).getString()); Property miningWellId = BuildCraftCore.mainConfiguration.getBlock("miningWell.id", DefaultProps.MINING_WELL_ID); Property plainPipeId = BuildCraftCore.mainConfiguration.getBlock("drill.id", DefaultProps.DRILL_ID); diff --git a/common/buildcraft/builders/BlockBuilder.java b/common/buildcraft/builders/BlockBuilder.java index 6dea73f2..66e50894 100644 --- a/common/buildcraft/builders/BlockBuilder.java +++ b/common/buildcraft/builders/BlockBuilder.java @@ -41,7 +41,7 @@ public class BlockBuilder extends BlockContainer { public BlockBuilder(int i) { super(i, Material.iron); setHardness(0.7F); - setCreativeTab(CreativeTabBuildCraft.tabBuildCraft); + //setCreativeTab(CreativeTabBuildCraft.tabBuildCraft); } @Override diff --git a/common/buildcraft/core/BlockIndex.java b/common/buildcraft/core/BlockIndex.java index 1c5c4c92..2c1470d8 100644 --- a/common/buildcraft/core/BlockIndex.java +++ b/common/buildcraft/core/BlockIndex.java @@ -89,6 +89,6 @@ public class BlockIndex implements Comparable { @Override public int hashCode() { - return i + j << 8 + k << 16; + return (i * 37 + j) * 37 + k; } } diff --git a/common/buildcraft/core/BlockSpring.java b/common/buildcraft/core/BlockSpring.java index e1da7338..d438a5ee 100644 --- a/common/buildcraft/core/BlockSpring.java +++ b/common/buildcraft/core/BlockSpring.java @@ -1,16 +1,16 @@ package buildcraft.core; +import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import java.util.List; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; public class BlockSpring extends Block { diff --git a/common/buildcraft/core/DefaultProps.java b/common/buildcraft/core/DefaultProps.java index 21fe2f7f..c7f1fca0 100644 --- a/common/buildcraft/core/DefaultProps.java +++ b/common/buildcraft/core/DefaultProps.java @@ -32,6 +32,8 @@ public class DefaultProps { public static final String DEFAULT_LANGUAGE = "en_US"; + public static String PUMP_DIMENSION_LIST = "+/*/*,+/-1/Lava"; + public static int WOODEN_GEAR_ID = 19100; public static int STONE_GEAR_ID = 19101; public static int IRON_GEAR_ID = 19102; diff --git a/common/buildcraft/core/ItemSpring.java b/common/buildcraft/core/ItemSpring.java index 53317134..95013b06 100644 --- a/common/buildcraft/core/ItemSpring.java +++ b/common/buildcraft/core/ItemSpring.java @@ -10,6 +10,7 @@ package buildcraft.core; import java.util.Locale; + import net.minecraft.item.ItemStack; public class ItemSpring extends ItemBlockBuildCraft { diff --git a/common/buildcraft/core/ItemWrench.java b/common/buildcraft/core/ItemWrench.java index 0ccc3f81..a2b52634 100644 --- a/common/buildcraft/core/ItemWrench.java +++ b/common/buildcraft/core/ItemWrench.java @@ -1,11 +1,11 @@ package buildcraft.core; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import buildcraft.api.tools.IToolWrench; import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import buildcraft.api.tools.IToolWrench; public class ItemWrench extends ItemBuildCraft implements IToolWrench { diff --git a/common/buildcraft/core/blueprints/BptBuilderTemplate.java b/common/buildcraft/core/blueprints/BptBuilderTemplate.java index c8c07ea5..2f4d76f3 100644 --- a/common/buildcraft/core/blueprints/BptBuilderTemplate.java +++ b/common/buildcraft/core/blueprints/BptBuilderTemplate.java @@ -13,7 +13,6 @@ import java.util.LinkedList; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import buildcraft.api.core.BuildCraftAPI; import buildcraft.core.IBuilderInventory; import buildcraft.core.blueprints.BptSlot.Mode; diff --git a/common/buildcraft/core/gui/GuiBuildCraft.java b/common/buildcraft/core/gui/GuiBuildCraft.java index cbe6ae3d..b45f1b91 100644 --- a/common/buildcraft/core/gui/GuiBuildCraft.java +++ b/common/buildcraft/core/gui/GuiBuildCraft.java @@ -3,6 +3,8 @@ package buildcraft.core.gui; import java.util.ArrayList; import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; @@ -14,8 +16,6 @@ import buildcraft.core.gui.buttons.GuiBetterButton; import buildcraft.core.gui.tooltips.ToolTip; import buildcraft.core.gui.tooltips.ToolTipLine; import buildcraft.core.utils.SessionVars; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.entity.player.InventoryPlayer; public abstract class GuiBuildCraft extends GuiContainer { diff --git a/common/buildcraft/core/gui/buttons/GuiBetterButton.java b/common/buildcraft/core/gui/buttons/GuiBetterButton.java index dd919ff5..07f390ae 100644 --- a/common/buildcraft/core/gui/buttons/GuiBetterButton.java +++ b/common/buildcraft/core/gui/buttons/GuiBetterButton.java @@ -1,12 +1,14 @@ package buildcraft.core.gui.buttons; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiButton; + +import org.lwjgl.opengl.GL11; + import buildcraft.core.gui.tooltips.ToolTip; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.GuiButton; -import org.lwjgl.opengl.GL11; /** * diff --git a/common/buildcraft/core/gui/buttons/GuiMultiButton.java b/common/buildcraft/core/gui/buttons/GuiMultiButton.java index d5928ff2..9c0e0352 100644 --- a/common/buildcraft/core/gui/buttons/GuiMultiButton.java +++ b/common/buildcraft/core/gui/buttons/GuiMultiButton.java @@ -1,10 +1,12 @@ package buildcraft.core.gui.buttons; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; + +import org.lwjgl.opengl.GL11; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import org.lwjgl.opengl.GL11; /** * diff --git a/common/buildcraft/core/gui/tooltips/ToolTip.java b/common/buildcraft/core/gui/tooltips/ToolTip.java index 48ab984d..48c304df 100644 --- a/common/buildcraft/core/gui/tooltips/ToolTip.java +++ b/common/buildcraft/core/gui/tooltips/ToolTip.java @@ -1,9 +1,10 @@ package buildcraft.core.gui.tooltips; -import com.google.common.collect.ForwardingList; import java.util.ArrayList; import java.util.List; +import com.google.common.collect.ForwardingList; + /** * * @author CovertJaguar diff --git a/common/buildcraft/core/inventory/InventoryWrapper.java b/common/buildcraft/core/inventory/InventoryWrapper.java index 26c483c8..0dc718e5 100644 --- a/common/buildcraft/core/inventory/InventoryWrapper.java +++ b/common/buildcraft/core/inventory/InventoryWrapper.java @@ -1,10 +1,10 @@ package buildcraft.core.inventory; -import buildcraft.core.utils.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import buildcraft.core.utils.Utils; public abstract class InventoryWrapper implements ISidedInventory { diff --git a/common/buildcraft/core/inventory/InventoryWrapperForge.java b/common/buildcraft/core/inventory/InventoryWrapperForge.java index 91f2ba8c..5fea0219 100644 --- a/common/buildcraft/core/inventory/InventoryWrapperForge.java +++ b/common/buildcraft/core/inventory/InventoryWrapperForge.java @@ -1,8 +1,8 @@ package buildcraft.core.inventory; -import buildcraft.core.utils.Utils; import net.minecraft.item.ItemStack; import net.minecraftforge.common.ForgeDirection; +import buildcraft.core.utils.Utils; public class InventoryWrapperForge extends InventoryWrapper { diff --git a/common/buildcraft/core/inventory/InventoryWrapperSimple.java b/common/buildcraft/core/inventory/InventoryWrapperSimple.java index 018afe2b..8bf55b16 100644 --- a/common/buildcraft/core/inventory/InventoryWrapperSimple.java +++ b/common/buildcraft/core/inventory/InventoryWrapperSimple.java @@ -1,8 +1,8 @@ package buildcraft.core.inventory; -import buildcraft.core.utils.Utils; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import buildcraft.core.utils.Utils; public class InventoryWrapperSimple extends InventoryWrapper { diff --git a/common/buildcraft/core/proxy/CoreProxy.java b/common/buildcraft/core/proxy/CoreProxy.java index b9d8a2f6..b30c2546 100644 --- a/common/buildcraft/core/proxy/CoreProxy.java +++ b/common/buildcraft/core/proxy/CoreProxy.java @@ -19,6 +19,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.network.packet.Packet; @@ -33,7 +34,6 @@ import buildcraft.core.network.BuildCraftPacket; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.item.ItemBlock; public class CoreProxy { diff --git a/common/buildcraft/core/render/LiquidRenderer.java b/common/buildcraft/core/render/LiquidRenderer.java index 289fad6c..03b25cd1 100644 --- a/common/buildcraft/core/render/LiquidRenderer.java +++ b/common/buildcraft/core/render/LiquidRenderer.java @@ -7,19 +7,21 @@ */ package buildcraft.core.render; -import buildcraft.core.render.RenderEntityBlock.BlockInterface; import java.util.HashMap; import java.util.Map; + +import net.minecraft.block.Block; import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; -import net.minecraftforge.liquids.LiquidStack; -import org.lwjgl.opengl.GL11; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraft.world.World; import net.minecraftforge.liquids.LiquidDictionary; +import net.minecraftforge.liquids.LiquidStack; + +import org.lwjgl.opengl.GL11; + +import buildcraft.core.render.RenderEntityBlock.BlockInterface; /** * diff --git a/common/buildcraft/core/triggers/DefaultTriggerProvider.java b/common/buildcraft/core/triggers/DefaultTriggerProvider.java index fa51c62b..19eb4238 100644 --- a/common/buildcraft/core/triggers/DefaultTriggerProvider.java +++ b/common/buildcraft/core/triggers/DefaultTriggerProvider.java @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.liquids.ILiquidTank; import net.minecraftforge.liquids.ITankContainer; import buildcraft.BuildCraftCore; import buildcraft.api.gates.IOverrideDefaultTriggers; @@ -13,7 +14,6 @@ import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITriggerProvider; import buildcraft.api.transport.IPipe; import buildcraft.core.IMachine; -import net.minecraftforge.liquids.ILiquidTank; public class DefaultTriggerProvider implements ITriggerProvider { diff --git a/common/buildcraft/energy/BlockOilFlowing.java b/common/buildcraft/energy/BlockOilFlowing.java index 5a02ffc2..c618c59d 100644 --- a/common/buildcraft/energy/BlockOilFlowing.java +++ b/common/buildcraft/energy/BlockOilFlowing.java @@ -14,14 +14,14 @@ import net.minecraft.block.BlockFlowing; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.liquids.ILiquid; import buildcraft.BuildCraftCore; import buildcraft.BuildCraftEnergy; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.common.ForgeDirection; public class BlockOilFlowing extends BlockFlowing implements ILiquid { diff --git a/common/buildcraft/energy/BlockOilStill.java b/common/buildcraft/energy/BlockOilStill.java index d14cbc8e..676358e3 100644 --- a/common/buildcraft/energy/BlockOilStill.java +++ b/common/buildcraft/energy/BlockOilStill.java @@ -11,14 +11,14 @@ import net.minecraft.block.BlockStationary; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.liquids.ILiquid; import buildcraft.BuildCraftCore; import buildcraft.BuildCraftEnergy; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.world.IBlockAccess; -import net.minecraftforge.common.ForgeDirection; public class BlockOilStill extends BlockStationary implements ILiquid { diff --git a/common/buildcraft/energy/OilPopulate.java b/common/buildcraft/energy/OilPopulate.java index caf4d083..2295f973 100644 --- a/common/buildcraft/energy/OilPopulate.java +++ b/common/buildcraft/energy/OilPopulate.java @@ -7,20 +7,20 @@ */ package buildcraft.energy; +import java.util.HashSet; import java.util.Random; +import java.util.Set; import net.minecraft.block.Block; +import net.minecraft.block.BlockFlower; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.terraingen.PopulateChunkEvent; import net.minecraftforge.event.terraingen.TerrainGen; import buildcraft.BuildCraftCore; import buildcraft.BuildCraftEnergy; -import java.util.HashSet; -import java.util.Set; -import net.minecraft.block.BlockFlower; -import net.minecraftforge.common.ForgeDirection; public class OilPopulate { diff --git a/common/buildcraft/energy/render/RenderEngine.java b/common/buildcraft/energy/render/RenderEngine.java index ff4bd0a2..973bc21d 100644 --- a/common/buildcraft/energy/render/RenderEngine.java +++ b/common/buildcraft/energy/render/RenderEngine.java @@ -7,6 +7,12 @@ */ package buildcraft.energy.render; +import static net.minecraftforge.common.ForgeDirection.DOWN; +import static net.minecraftforge.common.ForgeDirection.EAST; +import static net.minecraftforge.common.ForgeDirection.NORTH; +import static net.minecraftforge.common.ForgeDirection.SOUTH; +import static net.minecraftforge.common.ForgeDirection.UP; +import static net.minecraftforge.common.ForgeDirection.WEST; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; @@ -23,7 +29,6 @@ import buildcraft.core.IInventoryRenderer; import buildcraft.energy.Engine; import buildcraft.energy.Engine.EnergyStage; import buildcraft.energy.IEngineProvider; -import static net.minecraftforge.common.ForgeDirection.*; public class RenderEngine extends TileEntitySpecialRenderer implements IInventoryRenderer { diff --git a/common/buildcraft/factory/PumpDimensionList.java b/common/buildcraft/factory/PumpDimensionList.java new file mode 100644 index 00000000..b2334831 --- /dev/null +++ b/common/buildcraft/factory/PumpDimensionList.java @@ -0,0 +1,86 @@ +package buildcraft.factory; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import net.minecraftforge.liquids.LiquidDictionary; +import net.minecraftforge.liquids.LiquidStack; + +public class PumpDimensionList { + public PumpDimensionList(String string) { + + entries = new LinkedList(); + + for(String entryString : string.trim().split(",")) { + + Entry e = new Entry(); + + if(entryString.startsWith("+/")) { + e.isWhitelist = true; + } else if(entryString.startsWith("-/")) { + e.isWhitelist = false; + } else + throw new RuntimeException("Malformed pumping.controlList entry: "+entryString+" (must start with +/ or -/)"); + + entryString = entryString.substring(2); + int i = entryString.indexOf('/'); + + if(i < 0) + throw new RuntimeException("Malformed pumping.controlList entry: "+entryString+" (missing second /)"); + + String dimIDString = entryString.substring(0, i); + + if(dimIDString.equals("*")) + e.matchAnyDim = true; + else + e.dimID = Integer.parseInt(dimIDString); + + e.liquidName = entryString.substring(i + 1); + if(e.liquidName.equals("*")) + e.matchAnyLiquid = true; + + entries.add(0, e); + } + + entries = new ArrayList(entries); + } + + private class Entry { + boolean isWhitelist; + LiquidStack liquidStack; + String liquidName; + int dimID; + boolean matchAnyLiquid; + boolean matchAnyDim; + + private void initLiquidStack() { + liquidStack = LiquidDictionary.getLiquid(liquidName, 1); + if(liquidStack == null) + throw new RuntimeException("Configuration error: unknown liquid "+liquidName+" in pumping.controlList"); + } + + boolean matches(LiquidStack liquid, int dim) { + if(!matchAnyLiquid) { + if(liquidStack == null) + initLiquidStack(); + if(!liquidStack.isLiquidEqual(liquid)) + return false; + } + if(!matchAnyDim && dimID != dim) + return false; + return true; + } + } + + private List entries; + + public boolean isLiquidAllowed(LiquidStack liquid, int dim) { + for(Entry e : entries) + if(e.matches(liquid, dim)) + return e.isWhitelist; + return false; + } + + +} diff --git a/common/buildcraft/factory/TilePump.java b/common/buildcraft/factory/TilePump.java index 69c5dc2f..e86b9d96 100644 --- a/common/buildcraft/factory/TilePump.java +++ b/common/buildcraft/factory/TilePump.java @@ -25,6 +25,7 @@ import net.minecraftforge.liquids.LiquidContainerRegistry; import net.minecraftforge.liquids.LiquidStack; import net.minecraftforge.liquids.LiquidTank; import buildcraft.BuildCraftCore; +import buildcraft.BuildCraftFactory; import buildcraft.api.core.Position; import buildcraft.api.power.IPowerProvider; import buildcraft.api.power.IPowerReceptor; @@ -48,7 +49,7 @@ public class TilePump extends TileMachine implements IMachine, IPowerReceptor, I LiquidTank tank; double tubeY = Double.NaN; int aimY = 0; - + private IPowerProvider powerProvider; public TilePump() { @@ -62,10 +63,10 @@ public class TilePump extends TileMachine implements IMachine, IPowerReceptor, I @Override public void updateEntity() { super.updateEntity(); - + if (tube == null) return; - + if (!CoreProxy.proxy.isRenderWorld(worldObj)) { if (tube.posY - aimY > 0.01) { tubeY = tube.posY - 0.01; @@ -210,6 +211,8 @@ public class TilePump extends TileMachine implements IMachine, IPowerReceptor, I return; addToPumpIfLiquid(new BlockIndex(x, y, z), markedBlocks, lastFound, pumpList, liquidId); + + long timeoutTime = System.currentTimeMillis() + 1000; while (lastFound.size() > 0) { TreeSet visitIteration = new TreeSet(lastFound); @@ -228,6 +231,9 @@ public class TilePump extends TileMachine implements IMachine, IPowerReceptor, I pumpList = blocksToPump.get(index.j + 1); addToPumpIfLiquid(new BlockIndex(index.i, index.j + 1, index.k), markedBlocks, lastFound, pumpList, liquidId); + + if(System.currentTimeMillis() > timeoutTime) + return; } } } @@ -257,7 +263,14 @@ public class TilePump extends TileMachine implements IMachine, IPowerReceptor, I } private boolean isLiquid(BlockIndex index) { - return index != null && (Utils.liquidFromBlockId(worldObj.getBlockId(index.i, index.j, index.k)) != null); + if(index == null) + return false; + + LiquidStack liquid = Utils.liquidFromBlockId(worldObj.getBlockId(index.i, index.j, index.k)); + if(liquid == null) + return false; + + return BuildCraftFactory.pumpDimensionList.isLiquidAllowed(liquid, worldObj.provider.dimensionId); } @Override diff --git a/common/buildcraft/factory/render/RenderRefinery.java b/common/buildcraft/factory/render/RenderRefinery.java index a2f5d312..8d9442d5 100644 --- a/common/buildcraft/factory/render/RenderRefinery.java +++ b/common/buildcraft/factory/render/RenderRefinery.java @@ -12,6 +12,7 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.liquids.LiquidStack; import org.lwjgl.opengl.GL11; @@ -19,7 +20,6 @@ import buildcraft.core.DefaultProps; import buildcraft.core.IInventoryRenderer; import buildcraft.core.render.LiquidRenderer; import buildcraft.factory.TileRefinery; -import net.minecraftforge.liquids.LiquidStack; public class RenderRefinery extends TileEntitySpecialRenderer implements IInventoryRenderer { diff --git a/common/buildcraft/factory/render/RenderTank.java b/common/buildcraft/factory/render/RenderTank.java index afe8af4c..440932ea 100644 --- a/common/buildcraft/factory/render/RenderTank.java +++ b/common/buildcraft/factory/render/RenderTank.java @@ -7,13 +7,13 @@ */ package buildcraft.factory.render; -import buildcraft.core.render.LiquidRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.liquids.LiquidStack; import org.lwjgl.opengl.GL11; +import buildcraft.core.render.LiquidRenderer; import buildcraft.factory.TileTank; public class RenderTank extends TileEntitySpecialRenderer { diff --git a/common/buildcraft/transport/BlockGenericPipe.java b/common/buildcraft/transport/BlockGenericPipe.java index 8d21d628..6fde0e50 100644 --- a/common/buildcraft/transport/BlockGenericPipe.java +++ b/common/buildcraft/transport/BlockGenericPipe.java @@ -10,9 +10,11 @@ package buildcraft.transport; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Locale; +import java.util.Map; import java.util.Random; -import java.util.TreeMap; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -47,9 +49,6 @@ import buildcraft.transport.render.PipeWorldRenderer; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; public class BlockGenericPipe extends BlockContainer { static enum Part { diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index d292248d..0cb21e69 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -104,8 +104,13 @@ public class ItemFacade extends ItemBuildCraft { continue; } - if (!(b.blockID == 20)){ - if (b.blockID == 7 || b.blockID == 18 || b.blockID == 19 || b.blockID == 95) { + if (!(b.blockID == 20)){ //Explicitly allow glass + if (b.blockID == 7 //Bedrock + || b.blockID == 2 //Grass block + || b.blockID == 18 //Oak leaves + || b.blockID == 19 //Sponge + || b.blockID == 95 //Locked chest + ) { continue; } if (!b.isOpaqueCube() || b.hasTileEntity(0) || !b.renderAsNormalBlock()) { diff --git a/common/buildcraft/transport/ItemPipe.java b/common/buildcraft/transport/ItemPipe.java index 456402cf..13c26494 100644 --- a/common/buildcraft/transport/ItemPipe.java +++ b/common/buildcraft/transport/ItemPipe.java @@ -9,6 +9,8 @@ package buildcraft.transport; +import java.util.logging.Level; + import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -23,7 +25,6 @@ import buildcraft.core.IItemPipe; import buildcraft.core.ItemBuildCraft; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import java.util.logging.Level; public class ItemPipe extends ItemBuildCraft implements IItemPipe { diff --git a/common/buildcraft/transport/Pipe.java b/common/buildcraft/transport/Pipe.java index 83f65202..21945636 100644 --- a/common/buildcraft/transport/Pipe.java +++ b/common/buildcraft/transport/Pipe.java @@ -210,8 +210,11 @@ public abstract class Pipe implements IPipe, IDropControlInventory { for (int i = 0; i < 4; ++i) { nbttagcompound.setBoolean("wireSet[" + i + "]", wireSet[i]); + nbttagcompound.setBoolean("wireState[" + i + "]", broadcastSignal[i]); } + nbttagcompound.setBoolean("redstoneState", broadcastRedstone); + for (int i = 0; i < 8; ++i) { nbttagcompound.setInteger("action[" + i + "]", activatedActions[i] != null ? activatedActions[i].getId() : 0); nbttagcompound.setInteger("trigger[" + i + "]", activatedTriggers[i] != null ? activatedTriggers[i].getId() : 0); @@ -245,8 +248,11 @@ public abstract class Pipe implements IPipe, IDropControlInventory { for (int i = 0; i < 4; ++i) { wireSet[i] = nbttagcompound.getBoolean("wireSet[" + i + "]"); + broadcastSignal[i] = nbttagcompound.getBoolean("wireState[" + i + "]"); } + broadcastRedstone = nbttagcompound.getBoolean("redstoneState"); + for (int i = 0; i < 8; ++i) { activatedActions[i] = ActionManager.actions[nbttagcompound.getInteger("action[" + i + "]")]; activatedTriggers[i] = ActionManager.triggers[nbttagcompound.getInteger("trigger[" + i + "]")]; diff --git a/common/buildcraft/transport/render/RenderPipe.java b/common/buildcraft/transport/render/RenderPipe.java index 52eb4d81..c68def09 100644 --- a/common/buildcraft/transport/render/RenderPipe.java +++ b/common/buildcraft/transport/render/RenderPipe.java @@ -12,7 +12,6 @@ package buildcraft.transport.render; import java.util.HashMap; import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager;