Advertisement
Guest User

ItemFancyBed

a guest
Dec 11th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.38 KB | None | 0 0
  1. public class ItemFancyBed extends ItemBed implements IHasModel {
  2.  
  3.     public ItemFancyBed(String name)
  4.     {
  5.         setUnlocalizedName(name);
  6.         setRegistryName(name);
  7.         setCreativeTab(CreativeTabs.MISC);
  8.         ModItems.ITEMS.add(this);
  9.     }
  10.      
  11.     @Override
  12.       public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
  13.         {
  14.             if (worldIn.isRemote)
  15.             {
  16.                 return EnumActionResult.SUCCESS;
  17.             }
  18.             else if (facing != EnumFacing.UP)
  19.             {
  20.                 return EnumActionResult.FAIL;
  21.             }
  22.             else
  23.             {
  24.                 IBlockState iblockstate = worldIn.getBlockState(pos);
  25.                 Block block = iblockstate.getBlock();
  26.                 boolean flag = block.isReplaceable(worldIn, pos);
  27.  
  28.                 if (!flag)
  29.                 {
  30.                     pos = pos.up();
  31.                 }
  32.  
  33.                 int i = MathHelper.floor((double)(player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
  34.                 EnumFacing enumfacing = EnumFacing.getHorizontal(i);
  35.                 BlockPos blockpos = pos.offset(enumfacing);
  36.                 ItemStack itemstack = player.getHeldItem(hand);
  37.  
  38.                 if (player.canPlayerEdit(pos, facing, itemstack) && player.canPlayerEdit(blockpos, facing, itemstack))
  39.                 {
  40.                     IBlockState iblockstate1 = worldIn.getBlockState(blockpos);
  41.                     boolean flag1 = iblockstate1.getBlock().isReplaceable(worldIn, blockpos);
  42.                     boolean flag2 = flag || worldIn.isAirBlock(pos);
  43.                     boolean flag3 = flag1 || worldIn.isAirBlock(blockpos);
  44.  
  45.                     if (flag2 && flag3 && worldIn.getBlockState(pos.down()).isTopSolid() && worldIn.getBlockState(blockpos.down()).isTopSolid())
  46.                     {  
  47.                         IBlockState iblockstate2 = ModBlocks.BLOCK_FANCY_BED.getDefaultState().withProperty(BlockFancyBed.OCCUPIED, Boolean.valueOf(false)).withProperty(BlockFancyBed.FACING, enumfacing).withProperty(BlockFancyBed.PART, BlockFancyBed.EnumPartType.FOOT).withProperty(BlockFancyBed.COLOR,EnumDyeColor.byMetadata(itemstack.getMetadata()));                       
  48.                         worldIn.setBlockState(pos, iblockstate2, 11);
  49.                         worldIn.setBlockState(blockpos, iblockstate2.withProperty(BlockFancyBed.PART, BlockFancyBed.EnumPartType.HEAD) , 11);
  50.                         SoundType soundtype = iblockstate2.getBlock().getSoundType(iblockstate2, worldIn, pos, player);
  51.                         worldIn.playSound((EntityPlayer)null, pos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F);
  52.                         TileEntity tileentity = worldIn.getTileEntity(blockpos);
  53.  
  54.                         if (tileentity instanceof TileEntityFancyBed)
  55.                         {
  56.                             TileEntityFancyBed te = (TileEntityFancyBed)tileentity;
  57.                             te.setItemValues(itemstack);
  58.                         }
  59.  
  60.                         TileEntity tileentity1 = worldIn.getTileEntity(pos);
  61.  
  62.                         if (tileentity1 instanceof TileEntityFancyBed)
  63.                         {
  64.                              TileEntityFancyBed te1 = (TileEntityFancyBed)tileentity1;
  65.                             te1.setItemValues(itemstack);
  66.                         }
  67.  
  68.  
  69.                         worldIn.notifyNeighborsRespectDebug(pos, block, false);
  70.                         worldIn.notifyNeighborsRespectDebug(blockpos, iblockstate1.getBlock(), false);
  71.  
  72.                         if (player instanceof EntityPlayerMP)
  73.                         {
  74.                             CriteriaTriggers.PLACED_BLOCK.trigger((EntityPlayerMP)player, pos, itemstack);
  75.                         }
  76.  
  77.                         itemstack.shrink(1);
  78.                         return EnumActionResult.SUCCESS;
  79.                     }
  80.                     else
  81.                     {
  82.                         return EnumActionResult.FAIL;
  83.                     }
  84.                 }
  85.                 else
  86.                 {
  87.                     return EnumActionResult.FAIL;
  88.                 }
  89.             }
  90.         }
  91.  
  92.     @Override
  93.     public String getUnlocalizedName(ItemStack stack)
  94.     {
  95.         return super.getUnlocalizedName() + "_" + EnumDyeColor.byMetadata(stack.getMetadata()).getUnlocalizedName();
  96.     }
  97.    
  98.     private static void registerMetaRender(Item item, int meta, String file){
  99.         ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(Reference.MOD_ID + ":" + file));
  100.     }
  101.    
  102.     @Override
  103.     public void registerModels() {
  104.         registerMetaRender(this, 0, "item_fancy_bed_white");
  105.         registerMetaRender(this, 1, "item_fancy_bed_orange");
  106.         registerMetaRender(this, 2, "item_fancy_bed_magenta");
  107.         registerMetaRender(this, 3, "item_fancy_bed_light_blue");
  108.         registerMetaRender(this, 4, "item_fancy_bed_yellow");
  109.         registerMetaRender(this, 5, "item_fancy_bed_lime");
  110.         registerMetaRender(this, 6, "item_fancy_bed_pink");
  111.         registerMetaRender(this, 7, "item_fancy_bed_gray");
  112.         registerMetaRender(this, 8, "item_fancy_bed_silver");
  113.         registerMetaRender(this, 9, "item_fancy_bed_cyan");
  114.         registerMetaRender(this, 10, "item_fancy_bed_purple");
  115.         registerMetaRender(this, 11, "item_fancy_bed_blue");
  116.         registerMetaRender(this, 12, "item_fancy_bed_brown");
  117.         registerMetaRender(this, 13, "item_fancy_bed_green");
  118.         registerMetaRender(this, 14, "item_fancy_bed_red");
  119.         registerMetaRender(this, 15, "item_fancy_bed_black");
  120.     }
  121.    
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement