Alyssa

CB Connected-Component Labeling

Apr 21st, 2017
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. objectives:
  2. unique_id = Unique id for each object
  3. group_id = a group id for each group of objects
  4. group_counter = counter for deciding how much to subtract
  5. group_needed = How many of the current group are not done_grouping
  6. group_lowest = OPTIONAL for making the group ids sequential
  7.  
  8. tags:
  9. done_grouping = tag thats set when an entity has done grouping and no longer can or need to.
  10. do_grouping = do grouping that tick
  11. master = master tracker for grouping
  12. to_group = entities to group
  13.  
  14. execute @e[tag=to_group] ~ ~ ~ scoreboard players operation @e[tag=to_group] group_id = @e[tag=to_group,c=1] unique_id
  15. #Use Setblock to set loop to closed
  16. scoreboard players tag @e[score_group_id_min=0,score_group_id=0,tag!done_grouping] add do_grouping
  17. execute @e[do_grouping] ~ ~ ~ scoreboard players set e[c=1] group_id 0
  18. scoreboard players tag @e[tag=do_grouping] add done_grouping
  19. scoreboard players tag @e[tag=do_grouping] remove do_grouping
  20. scoreboard players set @e[tag=master] group_needed 0
  21. execute @e[score_group_id_min=0, score_group_id=0] ~ ~ ~ scoreboard players add @e[tag=master] group_needed 1
  22. scoreboard players set @e[tag=master,score_group_needed=0] group_counter 2100000000
  23. execute @e[tag=master,score_group_needed=0] ~ ~ ~ scoreboard players operation @e[tag=master] group_counter > @e[tag=to_group,score_group_id_min=1] group_id
  24. execute @e[tag=master,score_group_needed=0] ~ ~ ~ scoreboard players operation @e[tag=to_group] group_id -= @e[tag=master] group_counter
  25. execute @e[tag=master,score_group_counter_min=2100000000] ~ ~ ~ #Use Setblock to exit loop
  26. scoreboard players operation @e[tag=master] group_counter > @e[tag=to_group] group_id
  27. scoreboard players operation @e[tag=to_group] group_id -= @e[tag=master] group_counter
  28. scoreboard players tag @e[tag=to_group] remove done_grouping
  29. # V OPTIONAL sequentializer V #
  30. #Set the following loop to closed
  31. scoreboard players set @e[tag=master] group_lowest = 21000000000
  32. scoreboard players operation @e[tag=master] group_lowest > @e[tag=to_group,score_group_id_min=0] group_id
  33. scoreboard players operation @e[tag=to_group,score_group_id_min=0] group_id -= @e[tag=master] group_lowest
  34. scoreboard players remove @e[tag=to_group] group_id 1
  35. scoreboard players set @e[tag=master,score_group_needed=0] group_counter 2100000000
  36. scoreboard players operation @e[tag=master] group_counter > @e[tag=to_group,score_group_id_min=0] group_id
  37. execute @e[tag=master,score_group_counter_min=2100000000] ~ ~ ~ #Use Setblock to exit loop
  38. scoreboard players operation @e[tag=master] group_counter > @e[tag=to_group] group_id
  39. scoreboard players operation @e[tag=to_group] group_id -= @e[tag=master] group_counter
Advertisement
Add Comment
Please, Sign In to add comment