diff --git a/common/buildcraft/factory/TileHopper.java b/common/buildcraft/factory/TileHopper.java index 74aad440..d61f7dc3 100644 --- a/common/buildcraft/factory/TileHopper.java +++ b/common/buildcraft/factory/TileHopper.java @@ -39,15 +39,18 @@ public class TileHopper extends TileBuildCraft implements IInventory { TileEntity tile = this.worldObj.getBlockTileEntity(xCoord, yCoord - 1, zCoord); - if (tile == null) return; + if (tile == null) + return; ITransactor transactor = Transactor.getTransactorFor(tile); - if (transactor == null) return; + if (transactor == null) + return; - for(int internalSlot = 0; internalSlot < _inventory.getSizeInventory(); internalSlot++) { + for (int internalSlot = 0; internalSlot < _inventory.getSizeInventory(); internalSlot++) { ItemStack stackInSlot = _inventory.getStackInSlot(internalSlot); - if(stackInSlot == null) continue; + if (stackInSlot == null) + continue; ItemStack clonedStack = stackInSlot.copy().splitStack(1); if (transactor.add(clonedStack, ForgeDirection.UP, true).stackSize > 0) { @@ -57,8 +60,9 @@ public class TileHopper extends TileBuildCraft implements IInventory { } } - /** IInventory Implementation **/ - + /** + * IInventory Implementation * + */ @Override public int getSizeInventory() { return _inventory.getSizeInventory(); @@ -96,7 +100,7 @@ public class TileHopper extends TileBuildCraft implements IInventory { @Override public boolean isUseableByPlayer(EntityPlayer entityPlayer) { - return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) == this; + return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) == this && entityPlayer.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64.0D; } @Override @@ -106,9 +110,9 @@ public class TileHopper extends TileBuildCraft implements IInventory { @Override public void closeChest() { } - - @Override - public boolean isStackValidForSlot(int i, ItemStack itemstack) { - return true; - } + + @Override + public boolean isStackValidForSlot(int i, ItemStack itemstack) { + return true; + } } diff --git a/common/buildcraft/transport/Pipe.java b/common/buildcraft/transport/Pipe.java index 6ff12ef2..5a41bb48 100644 --- a/common/buildcraft/transport/Pipe.java +++ b/common/buildcraft/transport/Pipe.java @@ -9,12 +9,10 @@ package buildcraft.transport; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import java.util.Random; -import java.util.Set; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; @@ -27,7 +25,6 @@ import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import buildcraft.BuildCraftCore; import buildcraft.BuildCraftTransport; -import buildcraft.api.core.BuildCraftAPI; import buildcraft.api.core.IIconProvider; import buildcraft.api.core.SafeTimeTracker; import buildcraft.api.gates.ActionManager; @@ -45,12 +42,8 @@ import buildcraft.transport.Gate.GateConditional; import buildcraft.transport.pipes.PipeLogic; import buildcraft.transport.triggers.ActionSignalOutput; -import com.google.common.base.Throwables; import com.google.common.collect.HashMultiset; -import com.google.common.collect.Iterables; -import com.google.common.collect.Maps; import com.google.common.collect.Multiset; -import com.google.common.collect.Sets; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/common/buildcraft/transport/pipes/PipePowerWood.java b/common/buildcraft/transport/pipes/PipePowerWood.java index ad84879c..f9cf19b2 100644 --- a/common/buildcraft/transport/pipes/PipePowerWood.java +++ b/common/buildcraft/transport/pipes/PipePowerWood.java @@ -7,18 +7,15 @@ */ package buildcraft.transport.pipes; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import buildcraft.BuildCraftTransport; import buildcraft.api.core.IIconProvider; import buildcraft.api.power.IPowerProvider; import buildcraft.api.power.IPowerReceptor; import buildcraft.api.power.PowerFramework; -import buildcraft.core.utils.Utils; import buildcraft.transport.Pipe; import buildcraft.transport.PipeIconProvider; import buildcraft.transport.PipeTransportPower; -import buildcraft.transport.TileGenericPipe; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -27,13 +24,15 @@ public class PipePowerWood extends Pipe implements IPowerReceptor { private IPowerProvider powerProvider; protected int standardIconIndex = PipeIconProvider.PipePowerWood_Standard; protected int solidIconIndex = PipeIconProvider.PipeAllWood_Solid; + private int[] powerSources = new int[6]; public PipePowerWood(int itemID) { super(new PipeTransportPower(), new PipeLogicWood(), itemID); powerProvider = PowerFramework.currentFramework.createPowerProvider(); - powerProvider.configure(50, 2, 1000, 1, 1000); + powerProvider.configure(50, 2, 1000, 1, 1500); powerProvider.configurePowerPerdition(1, 10); + ((PipeTransportPower) transport).maxPower = 32; } @Override @@ -77,35 +76,48 @@ public class PipePowerWood extends Pipe implements IPowerReceptor { if (worldObj.isRemote) return; + int sources = 0; for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) { - if (Utils.checkPipesConnections(container, container.getTile(o))) { - TileEntity tile = container.getTile(o); + if (!container.isPipeConnected(o)) { + powerSources[o.ordinal()] = 0; + continue; + } + if (powerSources[o.ordinal()] > 0) { + powerSources[o.ordinal()]--; + } + if (powerProvider.isPowerSource(o)) { + powerSources[o.ordinal()] = 40; + } + if (powerSources[o.ordinal()] > 0) { + sources++; + } + } - if (tile instanceof TileGenericPipe) { - if (((TileGenericPipe) tile).pipe == null) { - continue; // Null pointer protection - } + if (sources <= 0) + return; - PipeTransportPower trans = (PipeTransportPower) ((TileGenericPipe) tile).pipe.transport; + float energyToRemove; - float energyToRemove; + if (powerProvider.getEnergyStored() > 40) { + energyToRemove = powerProvider.getEnergyStored() / 40 + 4; + } else if (powerProvider.getEnergyStored() > 10) { + energyToRemove = powerProvider.getEnergyStored() / 10; + } else { + energyToRemove = 1; + } + energyToRemove /= (float) sources; - if (powerProvider.getEnergyStored() > 40) { - energyToRemove = powerProvider.getEnergyStored() / 40 + 4; - } else if (powerProvider.getEnergyStored() > 10) { - energyToRemove = powerProvider.getEnergyStored() / 10; - } else { - energyToRemove = 1; - } + PipeTransportPower trans = (PipeTransportPower) transport; - float energyUsable = powerProvider.useEnergy(1, energyToRemove, false); + for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) { + if (powerSources[o.ordinal()] <= 0) + continue; - float energySend = Math.min(energyUsable, ((PipeTransportPower) transport).powerQuery[o.ordinal()]); - if (energySend > 0) { - trans.receiveEnergy(o.getOpposite(), energySend); - powerProvider.useEnergy(1, energySend, true); - } - } + float energyUsable = powerProvider.useEnergy(1, energyToRemove, false); + + float energySend = (float) trans.receiveEnergy(o, energyUsable); + if (energySend > 0) { + powerProvider.useEnergy(1, energySend, true); } } }