harvest.txt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. event.load("block_break");
  2. event.load("block_drop");
  3. crops_tag = block.getTag("minecraft:crops");
  4. hoe_tag = item.getTag("km:hoe");
  5. auto_farm_set = set.new();
  6. set.add(auto_farm_set, "WHEAT_SEEDS");
  7. set.add(auto_farm_set, "CARROT");
  8. set.add(auto_farm_set, "POTATO");
  9. set.add(auto_farm_set, "BEETROOT_SEEDS");
  10. auto_farm_set2 = set.new();
  11. set.add(auto_farm_set2, material.get("WHEAT"));
  12. set.add(auto_farm_set2, material.get("CARROTS"));
  13. set.add(auto_farm_set2, material.get("POTATIES"));
  14. set.add(auto_farm_set2, material.get("BEETROOTS"));
  15. msg.string("dev", "§bHarvest §rloaded.");
  16. @wait
  17. wait();
  18. if(event == "block_drop") {
  19. loc = location;
  20. } else {
  21. loc = entity.getLocation(player);
  22. }
  23. world_name = world.getName(loc.getWorld(loc));
  24. if(world.isSurvName(world_name)) {
  25. ignoreGoto(event);
  26. }
  27. goto("wait");
  28. @block_break
  29. if(!block.hasTag(block, crops_tag)) {
  30. goto("wait");
  31. }
  32. block_type = block.getType(block_loc);
  33. if(!set.contains(auto_farm_set2, block_type)) {
  34. goto("wait");
  35. }
  36. if(player.checkHandsForTag(player, hoe_tag)) {
  37. cancel = false;
  38. }
  39. goto("wait");
  40. @block_drop
  41. item = living.getEquip(player, read.slot("HAND"));
  42. if(!block.hasTag(block, crops_tag)) {
  43. goto("wait");
  44. }
  45. if(!item.hasTag(item, hoe_tag)) {
  46. goto("wait");
  47. }
  48. for(i = 0; i < list.getSize(drops); i++) {
  49. drop_item_entity = list.getIndex(drops, i);
  50. drop_item = item.entity.get(drop_item_entity);
  51. if(set.contains(auto_farm_set, item.getType(drop_item))) {
  52. amount = item.getAmount(drop_item);
  53. if(amount > 0) {
  54. item.setAmount(drop_item, amount - 1);
  55. }
  56. }
  57. }
  58. block.setData(location, concat(block_type, "[age=0]"));
  59. player.damageItem(player, 1);
  60. goto("wait");