package minestrapteam.mods.minestrappolation.item.blocks; import minestrapteam.mods.minestrappolation.block.BlockMDoubleSlab; import minestrapteam.mods.minestrappolation.block.BlockMSlab; import net.minecraft.block.Block; import net.minecraft.block.BlockSlab; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class ItemBlockMSlab extends ItemBlock { private final BlockSlab slab; private final BlockSlab double_slab; public ItemBlockMSlab(Block p_i45782_1_, BlockMSlab slab, BlockMDoubleSlab double_slab) { super(p_i45782_1_); this.slab = slab; this.double_slab = double_slab; this.setMaxDamage(0); this.setHasSubtypes(true); } @Override public int getMetadata(int damage) { return damage; } @Override public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { if (stack.stackSize == 0) { return false; } else if (!playerIn.canPlayerEdit(pos.offset(side), side, stack)) { return false; } else { Object object = this.slab.getVariant(stack); IBlockState iblockstate = worldIn.getBlockState(pos); if (iblockstate.getBlock() == this.slab) { BlockSlab.EnumBlockHalf enumblockhalf = iblockstate.getValue(BlockSlab.HALF); if ((side == EnumFacing.UP && enumblockhalf == BlockSlab.EnumBlockHalf.BOTTOM || side == EnumFacing.DOWN && enumblockhalf == BlockSlab.EnumBlockHalf.TOP)) { IBlockState iblockstate1 = this.double_slab.getDefaultState(); if (worldIn.checkNoEntityCollision( this.double_slab.getCollisionBoundingBox(worldIn, pos, iblockstate1)) && worldIn .setBlockState(pos, iblockstate1, 3)) { worldIn .playSoundEffect((double) ((float) pos.getX() + 0.5F), (double) ((float) pos.getY() + 0.5F), (double) ((float) pos.getZ() + 0.5F), this.double_slab.stepSound.getPlaceSound(), (this.double_slab.stepSound.getVolume() + 1.0F) / 2.0F, this.double_slab.stepSound.getFrequency() * 0.8F); --stack.stackSize; } return true; } } return this.func_180615_a(stack, worldIn, pos.offset(side), object) || super.onItemUse(stack, playerIn, worldIn, pos, side, hitX, hitY, hitZ); } } @Override @SideOnly(Side.CLIENT) public boolean canPlaceBlockOnSide(World worldIn, BlockPos p_179222_2_, EnumFacing p_179222_3_, EntityPlayer p_179222_4_, ItemStack p_179222_5_) { BlockPos blockpos1 = p_179222_2_; Object object = this.slab.getVariant(p_179222_5_); IBlockState iblockstate = worldIn.getBlockState(p_179222_2_); if (iblockstate.getBlock() == this.slab) { boolean flag = iblockstate.getValue(BlockSlab.HALF) == BlockSlab.EnumBlockHalf.TOP; if ((p_179222_3_ == EnumFacing.UP && !flag || p_179222_3_ == EnumFacing.DOWN && flag)) { return true; } } p_179222_2_ = p_179222_2_.offset(p_179222_3_); IBlockState iblockstate1 = worldIn.getBlockState(p_179222_2_); return iblockstate1.getBlock() == this.slab || super.canPlaceBlockOnSide(worldIn, blockpos1, p_179222_3_, p_179222_4_, p_179222_5_); } private boolean func_180615_a(ItemStack p_180615_1_, World worldIn, BlockPos p_180615_3_, Object p_180615_4_) { IBlockState iblockstate = worldIn.getBlockState(p_180615_3_); if (iblockstate.getBlock() == this.slab) { IBlockState iblockstate1 = this.double_slab.getDefaultState(); if (worldIn.checkNoEntityCollision( this.double_slab.getCollisionBoundingBox(worldIn, p_180615_3_, iblockstate1)) && worldIn.setBlockState( p_180615_3_, iblockstate1, 3)) { worldIn.playSoundEffect((double) ((float) p_180615_3_.getX() + 0.5F), (double) ((float) p_180615_3_.getY() + 0.5F), (double) ((float) p_180615_3_.getZ() + 0.5F), this.double_slab.stepSound.getPlaceSound(), (this.double_slab.stepSound.getVolume() + 1.0F) / 2.0F, this.double_slab.stepSound.getFrequency() * 0.8F); --p_180615_1_.stackSize; } return true; } return false; } }