2013-06-02 13:38:59 +10:00
|
|
|
package codechicken.multipart.minecraft;
|
|
|
|
|
|
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
|
import net.minecraftforge.common.ForgeDirection;
|
2013-07-24 15:32:46 +10:00
|
|
|
import codechicken.lib.vec.BlockCoord;
|
|
|
|
|
import codechicken.lib.vec.Vector3;
|
2013-08-12 13:35:12 +10:00
|
|
|
import codechicken.multipart.TFacePart;
|
2013-06-27 15:07:27 +10:00
|
|
|
import codechicken.multipart.TileMultipart;
|
2013-06-02 13:38:59 +10:00
|
|
|
|
2013-08-12 13:35:12 +10:00
|
|
|
public abstract class McSidedMetaPart extends McMetaPart implements TFacePart
|
2013-06-02 13:38:59 +10:00
|
|
|
{
|
|
|
|
|
public McSidedMetaPart()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public McSidedMetaPart(int meta)
|
|
|
|
|
{
|
|
|
|
|
super(meta);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public abstract int sideForMeta(int meta);
|
|
|
|
|
|
2013-06-26 16:48:47 +10:00
|
|
|
@Override
|
|
|
|
|
public void onNeighborChanged()
|
2013-06-02 13:38:59 +10:00
|
|
|
{
|
2013-06-06 17:25:24 +10:00
|
|
|
if(!world().isRemote)
|
2013-06-04 01:47:51 +10:00
|
|
|
dropIfCantStay();
|
|
|
|
|
}
|
|
|
|
|
|
2013-08-01 23:30:26 +10:00
|
|
|
public boolean canStay()
|
2013-06-04 01:47:51 +10:00
|
|
|
{
|
2013-09-29 11:35:44 +10:00
|
|
|
BlockCoord pos = new BlockCoord(tile()).offset(sideForMeta(meta));
|
2013-08-01 23:30:26 +10:00
|
|
|
return world().isBlockSolidOnSide(pos.x, pos.y, pos.z, ForgeDirection.getOrientation(sideForMeta(meta)^1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public boolean dropIfCantStay()
|
|
|
|
|
{
|
|
|
|
|
if(!canStay())
|
2013-06-02 13:38:59 +10:00
|
|
|
{
|
2013-06-04 01:47:51 +10:00
|
|
|
drop();
|
|
|
|
|
return true;
|
2013-06-02 13:38:59 +10:00
|
|
|
}
|
2013-06-04 01:47:51 +10:00
|
|
|
return false;
|
2013-06-02 13:38:59 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void drop()
|
|
|
|
|
{
|
2013-09-29 11:35:44 +10:00
|
|
|
TileMultipart.dropItem(new ItemStack(getBlock()), world(), Vector3.fromTileEntityCenter(tile()));
|
2013-09-29 11:33:02 +10:00
|
|
|
tile().remPart(this);
|
2013-06-02 13:38:59 +10:00
|
|
|
}
|
2013-08-12 13:35:12 +10:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int getSlotMask()
|
|
|
|
|
{
|
|
|
|
|
return 1<<sideForMeta(meta);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean solid(int side)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int redstoneConductionMap()
|
|
|
|
|
{
|
2013-08-25 18:48:18 +10:00
|
|
|
return 0x1F;
|
2013-08-12 13:35:12 +10:00
|
|
|
}
|
2013-06-02 13:38:59 +10:00
|
|
|
}
|