Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.13 KB | None | 0 0
  1. public void veinMineBlock(Block b, Player p, int level) {
  2.         List<Block> harvest = Lists.newArrayList();
  3.         List<Block> tested = Lists.newArrayList();
  4.         List<Block> untested = Lists.newArrayList();
  5.         harvest.add(b);
  6.         untested.add(b);
  7.         List<BlockFace> faces = Lists.newArrayList(BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST, BlockFace.NORTH, BlockFace.UP, BlockFace.DOWN);
  8.         while (true) {
  9.             if ((harvest.size() >= 500)) {
  10.                 break;
  11.             } else if (untested.size() == 0) {
  12.                 break;
  13.             } else {
  14.                 List<Block> tempTest = Lists.newArrayList();
  15.                 tempTest.addAll(untested);
  16.                 for (Block block : tempTest) {
  17.                     if (tested.contains(block)) continue;
  18.                     for (BlockFace face : faces) {
  19.                         Block temp = block.getRelative(face);
  20.                         if (temp.getType().equals(b.getType())) {
  21.                             if(canBuild(p, b.getLocation().clone())){
  22.                                 continue;
  23.                             }else {
  24.                                 if (harvest.contains(temp)) continue;
  25.                                 harvest.add(temp);
  26.                                 if (!tested.contains(temp)) untested.add(temp);
  27.                             }
  28.                         }
  29.                         continue;
  30.                     }
  31.                     tested.add(block);
  32.                     untested.remove(block);
  33.                 }
  34.             }
  35.         }
  36.         ItemStack item = p.getInventory().getItemInMainHand();
  37.         int hunger = 0;
  38.         int maxHunger = 25*level;
  39.         for (Block block : harvest) {
  40.             block.breakNaturally(item);
  41.             if(level == 1) {
  42.                 Damageable damageable = (Damageable) item.getItemMeta();
  43.                 damageable.setDamage(damageable.getDamage() + 1);
  44.                 if (item.getType().getMaxDurability() > damageable.getDamage()) item.setItemMeta((ItemMeta) damageable);
  45.                 else {
  46.                     p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
  47.                     return;
  48.                 }
  49.             }
  50.             if(hunger == maxHunger){
  51.                 if(p.getFoodLevel() == 1){
  52.                     break;
  53.                 }
  54.                 p.setFoodLevel(p.getFoodLevel()-1);
  55.                 hunger = -1;
  56.             }
  57.             hunger++;
  58.         }
  59.         if(level == 2){
  60.             Damageable damageable = (Damageable) item.getItemMeta();
  61.             damageable.setDamage(damageable.getDamage() + 1);
  62.             if (item.getType().getMaxDurability() > damageable.getDamage()) item.setItemMeta((ItemMeta) damageable);
  63.             else {
  64.                 p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
  65.                 return;
  66.             }
  67.         }
  68.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement