Facebook
From Hot Iguana, 8 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 407
  1.     @Override
  2.     public void breakBlock(final Block block, final Player player, final ItemStack is) {
  3.         final List<ItemStack> drops = this.getDrops(block, is);
  4.         DropUtil.addItemsToPlayer(player, drops, block);
  5.         DropUtil.recalculateDurability(player, is);
  6.         block.setType(Material.AIR);
  7.     }
  8.    
  9.     public List<ItemStack> getDrops(final Block block, final ItemStack item) {
  10.         final List<ItemStack> items = new ArrayList<ItemStack>();
  11.         final Material type = block.getType();
  12.         int amount = 1;
  13.         short data = block.getData();
  14.         switch (type) {
  15.             case NETHER_WARTS: {
  16.                 final NetherWarts warts = (NetherWarts)block.getState().getData();
  17.                 amount = (warts.getState().equals((Object)NetherWartsState.RIPE) ? (RandomUtil.getRandInt(0, 2) + 2) : 1);
  18.                 items.add(new ItemStack(Material.NETHER_STALK, amount));
  19.                 break;
  20.             }
  21.             case COCOA: {
  22.                 final CocoaPlant plant = (CocoaPlant)block.getState().getData();
  23.                 amount = (plant.getSize().equals((Object)CocoaPlant.CocoaPlantSize.LARGE) ? 3 : 1);
  24.                 items.add(new ItemStack(Material.INK_SACK, amount, (short)3));
  25.                 break;
  26.             }
  27.             case PUMPKIN_STEM: {
  28.                 items.add(new ItemStack(Material.PUMPKIN_SEEDS, 1));
  29.                 break;
  30.             }
  31.             case MELON_STEM: {
  32.                 items.add(new ItemStack(Material.MELON_SEEDS, 1));
  33.                 break;
  34.             }
  35.             case CARROT: {
  36.                 data = block.getState().getData().getData();
  37.                 switch (data) {
  38.                     case 0:
  39.                     case 1:
  40.                     case 2:
  41.                     case 3:
  42.                     case 4:
  43.                     case 5:
  44.                     case 6: {
  45.                         amount = 1;
  46.                         break;
  47.                     }
  48.                     case 7: {
  49.                         amount = RandomUtil.getRandInt(1, 3);
  50.                         break;
  51.                     }
  52.                 }
  53.                 items.add(new ItemStack(Material.CARROT_ITEM, amount));
  54.                 break;
  55.             }
  56.             case POTATO: {
  57.                 data = block.getState().getData().getData();
  58.                 switch (data) {
  59.                     case 0:
  60.                     case 1:
  61.                     case 2:
  62.                     case 3:
  63.                     case 4:
  64.                     case 5:
  65.                     case 6: {
  66.                         amount = 1;
  67.                         break;
  68.                     }
  69.                     case 7: {
  70.                         amount = RandomUtil.getRandInt(1, 3);
  71.                         break;
  72.                     }
  73.                 }
  74.                 items.add(new ItemStack(Material.POTATO_ITEM, amount));
  75.                 break;
  76.             }
  77.             case CROPS: {
  78.                 final Crops wheat = (Crops)block.getState().getData();
  79.                 int seedamount = 1;
  80.                 if (wheat.getState() == CropState.RIPE) {
  81.                     items.add(new ItemStack(Material.WHEAT, RandomUtil.getRandInt(1, 2)));
  82.                     seedamount = 1 + RandomUtil.getRandInt(0, 2);
  83.                 }
  84.                 items.add(new ItemStack(Material.SEEDS, seedamount));
  85.                 break;
  86.             }
  87.             case SUGAR_CANE_BLOCK: {
  88.                 amount = 1;
  89.                 items.add(new ItemStack(Material.SUGAR_CANE, amount));
  90.                 break;
  91.             }
  92.             case DOUBLE_PLANT:
  93.             case REDSTONE_WIRE:
  94.             case WOODEN_DOOR:
  95.             case IRON_DOOR:
  96.             case TRIPWIRE:
  97.             case LEVER:
  98.             case WOOD_BUTTON:
  99.             case STONE_BUTTON:
  100.             case DIODE_BLOCK_ON:
  101.             case DIODE_BLOCK_OFF:
  102.             case REDSTONE_COMPARATOR_OFF:
  103.             case REDSTONE_COMPARATOR_ON:
  104.             case DAYLIGHT_DETECTOR:
  105.             case REDSTONE_ORE: {
  106.                 items.addAll(block.getDrops(item));
  107.                 break;
  108.             }
  109.             default: {
  110.                 if (item.containsEnchantment(Enchantment.SILK_TOUCH) && block.getType().isBlock()) {
  111.                     items.add(new ItemStack(block.getType(), 1, (short)block.getData()));
  112.                     break;
  113.                 }
  114.                 items.addAll(block.getDrops(item));
  115.                 break;
  116.             }
  117.         }
  118.         return items;
  119.     }
  120.    
  121.     @Override
  122.     public DropType getDropType() {
  123.         return DropType.NORMAL_DROP;
  124.     }
  125. }
  126.