@Override public void breakBlock(final Block block, final Player player, final ItemStack is) { final List drops = this.getDrops(block, is); DropUtil.addItemsToPlayer(player, drops, block); DropUtil.recalculateDurability(player, is); block.setType(Material.AIR); } public List getDrops(final Block block, final ItemStack item) { final List items = new ArrayList(); final Material type = block.getType(); int amount = 1; short data = block.getData(); switch (type) { case NETHER_WARTS: { final NetherWarts warts = (NetherWarts)block.getState().getData(); amount = (warts.getState().equals((Object)NetherWartsState.RIPE) ? (RandomUtil.getRandInt(0, 2) + 2) : 1); items.add(new ItemStack(Material.NETHER_STALK, amount)); break; } case COCOA: { final CocoaPlant plant = (CocoaPlant)block.getState().getData(); amount = (plant.getSize().equals((Object)CocoaPlant.CocoaPlantSize.LARGE) ? 3 : 1); items.add(new ItemStack(Material.INK_SACK, amount, (short)3)); break; } case PUMPKIN_STEM: { items.add(new ItemStack(Material.PUMPKIN_SEEDS, 1)); break; } case MELON_STEM: { items.add(new ItemStack(Material.MELON_SEEDS, 1)); break; } case CARROT: { data = block.getState().getData().getData(); switch (data) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: { amount = 1; break; } case 7: { amount = RandomUtil.getRandInt(1, 3); break; } } items.add(new ItemStack(Material.CARROT_ITEM, amount)); break; } case POTATO: { data = block.getState().getData().getData(); switch (data) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: { amount = 1; break; } case 7: { amount = RandomUtil.getRandInt(1, 3); break; } } items.add(new ItemStack(Material.POTATO_ITEM, amount)); break; } case CROPS: { final Crops wheat = (Crops)block.getState().getData(); int seedamount = 1; if (wheat.getState() == CropState.RIPE) { items.add(new ItemStack(Material.WHEAT, RandomUtil.getRandInt(1, 2))); seedamount = 1 + RandomUtil.getRandInt(0, 2); } items.add(new ItemStack(Material.SEEDS, seedamount)); break; } case SUGAR_CANE_BLOCK: { amount = 1; items.add(new ItemStack(Material.SUGAR_CANE, amount)); break; } case DOUBLE_PLANT: case REDSTONE_WIRE: case WOODEN_DOOR: case IRON_DOOR: case TRIPWIRE: case LEVER: case WOOD_BUTTON: case STONE_BUTTON: case DIODE_BLOCK_ON: case DIODE_BLOCK_OFF: case REDSTONE_COMPARATOR_OFF: case REDSTONE_COMPARATOR_ON: case DAYLIGHT_DETECTOR: case REDSTONE_ORE: { items.addAll(block.getDrops(item)); break; } default: { if (item.containsEnchantment(Enchantment.SILK_TOUCH) && block.getType().isBlock()) { items.add(new ItemStack(block.getType(), 1, (short)block.getData())); break; } items.addAll(block.getDrops(item)); break; } } return items; } @Override public DropType getDropType() { return DropType.NORMAL_DROP; } }