Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void veinMineBlock(Block b, Player p, int level) {
- List<Block> harvest = Lists.newArrayList();
- List<Block> tested = Lists.newArrayList();
- List<Block> untested = Lists.newArrayList();
- harvest.add(b);
- untested.add(b);
- List<BlockFace> faces = Lists.newArrayList(BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST, BlockFace.NORTH, BlockFace.UP, BlockFace.DOWN);
- while (true) {
- if ((harvest.size() >= 500)) {
- break;
- } else if (untested.size() == 0) {
- break;
- } else {
- List<Block> tempTest = Lists.newArrayList();
- tempTest.addAll(untested);
- for (Block block : tempTest) {
- if (tested.contains(block)) continue;
- for (BlockFace face : faces) {
- Block temp = block.getRelative(face);
- if (temp.getType().equals(b.getType())) {
- if(canBuild(p, b.getLocation().clone())){
- continue;
- }else {
- if (harvest.contains(temp)) continue;
- harvest.add(temp);
- if (!tested.contains(temp)) untested.add(temp);
- }
- }
- continue;
- }
- tested.add(block);
- untested.remove(block);
- }
- }
- }
- ItemStack item = p.getInventory().getItemInMainHand();
- int hunger = 0;
- int maxHunger = 25*level;
- for (Block block : harvest) {
- block.breakNaturally(item);
- if(level == 1) {
- Damageable damageable = (Damageable) item.getItemMeta();
- damageable.setDamage(damageable.getDamage() + 1);
- if (item.getType().getMaxDurability() > damageable.getDamage()) item.setItemMeta((ItemMeta) damageable);
- else {
- p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
- return;
- }
- }
- if(hunger == maxHunger){
- if(p.getFoodLevel() == 1){
- break;
- }
- p.setFoodLevel(p.getFoodLevel()-1);
- hunger = -1;
- }
- hunger++;
- }
- if(level == 2){
- Damageable damageable = (Damageable) item.getItemMeta();
- damageable.setDamage(damageable.getDamage() + 1);
- if (item.getType().getMaxDurability() > damageable.getDamage()) item.setItemMeta((ItemMeta) damageable);
- else {
- p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
- return;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement