block_remover.txt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. event.load("block_break");
  2. block_remover_max = 10000;
  3. air_material = material.get("AIR");
  4. @wait
  5. wait();
  6. if(player.getName(player) == "SirTerence7"){
  7. if(player.isSneaking(player) && player.isCreative(player)){
  8. block_to_destroy = block.getType(block);
  9. block_loc = block.getLocation(block);
  10. block_remover.get(block_loc);
  11. }
  12. }
  13. goto("wait");
  14. function block_remover.get(block_loc){
  15. c = 0;
  16. original_block_loc = block_loc;
  17. max_radius = 10;
  18. lava_counter = 0;
  19. $lava_locs = list.new();
  20. list.add($lava_locs, block_loc);
  21. while(list.getSize($lava_locs) != 0){
  22. c++;
  23. block_loc = list.getIndex($lava_locs, 0);
  24. list.removeIndex($lava_locs, 0);
  25. if(location_circle.distance(block_loc, original_block_loc) < max_radius){
  26. block_remover.add_block(loc.mod(block_loc,1,0,0));
  27. block_remover.add_block(loc.mod(block_loc,-1,0,0));
  28. block_remover.add_block(loc.mod(block_loc,0,1,0));
  29. block_remover.add_block(loc.mod(block_loc,0,-1,0));
  30. block_remover.add_block(loc.mod(block_loc,0,0,1));
  31. block_remover.add_block(loc.mod(block_loc,0,0,-1));
  32. lava_counter++;
  33. if(c > 100){
  34. waitfor(2);
  35. c = 0;
  36. }
  37. if(lava_counter > $block_remover_max - 1) {
  38. break;
  39. }
  40. }
  41. }
  42. }
  43. function block_remover.add_block(temp_loc){
  44. if(block.getType(block.get(temp_loc)) == $block_to_destroy){
  45. list.add($lava_locs, temp_loc);
  46. block.setMaterial(block.get(temp_loc), $air_material);
  47. }
  48. }
  49. function location_circle.distance(block_loc_1, block_loc_2){
  50. return(math.roundUp(math.sqrt(math.pow(loc.getX(block_loc_1)-loc.getX(block_loc_2),2)+math.pow(loc.getY(block_loc_1)-loc.getY(block_loc_2),2)+math.pow(loc.getZ(block_loc_1)-loc.getZ(block_loc_2),2))));
  51. }