This commit is contained in:
Calclavia 2013-08-03 13:18:39 -04:00
commit c9780a6ac4
2 changed files with 65 additions and 3 deletions

View file

@ -3,6 +3,7 @@ package resonantinduction.contractor;
import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
@ -30,8 +31,21 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider
@Override @Override
public void onBlockAdded(World world, int x, int y, int z) public void onBlockAdded(World world, int x, int y, int z)
{ {
TileEntityEMContractor tileEntity = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z);
tileEntity.updateBounds(); tileContractor.updateBounds();
if(!tileContractor.isLatched())
{
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity tileEntity = world.getBlockTileEntity(x+side.offsetX, y+side.offsetY, z+side.offsetZ);
if(tileEntity instanceof IInventory)
{
tileContractor.setFacing(side.getOpposite());
}
}
}
} }
@Override @Override
@ -50,6 +64,25 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider
return true; return true;
} }
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int blockID)
{
TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z);
if(!tileContractor.isLatched())
{
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity tileEntity = world.getBlockTileEntity(x+side.offsetX, y+side.offsetY, z+side.offsetZ);
if(tileEntity instanceof IInventory)
{
tileContractor.setFacing(side.getOpposite());
}
}
}
}
@Override @Override
public TileEntity createNewTileEntity(World world) public TileEntity createNewTileEntity(World world)
{ {

View file

@ -4,6 +4,7 @@ import java.util.List;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
@ -17,6 +18,8 @@ public class TileEntityEMContractor extends TileEntity
private ForgeDirection facing = ForgeDirection.UP; private ForgeDirection facing = ForgeDirection.UP;
public int pushDelay;
public AxisAlignedBB operationBounds; public AxisAlignedBB operationBounds;
/** /**
@ -27,6 +30,13 @@ public class TileEntityEMContractor extends TileEntity
@Override @Override
public void updateEntity() public void updateEntity()
{ {
pushDelay = Math.max(0, pushDelay--);
if(!suck && pushDelay == 0)
{
}
if(operationBounds != null) if(operationBounds != null)
{ {
List<Entity> list = worldObj.getEntitiesWithinAABB(Entity.class, operationBounds); List<Entity> list = worldObj.getEntitiesWithinAABB(Entity.class, operationBounds);
@ -184,10 +194,24 @@ public class TileEntityEMContractor extends TileEntity
} }
} }
public boolean isLatched()
{
ForgeDirection side = facing.getOpposite();
TileEntity tile = worldObj.getBlockTileEntity(xCoord+facing.offsetX, yCoord+facing.offsetY, zCoord+facing.offsetZ);
if(tile instanceof IInventory)
{
return true;
}
return false;
}
public void incrementFacing() public void incrementFacing()
{ {
int newOrdinal = facing.ordinal() < 5 ? facing.ordinal()+1 : 0; int newOrdinal = facing.ordinal() < 5 ? facing.ordinal()+1 : 0;
facing = ForgeDirection.getOrientation(newOrdinal); setFacing(ForgeDirection.getOrientation(newOrdinal));
updateBounds(); updateBounds();
} }
@ -197,6 +221,11 @@ public class TileEntityEMContractor extends TileEntity
return facing; return facing;
} }
public void setFacing(ForgeDirection side)
{
facing = side;
}
@Override @Override
public void readFromNBT(NBTTagCompound nbtTags) public void readFromNBT(NBTTagCompound nbtTags)
{ {