Files
ForgeMultipart/codechicken/multipart/minecraft/McSidedMetaPart.java
T

69 lines
1.5 KiB
Java
Raw Normal View History

2013-06-02 13:38:59 +10:00
package codechicken.multipart.minecraft;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.ForgeDirection;
import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Vector3;
import codechicken.multipart.TFacePart;
import codechicken.multipart.TileMultipart;
2013-06-02 13:38:59 +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);
@Override
public void onNeighborChanged()
2013-06-02 13:38:59 +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()));
tile().remPart(this);
2013-06-02 13:38:59 +10:00
}
@Override
public int getSlotMask()
{
return 1<<sideForMeta(meta);
}
@Override
public boolean solid(int side)
{
return false;
}
@Override
public int redstoneConductionMap()
{
return 0x1F;
}
2013-06-02 13:38:59 +10:00
}