Date: 2023/04/19 17:21:13 UTC-07:00
Type: Denizen Script
check_percentage_drops:
type: task
definitions: fortune_check
debug: false
script:
- define tool <player.item_in_hand.material.item>
- define location <player.cursor_on>
- define density 10000
- if <[fortune_check].exists>:
- define loops <[fortune_check]>
- else:
- define loops 6
- define results <list>
- repeat <[loops]> from:0 as:fortune_level:
- define results <[results].include_single[<&2>Fortune level <&6><[fortune_level]><n>]>
- repeat <[density]>:
- foreach <[location].drops[<[tool].with[enchantments=[fortune=<[fortune_level]>]]>]> as:drop:
- define item <[drop].material.name>
- define quantity <[drop].quantity>
- define fortune_<[fortune_level]>.<[item]>.<[quantity]>:++
- define fortune_<[fortune_level]>.<[item]>.total_quantity:+:<[quantity]>
- foreach <[fortune_<[fortune_level]>]> key:item as:quantities:
- define inner_results <list>
- foreach <[quantities].exclude[total_quantity]> key:quantity as:amount:
- define this_quantity <[fortune_<[fortune_level]>.<[item]>.<[quantity]>]>
- define this_percent <[this_quantity].div[<[density]>].round_to_precision[0.0001].mul[100]>
- define fortune_<[fortune_level]>.<[item]>.<[quantity]>_percent:<[this_percent]>
- define inner_results <[inner_results].include_single[<[quantity]>/<&e><[item]> <&a>drops <&e><[quantity]> <&a>a total of <&e><[this_quantity]> <&a>times, which is <&b><[this_percent]>%<n>]>
- define results <[results].include[<[inner_results].sort_by_value[before[/]].parse[after[/]]>].include_single[<&a>This gives a total quantity of <&e><[quantities].get[total_quantity]> <&a>of <&e><[item]><n><n>]>
- announce to_console <n><[results].unseparated>