From 5f2545d8e805670d292f6cb16e33897bdeb0e326 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Thu, 21 Nov 2013 20:31:28 -0500 Subject: [PATCH] A few fixes and new mechanics --- common/mekanism/common/RobitAIPickup.java | 29 +++++----------- .../mekanism/common/block/BlockMachine.java | 19 +++++++++++ .../common/tileentity/TileEntityBin.java | 6 ++++ .../tileentity/TileEntityDigitalMiner.java | 34 +++++++++---------- 4 files changed, 51 insertions(+), 37 deletions(-) diff --git a/common/mekanism/common/RobitAIPickup.java b/common/mekanism/common/RobitAIPickup.java index 84049e832..a24a4b785 100644 --- a/common/mekanism/common/RobitAIPickup.java +++ b/common/mekanism/common/RobitAIPickup.java @@ -48,45 +48,34 @@ public class RobitAIPickup extends EntityAIBase @Override public boolean shouldExecute() { - EntityPlayer player = theRobit.getOwner(); - - if(player == null) - { - return false; - } - if(!theRobit.getDropPickup()) { return false; } - else if(theRobit.worldObj.provider.dimensionId != player.worldObj.provider.dimensionId) - { - return false; - } - if(closest!=null&&closest.getDistanceSqToEntity(closest) > 100 && thePathfinder.getPathToXYZ(closest.posX, closest.posY, closest.posZ)!=null) + if(closest != null && closest.getDistanceSqToEntity(closest) > 100 && thePathfinder.getPathToXYZ(closest.posX, closest.posY, closest.posZ) != null) { return true; } List items = theRobit.worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(theRobit.posX-10, theRobit.posY-10, theRobit.posZ-10, theRobit.posX+10, theRobit.posY+10, theRobit.posZ+10)); - Iterator iter=items.iterator(); + Iterator iter = items.iterator(); //Cached for slight performance double closestDistance=-1; while(iter.hasNext()) { - EntityItem entity=(EntityItem) iter.next(); + EntityItem entity = (EntityItem)iter.next(); - double distance=theRobit.getDistanceToEntity(entity); + double distance = theRobit.getDistanceToEntity(entity); if(distance <= 10) { - if(closestDistance==-1||distance (100) && theRobit.getFollowing() && theRobit.getEnergy() > 0 && closest.worldObj.provider.dimensionId == theRobit.worldObj.provider.dimensionId; + return !closest.isDead && !thePathfinder.noPath() && theRobit.getDistanceSqToEntity(closest) > 100 && theRobit.getFollowing() && theRobit.getEnergy() > 0 && closest.worldObj.provider.dimensionId == theRobit.worldObj.provider.dimensionId; } @Override diff --git a/common/mekanism/common/block/BlockMachine.java b/common/mekanism/common/block/BlockMachine.java index 9c2d81659..db0139785 100644 --- a/common/mekanism/common/block/BlockMachine.java +++ b/common/mekanism/common/block/BlockMachine.java @@ -169,6 +169,25 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds } } + if(tileEntity instanceof TileEntityLogisticalSorter) + { + TileEntityLogisticalSorter transporter = (TileEntityLogisticalSorter)tileEntity; + + if(!world.isRemote && !transporter.hasInventory()) + { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = Object3D.get(transporter).getFromSide(dir).getTileEntity(world); + + if(tile instanceof IInventory) + { + transporter.setFacing((short)dir.getOpposite().ordinal()); + break; + } + } + } + } + tileEntity.setFacing((short)change); if(tileEntity instanceof IBoundingBlock) diff --git a/common/mekanism/common/tileentity/TileEntityBin.java b/common/mekanism/common/tileentity/TileEntityBin.java index a7d224038..cdf5aeeb2 100644 --- a/common/mekanism/common/tileentity/TileEntityBin.java +++ b/common/mekanism/common/tileentity/TileEntityBin.java @@ -8,9 +8,11 @@ import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; import mekanism.common.item.ItemBlockBasic; import mekanism.common.network.PacketTileEntity; +import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; import mekanism.common.util.TransporterUtils; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -174,6 +176,10 @@ public class TileEntityBin extends TileEntityBasicBlock implements ISidedInvento setInventorySlotContents(0, null); } } + else if(tile instanceof IInventory) + { + setInventorySlotContents(0, InventoryUtils.putStackInInventory((IInventory)tile, getStack(), 0, false)); + } } } } diff --git a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java index 2d530d422..3a98cd8ec 100644 --- a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java +++ b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java @@ -108,23 +108,6 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I { ChargeUtils.discharge(27, this); - if(doEject && getTopEject(false, null) != null && getEjectInv() != null) - { - if(getEjectInv() instanceof IInventory) - { - ItemStack remains = InventoryUtils.putStackInInventory((IInventory)getEjectInv(), getTopEject(false, null), ForgeDirection.getOrientation(facing).getOpposite().ordinal(), false); - - getTopEject(true, remains); - } - else if(getEjectInv() instanceof TileEntityLogisticalTransporter) - { - if(TransporterUtils.insert(getEjectTile(), (TileEntityLogisticalTransporter)getEjectInv(), getTopEject(false, null), null)) - { - getTopEject(true, null); - } - } - } - if(running && getEnergy() >= MekanismUtils.getEnergyPerTick(getSpeedMultiplier(), getEnergyMultiplier(), ENERGY_USAGE) && searcher.state == State.FINISHED && oresToMine.size() > 0) { setActive(true); @@ -198,6 +181,23 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I } } + if(doEject && getTopEject(false, null) != null && getEjectInv() != null) + { + if(getEjectInv() instanceof IInventory) + { + ItemStack remains = InventoryUtils.putStackInInventory((IInventory)getEjectInv(), getTopEject(false, null), ForgeDirection.getOrientation(facing).getOpposite().ordinal(), false); + + getTopEject(true, remains); + } + else if(getEjectInv() instanceof TileEntityLogisticalTransporter) + { + if(TransporterUtils.insert(getEjectTile(), (TileEntityLogisticalTransporter)getEjectInv(), getTopEject(false, null), null)) + { + getTopEject(true, null); + } + } + } + if(playersUsing.size() > 0) { for(EntityPlayer player : playersUsing)