Mimic block selection box now mimics the mimic'ed block's selection box

Say that 5 times fast
This commit is contained in:
Nicholas Ignoffo 2016-08-14 12:32:21 -07:00
parent a38d9b435b
commit e3bb9f20bf

View file

@ -21,6 +21,8 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
@ -48,11 +50,24 @@ public class BlockMimic extends BlockStringContainer implements IVariantProvider
} }
@Nullable @Nullable
public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos) public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World world, BlockPos pos)
{ {
return NULL_AABB; return NULL_AABB;
} }
@Override
@SideOnly(Side.CLIENT)
public AxisAlignedBB getSelectedBoundingBox(IBlockState state, World world, BlockPos pos) {
TileMimic tileMimic = (TileMimic) world.getTileEntity(pos);
if (tileMimic != null && tileMimic.getStackInSlot(0) != null) {
Block mimicBlock = Block.getBlockFromItem(tileMimic.getStackInSlot(0).getItem());
IBlockState mimicState = mimicBlock.getStateFromMeta(tileMimic.getStackInSlot(0).getItemDamage());
return mimicState.getSelectedBoundingBox(world, pos);
}
return FULL_BLOCK_AABB;
}
@Override @Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ)
{ {
@ -61,6 +76,12 @@ public class BlockMimic extends BlockStringContainer implements IVariantProvider
if (mimic == null || player.isSneaking()) if (mimic == null || player.isSneaking())
return false; return false;
if (player.getHeldItem(hand) != null && player.getHeldItem(hand).getItem() == new ItemStack(this).getItem())
return false;
if (mimic.getStackInSlot(0) != null && player.getHeldItem(hand) != null)
return false;
Utils.insertItemToTile(mimic, player); Utils.insertItemToTile(mimic, player);
world.notifyBlockUpdate(pos, state, state, 3); world.notifyBlockUpdate(pos, state, state, 3);