Completed settings feature
This commit is contained in:
12
scripts/settings/settings_commands.dsc
Normal file
12
scripts/settings/settings_commands.dsc
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
settings_command_settings:
|
||||||
|
debug: false
|
||||||
|
type: command
|
||||||
|
name: settings
|
||||||
|
usage: /settings
|
||||||
|
description: Opens the settings menu.
|
||||||
|
permission: settings.command.settings
|
||||||
|
script:
|
||||||
|
- if <context.source_type> != player:
|
||||||
|
- narrate "<&c>Please run this command as a player."
|
||||||
|
- stop
|
||||||
|
- run settings_menu def.player:<player>
|
||||||
@@ -37,7 +37,7 @@ settings_config:
|
|||||||
type: text
|
type: text
|
||||||
default: text
|
default: text
|
||||||
max-length: 64
|
max-length: 64
|
||||||
regex: [a-z]
|
regex: "[a-z]+"
|
||||||
example5_key:
|
example5_key:
|
||||||
tab: Miscellaneous
|
tab: Miscellaneous
|
||||||
name: example5 setting key
|
name: example5 setting key
|
||||||
@@ -45,7 +45,7 @@ settings_config:
|
|||||||
type: text
|
type: text
|
||||||
default: text
|
default: text
|
||||||
max-length: 64
|
max-length: 64
|
||||||
regex: [a-z]
|
regex: "[a-z]+"
|
||||||
example6_key:
|
example6_key:
|
||||||
tab: Miscellaneous
|
tab: Miscellaneous
|
||||||
name: example6 setting key
|
name: example6 setting key
|
||||||
@@ -53,7 +53,7 @@ settings_config:
|
|||||||
type: text
|
type: text
|
||||||
default: text
|
default: text
|
||||||
max-length: 64
|
max-length: 64
|
||||||
regex: [a-z]
|
regex: "[a-z]+"
|
||||||
example7_key:
|
example7_key:
|
||||||
tab: Miscellaneous
|
tab: Miscellaneous
|
||||||
name: example7 setting key
|
name: example7 setting key
|
||||||
@@ -61,4 +61,4 @@ settings_config:
|
|||||||
type: text
|
type: text
|
||||||
default: text
|
default: text
|
||||||
max-length: 64
|
max-length: 64
|
||||||
regex: [a-z]
|
regex: "[a-z]+"
|
||||||
|
|||||||
@@ -76,6 +76,43 @@ settings_menu_is_last_page:
|
|||||||
- define end_index <[page].add[1].mul[4]>
|
- define end_index <[page].add[1].mul[4]>
|
||||||
- determine <[end_index].is_more_than_or_equal_to[<[keys_in_tab].size>]>
|
- determine <[end_index].is_more_than_or_equal_to[<[keys_in_tab].size>]>
|
||||||
|
|
||||||
|
settings_menu_set_non_text:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
definitions: player|key|value|tab|page
|
||||||
|
script:
|
||||||
|
- run settings_set def.player:<[player]> def.key:<[key]> def.value:<[value]> save:result
|
||||||
|
- define error <entry[result].created_queue.determination.get[1].if_null[null]>
|
||||||
|
- if <[error]> == null:
|
||||||
|
- run settings_menu def.player:<[player]> def.tab:<[tab]> def.page:<[page]>
|
||||||
|
- else:
|
||||||
|
- narrate targets:<[player]> <&c><[error]>
|
||||||
|
|
||||||
|
settings_menu_set_text_callback:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
definitions: player|input
|
||||||
|
script:
|
||||||
|
- define temp_state <[player].flag[settings_menu_temp_state]>
|
||||||
|
- run settings_set def.player:<[player]> def.key:<[temp_state].get[key]> def.value:<[input]> save:result
|
||||||
|
- define error <entry[result].created_queue.determination.get[1].if_null[null]>
|
||||||
|
- if <[error]> != null:
|
||||||
|
- narrate targets:<[player]> <&c><[error]>
|
||||||
|
- wait 1t
|
||||||
|
- run settings_menu def.player:<[player]> def.tab:<[temp_state].get[tab]> def.page:<[temp_state].get[page]>
|
||||||
|
|
||||||
|
settings_menu_set_text_helper:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
definitions: player|key|tab|page
|
||||||
|
script:
|
||||||
|
- definemap temp_state:
|
||||||
|
key: <[key]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page]>
|
||||||
|
- flag <[player]> settings_menu_temp_state:<[temp_state]>
|
||||||
|
- run anvil_input def.player:<[player]> "def.prompt:New value" def.callback:settings_menu_set_text_callback
|
||||||
|
|
||||||
settings_menu:
|
settings_menu:
|
||||||
debug: false
|
debug: false
|
||||||
type: task
|
type: task
|
||||||
@@ -87,27 +124,47 @@ settings_menu:
|
|||||||
- define page <[page].if_null[0]>
|
- define page <[page].if_null[0]>
|
||||||
- define contents <map[]>
|
- define contents <map[]>
|
||||||
- if <[page]> > 0:
|
- if <[page]> > 0:
|
||||||
- define previous_button <item[ender_pearl[display=<&2><<><<>]]>
|
- inject settings_menu_previous_page
|
||||||
- definemap content_entry:
|
|
||||||
49:
|
|
||||||
item: <[previous_button]>
|
|
||||||
script: settings_menu
|
|
||||||
definitions:
|
|
||||||
player: <[player]>
|
|
||||||
tab: <[tab]>
|
|
||||||
page: <[page].sub[1]>
|
|
||||||
- define contents <[contents].include[<[content_entry]>]>
|
|
||||||
- if !<proc[settings_menu_is_last_page].context[<[tab]>|<[page]>]>:
|
- if !<proc[settings_menu_is_last_page].context[<[tab]>|<[page]>]>:
|
||||||
- define next_button <item[ender_eye[display=<&2><>><>>]]>
|
- inject settings_menu_next_page
|
||||||
- definemap content_entry:
|
- inject settings_menu_render_tabs
|
||||||
51:
|
- inject settings_menu_render_settings
|
||||||
item: <[next_button]>
|
- run menu_open def.player:<[player]> def.title:<&f>邑邑邑邑酕<&a><&sp><&b><&sp><&c><&sp> def.size:54 def.contents:<[contents]>
|
||||||
script: settings_menu
|
|
||||||
definitions:
|
settings_menu_previous_page:
|
||||||
player: <[player]>
|
debug: false
|
||||||
tab: <[tab]>
|
type: task
|
||||||
page: <[page].add[1]>
|
script:
|
||||||
- define contents <[contents].include[<[content_entry]>]>
|
- define previous_button <item[ender_pearl[display=<&2><<><<>]]>
|
||||||
|
- definemap content_entry:
|
||||||
|
49:
|
||||||
|
item: <[previous_button]>
|
||||||
|
script: settings_menu
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page].sub[1]>
|
||||||
|
- define contents <[contents].include[<[content_entry]>]>
|
||||||
|
|
||||||
|
settings_menu_next_page:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
script:
|
||||||
|
- define next_button <item[ender_eye[display=<&2><>><>>]]>
|
||||||
|
- definemap content_entry:
|
||||||
|
51:
|
||||||
|
item: <[next_button]>
|
||||||
|
script: settings_menu
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page].add[1]>
|
||||||
|
- define contents <[contents].include[<[content_entry]>]>
|
||||||
|
|
||||||
|
settings_menu_render_tabs:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
script:
|
||||||
- foreach <[tabs]> as:t:
|
- foreach <[tabs]> as:t:
|
||||||
- define tab_button <item[book[display=<&b><[t]>]]>
|
- define tab_button <item[book[display=<&b><[t]>]]>
|
||||||
- definemap content_entry_value:
|
- definemap content_entry_value:
|
||||||
@@ -119,10 +176,133 @@ settings_menu:
|
|||||||
page: 0
|
page: 0
|
||||||
- define content_entry <map[].with[<[loop_index]>].as[<[content_entry_value]>]>
|
- define content_entry <map[].with[<[loop_index]>].as[<[content_entry_value]>]>
|
||||||
- define contents <[contents].include[<[content_entry]>]>
|
- define contents <[contents].include[<[content_entry]>]>
|
||||||
|
|
||||||
|
settings_menu_render_settings:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
script:
|
||||||
- foreach <proc[settings_all_settings_from_page_from_tab].context[<[tab]>|<[page]>]> as:setting_key:
|
- foreach <proc[settings_all_settings_from_page_from_tab].context[<[tab]>|<[page]>]> as:setting_key:
|
||||||
- define setting_item <item[paper[display=<&3><[keys].get[<[setting_key]>].get[name]>]]>
|
- define setting_item <item[paper[display=<&3><[keys].get[<[setting_key]>].get[name]>;lore=<[keys].get[<[setting_key]>].get[description].split_lines_by_width[128].split[<&nl>].parse_tag[<&7><[parse_value]>]>]]>
|
||||||
- definemap content_entry_value:
|
- definemap content_entry_value:
|
||||||
item: <[setting_item]>
|
item: <[setting_item]>
|
||||||
- define content_entry <map[].with[<[loop_index].mul[9].add[1]>].as[<[content_entry_value]>]>
|
- define position <[loop_index].mul[9].add[1]>
|
||||||
|
- define content_entry <map[].with[<[position]>].as[<[content_entry_value]>]>
|
||||||
|
- define data <[keys].get[<[setting_key]>]>
|
||||||
|
- define type <[data].get[type]>
|
||||||
|
- choose <[type].to_lowercase>:
|
||||||
|
- case boolean:
|
||||||
|
- inject settings_menu_render_settings_boolean
|
||||||
|
- case number:
|
||||||
|
- inject settings_menu_render_settings_number
|
||||||
|
- case list:
|
||||||
|
- inject settings_menu_render_settings_list
|
||||||
|
- case text:
|
||||||
|
- inject settings_menu_render_settings_text
|
||||||
|
- default:
|
||||||
|
- debug error "Unknown setting type for <[setting_key]>"
|
||||||
|
- stop
|
||||||
- define contents <[contents].include[<[content_entry]>]>
|
- define contents <[contents].include[<[content_entry]>]>
|
||||||
- run menu_open def.player:<[player]> def.title:Settings def.size:54 def.contents:<[contents]>
|
|
||||||
|
settings_menu_render_settings_boolean:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
script:
|
||||||
|
- define value <proc[settings_get].context[<[player]>|<[setting_key]>]>
|
||||||
|
- define boolean_value_button <tern[<[value]>].pass[<item[emerald[display=<&2>On]]>].fail[<item[redstone[display=<&c>Off]]>]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[boolean_value_button]>
|
||||||
|
script: settings_menu_set_non_text
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
key: <[setting_key]>
|
||||||
|
value: <[value].not>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[8]>].as[<[content_entry_value]>]>
|
||||||
|
|
||||||
|
settings_menu_render_settings_number:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
script:
|
||||||
|
- define value <proc[settings_get].context[<[player]>|<[setting_key]>]>
|
||||||
|
- define increment <[data].get[increment]>
|
||||||
|
- define decrement_button <item[medium_amethyst_bud[display=<&9>-<[increment]>]]>
|
||||||
|
- define increment_button <item[amethyst_cluster[display=<&9>+<[increment]>]]>
|
||||||
|
- define value_item <item[name_tag[display=<&9><[value]>]]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[decrement_button]>
|
||||||
|
script: settings_menu_set_non_text
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
key: <[setting_key]>
|
||||||
|
value: <[value].sub[<[increment]>]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[6]>].as[<[content_entry_value]>]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[increment_button]>
|
||||||
|
script: settings_menu_set_non_text
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
key: <[setting_key]>
|
||||||
|
value: <[value].add[<[increment]>]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[8]>].as[<[content_entry_value]>]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[value_item]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[7]>].as[<[content_entry_value]>]>
|
||||||
|
|
||||||
|
settings_menu_render_settings_list:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
script:
|
||||||
|
- define value <proc[settings_get].context[<[player]>|<[setting_key]>]>
|
||||||
|
- define values <[data].get[values]>
|
||||||
|
- define index <[values].find[<[value]>]>
|
||||||
|
- define previous_button <item[medium_amethyst_bud[display=<&9>Previous]]>
|
||||||
|
- define next_button <item[amethyst_cluster[display=<&9>Next]]>
|
||||||
|
- define value_item <item[name_tag[display=<&9><[value]>]]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[previous_button]>
|
||||||
|
script: settings_menu_set_non_text
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
key: <[setting_key]>
|
||||||
|
value: <tern[<[index].equals[1]>].pass[<[values].get[-1]>].fail[<[values].get[<[index].sub[1]>]>]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[6]>].as[<[content_entry_value]>]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[next_button]>
|
||||||
|
script: settings_menu_set_non_text
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
key: <[setting_key]>
|
||||||
|
value: <tern[<[index].equals[<[values].size>]>].pass[<[values].get[1]>].fail[<[values].get[<[index].add[1]>]>]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[8]>].as[<[content_entry_value]>]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[value_item]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[7]>].as[<[content_entry_value]>]>
|
||||||
|
|
||||||
|
settings_menu_render_settings_text:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
script:
|
||||||
|
- define value <proc[settings_get].context[<[player]>|<[setting_key]>]>
|
||||||
|
- define value_item <item[name_tag[display=<&9><[value]>]]>
|
||||||
|
- define change_button <item[writable_book[display=<&9>Change]]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[change_button]>
|
||||||
|
script: settings_menu_set_text_helper
|
||||||
|
definitions:
|
||||||
|
player: <[player]>
|
||||||
|
key: <[setting_key]>
|
||||||
|
tab: <[tab]>
|
||||||
|
page: <[page]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[8]>].as[<[content_entry_value]>]>
|
||||||
|
- definemap content_entry_value:
|
||||||
|
item: <[value_item]>
|
||||||
|
- define content_entry <[content_entry].with[<[position].add[7]>].as[<[content_entry_value]>]>
|
||||||
@@ -76,3 +76,4 @@ tabcomplete_config:
|
|||||||
- chatcolor
|
- chatcolor
|
||||||
- spawn
|
- spawn
|
||||||
- profiles
|
- profiles
|
||||||
|
- settings
|
||||||
|
|||||||
Reference in New Issue
Block a user