Energyxxer

Lumberjack Villagers CPM Project by Energyxxer

Aug 19th, 2016
1,307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 52.77 KB | None | 0 0
  1. ::section config
  2. name: Lumberjack Villagers
  3. #
  4. #
  5. # GAME VERSION:
  6. # Set this to the version you want to use this in:
  7.  
  8. version: 1.11
  9.  
  10. # (1.10 / 1.11)
  11. #
  12. #
  13. #
  14. #
  15. #
  16. #
  17. # SETTINGS:
  18. #
  19. # If true, Lumberjack villagers will have a green robe. 1.11 only.
  20.  
  21. use-green-villager: true
  22.  
  23. # (true / false)
  24. #
  25. #
  26. #
  27. #
  28. #
  29. #
  30. #
  31. #
  32. #
  33. #
  34. shape:box
  35.  
  36. enable-math:true
  37. angle-unit:degrees
  38.  
  39. update-gamerules:true
  40. fix-entities-1.11: true
  41.  
  42. max-length:3
  43. max-height:8
  44.  
  45. x-offset:3
  46. y-offset:2
  47. z-offset:-1
  48.  
  49. include-success:false
  50.  
  51. ::section before
  52. fill ~3 ~-2 ~-1 ~32 ~8 ~1 minecraft:quartz_block
  53. fill ~4 ~-2 ~-2 ~31 ~8 ~2 minecraft:quartz_block
  54. fill ~4 ~-1 ~-2 ~31 ~7 ~2 minecraft:stained_glass 13
  55. fill ~4 ~ ~-1 ~31 ~7 ~1 minecraft:air
  56. fill ~4 ~-1 ~-2 ~31 ~-1 ~2 minecraft:quartz_block
  57. fill ~4 ~ ~-1 ~31 ~ ~1 minecraft:carpet
  58. fill ~4 ~-1 ~-1 ~31 ~-1 ~1 minecraft:stained_hardened_clay
  59. fill ~4 ~-2 ~-1 ~31 ~-2 ~1 minecraft:redstone_lamp
  60. fill ~3 ~-2 ~ ~32 ~8 ~ minecraft:stained_hardened_clay 9 replace quartz_block
  61.  
  62. ::section randomisation
  63.  
  64. $shortcut breakTime 16
  65.  
  66. $shortcut randomNBT CustomName:lv_random,PickupDelay:32767s,Item:{id:minecraft:stone_button,Count:1b},Tags:[lv_kill]
  67.  
  68. :R!: scoreboard players tag @e[type=Villager,name=Villager,tag=] add lv_marked {Profession:3,Age:0}
  69.  
  70. execute @e[type=Villager,tag=lv_marked] ~ ~ ~ summon Item ~ ~ ~ {$s randomNBT;,Tags:["true","lv_kill"],Passengers:[{id:Item,$s randomNBT;}]}
  71. execute @e[type=Villager,tag=lv_marked] ~ ~ ~ kill @r[type=Item,name=lv_random,r=1,c=1]
  72. execute @e[type=Item,name=lv_random,tag=true] ~ ~ ~ entitydata @e[type=Villager,tag=lv_marked,r=1,c=1] {CustomName:Lumberjack,Tags:["lv_init"]}
  73. entitydata @e[type=Villager,tag=lv_marked] {Tags:["lv_checked"]}
  74.  
  75. scoreboard players set @e[type=Villager,name=Lumberjack,tag=lv_init] lv_state 0
  76. scoreboard players set @e[type=Villager,name=Lumberjack,tag=lv_init] lv_logs 16
  77. scoreboard players set @e[type=Villager,name=Lumberjack,tag=lv_init] lv_saplings 16
  78. scoreboard players set @e[type=Villager,name=Lumberjack,tag=lv_init] lv_treeType 0
  79. entitydata @e[type=Villager,name=Lumberjack,tag=lv_init] {Offers:{Recipes:[{maxUses:1,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:log,Count:12}},{maxUses:1,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:sapling,Count:9b,Damage:0s}}]}}
  80. :CONDITION: use-green-villager = true
  81. entitydata @e[type=villager,name=Lumberjack,tag=lv_init] {Profession:5}
  82. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_init] remove lv_init
  83.  
  84. ::section helper_tags
  85. :R!: scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_OnGround] remove lv_OnGround
  86. scoreboard players tag @e[type=Villager,name=Lumberjack] add lv_OnGround {OnGround:1b}
  87. tp @e[tag=lv_kill] ~ -512 ~
  88. scoreboard players add @e[type=Villager,name=Lumberjack] lv_state 0
  89.  
  90. #
  91. # LUMBERJACK STATES
  92. # 0 = Idle
  93. # 1 = Transition to Searching (0-tick)
  94. # 2 = Searching (Holding axe) (Wolf AI)
  95. # 3 = Transition to Chopping (0-tick)
  96. # 4 = Chopping (Holding axe)
  97. # 5 = Pillar down
  98. # 6 = Transition to Idle (200-tick)
  99. #
  100. #
  101.  
  102. ::section states
  103. #STATE 1
  104. :R!: execute @e[type=Villager,name=Lumberjack,score_lv_state==1] ~ ~ ~ summon Wolf ~ ~ ~ {CustomName:LumberjackAI,Invulnerable:1b,ActiveEffects:[{Id:14,Duration:10000000,Amplifier:0,ShowParticles:0b}],Team:"lv_AI",Silent:1b,Attributes:[{Name:generic.followRange,Base:80}]}
  105. execute @e[type=Villager,name=Lumberjack,score_lv_state==1] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:lv_axe,NoGravity:1b,Marker:1b,Invisible:1b,DisabledSlots:31,Silent:1b,HandItems:[{id:minecraft:iron_axe,Count:1b}],Pose:{RightArm:[-30.0f,0.0f,0.0f]},Marker:1b}
  106. execute @e[type=Villager,name=Lumberjack,score_lv_state==1] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,r=80,c=1] ~ ~ ~ summon Rabbit ~ ~-1 ~ {CustomName:"lv_lumberjackLure",NoGravity:1b,NoAI:1b,Invulnerable:1b,ActiveEffects:[{Id:14,Duration:10000000,Amplifier:0,ShowParticles:0b}]}
  107. execute @e[type=ArmorStand,name=lv_tree] ~ ~ ~ teleport @e[type=Rabbit,name=lv_lumberjackLure,r=4,c=1] ~ ~-1 ~
  108. entitydata @e[type=Villager,name=Lumberjack,score_lv_state==1] {NoAI:1b}
  109. entitydata @e[type=Villager,name=Lumberjack,score_lv_state==6] {NoAI:0b}
  110. scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==1] lv_state 2
  111.  
  112. #STATE 2
  113. execute @e[type=Wolf,name=LumberjackAI] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,score_lv_state==2,r=5,c=1] @e[type=Wolf,name=LumberjackAI,r=0,c=1]
  114. execute @e[type=Wolf,name=LumberjackAI] ~ ~ ~ tp @e[type=ArmorStand,name=lv_axe,r=5,c=1] @e[type=Villager,name=Lumberjack,r=0,c=1]
  115. execute @e[type=Wolf,name=LumberjackAI] ~ ~ ~ scoreboard teams join lv_AI @e[type=Sheep,name=!lv_lumberjackLure,r=80]
  116. execute @e[type=Wolf,name=LumberjackAI] ~ ~ ~ scoreboard teams join lv_AI @e[type=Rabbit,name=!lv_lumberjackLure,r=80]
  117. execute @e[type=Wolf,name=LumberjackAI] ~ ~ ~ scoreboard teams join lv_AI @e[type=Skeleton,name=!lv_lumberjackLure,r=80]
  118. execute @e[type=Villager,name=Lumberjack,score_lv_state==2] ~ ~1 ~ detect ~ ~ ~ minecraft:leaves -1 setblock ~ ~1 ~ minecraft:air 0 destroy
  119. execute @e[type=Villager,name=Lumberjack,score_lv_state==2] ~ ~1 ~ detect ~ ~ ~ minecraft:leaves2 -1 setblock ~ ~1 ~ minecraft:air 0 destroy
  120.  
  121. #STATE 3
  122. execute @e[type=Rabbit,name=lv_lumberjackLure] ~ ~.5 ~ scoreboard players set @e[type=Villager,name=Lumberjack,r=2,score_lv_state==2] lv_state 3
  123. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ tp @e[type=Wolf,name=LumberjackAI,r=1,c=1] ~ -512 ~
  124. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=3,score_lv_state=4] ~ ~ ~ tp @e[type=ArmorStand,name=lv_axe,r=5,c=1] @e[type=Villager,name=Lumberjack,r=0,c=1]
  125. effect @e[type=Villager,name=Lumberjack,score_lv_state==3] minecraft:jump_boost 1000000 255 true
  126. $shortcut treeOffset 1.5
  127. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~$s treeOffset; ~1 ~ detect ~ ~ ~ minecraft:air -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[90.0f,30.0f]}
  128. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~-$s treeOffset; ~1 ~ detect ~ ~ ~ minecraft:air -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[-90.0f,30.0f]}
  129. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~ ~1 ~$s treeOffset; detect ~ ~ ~ minecraft:air -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[180.0f,30.0f]}
  130. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~ ~1 ~-$s treeOffset; detect ~ ~ ~ minecraft:air -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[0.0f,30.0f]}
  131. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~$s treeOffset; ~1 ~ detect ~ ~ ~ minecraft:tallgrass -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[90.0f,30.0f]}
  132. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~-$s treeOffset; ~1 ~ detect ~ ~ ~ minecraft:tallgrass -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[-90.0f,30.0f]}
  133. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~ ~1 ~$s treeOffset; detect ~ ~ ~ minecraft:tallgrass -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[180.0f,30.0f]}
  134. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,c=1] ~ ~1 ~-$s treeOffset; detect ~ ~ ~ minecraft:tallgrass -1 summon ArmorStand ~ ~ ~ {CustomName:lv_treeSide,Invisible:1b,Marker:1b,Small:1b,Rotation:[0.0f,30.0f]}
  135. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,r=0,c=1] @e[type=ArmorStand,name=lv_treeSide,r=5,c=1]
  136. kill @e[type=ArmorStand,name=lv_treeSide]
  137. execute @e[type=Villager,name=Lumberjack,score_lv_state==3] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,r=5,c=1] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:lv_logBreak,NoGravity:1b,Invisible:1b,Small:1b}
  138. scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==3] lv_breakTime 11
  139. scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==3] lv_state 4
  140.  
  141. #TRIGONOMETRY
  142. $shortcut offsetX 0.4
  143. $shortcut offsetY 0.15
  144. $shortcut offsetZ 0
  145. :MULTI:
  146. iterations:8
  147. !r#:0;0,360
  148. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=2,score_lv_state=4,rym=round(subtract(%r,22.5)),ry=round(add(%r,22.5))] ~ ~ ~ tp @e[type=ArmorStand,name=lv_axe,r=1,c=1] ~subtract(multiply($s offsetX;,cos(%r)),multiply($s offsetZ;,sin(%r))) ~$s offsetY; ~add(multiply($s offsetX;,sin(%r)),multiply($s offsetZ;,cos(%r)))
  149.  
  150. #STATE 6
  151. scoreboard players add @e[type=Villager,name=Lumberjack,score_lv_state==6] lv_breakTime 1
  152. scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==6,score_lv_breakTime==2] add lv_updateTrades
  153. scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==6,score_lv_breakTime==1199] add lv_updateTrades
  154. scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==6,score_lv_breakTime_min=1200] lv_state 0
  155. ::section despawning
  156. :R!: scoreboard players tag @e[type=ArmorStand,name=lv_axe] add lv_kill
  157. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=2,score_lv_state=4] ~ ~ ~ scoreboard players tag @e[type=ArmorStand,name=lv_axe,r=5,c=1] remove lv_kill
  158. scoreboard players tag @e[type=Wolf,name=LumberjackAI] add lv_kill
  159. execute @e[type=Villager,name=Lumberjack,score_lv_state==2] ~ ~ ~ scoreboard players tag @e[type=Wolf,name=LumberjackAI,r=5,c=1] remove lv_kill
  160. scoreboard players tag @e[type=Rabbit,name=lv_lumberjackLure] add lv_kill
  161. execute @e[type=ArmorStand,name=lv_tree] ~ ~-1 ~ scoreboard players tag @e[type=Rabbit,name=lv_lumberjackLure,r=1,c=1] remove lv_kill
  162. execute @e[type=AreaEffectCloud,name=lv_dirt,tag=!lv_new] ~ ~ ~ kill @e[type=AreaEffectCloud,name=lv_dirt,tag=lv_new,dx=0]
  163. execute @e[type=AreaEffectCloud,name=lv_dirt,tag=lv_new] ~ ~ ~ detect ~ ~ ~ minecraft:grass -1 kill @e[type=AreaEffectCloud,name_lv_dirt,tag=lv_new,r=1,c=1]
  164. scoreboard players tag @e[type=AreaEffectCloud,name=lv_dirt] add lv_kill
  165. execute @e[type=AreaEffectCloud,name=lv_dirt] ~ ~ ~ detect ~ ~ ~ minecraft:dirt -1 scoreboard players tag @e[type=AreaEffectCloud,name=lv_dirt,r=1,c=1] remove lv_kill
  166. execute @e[type=AreaEffectCloud,name=lv_dirt] ~ ~ ~ detect ~ ~ ~ minecraft:grass -1 scoreboard players tag @e[type=AreaEffectCloud,name=lv_dirt,r=1,c=1] remove lv_kill
  167. scoreboard players tag @e[type=ArmorStand,name=lv_logBreak,tag=,score_lv_state==0] add lv_kill
  168. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_kill] ~ ~ ~ detect ~ ~ ~ minecraft:log -1 scoreboard players tag @e[type=ArmorStand,name=lv_logBreak,tag=lv_kill,r=1,c=1] remove lv_kill
  169. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_kill] ~ ~ ~ detect ~ ~ ~ minecraft:log2 -1 scoreboard players tag @e[type=ArmorStand,name=lv_logBreak,tag=lv_kill,r=1,c=1] remove lv_kill
  170. scoreboard players tag @e[type=ArmorStand,name=lv_tree] add lv_kill
  171. execute @e[type=ArmorStand,name=lv_tree,tag=lv_kill] ~ ~ ~ detect ~ ~ ~ minecraft:log -1 scoreboard players tag @e[type=ArmorStand,name=lv_tree,r=1,c=1] remove lv_kill
  172. execute @e[type=ArmorStand,name=lv_tree,tag=lv_kill] ~ ~ ~ detect ~ ~ ~ minecraft:log2 -1 scoreboard players tag @e[type=ArmorStand,name=lv_tree,r=1,c=1] remove lv_kill
  173.  
  174. ::section tree_search
  175. :R!: testfor @e[type=ArmorStand,name=treeSearch]
  176. :R?: scoreboard players set @e[type=ArmorStand,name=treeSearch] lv_treeCriteria 0
  177. scoreboard players set @e[type=ArmorStand,name=treeSearch] lv_stats 0
  178. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ detect ~ ~-1 ~ minecraft:leaves -1 scoreboard players set @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_treeCriteria 1
  179. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ detect ~ ~-1 ~ minecraft:leaves2 -1 scoreboard players set @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_treeCriteria 1
  180. kill @e[type=ArmorStand,name=treeSearch,score_lv_treeCriteria=0]
  181. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ stats entity @e[type=ArmorStand,name=treeSearch,r=0,c=1] set AffectedBlocks @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_stats
  182. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ clone ~-4 ~-10 ~-4 ~4 ~ ~4 ~-4 ~-10 ~-4 filtered force minecraft:log
  183. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_totalStats += @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_stats
  184. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ clone ~-4 ~-10 ~-4 ~4 ~ ~4 ~-4 ~-10 ~-4 filtered force minecraft:log2
  185. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_totalStats += @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_stats
  186. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ clone ~-4 ~-10 ~-4 ~4 ~ ~4 ~-4 ~-10 ~-4 filtered force minecraft:log2 1
  187. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_totalStats -= @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_stats
  188. scoreboard players add @e[type=ArmorStand,name=treeSearch,score_lv_stats_min=1] lv_totalStats 1
  189. kill @e[type=ArmorStand,name=treeSearch,score_lv_totalStats=0]
  190. kill @e[type=ArmorStand,name=treeSearch,score_lv_totalStats_min=16]
  191. scoreboard players set @e[type=ArmorStand,name=treeSearch] lv_treeCriteria 2
  192. #MAKE SURE NO LOGS ARE SIDEWAYS TO AVOID LARGE TREES
  193. :MULTI:
  194. iterations:6
  195. !w';log 0,log 1,log 2,log 3,log2 0,log2 1
  196. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ clone ~-4 ~-10 ~-4 ~4 ~ ~4 ~-4 ~-10 ~-4 filtered force minecraft:%w
  197. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_totalStats -= @e[type=ArmorStand,name=treeSearch,r=0,c=1] lv_stats
  198. kill @e[type=ArmorStand,name=treeSearch,score_lv_totalStats_min=1]
  199. execute @e[type=ArmorStand,name=treeSearch] ~ ~ ~ summon ArmorStand ~ ~-1 ~ {CustomName:treeScan,NoGravity:1b,Small:1b,Marker:0b,DisabledSlots:31}
  200. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ stats entity @e[type=ArmorStand,name=treeScan,r=0,c=1] set AffectedBlocks @e[type=ArmorStand,name=treeScan,r=0,c=1] lv_stats
  201. scoreboard players add @e[type=ArmorStand,name=treeScan] lv_stats 0
  202. scoreboard players add @e[type=ArmorStand,name=treeScan] lv_totalStats 0
  203. kill @e[type=ArmorStand,name=treeSearch]
  204.  
  205. ::section tree_centering
  206. :R!: testfor @e[type=ArmorStand,name=treeScan]
  207. :R?: execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ clone ~-4 ~-1 ~-4 ~4 ~-1 ~4 ~-4 ~-1 ~-4 filtered force minecraft:log
  208. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=treeScan,r=0,c=1] lv_totalStats = @e[type=ArmorStand,name=treeScan,r=0,c=1] lv_stats
  209. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ clone ~-4 ~-1 ~-4 ~4 ~-1 ~4 ~-4 ~-1 ~-4 filtered force minecraft:log2
  210. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=treeScan,r=0,c=1] lv_totalStats += @e[type=ArmorStand,name=treeScan,r=0,c=1] lv_stats
  211. entitydata @e[type=ArmorStand,name=treeScan,score_lv_totalStats=0] {CustomName:lv_tree,Tags:["init"],Marker:1b}
  212.  
  213. execute @e[type=ArmorStand,name=lv_tree,tag=init] ~ ~ ~ summon LeashKnot ~ ~ ~ {CustomName:lv_treeCenter}
  214. execute @e[type=ArmorStand,name=lv_tree,tag=init] ~ ~ ~ tp @e[type=ArmorStand,name=lv_tree,tag=init,r=1,c=1] @e[type=LeashKnot,name=lv_treeCenter,c=1]
  215. tp @e[type=ArmorStand,name=lv_tree,tag=init] ~ ~-.5 ~
  216. kill @e[type=LeashKnot,name=lv_treeCenter]
  217. scoreboard players tag @e[type=ArmorStand,name=lv_tree,tag=init] remove init
  218.  
  219. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~-3 ~ ~-3 {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  220. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~ ~ ~-3 {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  221. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~3 ~ ~-3 {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  222. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~-3 ~ ~ {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  223. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  224. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~3 ~ ~ {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  225. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~-3 ~ ~3 {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  226. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~ ~ ~3 {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  227. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ summon ArmorStand ~3 ~ ~3 {CustomName:lv_logSearch,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  228.  
  229. #X = -1
  230. $shortcut x -1
  231. :MULTI:
  232. iterations:9
  233. !o#:2;-1,1
  234. execute @e[type=ArmorStand,name=lv_logSearch] ~$s x; ~-1 ~%o detect ~ ~ ~ minecraft:log -1 summon ArmorStand ~ ~ ~ {CustomName:lv_log,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  235. execute @e[type=ArmorStand,name=lv_logSearch] ~$s x; ~-1 ~%o detect ~ ~ ~ minecraft:log2 -1 summon ArmorStand ~ ~ ~ {CustomName:lv_log,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  236. #X = 0
  237. $shortcut x 0
  238. :MULTI:
  239. iterations:9
  240. !o#:2;-1,1
  241. execute @e[type=ArmorStand,name=lv_logSearch] ~$s x; ~-1 ~%o detect ~ ~ ~ minecraft:log -1 summon ArmorStand ~ ~ ~ {CustomName:lv_log,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  242. execute @e[type=ArmorStand,name=lv_logSearch] ~$s x; ~-1 ~%o detect ~ ~ ~ minecraft:log2 -1 summon ArmorStand ~ ~ ~ {CustomName:lv_log,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  243. #X = 1
  244. $shortcut x 1
  245. :MULTI:
  246. iterations:9
  247. !o#:2;-1,1
  248. execute @e[type=ArmorStand,name=lv_logSearch] ~$s x; ~-1 ~%o detect ~ ~ ~ minecraft:log -1 summon ArmorStand ~ ~ ~ {CustomName:lv_log,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  249. execute @e[type=ArmorStand,name=lv_logSearch] ~$s x; ~-1 ~%o detect ~ ~ ~ minecraft:log2 -1 summon ArmorStand ~ ~ ~ {CustomName:lv_log,NoGravity:1b,Marker:0b,Invisible:1b,Small:1b}
  250.  
  251. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ tp @e[type=ArmorStand,name=treeScan,r=0,c=1] @e[type=ArmorStand,name=lv_log,r=6,c=1]
  252. kill @e[type=ArmorStand,name=lv_logSearch]
  253. kill @e[type=ArmorStand,name=lv_log]
  254. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ detect ~ ~-1 ~ minecraft:log -1 tp @e[type=ArmorStand,name=treeScan,r=0,c=1] ~ ~-1 ~
  255. execute @e[type=ArmorStand,name=treeScan] ~ ~ ~ detect ~ ~-1 ~ minecraft:log2 -1 tp @e[type=ArmorStand,name=treeScan,r=0,c=1] ~ ~-1 ~
  256.  
  257. ::section search
  258. :R!: testfor @e[type=Villager,name=Lumberjack,tag=lv_searchTrees]
  259. :R?: execute @e[type=ArmorStand,name=lv_tree] ~ ~ ~ scoreboard players set @e[type=Villager,tag=lv_searchTrees,score_lv_state==0,r=80] lv_state 1
  260. :MULTI:
  261. iterations:16
  262. !v';a
  263. execute @e[type=Villager,name=Lumberjack,tag=lv_searchTrees,score_lv_state==0] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:treeSearch,NoGravity:1b,Small:1b,Invisible:1b,DisabledSlots:31}
  264. execute @e[type=Villager,name=Lumberjack,tag=lv_searchTrees,score_lv_state==0] ~ ~ ~ spreadplayers ~ ~ 4 64 false @e[type=ArmorStand,name=treeSearch,r=1,c=16]
  265. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_searchTrees] remove lv_searchTrees
  266.  
  267. ::section log_stare
  268. :R!: testfor @e[type=ArmorStand,name=lv_logBreak]
  269. :R?: execute @e[type=Villager,name=Lumberjack,score_lv_state==4] ~ ~ ~ summon AreaEffectCloud ~ ~1 ~ {CustomName:lv_villagerEyeLv,Duration:1,Radius:0,Particle:take,NoGravity:1b}
  270.  
  271. execute @e[type=ArmorStand,name=lv_logBreak] ~-2 ~-5 ~-2 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=1,dy=5,dz=1] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=-44,ry=-46,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ -45 ~
  272. execute @e[type=ArmorStand,name=lv_logBreak] ~1 ~-5 ~-2 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=1,dy=5,dz=1] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=46,ry=44,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ 45 ~
  273. execute @e[type=ArmorStand,name=lv_logBreak] ~-2 ~-5 ~1 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=1,dy=5,dz=1] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=-134,ry=-136,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ -135 ~
  274. execute @e[type=ArmorStand,name=lv_logBreak] ~1 ~-5 ~1 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=1,dy=5,dz=1] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=136,ry=134,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ 135 ~
  275. execute @e[type=ArmorStand,name=lv_logBreak] ~-2 ~-5 ~ execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=1,dy=5,dz=0] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=-89,ry=-91,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ -90 ~
  276. execute @e[type=ArmorStand,name=lv_logBreak] ~1 ~-5 ~ execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=1,dy=5,dz=0] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=91,ry=89,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ 90 ~
  277. execute @e[type=ArmorStand,name=lv_logBreak] ~ ~-5 ~-2 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=0,dy=5,dz=1] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=1,ry=-1,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ 0 ~
  278. execute @e[type=ArmorStand,name=lv_logBreak] ~ ~-5 ~1 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=0,dy=5,dz=1] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,rym=181,ry=179,r=1,c=1] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~ ~ 180 ~
  279.  
  280. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~-3 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rxm=-74,rx=90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ -75
  281. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~-3 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rx=-76,rxm=-90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ -75
  282.  
  283. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~-2 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rxm=-59,rx=90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ -60
  284. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~-2 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rx=-61,rxm=-90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ -60
  285.  
  286. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~-1 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rxm=-29,rx=90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ -30
  287. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~-1 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rx=-31,rxm=-90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ -30
  288.  
  289. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~0 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rxm=1,rx=90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ 0
  290. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~0 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rx=-1,rxm=-90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ 0
  291.  
  292. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~1 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rxm=31,rx=90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ 30
  293. execute @e[type=ArmorStand,name=lv_logBreak] ~-4 ~1 ~-4 execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=8,dy=0,dz=8] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rx=29,rxm=-90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ 30
  294.  
  295. execute @e[type=ArmorStand,name=lv_logBreak] ~ ~-2 ~ execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=0,dy=2,dz=0] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rxm=-89,rx=90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ -90
  296. execute @e[type=ArmorStand,name=lv_logBreak] ~ ~ ~ execute @e[type=AreaEffectCloud,name=lv_villagerEyeLv,dx=0,dy=2,dz=0] ~ ~-1 ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1,rx=89,rxm=-90] ~ ~ ~ tp @e[type=Villager,name=Lumberjack,tag=!lv_jump,r=0,c=1] ~ ~.05 ~ ~ 90
  297.  
  298. ::section log_breaking
  299. :R!: testfor @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=1]
  300. :R?: execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime==1] ~ ~ ~ scoreboard players tag @e[type=ArmorStand,name=lv_logBreak,r=5,c=1] add lv_break
  301. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime==1] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break,r=5,c=1] ~ ~ ~ setblock ~ ~ ~ minecraft:air 0 destroy
  302. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime==1,score_lv_saplings_min=1] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break,r=5,c=1] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,r=1] ~ ~ ~ playsound minecraft:block.grass.place master @a ~ ~ ~ 1 0.8 0
  303. :MULTI:
  304. iterations:6
  305. !d#:2;0,5
  306. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime==1,score_lv_saplings_min=1,score_lv_treeType==%d] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break,r=5,c=1] ~ ~ ~ execute @e[type=ArmorStand,name=lv_tree,r=1] ~ ~ ~ setblock ~ ~ ~ minecraft:sapling %d
  307. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime==1] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break,r=5,c=1] ~ ~ ~ tp @e[type=Item,r=3,c=1] @e[type=Villager,name=Lumberjack,score_lv_state==4,r=6,c=1]
  308. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=0] ~ ~ ~ scoreboard players operation @e[type=Villager,name=Lumberjack,r=0,c=1] lv_math = @e[type=Villager,name=Lumberjack,r=0,c=1] lv_breakTime
  309. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=0] ~ ~ ~ scoreboard players operation @e[type=Villager,name=Lumberjack,r=0,c=1] lv_math %= Three lv_math
  310. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=1,score_lv_math==0] ~ ~ ~ entitydata @e[type=ArmorStand,name=lv_axe,r=2,c=1] {Pose:{RightArm:[-30.0f,0.0f,0.0f]}}
  311. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=1,score_lv_math_min=1,score_lv_math=2] ~ ~ ~ entitydata @e[type=ArmorStand,name=lv_axe,r=2,c=1] {Pose:{RightArm:[-40.0f,0.0f,0.0f]}}
  312. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=2,score_lv_math==1] ~ ~ ~ playsound minecraft:block.wood.hit block @a ~ ~ ~ 0.5 0.6 0
  313. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=2] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,r=5,c=1] ~ ~ ~ detect ~ ~ ~ minecraft:log 0 particle blockdust ~ ~ ~ 0.5 0.5 0.5 0.05 1 normal @a 17 0
  314. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=2] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,r=5,c=1] ~ ~ ~ detect ~ ~ ~ minecraft:log 1 particle blockdust ~ ~ ~ 0.5 0.5 0.5 0.05 1 normal @a 17 1
  315. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=2] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,r=5,c=1] ~ ~ ~ detect ~ ~ ~ minecraft:log 2 particle blockdust ~ ~ ~ 0.5 0.5 0.5 0.05 1 normal @a 17 2
  316. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=2] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,r=5,c=1] ~ ~ ~ detect ~ ~ ~ minecraft:log 3 particle blockdust ~ ~ ~ 0.5 0.5 0.5 0.05 1 normal @a 17 3
  317. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=2] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,r=5,c=1] ~ ~ ~ detect ~ ~ ~ minecraft:log2 0 particle blockdust ~ ~ ~ 0.5 0.5 0.5 0.05 1 normal @a 162
  318. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=2] ~ ~ ~ execute @e[type=ArmorStand,name=lv_logBreak,r=5,c=1] ~ ~ ~ detect ~ ~ ~ minecraft:log2 1 particle blockdust ~ ~ ~ 0.5 0.5 0.5 0.05 1 normal @a 162 1
  319. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_OnGround] remove lv_OnGround
  320. scoreboard players tag @e[type=Villager,name=Lumberjack] add lv_OnGround {OnGround:1b}
  321. tp @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime==$s breakTime;,tag=lv_OnGround] ~ ~.05 ~
  322. scoreboard players remove @e[type=Villager,name=Lumberjack,score_lv_state==4,score_lv_breakTime_min=1] lv_breakTime 1
  323.  
  324. ::section log_break
  325. :R!: testfor @e[type=ArmorStand,name=lv_logBreak,tag=lv_break]
  326. :R?: execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~-3 ~ ~-3 summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  327. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~-3 ~ ~3 summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  328. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~3 ~ ~-3 summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  329. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~3 ~ ~3 summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  330. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~-3 ~ ~ summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  331. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~3 ~ ~ summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  332. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~ ~ ~-3 summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  333. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~ ~ ~3 summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  334. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~ ~ ~ summon ArmorStand ~ ~-1 ~ {CustomName:lv_logBreakSearch,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  335.  
  336. :MULTI:
  337. iterations:3
  338. !z';-1,0,1
  339. execute @e[type=ArmorStand,name=lv_logBreakSearch] ~-1 ~ ~%z detect ~ ~ ~ minecraft:log -1 summon ArmorStand ~ ~ ~ {CustomName:lv_nextLog,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  340. execute @e[type=ArmorStand,name=lv_logBreakSearch] ~-1 ~ ~%z detect ~ ~ ~ minecraft:log2 -1 summon ArmorStand ~ ~ ~ {CustomName:lv_nextLog,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  341. execute @e[type=ArmorStand,name=lv_logBreakSearch] ~ ~ ~%z detect ~ ~ ~ minecraft:log -1 summon ArmorStand ~ ~ ~ {CustomName:lv_nextLog,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  342. execute @e[type=ArmorStand,name=lv_logBreakSearch] ~ ~ ~%z detect ~ ~ ~ minecraft:log2 -1 summon ArmorStand ~ ~ ~ {CustomName:lv_nextLog,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  343. execute @e[type=ArmorStand,name=lv_logBreakSearch] ~1 ~ ~%z detect ~ ~ ~ minecraft:log -1 summon ArmorStand ~ ~ ~ {CustomName:lv_nextLog,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  344. execute @e[type=ArmorStand,name=lv_logBreakSearch] ~1 ~ ~%z detect ~ ~ ~ minecraft:log2 -1 summon ArmorStand ~ ~ ~ {CustomName:lv_nextLog,NoGravity:1b,Invisible:1b,Marker:1b,Small:1b}
  345.  
  346. execute @e[type=ArmorStand,name=lv_nextLog] ~ ~ ~ scoreboard players tag @e[type=ArmorStand,name=lv_logBreak,tag=lv_break,r=8,c=1] add lv_advance
  347. scoreboard players set @e[type=ArmorStand,name=lv_logBreak,tag=lv_advance] lv_state 0
  348. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~ ~ ~ tp @e[type=ArmorStand,name=lv_logBreak,tag=!lv_advance,r=1,c=1] ~ ~1 ~
  349. execute @e[type=ArmorStand,name=lv_logBreak,tag=!lv_advance,score_lv_state_min=2] ~ ~ ~ scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==4,r=10,c=1] lv_state 5
  350. execute @e[type=ArmorStand,name=lv_logBreak,tag=!lv_advance,score_lv_state_min=2] ~ ~ ~ scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==5,r=10,c=1] lv_breakTime 16
  351. kill @e[type=ArmorStand,name=lv_logBreak,tag=!lv_advance,score_lv_state_min=2]
  352. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_break] ~ ~ ~ scoreboard players add @e[type=ArmorStand,name=lv_logBreak,tag=!lv_advance,r=1,c=1] lv_state 1
  353.  
  354. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_advance] ~ ~ ~ tp @e[type=ArmorStand,name=lv_logBreak,r=1,c=1] @e[type=ArmorStand,name=lv_nextLog,r=8,c=1]
  355.  
  356. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_advance] ~ ~ ~ scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==4,r=5] lv_breakTime $s breakTime;
  357. execute @e[type=ArmorStand,name=lv_logBreak,tag=lv_advance] ~ ~ ~ scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==4,r=10,score_lv_breakTime=1] add lv_jump
  358. kill @e[type=ArmorStand,name=lv_logBreakSearch]
  359. kill @e[type=ArmorStand,name=lv_nextLog]
  360. scoreboard players tag @e[type=ArmorStand,name=lv_logBreak,tag=lv_advance] remove lv_break
  361. scoreboard players tag @e[type=ArmorStand,name=lv_logBreak,tag=lv_advance] remove lv_advance
  362.  
  363. ::section jumping
  364. :R!: testfor @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump]
  365. :R?: tp @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump,rxm=-90,rx=89] ~ ~ ~ ~ 90
  366. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~ ~ ~ entitydata @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_OnGround,r=1,c=1] {Motion:[0.0,0.5,0.0]}
  367. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~ ~ ~ execute detect ~ ~2 ~ minecraft:leaves -1 setblock ~ ~2 ~ minecraft:air 0 destroy
  368. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~ ~ ~ detect ~ ~2 ~ minecraft:leaves2 -1 setblock ~ ~2 ~ minecraft:air 0 destroy
  369. :MULTI:
  370. iterations:2
  371. !l';leaves,leaves2
  372. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~-.5 ~1 ~-.5 detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~-.5 ~ ~-.5 setblock ~ ~2 ~ minecraft:air 0 destroy
  373. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~-.5 ~1 ~.5 detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~-.5 ~ ~.5 setblock ~ ~2 ~ minecraft:air 0 destroy
  374. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~.5 ~1 ~-.5 detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~.5 ~ ~-.5 setblock ~ ~2 ~ minecraft:air 0 destroy
  375. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~.5 ~1 ~.5 detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~.5 ~ ~.5 setblock ~ ~2 ~ minecraft:air 0 destroy
  376. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~-.5 ~1 ~ detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~-.5 ~ ~ setblock ~ ~2 ~ minecraft:air 0 destroy
  377. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~.5 ~1 ~ detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~.5 ~ ~ setblock ~ ~2 ~ minecraft:air 0 destroy
  378. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~ ~1 ~-.5 detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~ ~ ~-.5 setblock ~ ~2 ~ minecraft:air 0 destroy
  379. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] ~ ~1 ~.5 detect ~ ~1 ~ minecraft:%l -1 execute @e[type=Villager,name=Lumberjack,score_lv_state==4,dx=0] ~ ~ ~.5 setblock ~ ~2 ~ minecraft:air 0 destroy
  380. scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] add lv_place
  381. scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_jump] remove lv_place {FallDistance:0.0f}
  382. scoreboard players tag @e[type=AreaEffectCloud,name=lv_dirt,tag=lv_new] remove lv_new
  383. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_place] ~ ~ ~ summon LeashKnot ~ ~-1.5 ~ {CustomName:lv_dirtPlace}
  384. execute @e[type=LeashKnot,name=lv_dirtPlace] ~ ~ ~ detect ~ ~ ~ minecraft:grass -1 kill @e[type=LeashKnot,name=lv_dirtPlace,c=1]
  385. execute @e[type=LeashKnot,name=lv_dirtPlace] ~ ~ ~ detect ~ ~ ~ minecraft:dirt -1 kill @e[type=LeashKnot,name=lv_dirtPlace,c=1]
  386. execute @e[type=LeashKnot,name=lv_dirtPlace] ~ ~ ~ summon AreaEffectCloud ~ ~ ~ {CustomName:lv_dirt,Duration:100000000,Radius:0,RadiusPerTick:0,RadiusOnUse:0,Particle:take,Tags:[lv_new]}
  387. kill @e[type=LeashKnot,name=lv_dirtPlace]
  388. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_place] ~ ~ ~ execute @e[type=AreaEffectCloud,name=lv_dirt,tag=lv_new] ~ ~ ~ setblock ~ ~ ~ minecraft:dirt
  389. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_place] ~ ~ ~ playsound minecraft:block.gravel.place master @p ~ ~ ~ 1.0 0.75 0.0
  390. scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_place] add lv_checkDistance
  391. scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_place] remove lv_jump
  392. scoreboard players tag @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_place] remove lv_place
  393.  
  394. ::section jump_loop
  395. :R!: testfor @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_checkDistance]
  396. :R?: scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_OnGround] remove lv_OnGround
  397. scoreboard players tag @e[type=Villager,name=Lumberjack] add lv_OnGround {OnGround:1b}
  398. execute @e[type=ArmorStand,name=lv_logBreak] ~ ~ ~ execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_checkDistance,r=5] ~ ~ ~ scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_OnGround,r=0,c=1] add lv_validDistance
  399. execute @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_checkDistance] ~ ~ ~ execute @e[type=Villager,name=Lumberjack,tag=lv_OnGround,r=0,c=1] ~ ~ ~ scoreboard players tag @e[type=Villager,name=Lumberjack,tag=!lv_validDistance,r=0,c=1] add lv_jump
  400. scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==4,tag=lv_validDistance] lv_breakTime $s breakTime;
  401. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_validDistance] remove lv_checkDistance
  402. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_validDistance] remove lv_validDistance
  403. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_jump] remove lv_checkDistance
  404.  
  405. ::section dirt_takedown
  406. :R!: testfor @e[type=Villager,name=Lumberjack,score_lv_state==5]
  407. :R?: execute @e[type=AreaEffectCloud,name=lv_dirt] ~ ~1 ~ tp @e[type=Villager,name=Lumberjack,score_lv_state==5,dx=0,rxm=-90,rx=89] ~ ~ ~ ~ 90
  408. execute @e[type=AreaEffectCloud,name=lv_dirt] ~ ~1 ~ scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==5,dx=0,score_lv_breakTime=0] lv_breakTime 16
  409.  
  410. execute @e[type=Villager,name=Lumberjack,score_lv_state==5,score_lv_breakTime_min=2,tag=lv_OnGround] ~ ~ ~ execute @e[type=AreaEffectCloud,name=lv_dirt,r=5,c=1] ~ ~ ~ particle blockdust ~ ~ ~ 0.5 0.5 0.5 0.05 1 normal @a 3
  411. execute @e[type=Villager,name=Lumberjack,score_lv_state==5,score_lv_breakTime_min=2,tag=lv_OnGround] ~ ~ ~ playsound minecraft:block.gravel.hit master @a ~ ~ ~ 0.125 0.5 0
  412.  
  413. execute @e[type=Villager,name=Lumberjack,score_lv_state==5,score_lv_breakTime==1] ~ ~ ~ execute @e[type=AreaEffectCloud,name=lv_dirt,r=8,c=1] ~ ~ ~ setblock ~ ~ ~ minecraft:air 0 destroy
  414. execute @e[type=Villager,name=Lumberjack,score_lv_state==5,score_lv_breakTime==1] ~ ~ ~ execute @e[type=AreaEffectCloud,name=lv_dirt,r=8,c=1] ~ ~ ~ kill @e[type=Item,dx=0,c=1]
  415. execute @e[type=Villager,name=Lumberjack,score_lv_state==5,score_lv_breakTime==1] ~ ~ ~ kill @e[type=AreaEffectCloud,name=lv_dirt,r=5,c=1]
  416.  
  417. scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==5,score_lv_breakTime==0] lv_state 6
  418. scoreboard players remove @e[type=Villager,name=Lumberjack,score_lv_state==5,score_lv_breakTime_min=1,tag=lv_OnGround] lv_breakTime 1
  419.  
  420. ::section pickup
  421. :R!: testfor @e[type=Villager,name=Lumberjack,score_lv_state_min=4]
  422. :R?: execute @e[type=Villager,name=Lumberjack,score_lv_state_min=4] ~ ~ ~ scoreboard players set @e[type=Item,r=2] lv_treeType 0 {PickupDelay:0s,Item:{id:minecraft:log,Damage:0s}}
  423. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=4] ~ ~ ~ scoreboard players set @e[type=Item,r=2] lv_treeType 1 {PickupDelay:0s,Item:{id:minecraft:log,Damage:1s}}
  424. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=4] ~ ~ ~ scoreboard players set @e[type=Item,r=2] lv_treeType 2 {PickupDelay:0s,Item:{id:minecraft:log,Damage:2s}}
  425. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=4] ~ ~ ~ scoreboard players set @e[type=Item,r=2] lv_treeType 3 {PickupDelay:0s,Item:{id:minecraft:log,Damage:3s}}
  426. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=4] ~ ~ ~ scoreboard players set @e[type=Item,r=2] lv_treeType 4 {PickupDelay:0s,Item:{id:minecraft:log2,Damage:0s}}
  427. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=4] ~ ~ ~ scoreboard players set @e[type=Item,r=2] lv_treeType 5 {PickupDelay:0s,Item:{id:minecraft:log2,Damage:1s}}
  428. :MULTI:
  429. iterations:6
  430. !v#:2;0,5
  431. execute @e[type=Villager,name=Lumberjack,score_lv_state_min=4] ~ ~ ~ scoreboard players set @e[type=Item,r=4] lv_treeType add(%v,6) {PickupDelay:0s,Item:{id:minecraft:sapling,Damage:%vs}}
  432. execute @e[type=Item,score_lv_treeType_min=0] ~ ~ ~ scoreboard players operation @e[type=Villager,name=Lumberjack,r=2,c=1] lv_treeType = @e[type=Item,r=0,c=1] lv_treeType
  433. scoreboard players remove @e[type=Villager,name=Lumberjack,score_lv_treeType_min=6] lv_treeType 6
  434. execute @e[type=Item,score_lv_treeType_min=0,score_lv_treeType=5] ~ ~ ~ scoreboard players add @e[type=Villager,name=Lumberjack,r=2,c=1] lv_logs 1
  435. execute @e[type=Item,score_lv_treeType_min=0,score_lv_treeType=5,rym=0,ry=30] ~ ~ ~ scoreboard players add @e[type=Villager,name=Lumberjack,r=2,c=1] lv_saplings 1
  436. execute @e[type=Item,score_lv_treeType_min=6,score_lv_treeType=11] ~ ~ ~ scoreboard players add @e[type=Villager,name=Lumberjack,r=2,c=1] lv_saplings 1
  437. execute @e[type=Item,score_lv_treeType_min=0] ~ ~ ~ playsound minecraft:entity.item.pickup master @a ~ ~ ~ 0.25 2 0
  438. execute @e[type=Item,score_lv_treeType_min=0] ~ ~ ~ scoreboard players tag @e[type=Villager,name=Lumberjack,r=2,c=1] add lv_updateTrades
  439. kill @e[type=Item,score_lv_treeType_min=0]
  440.  
  441. ::section updateTrades
  442. :R!: execute @a ~ ~ ~ testfor @e[type=Villager,name=Lumberjack,tag=lv_updateTrades,r=10]
  443. :R?:
  444. :MULTI:
  445. iterations:6
  446. !t';0,1,2,3,4,5
  447. !i';log,log,log,log,log2,log2
  448. !d';0,1,2,3,0,1
  449. entitydata @e[type=Villager,name=Lumberjack,tag=lv_updateTrades,score_lv_treeType==%t,score_lv_logs_min=12,score_lv_saplings_min=9] {Offers:{Recipes:[{maxUses:1,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:%i,Count:12,Damage:%ds}},{maxUses:1,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:sapling,Count:9b,Damage:%ts}}]}}
  450. entitydata @e[type=Villager,name=Lumberjack,tag=lv_updateTrades,score_lv_treeType==%t,score_lv_logs_min=12,score_lv_saplings=8] {Offers:{Recipes:[{maxUses:1,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:%i,Count:12,Damage:%ds}},{maxUses:0,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:sapling,Count:9b,Damage:%ts}}]}}
  451. entitydata @e[type=Villager,name=Lumberjack,tag=lv_updateTrades,score_lv_treeType==%t,score_lv_logs=11,score_lv_saplings_min=9] {Offers:{Recipes:[{maxUses:0,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:%i,Count:12,Damage:%ds}},{maxUses:1,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:sapling,Count:9b,Damage:%ts}}]}}
  452. entitydata @e[type=Villager,name=Lumberjack,tag=lv_updateTrades,score_lv_treeType==%t,score_lv_logs=11,score_lv_saplings=8] {Offers:{Recipes:[{maxUses:0,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:%i,Count:12,Damage:%ds}},{maxUses:0,buy:{id:minecraft:emerald,Count:1},sell:{id:minecraft:sapling,Count:9b,Damage:%ts}}]}}
  453. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_updateTrades] remove lv_updateTrades
  454.  
  455. ::section sync_scores
  456. :R!: scoreboard players tag @e[type=Villager,name=Lumberjack,tag=!lv_updateTrades] add lv_buyLogs {Offers:{Recipes:[{sell:{Count:12b},uses:1}]}}
  457. scoreboard players remove @e[type=Villager,name=Lumberjack,tag=lv_buyLogs] lv_logs 12
  458. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_buyLogs] add lv_updateTrades
  459. execute @e[type=villager,name=Lumberjack,tag=lv_buyLogs] ~ ~ ~ title @p actionbar {"text":"Come back again soon!","color":"gray","italic":true}
  460. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_buyLogs] remove lv_buyLogs
  461.  
  462. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=!lv_updateTrades] add lv_buySaplings {Offers:{Recipes:[{sell:{Count:9b},uses:1}]}}
  463. scoreboard players remove @e[type=Villager,name=Lumberjack,tag=lv_buySaplings] lv_saplings 9
  464. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_buySaplings] add lv_updateTrades
  465. execute @e[type=villager,name=Lumberjack,tag=lv_buySaplings] ~ ~ ~ title @p actionbar {"text":"It was a pleasure doing business with you.","color":"gray","italic":true}
  466. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_buySaplings] remove lv_buySaplings
  467.  
  468. scoreboard players tag @e[type=Villager,name=Lumberjack] add lv_forceUpdate {ActiveEffects:[{Id:10b}]}
  469. say @e[tag=lv_forcedUpdate]
  470. effect @e[type=Villager,name=Lumberjack,tag=lv_forceUpdate] minecraft:regeneration 0
  471. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_forceUpdate] add lv_updateTrades
  472. scoreboard players tag @e[type=Villager,name=Lumberjack,tag=lv_forceUpdate] remove lv_forceUpdate
  473.  
  474. ::section loop
  475. # Period between attempts to locate trees:
  476. $shortcut period 5
  477. # (in minutes)
  478.  
  479. :R!: scoreboard players add lv_timer lv_state 1
  480. scoreboard players test lv_timer lv_state multiply($s period;,1200)
  481. :R?: scoreboard players set lv_timer lv_state 0
  482. scoreboard players tag @r[type=Villager,name=Lumberjack,score_lv_state==0] add lv_searchTrees
  483. scoreboard players set @e[type=Villager,name=Lumberjack,score_lv_state==2] lv_state 5
  484. kill @e[type=ArmorStand,name=lv_logBreak]
  485.  
  486. ::section uninstall
  487. :I: setblock ~ ~ ~ carpet
  488. :I!: tellraw @a ["\n\n",{"text":" Lumberjack Villagers ","color":"red","bold":true},{"text":"by Energyxxer","color":"red","italic":true},{"text":"\n have been successfully uninstalled.","color":"dark_red","italic":true},"\n\n"]
  489. scoreboard objectives remove lv_state dummy
  490. scoreboard objectives remove lv_treeCriteria dummy
  491. scoreboard objectives remove lv_stats dummy
  492. scoreboard objectives remove lv_stats2 dummy
  493. scoreboard objectives remove lv_totalStats dummy
  494. scoreboard objectives remove lv_breakTime dummy
  495. scoreboard objectives remove lv_logs dummy
  496. scoreboard objectives remove lv_saplings dummy
  497. scoreboard objectives remove lv_treeType dummy
  498. scoreboard objectives remove lv_math dummy
  499. scoreboard teams remove lv_AI
  500. fill ~-28 ~-4 ~-2 ~2 ~6 ~2 minecraft:air
  501. :I: setblock ~ ~ ~ air
  502. :I: setblock ~ ~ ~ carpet
  503. :I: setblock ~ ~ ~ carpet
  504. :I: blockdata ~ ~ ~ {auto:0b}
  505. fill ~-26 ~-3 ~-2 ~1 ~-3 ~ minecraft:stained_hardened_clay 14 replace minecraft:redstone_block
  506. fill ~-26 ~-4 ~-2 ~1 ~-4 ~ minecraft:redstone_block 0 replace minecraft:wool
  507. fill ~-26 ~-5 ~-2 ~1 ~-5 ~ minecraft:wool 14 replace minecraft:stained_hardened_clay
  508. :?: tellraw @a [{"text":" Lumberjack Villagers have been ","color":"gold"},{"text":"DISABLED","color":"red","bold":true}]
  509. blockdata ~ ~-1 ~ {SuccessCount:1}
  510. #AFTER SETBLOCK: :?: tellraw @a [{"text":" Enhanced Hoes have been ","color":"gold"},{"text":"DISABLED","color":"red","bold":true}]
  511.  
  512. ::section install
  513. :I!: tellraw @a ["\n\n",{"text":" Lumberjack Villagers ","color":"aqua","bold":true},{"text":"by Energyxxer","color":"aqua","italic":true},{"text":"\n have been successfully installed.","color":"dark_aqua","italic":true},"\n\n"]
  514. scoreboard objectives add lv_state dummy
  515. scoreboard objectives add lv_treeCriteria dummy
  516. scoreboard objectives add lv_stats dummy
  517. scoreboard objectives add lv_stats2 dummy
  518. scoreboard objectives add lv_totalStats dummy
  519. scoreboard objectives add lv_breakTime dummy
  520. scoreboard objectives add lv_logs dummy
  521. scoreboard objectives add lv_saplings dummy
  522. scoreboard objectives add lv_treeType dummy
  523. scoreboard objectives add lv_math dummy
  524. scoreboard players set Three lv_math 3
  525. scoreboard teams add lv_AI
  526. scoreboard teams option lv_AI friendlyfire false
  527. scoreboard teams option lv_AI collisionRule never
  528. fill ~-27 ~-1 ~-1 ~ ~-1 ~1 minecraft:redstone_block
  529. fill ~ ~ ~-2 ~ ~7 ~ minecraft:quartz_block
  530. :R!: blockdata ~ ~-1 ~-2 {auto:1b}
  531.  
  532. ::section after
  533. setblock ~30 ~7 ~1 chain_command_block 9 _ {auto:1,TrackOutput:0b,Command:"tellraw @a [{\"text\":\" Lumberjack Villagers have been \",\"color\":\"gold\"},{\"text\":\"ENABLED\",\"color\":\"green\",\"bold\":true}]"}
  534. setblock ~4 ~3 ~ minecraft:chain_command_block 0 _ {auto:1b,Command:"setblock ~-2 ~2 ~ minecraft:wall_sign 4 _ {Text1:\"{\\\"text\\\":\\\"\\\"}\",Text2:\"{\\\"text\\\":\\\"Lumberjack Villagers\\\",\\\"color\\\":\\\"dark_blue\\\",\\\"bold\\\":true}\",Text3:\"{\\\"text\\\":\\\"by Energyxxer\\\",\\\"color\\\":\\\"blue\\\",\\\"italic\\\":true,\\\"clickEvent\\\":{\\\"action\\\":\\\"run_command\\\",\\\"value\\\":\\\"/tellraw @p [\\\\\\\" \\\\\\\",{\\\\\\\"text\\\\\\\":\\\\\\\"[Link to YouTube channel]\\\\\\\",\\\\\\\"color\\\\\\\":\\\\\\\"red\\\\\\\",\\\\\\\"hoverEvent\\\\\\\":{\\\\\\\"action\\\\\\\":\\\\\\\"show_text\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"Click to open\\\\\\\"},\\\\\\\"clickEvent\\\\\\\":{\\\\\\\"action\\\\\\\":\\\\\\\"open_url\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"http://youtube.com/user/Energyxxer\\\\\\\"}},\\\\\\\"\\n \\\\\\\",{\\\\\\\"text\\\\\\\":\\\\\\\"[Link to Website]\\\\\\\",\\\\\\\"color\\\\\\\":\\\\\\\"gold\\\\\\\",\\\\\\\"hoverEvent\\\\\\\":{\\\\\\\"action\\\\\\\":\\\\\\\"show_text\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"Click to open\\\\\\\"},\\\\\\\"clickEvent\\\\\\\":{\\\\\\\"action\\\\\\\":\\\\\\\"open_url\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"http://energyxxer.com\\\\\\\"}}]\\\"}}\",Text4:\"{\\\"text\\\":\\\"\\\"}\"}"}
  535. setblock ~4 ~2 ~ minecraft:chain_command_block 1 _ {auto:1b,Command:"setblock ~-2 ~ ~ minecraft:wall_sign 4 _ {Text1:\"{\\\"text\\\":\\\"==========\\\",\\\"color\\\":\\\"blue\\\",\\\"bold\\\":true,\\\"strikethrough\\\":true,\\\"clickEvent\\\":{\\\"action\\\":\\\"run_command\\\",\\\"value\\\":\\\"blockdata ~28 ~-1 ~1 {auto:1b}\\\"}}\",Text2:\"{\\\"text\\\":\\\"Toggle\\\",\\\"color\\\":\\\"blue\\\",\\\"bold\\\":true}\",Text3:\"[\\\"\\\",{\\\"text\\\":\\\"ON\\\",\\\"color\\\":\\\"green\\\"},\\\"/\\\",{\\\"text\\\":\\\"OFF\\\",\\\"color\\\":\\\"dark_red\\\"}]\",Text4:\"{\\\"text\\\":\\\"==========\\\",\\\"color\\\":\\\"blue\\\",\\\"bold\\\":true,\\\"strikethrough\\\":true}\"}"}
  536. setblock ~4 ~1 ~ minecraft:repeating_command_block 1 _ {auto:1b,Command:"setblock ~-2 ~ ~ minecraft:wall_sign 4 _ {Text1:\"{\\\"text\\\":\\\"==========\\\",\\\"color\\\":\\\"dark_red\\\",\\\"bold\\\":true,\\\"strikethrough\\\":true,\\\"clickEvent\\\":{\\\"action\\\":\\\"run_command\\\",\\\"value\\\":\\\"blockdata ~28 ~ ~-1 {auto:1b}\\\"}}\",Text2:\"{\\\"text\\\":\\\" /!\\\\\ \\\",\\\"color\\\":\\\"red\\\",\\\"bold\\\":true}\",Text3:\"{\\\"text\\\":\\\"Uninstall\\\",\\\"color\\\":\\\"red\\\",\\\"bold\\\":true}\",Text4:\"{\\\"text\\\":\\\"==========\\\",\\\"color\\\":\\\"dark_red\\\",\\\"bold\\\":true,\\\"strikethrough\\\":true}\"}"}
Advertisement
Add Comment
Please, Sign In to add comment