# dminereset system
# mine admins require op or dminereset.command permission
# mines are stored in dmineresets_saves.yml and it is editable and reloadable.
# Created by Talamar1
dminereset:
type: world
debug: false
events:
on server start:
- run dminereset_task_init delay:5t
dminereset_task_init:
type: task
debug: false
script:
- inject dminereset_command_reload
- ^flag server dmr:!
- ^foreach <yaml[dminereset_saves].list_keys[dmr.mines].filter[is[!=].to[default]]> {
- - run dminereset_check_end_of_game def:%value%
+ - run dminereset_queue_check def:%value%
}
dminereset_dmr:
type: command
debug: false
name: dmr
description: dMineReset Command
usage: /dmr <&lb>command<&rb> (arg1<&pipe>arg2...)
aliases:
dminereset
script:
- if <context.args.size||0> == 0 {
- inject dminereset_command_help
- queue clear
}
- define arg1 <context.args.get[1].escaped>
- define cmdList li@create|delete|rename|set|resize|disable|enable|list|clear|reload|reset|tp|save
- if <def[cmdList].contains[%arg1%]> {
- if <context.server> || <player.has_permission[dminereset.%arg1%]||false> {
- inject dminereset_command_%arg1%
- queue clear
}
else {
- narrate "<&6>You do not have permission to use that dminereset command."
- queue clear
}
}
- inject dminereset_command_help
dminereset_command_help:
type: task
debug: false
script:
- if <player.has_permission[dminereset.create]> narrate "<&6>/dmr create <&lb>minename<&rb>"
- if <player.has_permission[dminereset.delete]> narrate "<&6>/dmr delete <&lb>minename<&rb>"
- if <player.has_permission[dminereset.save]> narrate "<&6>/dmr save"
- if <player.has_permission[dminereset.set]> narrate "<&6>/dmr set <&lb>minename<&rb> <<>setting<>> <<>value<>>"
- if <player.has_permission[dminereset.select]> narrate "<&6>/dmr select <&lb>minename<&rb>"
- if <player.has_permission[dminereset.resize]> narrate "<&6>/dmr resize <&lb>minename<&rb>"
- if <player.has_permission[dminereset.rename]> narrate "<&6>/dmr rename <&lb>old minename<&rb> <&lb>new minename<&rb>"
- if <player.has_permission[dminereset.reload]> narrate "<&6>/dmr reload"
- if <player.has_permission[dminereset.clear]> narrate "<&6>/dmr clear"
- if <player.has_permission[dminereset.reset]> narrate "<&6>/dmr reset_default"
- if <player.has_permission[dminereset.list]> narrate "<&6>/dmr list"
dminereset_command_create:
type: task
debug: false
script:
- if <context.args.get[2].is[==].to[null]||true> {
- narrate "<&6>/dmr create <<>mine name<>>"
- narrate "<&6>mine name - name for your mine"
- queue clear
}
- define arg2 <context.args.get[2]>
- if %arg2% != <def[arg2].escaped> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- if <yaml[dminereset_saves].contains[dmr.mines.%arg2%]> {
- narrate "<&6>mine with that name already exists."
- queue clear
}
- if li@help|false|true|null contains %arg2% {
- narrate "<&6>That is not a valid mine name."
- queue clear
}
- if <player.selected_region.is[==].to[null]||true> {
- narrate "<&6>You don't have an area selected with WorldEdit wand."
- queue clear
}
- narrate "Creating new mine"
- run dminereset_task_yaml_copy def:dmr.mines.default|dmr.mines.%arg2% instantly
- inject dminereset_command_save
- note <player.selected_region> as:dmr_%arg2%
- flag player dmr.edit:%arg2%
- narrate "mine created."
dminereset_command_save:
type: task
debug: false
script:
-# - ^if <player.is_online> narrate "Saving MineReset Games"
- ^yaml savefile:dminereset_saves.yml id:dminereset_saves
dminereset_command_delete:
type: task
debug: false
script:
- define mine <context.args.get[2]||<player.flag[dmr.edit]||<def[1]||help>>>
- if %mine% == help {
- narrate "<&6>/dmr delete <<>mine Name<>>"
- narrate "<&6>Either select an mine or provide an mine name"
- queue clear
}
- if %mine% != <def[mine].escaped> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- narrate "Deleting selected mine."
- yaml id:dminereset_saves set dmr.mines.%mine%:!
- flag player dmr.edit:!
- note remove as:dmr_%mine%
- inject dminereset_command_save
dminereset_command_reset_default:
type: task
debug: false
script:
- narrate "Setting up default mine values."
- ^yaml id:dminereset_saves set dmr.mines.default:!
- ^yaml id:dminereset_saves set dmr.mines.default.settings.max_players:20
- ^yaml id:dminereset_saves set dmr.mines.default.settings.min_players:2
- - ^yaml id:dminereset_saves set dmr.mines.default.settings.lightning:2
- - ^yaml id:dminereset_saves set dmr.mines.default.settings.lightning_delay:60
- ^yaml id:dminereset_saves set dmr.mines.default.settings.locked:false
- ^yaml id:dminereset_saves set dmr.mines.default.settings.enable:false
- ^yaml id:dminereset_saves set dmr.mines.default.settings.timer:30
- ^yaml id:dminereset_saves set dmr.mines.default.settings.countdown:10
- - ^yaml id:dminereset_saves set dmr.mines.default.settings.restock:0
- narrate "Finished setting up Default File."
- inject dminereset_command_save
dminereset_command_reload:
type: task
debug: false
script:
- ^if <yaml.list.contains[dminereset_saves]> yaml unload id:dminereset_saves
- ^if <server.has_file[dminereset_saves.yml]> {
- announce "<red><&lb>dminereset<&rb> <green>Loading MineReset Config File"
- yaml load:dminereset_saves.yml id:dminereset_saves
}
else {
- announce "<red><&lb>dminereset<&rb> <green>Creating MineReset Config File"
- yaml create id:dminereset_saves
- yaml savefile:dminereset_saves.yml id:dminereset_saves
- inject dminereset_command_reset_default
}
dminereset_command_clear:
type: task
debug: false
script:
- yaml unload id:dminereset_saves
- yaml create id:dminereset_saves
- inject dminereset_command_save
dminereset_command_select:
type: task
debug: false
script:
- if <context.args.get[2].is[==].to[null]||true> {
- narrate "<&6>/dmr select <<>mine name<>>"
- narrate "<&6>mine name - name for your mine"
- queue clear
}
- if <context.args.get[2].is[!=].to[<context.args.get[2].escaped>]> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- define arg2 <context.args.get[2]>
- if <yaml[dminereset_saves].list_keys[dmr.mines].contains[%arg2%]> {
- narrate "<&6>Selecting mine with name<&co> %arg2%"
- flag player dmr.edit:%arg2%
}
else {
- narrate "<&6>mine with that name not found."
}
-
dminereset_command_resize:
type: task
debug: false
script:
- if !<player.has_flag[dmr.edit]> {
- narrate "You don't have an mine selected."
- queue clear
}
- if <player.selected_region.is[==].to[null]||true> {
- narrate "<&6>You don't have an area selected with WorldEdit wand."
- queue clear
}
- narrate "Resizing mine %mine%"
- yaml id:dminereset_saves set dmr.mines.<player.flag[dmr.edit]>.cuboid:<player.selected_region>
- inject dminereset_command_save
- note <player.selected_region> as:dmr_<player.flag[dmr.edit]>
- narrate "mine resized."
-
-dminereset_command_quit:
- type: task
- debug: false
- script:
- - if !<player.has_flag[dmr.play]> {
- - narrate "You don't appear to be in a game."
- - queue clear
- }
- - define mine <player.flag[dmr.play]>
- - narrate "Quitting mine game."
- - narrate "<player.name> quit the mine." targets:<server.flag[dmr.%mine%.players].as_list||li@>
- - inject dminereset_remove_player
- - run dminereset_check_end_of_game def:%mine%
-
-dminereset_command_spawn:
- type: task
- debug: false
- script:
- - define arg2 <context.args.get[2]||help>
- - define arg3 <context.args.get[3]||0>
- - if %arg2% == help {
- - narrate "<&6>/dmr spawn add - add a new spawn"
- - narrate "<&6>/dmr spawn del <<>ID<>> - delete spawn at ID number (use list)"
- - narrate "<&6>/dmr spawn list - list all spawns"
- - narrate "<&6>/dmr spawn clear - clear all spawns"
- - narrate "<&6>/dmr spawn show - visually show spawns"
- - queue clear
- }
- - if !<player.has_flag[dmr.edit]> {
- - narrate "You don't have an mine selected."
- - queue clear
- }
- - define mine <player.flag[dmr.edit]>
- - if li@add|del|list|show|clear contains %arg2% {
- - inject dminereset_spawn_%arg2%
- }
- else {
- - narrate "Invalid setting"
- }
-
-dminereset_spawn_add:
- type: task
- debug: false
- script:
- - if %arg3% == help {
- - narrate "<&6>/dmr spawn add"
- - narrate "<&6>Adds a spawnpoint to the selected mine."
- - queue clear
- }
- - narrate "Adding new spawnpoint."
- - define scount <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.spawnpoint].size||0>
- - define spawnpoint l@<player.location.block.x.add[.5]>,<player.location.block.y>,<player.location.block.z.add[.5]>,<player.location.pitch>,<player.location.yaw>,<player.location.world.name>
- - yaml id:dminereset_saves set dmr.mines.%mine%.spawnpoint.<def[scount].add[1]>:%spawnpoint%
- - inject dminereset_command_save
-
-dminereset_spawn_del:
- type: task
- debug: false
- script:
- - if %arg3% == help || %arg3% == 0 {
- - narrate "<&6>/dmr spawn del <<>spawnpoint<>>"
- - narrate "<&6>spawnpoint - ID Number for spawnpoint"
- - queue clear
- }
- - if <yaml[dminereset_saves].contains[dmr.mines.%mine%.spawnpoint.%arg3%]> {
- - narrate "Removing spawnpoint."
- - yaml id:dminereset_saves set dmr.mines.%mine%.spawnpoint.%arg3%:!
- - foreach <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.spawnpoint].numerical> {
- - define spawnpoint <yaml[dminereset_saves].read[dmr.mines.%mine%.spawnpoint.%value%]>
- - yaml id:dminereset_saves set dmr.mines.%mine%.spawnpoint.%value%:!
- - yaml id:dminereset_saves set dmr.mines.%mine%.spawnpoint.%loop_index%:%spawnpoint%
- }
- - inject dminereset_command_save
- }
- else {
- - narrate "Could not find that spawnpoint."
- }
-
-dminereset_spawn_list:
- type: task
- debug: false
- script:
- - narrate "Listing spawnpoints:"
- - foreach <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.spawnpoint].numerical> {
- - narrate "<<>%value%<>> <yaml[dminereset_saves].read[dmr.mines.%mine%.spawnpoint.%value%]>"
- }
-
-dminereset_spawn_show:
- type: task
- debug: false
- script:
- - narrate "Showing spawnpoints:"
- - repeat 10 {
- - foreach <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.spawnpoint].numerical> {
- - playeffect <yaml[dminereset_saves].read[dmr.mines.%mine%.spawnpoint.%value%]> effect:red_dust qty:15
- }
- - wait 1s
- }
-
-dminereset_spawn_clear:
- type: task
- debug: false
- script:
- - yaml id:dminereset_saves set dmr.mines.%mine%.spawnpoint:!
- - inject dminereset_command_save
-
-dminereset_command_tier:
- type: task
- debug: false
- script:
- - define arg2 <context.args.get[2]||help>
- - define arg3 <context.args.get[3]||li@>
- - if !<player.has_flag[dmr.edit]> {
- - narrate "You don't have an mine selected."
- - queue clear
- }
- - define mine <player.flag[dmr.edit]>
- - if %arg2% == help || ( li@add|del contains %arg2% && <def[arg3].as_list.size> <= 0 ) || ( li@add|del|list|clear|help !contains %arg2% ) {
- - narrate "<gold>/dmr tier<&lb>1<&pipe>2<&rb> (add<&pipe>del) (item)(<&pc>percent)(<&ns>qty)"
- - narrate "<gold><&sp><&sp><&sp>1 or 2 <green>the tier you want to modify"
- - narrate "<gold><&sp><&sp><&sp>add or del <green>(optional<&cm> leaving it out overwites the whole list)"
- - narrate "<gold><&sp><&sp><&sp>item <green>the item to modify"
- - narrate "<gold><&sp><&sp><&sp><&pc>value <green>the chance item will be in chest (optional<&cm> default 25)"
- - narrate "<gold><&sp><&sp><&sp><&ns>value <green>the max quantity to be in a chest (optional<&cm> default 1)"
- - narrate "<gold>/dmr tier<&lb>1<&pipe>2<&rb> list"
- - narrate "<gold>/dmr tier<&lb>1<&pipe>2<&rb> clear"
- - queue clear
- }
- else if %arg2% == clear {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.%arg1%:!
- - inject dminereset_command_save
- - queue clear
- }
- else if %arg2% == list {
- - narrate "%arg1% item list"
- - if !<yaml[dminereset_saves].contains[dmr.mines.%mine%.settings.%arg1%]> queue clear
- - foreach <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.settings.%arg1%]> {
- - define itemvals <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.%arg1%.%value%]>
- - narrate "<gold><&sp><&sp><&sp><def[value]><&sp><green><def[itemvals].get[1].pad_left[3]><&pc><&sp><white>qty<&co><def[itemvals].get[2]>"
- }
- - queue clear
- }
- - foreach %arg3% {
- - define newitem <el@val[%value%].before[%].before[#].as_item||null>
- - define percent <el@val[%value%].after[%].before[#].as_int||25>
- - define qty <el@val[%value%].after[#].before[%].as_int||1>
- - if <def[newitem].is[!=].to[null]> {
- - narrate "%value% is %newitem% at %percent% qty %qty%"
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.%arg1%.%newitem%:!
- - if %arg2% == add {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.%arg1%.%newitem%:|:%percent%|%qty%
- }
- }
- else {
- - narrate "%newitem% is not a valid item"
- }
- }
- - inject dminereset_command_save
-
-dminereset_task_scan_chests:
- type: task
- debug: false
- script:
- - wait 1t
- - if <context.args.get[2].is[==].to[null]||true> && !<player.has_flag[dmr.edit]> && <def[mine].exists> {
- - narrate "<&6>/dmr locked <<>mine ID<>>"
- - narrate "<&6>Either select an mine or provide an mine name"
- - queue clear
- }
- - if !<def[mine].exists> {
- - if <context.args.get[2].is[==].to[null]||true> {
- - define mine <player.flag[dmr.edit]>
- }
- else {
- - define mine <context.args.get[2]>
- }
- }
- - if %mine% != <def[mine].escaped> {
- - narrate "<&6>That value doesn't look right."
- - queue clear
- }
- - if <yaml[dminereset_saves].contains[dmr.mines.%mine%]> && <server.list_notables[cuboids].contains[cu@dmr_%mine%]> {
- - narrate "Processing chests in mine %mine"
- - define length <cu@dmr_%mine%.min.x.sub[<cu@dmr_%mine%.max.x>].abs>
- - define width <cu@dmr_%mine%.min.z.sub[<cu@dmr_%mine%.max.z>].abs>
- - define height <cu@dmr_%mine%.min.y.sub[<cu@dmr_%mine%.max.y>].abs>
- - define chunkie 100
- - define chests li@
- - repeat <def[length].div[%chunkie%].round_up> {
- - define x_tick <def[value].sub[1]>
- - repeat <def[width].div[%chunkie%].round_up> {
- - define z_tick <def[value].sub[1]>
- - repeat <def[height].div[%chunkie%].round_up> {
- - define y_tick <def[value].sub[1]>
- - foreach li@x|y|z {
- - define %value%_min <cu@dmr_%mine%.min.%value%.add[<def[%value%_tick].mul[%chunkie%]>]>
- - define %value%_max <cu@dmr_%mine%.min.%value%.add[<def[%value%_tick].add[1].mul[%chunkie%].sub[1]>]>
- - if <def[%value%_max]> > <cu@dmr_%mine%.max.%value%> define %value%_max <cu@dmr_%mine%.max.%value%>
- }
- - define subcuboid cu@%x_min%,%y_min%,%z_min%,<cu@dmr_%mine%.min.world.name>|%x_max%,%y_max%,%z_max%,<cu@dmr_%mine%.min.world.name>
- - define chests <def[chests].include[<def[subcuboid].get_blocks[chest,1|chest,2|chest,3|chest,4|chest,5|chest,6|trapped_chest,1|trapped_chest,2|trapped_chest,3|trapped_chest,4|trapped_chest,5|trapped_chest,6]>]>
- - wait 1t
- }
- }
- }
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.tier1_chests:!
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.tier2_chests:!
- - foreach %chests% {
- - narrate "Chest %value% material <def[value].material.name>"
- - if <def[value].material.name> == chest {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.tier1_chests:->:%value%
- }
- else {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.tier2_chests:->:%value%
- }
- }
- - inject dminereset_command_save
- - narrate "found <def[chests].size> chests "
- }
- else {
- - narrate "<&6>mine with that name not found."
- }
- - narrate "Chest processing for mine %mine% complete"
-
-dminereset_command_spawnable:
- type: task
- debug: false
- script:
- - define arg2 <context.args.get[2]||help>
- - define arg3 <context.args.get[3]||li@>
- - if !<player.has_flag[dmr.edit]> {
- - narrate "You don't have an mine selected."
- - queue clear
- }
- - define mine <player.flag[dmr.edit]>
- - if %arg2% == help || ( li@add|del contains %arg2% && <def[arg3].as_list.size> <= 0 ) || ( li@add|del|list|clear|help !contains %arg2% ) {
- - narrate "<gold>/dmr spawnable (add<&pipe>del) (entity|entity)"
- - narrate "<gold><&sp><&sp><&sp>entity <green>the creature to allow spawning"
- - narrate "<gold>/dmr spawnable list"
- - narrate "<gold>/dmr spawnable clear"
- - queue clear
- }
- else if %arg2% == clear {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.spawnable:!
- - narrate "Spawnable list cleared for mine %mine%"
- - inject dminereset_command_save
- - queue clear
- }
- else if %arg2% == list {
- - narrate "Spawnable item list"
- - if <yaml[dminereset_saves].contains[dmr.mines.%mine%.settings.spawnable].not> queue clear
- - foreach <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.spawnable]> {
- - narrate "<gold><&sp><&sp><&sp><def[value]>"
- }
- - queue clear
- }
- - foreach %arg3% {
- - define entity <el@val[%value%].as_entity||false>
- - if <def[entity].is[!=].to[false]> {
- - narrate "%value% is %entity%"
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.spawnable:<-:%entity%
- - if %arg2% == add {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.spawnable:->:%entity%
- }
- }
- else {
- - narrate "%entity% is not a valid item"
- }
- }
- - inject dminereset_command_save
-
dminereset_command_blockmgmt:
type: task
debug: false
script:
- define arg2 <context.args.get[2]||help>
- define arg3 <context.args.get[3]||li@>
- if %arg2% == help || ( li@add|del contains %arg2% && <def[arg3].as_list.size> <= 0 ) {
- narrate "<&6>/dmr %arg1% add - add block(s) to list"
- narrate "<&6>/dmr %arg1% del - delete block(s) from list"
- narrate "<&6>/dmr %arg1% list - list all blocks"
- narrate "<&6>/dmr %arg1% clear - clear all blocks in list"
- queue clear
}
- if !<player.has_flag[dmr.edit]> {
- narrate "You don't have an mine selected."
- queue clear
}
- define mine <player.flag[dmr.edit]>
- define settings li@add|del|list|clear
- if <def[settings].contains[%arg2%]> inject dminereset_blockmgmt_%arg2%
else narrate "Invalid %arg1% command"
dminereset_blockmgmt_add:
type: task
debug: false
script:
- define mine <def[mine]||<def[1]||0>>
- define arg1 <def[arg1]||<def[1]||0>>
- define arg3 <def[arg3]||<def[3].unescaped||li@>>
- if %arg3% == help {
- narrate "<&6>/dmr %arg1% add <<>value<&pipe>value<&pipe>...<>>"
- narrate "Where <&dq>value<&dq> is a <&pipe> separated list of block or material IDs."
- queue clear
}
- foreach <el@val[%arg3%].as_list> {
- define newmat <el@val[%value%].as_material||null>
- if <def[newmat].is[!=].to[null]> {
- narrate "%value% is %newmat%"
- if !<yaml[dminereset_saves].read[dmr.mines.%mine%.settings.%arg1%].contains[%newmat%]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.%arg1%:->:%newmat%
- narrate "Added blocks to %arg1% list for %mine%"
}
else {
- narrate "Item already in list"
}
}
else {
- narrate "%value% is not a valid block or item"
}
}
- inject dminereset_command_save
dminereset_blockmgmt_del:
type: task
debug: false
script:
- if %arg3% == help {
- narrate "<&6>/dmr %arg1% del <<>value<&pipe>value<&pipe>...<>>"
- narrate "Where <&dq>value<&dq> is a <&pipe> separated list of block or material IDs."
- queue clear
}
- foreach <def[arg3]> {
- define newmat <el@val[%value%].unescaped.as_material||null>
- if <def[newmat].is[!=].to[null]> {
- narrate "%newmat% is valid"
- if <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.%arg1%].contains[%newmat%]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.%arg1%:<-:%newmat%
- narrate "Deleted blocks from %arg1% list for %mine%"
}
}
else {
- narrate "%value% is not a valid block or item"
}
}
- inject dminereset_command_save
dminereset_blockmgmt_list:
type: task
debug: false
script:
- if <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.%arg1%].size||0> > 0 {
- define blocklist <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.%arg1%].replace[li@]>
- narrate "%blocklist%"
}
dminereset_blockmgmt_clear:
type: task
debug: false
script:
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.%arg1%:!
- narrate "Cleared blocks from %arg1% list for %mine%"
- inject dminereset_command_save
dminereset_command_rename:
type: task
debug: false
script:
- if <context.args.get[2].is[==].to[null]||true> || <context.args.get[3].is[==].to[null]||true> {
- narrate "<&6>/dmr select <<>mine name<>>"
- narrate "<&6>mine name - name for your mine"
- queue clear
}
- if <context.args.get[2].is[!=].to[<context.args.get[2].escaped>]> || <context.args.get[3].is[!=].to[<context.args.get[3].escaped>]> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- define arg2 <context.args.get[2]>
- define arg3 <context.args.get[3]>
- if li@help|false|true|null|%arg2% contains %arg3% {
- narrate "<&6>That is not a valid mine name."
- queue clear
}
- if <yaml[dminereset_saves].list_keys[dmr.mines].contains[%arg2%]> {
- narrate "<&6>Renaming mine with name<&co> %arg2% to<&co> %arg3%"
- run dminereset_task_yaml_copy def:dmr.mines.%arg2%|dmr.mines.%arg3% instantly
- run dminereset_command_delete def:%arg2% instantly
- note <yaml[dminereset_saves].read[dmr.mines.%arg3%.cuboid]||cu@0,0,0,world|0,0,0,world> as:dmr_%arg3%
- inject dminereset_command_save
}
else {
- narrate "<&6>mine with that name not found."
}
dminereset_command_lock:
type: task
debug: false
script:
- if <context.args.get[2].is[==].to[null]||true> && !<player.has_flag[dmr.edit]> {
- narrate "<&6>/dmr locked <<>mine ID<>>"
- narrate "<&6>Either select an mine or provide an mine name"
- queue clear
}
- if <context.args.get[2].is[==].to[null]||true> define mine <player.flag[dmr.edit]>
else define mine <context.args.get[2]>
- if %mine% != <def[mine].escaped> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- if <yaml[dminereset_saves].list_keys[dmr.mines].contains[%mine%]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.locked:true
- narrate "<&6>Locking mine with name: %mine%"
- inject dminereset_task_scan_chests
- inject dminereset_command_save
}
else {
- narrate "<&6>mine with that name not found."
}
dminereset_command_unlock:
type: task
debug: false
script:
- if <context.args.get[2].is[==].to[null]||true> && !<player.has_flag[dmr.edit]> {
- narrate "<&6>/dmr locked <<>mine ID<>>"
- narrate "<&6>Either select an mine or provide an mine name"
- queue clear
}
- if <context.args.get[2].is[==].to[null]||true> define mine <player.flag[dmr.edit]>
else define mine <context.args.get[2]>
- if %mine% != <def[mine].escaped> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- if <yaml[dminereset_saves].list_keys[dmr.mines].contains[%mine%]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.locked:false
- narrate "<&6>Unlocking mine with name: %mine%"
- inject dminereset_command_save
}
else {
- narrate "<&6>mine with that name not found."
}
dminereset_command_enable:
type: task
debug: false
script:
- if <context.args.get[2].is[==].to[null]||true> && !<player.has_flag[dmr.edit]> {
- narrate "<&6>/dmr enable <<>mine ID<>>"
- narrate "<&6>Either select an mine or provide an mine name"
- queue clear
}
- if <context.args.get[2].is[==].to[null]||true> define mine <player.flag[dmr.edit]>
else define mine <context.args.get[2]>
- if %mine% != <def[mine].escaped> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- if <yaml[dminereset_saves].list_keys[dmr.mines].contains[%mine%]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.enable:true
- narrate "<&6>Enabling mine with name: %mine%"
- inject dminereset_command_save
}
else {
- narrate "<&6>mine with that name not found."
}
dminereset_command_disable:
type: task
debug: false
script:
- if <context.args.get[2].is[==].to[null]||true> && !<player.has_flag[dmr.edit]> {
- narrate "<&6>/dmr enable <<>mine ID<>>"
- narrate "<&6>Either select an mine or provide an mine name"
- queue clear
}
- if <context.args.get[2].is[==].to[null]||true> define mine <player.flag[dmr.edit]>
else define mine <context.args.get[2]>
- if %mine% != <def[mine].escaped> {
- narrate "<&6>That value doesn't look right."
- queue clear
}
- if <yaml[dminereset_saves].list_keys[dmr.mines].contains[%mine%]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.enable:false
- narrate "<&6>Disabling mine with name: %mine%"
- inject dminereset_command_save
}
else {
- narrate "<&6>mine with that name not found."
}
dminereset_command_list:
type: task
debug: false
script:
- foreach <yaml[dminereset_saves].list_keys[dmr.mines]> {
- narrate "<&6>mine: %value%"
}
dminereset_command_set:
type: task
debug: false
script:
- define arg2 <context.args.get[2]||help>
- define arg3 <context.args.get[3]||help>
- if %arg2% == help {
- narrate "<&6>/dmr set <<>setting<>> <<>value<>>"
- narrate "<&6>setting - setting to change"
- narrate "<&6><&sp><&sp><&sp>restock"
- narrate "<&6><&sp><&sp><&sp>min_players"
- narrate "<&6><&sp><&sp><&sp>max_players"
- narrate "<&6><&sp><&sp><&sp>lightning"
- narrate "<&6><&sp><&sp><&sp>lightning_delay"
- narrate "<&6><&sp><&sp><&sp>countdown"
- narrate "<&6><&sp><&sp><&sp>timer"
- narrate "<&6>value - value to assign to setting"
- queue clear
}
- if !<player.has_flag[dmr.edit]> {
- narrate "You don't have an mine selected."
- queue clear
}
- define mine <player.flag[dmr.edit]>
- define settings li@restock|min_players|max_players|lightning|lightning_delay|countdown|timer
- if <def[settings].contains[%arg2%]> {
- inject dminereset_setting_%arg2%
}
else {
- narrate "Invalid setting"
- queue clear
- }
-
-dminereset_setting_restock:
- type: task
- debug: false
- script:
- - if %arg3% != help && ( %arg3% matches integer && %arg3% > 0 ) {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.restock:%arg3%
- - narrate "<&6>Changing RESTOCK on mine <<>%mine%<>> with value: %arg3%"
- - inject dminereset_command_save
}
- else {
- - narrate "<&6>/dmr set restock <<>value<>>"
- - narrate "Where <&dq>value<&dq> is the number of seconds between restocks."
- - narrate "Use 0 for no restocking."
- }
-dminereset_setting_min_players:
- type: task
- debug: false
- script:
- - if %arg3% matches integer && %arg3% >= 2 {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.min_players:%arg3%
- - narrate "<&6>Changing MIN_PLAYERS on mine <<>%mine%<>> with value: %arg3%"
- - inject dminereset_command_save
- }
- else {
- - narrate "<&6>/dmr set min_players <<>value<>>"
- - narrate "Where <&dq>value<&dq> is the minimum number of players for a game."
- - narrate "Default is 2."
- }
-
-dminereset_setting_max_players:
- type: task
- debug: false
- script:
- - if %arg3% matches integer && %arg3% >= <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.min_players]||2> {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.max_players:%arg3%
- - narrate "<&6>Changing MAX_PLAYERS on mine <<>%mine%<>> with value: %arg3%"
- - inject dminereset_command_save
- }
- else {
- - narrate "<&6>/dmr set max_players <<>value<>>"
- - narrate "Where <&dq>value<&dq> is the maximum number of players for a game."
- - narrate "Default is 20."
- }
-
-dminereset_setting_lightning:
- type: task
- debug: false
- script:
- - define allowed li@always|2|off
- - if <def[allowed].contains[%arg3%]> {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.lightning:%arg3%
- - narrate "<&6>Changing LIGHTNING on mine <<>%mine%<>> with value: %arg3%"
- - inject dminereset_command_save
- }
- else {
- - narrate "<&6>/dmr set lightning <<>value<>>"
- - narrate "<&6>Available values are: always, 2 or off"
- - narrate "<&6>Always = Use lightning through the whole game"
- - narrate "<&6>2 = Use lightning when game is down to 2 players"
- - narrate "<&6>off = Don't use lightning at all"
- }
-
-dminereset_setting_lightning_delay:
- type: task
- debug: false
- script:
- - if <def[arg3].is[matches].to[integer]> {
- - yaml id:dminereset_saves set dmr.mines.%mine%.settings.lightning_delay:%arg3%
- - narrate "<&6>Changing LIGHTNING_DELAY on mine <<>%mine%<>> with value: %arg3%"
- - inject dminereset_command_save
- }
- else {
- - narrate "<&6>/dmr set lightning_delay <<>value<>>"
- - narrate "<&6>value = Seconds between lightning strikes."
- - narrate "<&6>Available values are numbers > 0 "
- }
-
dminereset_setting_countdown:
type: task
debug: false
script:
- if <def[arg3].is[matches].to[integer]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.countdown:%arg3%
- narrate "<&6>Changing COUNTDOWN on mine <<>%mine%<>> with value: %arg3%"
- inject dminereset_command_save
}
else {
- narrate "<&6>/dmr set countdown <<>value<>>"
- narrate "<&6>Number = Seconds to countdown at start of game."
- narrate "<&6>Available values are numbers > 0 "
- narrate "<&6>Default is 10"
}
dminereset_setting_timer:
type: task
debug: false
script:
- if <def[arg3].is[matches].to[integer]> {
- yaml id:dminereset_saves set dmr.mines.%mine%.settings.timer:%arg3%
- narrate "<&6>Changing TIMER on mine <<>%mine%<>> with value: %arg3%"
- inject dminereset_command_save
}
else {
- narrate "<&6>/dmr set countdown <<>value<>>"
- narrate "<&6>Number = Timer to wait for players to join."
- narrate "<&6>Available values are numbers > 0 "
- narrate "<&6>Default is 30"
}
-dminereset_command_board:
- type: task
- debug: false
- script:
- - if !<player.has_flag[dmr.edit]> {
- - narrate "You don't have an mine selected."
- - queue clear
- }
- - define mine <player.flag[dmr.edit]>
- - define arg2 <context.args.get[2]>
- - define settings li@add|del|reset
- - if <def[settings].contains[%arg2%]> {
- - if <def[arg2].is[==].to[help]> inject dminereset_help_board_%arg2%
- else inject dminereset_board_%arg2%
- }
- else {
- - narrate "<&6>/dmr board <&lb>add<&rb><&pipe><&lb>del<&rb><&pipe><&lb>reset<&rb>"
- - narrate "add - Add a sign board"
- - narrate "del - Delete the mine sign configuration"
- - narrate "reset - Reset a board"
- }
-
-dminereset_board_add:
- type: task
- debug: false
- script:
- - define signs <player.selected_region.get_blocks.filter[material.bukkit_enum.is[==].to[wall_sign]]||0>
- - if <def[signs].size.is[OR_MORE].to[3]> {
- - narrate "Found your sign"
- - define sdir <def[signs].get[1].material.data>
- - define slist li@<def[signs].get[1]>
- - define signs <def[signs].remove[1]>
- - narrate "Direction %sdir%"
- # West
- - foreach %signs% {
- - define nsign %value%
- - define found false
- - foreach <def[slist]> {
- - if <def[nsign].as_location.y.is[MORE].than[<def[value].as_location.y>]> {
- - define slist <def[slist].insert[%nsign%].at[<def[loop_index]>]>
- - define found true
- - foreach stop
- }
- # West Facing
- else if <def[sdir].is[==].to[4]> {
- - if <def[nsign].as_location.z.is[LESS].than[<def[value].as_location.z>]> {
- - define slist <def[slist].insert[%nsign%].at[<def[loop_index]>]>
- - define found true
- - foreach stop
- }
- }
- # East Facing
- else if <def[sdir].is[==].to[5]> {
- - if <def[nsign].as_location.z.is[MORE].than[<def[value].as_location.z>]> {
- - define slist <def[slist].insert[%nsign%].at[<def[loop_index]>]>
- - define found true
- - foreach stop
- }
- }
- # North Facing
- else if <def[sdir].is[==].to[2]> && <def[nsign].as_location.y.is[==].than[<def[value].as_location.y>]> {
- - if <def[nsign].as_location.x.is[MORE].than[<def[value].as_location.x>]> {
- - define slist <def[slist].insert[%nsign%].at[<def[loop_index]>]>
- - define found true
- - foreach stop
- }
- }
- # South Facing
- else if <def[sdir].is[==].to[3]> {
- - if <def[nsign].as_location.x.is[LESS].than[<def[value].as_location.x>]> {
- - define slist <def[slist].insert[%nsign%].at[<def[loop_index]>]>
- - define found true
- - foreach stop
- }
- }
- }
- - if !<def[found]> {
- - if <def[sdir].is[==].to[4]> || <def[sdir].is[==].to[3]> {
- - define slist <def[slist].insert[%nsign%].at[<def[slist].size.add[1]>]>
- }
- else {
- - define slist <def[slist].insert[%nsign%].at[<def[slist].size>]>
- }
- }
- }
- - yaml id:dminereset_saves set dmr.mines.%mine%.board:%slist%
- - inject dminereset_command_save
- - inject dminereset_board_reset
- }
- else {
- - narrate "sign wall missing or not big enough"
- }
-
-dminereset_board_del:
- type: task
- debug: false
- script:
- - define sign <yaml[dminereset_saves].read[dmr.mines.%mine%.board]||li@>
- - foreach %sign% {
- - sign type:automatic "" %value%
- }
- - yaml id:dminereset_saves set dmr.mines.%mine%.board:!
- - inject dminereset_command_save
- - narrate "The board in mine %mine% was removed."
-
-dminereset_board_reset:
- type: task
- debug: false
- script:
- - ^define sign <yaml[dminereset_saves].read[dmr.mines.%mine%.board]||li@>
- - ^if <def[sign].size> > 2 {
- - define p_list <tern[<server.has_flag[dmr.%mine%.players]>]:<server.flag[dmr.%mine%.players].parse[name].alphanumeric>||li@>
- - define p_count <def[p_list].size>
- - define alive <server.get_online_players_flagged[dmr.play].filter[flag[dmr.play].is[==].to[%mine%]].size>
- # Set panel 1
- - sign type:automatic "MineReset Game|%mine%|<<>Click to Join<>>" <def[sign].get[1]>
- # Set panel 2
- - sign type:automatic "%mine%|<white>%p_count%<&0>/<&2>%alive%<&0>/<&4><server.flag[dmr.%mine%.dead].size||0><&0>/<&0><yaml[dminereset_saves].list_keys[dmr.mines.%mine%.spawnpoint].size||20>" <def[sign].get[2]>
- # Clear remaining boards
- - define dead_list <server.flag[dmr.%mine%.dead]||li@>
- - define p_sign li@
- - foreach <def[sign].get[3].to[<def[sign].size>]> {
- - if <def[p_list].size> = 0 {
- - sign type:automatic "" %value%
- - foreach next
- }
- - define l_sign %value%
- - define p_sign <def[p_list].get[1].to[3]||li@>
- - foreach p_sign {
- - if <def[dead_list].contains[%value%]> define p_sign <def[p_sign].remove[%loop_index%].insert[<red>%value%].at[%loop_index%]>
- }
- - define p_list <def[p_list].remove[1|2|3]||li@>
- - sign type:automatic "%p_sign%" %l_sign%
- }
- }
-
-dminereset_command_lobby:
- type: task
- debug: false
- script:
- - yaml id:dminereset_saves set dmr.lobby:l@<player.location.block.x.add[.5]>,<player.location.block.y>,<player.location.block.z.add[.5]>,<player.location.pitch>,<player.location.yaw>,<player.location.world.name>
- - inject dminereset_command_save
-
-dminereset_command_join:
- type: task
- debug: false
- script:
- - define mine <player.flag[dmr.play]||<context.args.get[2]||help>>
- - narrate "Joining game %mine%"
- - if %mine% == help {
- - narrate "<&6>/dmr join <<>mine Name<>>"
- - narrate "<&6>Either select an mine or provide an mine name"
- - queue clear
- }
- - if %mine% != <def[mine].escaped> {
- - narrate "<&6>That value doesn't look right."
- - queue clear
- }
- - if <server.has_flag[dmr.%mine%.started]> {
- - narrate "That game has already started"
- - queue clear
- }
- - define spawnpoints <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.spawnpoint].numerical>
- - define order <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.order]||ordered>
- - define ingame false
- - if <def[order].matches[random]> {
- - while <def[spawnpoints].size> > 0 {
- - define randomnum <util.random.int[1].to[<def[spawnpoints].size>]>
- - define spawnpt <yaml[dminereset_saves].read[dmr.mines.%mine%.spawnpoint.<def[spawnpoints].get[%randomnum%]>]>
- - if <def[spawnpt].find.players.within[3].size> == 0 {
- - define ingame true
- - while stop
- }
- - define spawnpoints <def[spawnpoints].remove[%randomnum%]>
- }
- }
- else {
- - foreach %spawnpoints% {
- - define spawnpt <yaml[dminereset_saves].read[dmr.mines.%mine%.spawnpoint.%value%]>
- - if <def[spawnpt].find.players.within[3].size> == 0 {
- - define ingame true
- - foreach stop
- }
- }
- }
- - if !<def[ingame]> {
- - narrate "Game spawns are full"
- }
- else {
- - flag server dmr.%mine%.players:->:<player>
- - inject dminereset_task_prep_player
- - define state up
- - inject dminereset_task_barricade
- - teleport <player> %spawnpt%
- - adjust <player> gamemode:survival
- - narrate "<player.name> is joining the game." targets:<server.flag[dmr.%mine%.players].exclude[<player>]||li@>
- - inject dminereset_board_reset
- - if <server.has_flag[dmr.%mine%.timer]> {
- - flag server dmr.%mine%.timer:<yaml[dminereset_saves].read[dmr.mines.%mine%.settings.timer]||30>
- }
- else {
- - run dminereset_game_check_start def:%mine%
- }
- }
-
-dminereset_game_check_start:
- type: task
- debug: false
- script:
- - wait 1t
- - ^define mine %1%
- - ^define timer <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.timer]||30>
- - ^flag server dmr.%mine%.timer:%timer%
- - ^define steps li@%timer%|15|10|5|1
- - ^if <def[timer].is[MORE].than[30]> {
- - repeat <def[timer].div[30].round_up> {
- - define steps <def[steps].insert[<def[value].mul[30]>].at[0]>
- }
- - define steps <def[steps].numerical.deduplicate>
- }
- - ^while <server.has_flag[dmr.%mine%.timer]> {
- - if <server.flag[dmr.%mine%.players].size||0> == 0 {
- - run dminereset_check_end_of_game def:%mine%
- - while stop
- }
- - ^if <def[steps].contains[<server.flag[dmr.%mine%.timer].as_int>]> {
- - if <server.flag[dmr.%mine%.players].size> >= <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.min_player]||2> {
- - narrate "Game will start in: <server.flag[dmr.%mine%.timer].as_int> seconds" targets:<server.flag[dmr.%mine%.players].as_list||li@>
- }
- else {
- - narrate "Waiting for players...<server.flag[dmr.%mine%.timer].as_int> seconds to go." targets:<server.flag[dmr.%mine%.players].as_list||li@>
- }
- }
- else if <server.flag[dmr.%mine%.timer].is[or_less].than[0]> {
- - if <server.flag[dmr.%mine%.players].size.is[less].than[<yaml[dminereset_saves].read[dmr.mines.%mine%.settings.min_player]||2>]> {
- - define state down
- - foreach <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.spawnpoint].numerical> {
- - define spawnpt <yaml[dminereset_saves].read[dmr.mines.%mine%.spawnpoint.%value%].as_location.block>
- - inject dminereset_task_barricade
- }
- - narrate "Not enough players, cancelling game" targets:<server.flag[dmr.%mine%.players].as_list||li@>
- - run dminereset_check_end_of_game def:%mine%|cancelled
- - flag server dmr.%mine%:!
- - while stop
- }
- - run dminereset_game_start def:%mine%
- - while stop
- }
- - ^flag server dmr.%mine%.timer:--
- - wait 1s
- }
-
-dminereset_game_start:
- type: task
- debug: false
- script:
- - ^define mine %1%
- - ^define timer <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.countdown]||10>
- - ^repeat %timer% {
- - define count <def[timer].sub[%value%].add[1]>
- - narrate "Beginning in <red>%count%" targets:<server.flag[dmr.%mine%.players].as_list||li@>
- - wait 1s
- }
- - ^run dminereset_stock_chests def:%mine% instantly
- - ^define state down
- - ^flag server dmr.%mine%.started:true
- - ^foreach <server.flag[dmr.%mine%.players].as_list> {
- - define spawnpt <def[value].location.block>
- - inject dminereset_task_barricade
- }
- - ^narrate "<green>GO!" targets:<server.flag[dmr.%mine%.players].as_list||li@>
- - ^if <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.lightning]||2> == always {
- - run dminereset_game_lightning def:%mine% id:dmr_lightning_%mine%
- }
- - ^if <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.restock]||0> > 0 {
- - run dminereset_game_restock def:%mine% id:dmr_restock_%mine%
- }
-
-dminereset_task_prep_player:
- type: task
- debug: false
- script:
- #- ^if <player.is_online> narrate "Remove Inventory"
- - ^define equipment <player.flag[dmr.equipment]||li@>
- - ^yaml id:dminereset_saves set 'dmr.player.<player.uuid>.equipment:<player.equipment>'
- - ^yaml id:dminereset_saves set 'dmr.player.<player.uuid>.inventory:<player.inventory.list_contents>'
- - ^yaml id:dminereset_saves set 'dmr.player.<player.uuid>.gamemode:<player.gamemode>
- - ^inventory clear d:<player>
- - ^equip <player> 'boots:<def[equipment].get[1]||i@air>' 'legs:<def[equipment].get[2]||i@air>' 'chest:<def[equipment].get[3]||i@air>' 'head:<def[equipment].get[4]||i@air>'
- - inject dminereset_command_save
-
-dminereset_task_cleanup_player:
- type: task
- debug: false
- script:
- #- ^if <player.is_online> narrate "Replace Inventory"
- - ^inventory clear d:<player>
- - ^define equipment <yaml[dminereset_saves].read[dmr.player.<player.uuid>.equipment]||li@>
- - ^equip <player> 'boots:<def[equipment].get[1]||i@air>' 'legs:<def[equipment].get[2]||i@air>' 'chest:<def[equipment].get[3]||i@air>' 'head:<def[equipment].get[4]||i@air>'
- - ^inventory set 'd:<player.inventory>' 'o:<yaml[dminereset_saves].read[dmr.player.<player.uuid>.inventory]||li@>'
- - ^adjust <player> gamemode:<yaml[dminereset_saves].read[dmr.player.<player.uuid>.gamemode]||survival]>
- - ^yaml id:dminereset_saves set 'dmr.player.<player.uuid>:!'
- - ^inject dminereset_command_save
- - ^flag player dmr.play:!
- - ^adjust <player> health:20
- - ^adjust <player> food_level:100
- - ^adjust <player> saturation:100
-
-dminereset_remove_player:
- type: task
- debug: false
- script:
- - ^if <player.is_online> drop <player.inventory.list_contents>
- - ^define mine <player.flag[dmr.play]>
- - ^teleport <player> <yaml[dminereset_saves].read[dmr.lobby]||<player.location.world.spawn_location>>
- - ^define sound <tern[<yaml[dminereset_saves].contains[dmr.mine.%mine%.settings.sound]>]:<yaml[dminereset_saves].read[dmr.mine.%mine%.settings.sound]>||FIREWORK_LARGE_BLAST>
- - ^if <def[sound].contains[custom]> playsound <server.flag[dmr.%mine%.players].as_list||li@> sound:%sound% volume:10 custom
- else playsound <server.flag[dmr.%mine%.players].as_list||li@> sound:%sound% volume:10
- - ^if <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.lightning]||2> == 2 {
- - run dminereset_game_lightning def:%mine%
- }
- - ^flag server dmr.%mine%.dead:->:<player.name>
- - inject dminereset_board_reset
- - ^if <player.is_online> inject dminereset_task_cleanup_player
-
-
-dminereset_check_end_of_game:
- type: task
- debug: false
- script:
- - ^define mine %1%
- - ^if <server.get_online_players_flagged[dmr.play].filter[flag[dmr.play].is[==].to[%mine%]].size.is[==].to[1]> && <def[2]||0> != cancelled {
- - define winner <server.get_online_players_flagged[dmr.play].filter[flag[dmr.play].is[==].to[%mine%]].get[1]>
- - announce "<green><def[winner].name> has won the MineReset game in %mine%"
- }
- - ^foreach <server.get_online_players_flagged[dmr.play].filter[flag[dmr.play].is[==].to[%mine%]]> {
- - run dminereset_remove_player player:%value% instantly
- }
- - ^run dminereset_task_block_rollback def:%mine%
- - ^remove <cu@dmr_%mine%.list_entities[dropped_item]>
- - if <queue.exists[dmr_lightning_%mine%]> queue queue:dmr_lightning_%mine% stop
- - if <queue.exists[dmr_restock_%mine%]> queue queue:dmr_restock_%mine% stop
- - ^flag server dmr.%mine%:!
- - inject dminereset_board_reset
- #- announce "Finished end_of_game"
-
-dminereset_stock_chests:
- type: task
- debug: false
- script:
- - ^define mine %1%
- - ^foreach li@tier1|tier2 {
- - define tier %value%
- - if !<yaml[dminereset_saves].contains[dmr.mines.%mine%.settings.%tier%]> foreach next
- - if !<yaml[dminereset_saves].contains[dmr.mines.%mine%.settings.%tier%_chests]> foreach next
- - foreach <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.%tier%_chests].as_list> {
- - define chest %value%
- - inventory clear d:%chest%
- - define additems li@
- - foreach <yaml[dminereset_saves].list_keys[dmr.mines.%mine%.settings.%tier%]> {
- - define itemvals <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.%tier%.%value%].as_list>
- - if <util.random.int[1].to[100].is[OR_LESS].than[<def[itemvals].get[1]||25>]> {
- - define additems <def[additems].insert[%value%[quantity=<util.random.int[1].to[<def[itemvals].get[2]||1>]>]].at[1]>
- }
- }
- - define additems <def[additems].get[1].to[27]>
- - foreach %additems% {
- - define item %value%
- - while true {
- - define slot <util.random.int[1].to[27]>
- - if <def[chest].inventory.slot[%slot%]> == i@air while stop
- }
- - inventory set d:%chest% o:%value% slot:%slot%
- }
- }
- }
-
-dminereset_task_block_track:
- type: task
- debug: false
- script:
- - ^define action %1%
- - ^define mine %2%
- - ^define location %3%
- - ^define mat %4%
- - ^yaml id:dminereset_saves set dmr.mines.%mine%.track.%action%:->:li@%location%|%mat%
- - inject dminereset_command_save
-
dminereset_task_block_rollback:
type: task
debug: false
script:
- ^define mine %1%
- ^if <yaml[dminereset_saves].contains[dmr.mines.%mine%.track]||false> {
- if <yaml[dminereset_saves].contains[dmr.mines.%mine%.track.break]> {
- foreach <yaml[dminereset_saves].read[dmr.mines.%mine%.track.break]> {
- modifyblock <def[value].get[1]> <def[value].get[2]>
}
}
- if <yaml[dminereset_saves].contains[dmr.mines.%mine%.track.place]> {
- foreach <yaml[dminereset_saves].read[dmr.mines.%mine%.track.place]> {
- modifyblock <def[value].get[1]> m@air
}
}
- yaml id:dminereset_saves set dmr.mines.%mine%.track:!
- inject dminereset_command_save
}
-dminereset_task_barricade:
- type: task
- debug: false
- script:
- - ^define barricade li@
- - ^define blocktype <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.barrier]||m@barrier>
- - ^foreach li@0|1|2 {
- - define y %value%
- - foreach li@-1|0|1 {
- - define x %value%
- - foreach li@-1|0|1 {
- - define z %value%
- - if %x% == 0 && %z% == 0 {
- - foreach next
- }
- - define block <def[spawnpt].add[%x%,%y%,%z%]>
- - if ( <def[state].is[==].to[up]> && <def[block].material.is[==].to[m@air]> ) || ( <def[state].is[==].to[down]> && <def[block].material.is[==].to[%blocktype%]> ) {
- - define barricade <def[barricade].insert[%block%].at[1]>
- }
- }
- }
- }
- - ^if <def[barricade].size.is[more].than[0]> modifyblock %barricade% <tern[<def[state].is[==].to[down]>]:m@air||%blocktype%> no_physics
-dminereset_game_lightning:
- type: task
- debug: false
- script:
- - ^define mine %1%
- - ^define timer <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.lightning_delay]||60>
- - ^while <server.has_flag[dmr.%mine%.started]> {
- - wait %timer%
- - foreach <server.get_online_players_flagged[dmr.play].filter[flag[dmr.play].is[==].to[%mine%]]> {
- - strike no_damage <def[value].location>
- }
- }
-
-dminereset_game_restock:
- type: task
- debug: false
- script:
- - ^define mine %1%
- - ^define timer <yaml[dminereset_saves].read[dmr.mines.%mine%.settings.restock]||0>
- - ^if %timer% == 0 queue stop
- - ^while <server.has_flag[dmr.%mine%.started]> {
- - wait %timer%
- - inject dminereset_stock_chests %mine%
- }
-
dminereset_task_yaml_copy:
type: task
debug: false
script:
- define sourcekey %1%
- define destkey %2%
- if <yaml[dminereset_saves].contains[%1%].not> {
- narrate "Source invalid for yaml copy"
- queue stop
}
- if <yaml[dminereset_saves].list_keys[%1%].size||0> > 0 {
- foreach <yaml[dminereset_saves].list_keys[%1%]||li@> {
- run dminereset_task_yaml_copy def:%1%.%value%|%2%.%value% instantly
}
}
else {
- if <yaml[dminereset_saves].is_list[%1%]> {
- foreach <yaml[dminereset_saves].read[%1%]> {
- yaml id:dminereset_saves set %2%:->:%value%
}
}
else {
- yaml id:dminereset_saves set %2%:<yaml[dminereset_saves].read[%1%]>
}
- }
-
-dminereset_task_block_change_check:
- type: task
- debug: false
- script:
- - foreach <yaml[dminereset_saves].list_keys[dmr.mines].exclude[default]> {
- - if <context.location.is_within[cu@dmr_%value%]> && <yaml[dminereset_saves].read[dmr.mines.%value%.settings.locked]||false> determine cancelled
}