Compare commits

2 Commits

Author SHA1 Message Date
Sirger Tünde-Maria
8f6dfd4398 Added menu gui only 2025-12-02 01:23:58 +02:00
Sirger Tünde-Maria
106735a290 Done settings get and set 2025-11-30 01:06:39 +02:00
30 changed files with 273 additions and 92 deletions

View File

@@ -82,7 +82,8 @@ apartments_command_apartmentremoveaccess:
- aptrm - aptrm
permission: apartments.command.apartmentremoveaccess permission: apartments.command.apartmentremoveaccess
tab completions: tab completions:
1: <proc[apartments_all_with_access].context[<player>].parse[name]> # TODO: use the procedural tab-complete to handle this correctly!
1: <server.online_players.parse[name]>
script: script:
- if <context.source_type> != player: - if <context.source_type> != player:
- narrate "<&c>Please run this command as a player." - narrate "<&c>Please run this command as a player."

View File

@@ -109,17 +109,3 @@ apartments_end_edit:
- inventory set origin:<[item]> slot:<[slot]> player:<[player]> - inventory set origin:<[item]> slot:<[slot]> player:<[player]>
- adjust <[player]> gamemode:survival - adjust <[player]> gamemode:survival
- flag <[player]> apartments_edit:! - flag <[player]> apartments_edit:!
apartments_all_with_access:
debug: false
type: procedure
definitions: player
script:
- define location <player.location>
- define apartment <proc[apartments_at].context[<[location]>]>
- if <[apartment]> == null:
- determine <list[]>
- define owner <proc[apartments_owner].context[<[apartment]>]>
- if <[owner]> != <[player]>:
- determine <list[]>
- determine <[owner].flag[apartments_access].get[<[apartment]>].if_null[<list[]>].keys>

View File

@@ -45,7 +45,7 @@ carry_command_carry:
- narrate format:formats_prefix "Sent a carry request to <&e><proc[character_get_name].context[<[target]>]>" - narrate format:formats_prefix "Sent a carry request to <&e><proc[character_get_name].context[<[target]>]>"
# #
- narrate format:formats_prefix targets:<[target]> "<&e><proc[character_get_name].context[<player>]> <&7> would like to carry you." - narrate format:formats_prefix targets:<[target]> "<&e><proc[character_get_name].context[<player>]> <&7> would like to carry you."
- narrate targets:<[target]> <element[<&a><&l>[ACCEPT]].on_click[<entry[carry].command>]> - narrate targets:<[target]> "<element[<&a><&l>[ACCEPT]].on_click[<entry[carry].command>]>"
carry_command_uncarry: carry_command_uncarry:
debug: false debug: false

View File

@@ -62,7 +62,7 @@ furniture_menu:
item: <[item]> item: <[item]>
- define contents <[contents].with[<[loop_index]>].as[<[item_entry]>]> - define contents <[contents].with[<[loop_index]>].as[<[item_entry]>]>
- if <[page]> > 0: - if <[page]> > 0:
- definemap contents_extra: - define contents_extra:
49: 49:
item: <item[ender_pearl[display=<&a><&lt><&lt>]]> item: <item[ender_pearl[display=<&a><&lt><&lt>]]>
script: furniture_menu script: furniture_menu
@@ -71,7 +71,7 @@ furniture_menu:
page: <[page].sub[1]> page: <[page].sub[1]>
- define contents <[contents].include[<[contents_extra]>]> - define contents <[contents].include[<[contents_extra]>]>
- if <[page].add[1].mul[27]> < <[contents].size>: - if <[page].add[1].mul[27]> < <[contents].size>:
- definemap contents_extra: - define contents_extra:
51: 51:
item: <item[ender_eye[display=<&a><&gt><&gt>]]> item: <item[ender_eye[display=<&a><&gt><&gt>]]>
script: furniture_menu script: furniture_menu

View File

@@ -30,7 +30,7 @@ guns_world_gun:
- playeffect effect:redstone at:<player.location.above[1].points_between[<[location]>].distance[0.1]> special_data:0.5|white visibility:16 quantity:6 offset:0,0,0 - playeffect effect:redstone at:<player.location.above[1].points_between[<[location]>].distance[0.1]> special_data:0.5|white visibility:16 quantity:6 offset:0,0,0
- stop - stop
- playeffect effect:redstone at:<player.location.above[1].points_between[<[target].location.above[1]>].distance[0.1]> special_data:0.5|white visibility:16 quantity:6 offset:0,0,0 - playeffect effect:redstone at:<player.location.above[1].points_between[<[target].location.above[1]>].distance[0.1]> special_data:0.5|white visibility:16 quantity:6 offset:0,0,0
- if <[target].type> != player: - if <[target].entity_type> != player:
- stop - stop
- if <[target].has_flag[guns_frozen]>: - if <[target].has_flag[guns_frozen]>:
- stop - stop
@@ -51,7 +51,7 @@ guns_world_taser:
- define target <player.precise_target[7]||null> - define target <player.precise_target[7]||null>
- if <[target]> == null: - if <[target]> == null:
- stop - stop
- if <[target].type> != player: - if <[target].entity_type> != player:
- stop - stop
- if <[target].has_flag[guns_frozen]>: - if <[target].has_flag[guns_frozen]>:
- stop - stop

View File

@@ -61,15 +61,15 @@ textbox_write:
- playsound sound:textbox.text <[player]> custom pitch:<util.random.decimal[0.98].to[1]> - playsound sound:textbox.text <[player]> custom pitch:<util.random.decimal[0.98].to[1]>
- wait 1t - wait 1t
- if <[line].substring[<[value].add[1]>,<[value].add[1]>].trim.length.if_null[1]> == 0: - if <[line].substring[<[value].add[1]>,<[value].add[1]>].trim.length.if_null[1]> == 0:
- if <[line].substring[<[value]>,<[value]>]> == .: - if <[line].substring[<[value]>,<[value]>]> == ".":
- wait 2t - wait 2t
- if <[line].substring[<[value]>,<[value]>]> == !: - if <[line].substring[<[value]>,<[value]>]> == "!":
- wait 2t - wait 2t
- if <[line].substring[<[value]>,<[value]>]> == ?: - if <[line].substring[<[value]>,<[value]>]> == "?":
- wait 2t - wait 2t
- if <[line].substring[<[value]>,<[value]>]> == -: - if <[line].substring[<[value]>,<[value]>]> == "-":
- wait 2t - wait 2t
- if <[line].substring[<[value]>,<[value]>]> == ,: - if <[line].substring[<[value]>,<[value]>]> == ",":
- wait 2t - wait 2t
- wait <duration[1t]> - wait <duration[1t]>
- if <[player].flag[textbox_state].if_null[null]> != writing: - if <[player].flag[textbox_state].if_null[null]> != writing:

View File

@@ -26,13 +26,13 @@ compatibility_check_world:
- wait 5s - wait 5s
- if !<player.is_online>: - if !<player.is_online>:
- stop - stop
- narrate <&f> - narrate ""
- narrate "<&c><&l>[<&4><&l>!<&c><&l>] <&c>You are using an outdated Minecraft version!" - narrate "<&c><&l>[<&4><&l>!<&c><&l>] <&c>You are using an outdated Minecraft version!"
- narrate "<&6>Your version: <&f><[player_version]>" - narrate "<&6>Your version: <&f><[player_version]>"
- narrate "<&6>Server version: <&f><[server_version]>" - narrate "<&6>Server version: <&f><[server_version]>"
- narrate <&f> - narrate ""
- narrate "<&f>You can still play, however we strongly encourage you to consider <&e>updating your game<&f>." - narrate "<&f>You can still play, however we strongly encourage you to consider <&e>updating your game<&f>."
- narrate "<&f>We will not offer bug support if you are using an outdated version!" - narrate "<&f>We will not offer bug support if you are using an outdated version!"
- narrate <&f> - narrate ""
- narrate "<&7>(Your ViaVersion protocol: <player.viaversion_protocol>)" - narrate "<&7>(Your ViaVersion protocol: <player.viaversion_protocol>)"
- narrate <&f> - narrate ""

View File

@@ -31,4 +31,4 @@ payto_command_payto:
- clickable usages:1 until:1m save:pay: - clickable usages:1 until:1m save:pay:
- execute as_player "pay <[target].name> <[amount]>" - execute as_player "pay <[target].name> <[amount]>"
- narrate format:formats_prefix "<&7>Would you like to pay <&6><[amount].as_money><&7> to <&6><proc[character_get_name].context[<[target]>]>" - narrate format:formats_prefix "<&7>Would you like to pay <&6><[amount].as_money><&7> to <&6><proc[character_get_name].context[<[target]>]>"
- narrate <element[<&a><&l>[CLICK HERE]].on_click[<entry[pay].command>]> - narrate "<element[<&a><&l>[CLICK HERE]].on_click[<entry[pay].command>]>"

View File

@@ -85,7 +85,7 @@ phones_commands_phonecall:
- if !<[target].has_flag[phones_is_maybe_called]>: - if !<[target].has_flag[phones_is_maybe_called]>:
- nbs file:data/phones/songs/<[target].flag[phones].get[ringtone].if_null[Bad Apple]> play targets:<[target]> - nbs file:data/phones/songs/<[target].flag[phones].get[ringtone].if_null[Bad Apple]> play targets:<[target]>
- narrate targets:<[target]> "<&6>*** <&e>You're being called by <&e><[relative]><&7>." - narrate targets:<[target]> "<&6>*** <&e>You're being called by <&e><[relative]><&7>."
- narrate targets:<[target]> <&hover[<&a>Click to accept call from <[relative]>...]><element[<&a><&l>[ ACCEPT ]].on_click[<entry[accept].command>]><&end_hover> - narrate targets:<[target]> "<&hover[<&a>Click to accept call from <[relative]>...]><element[<&a><&l>[ ACCEPT ]].on_click[<entry[accept].command>]><&end_hover>"
# wait... # wait...
- flag <player> phones_call:<[target]> - flag <player> phones_call:<[target]>
- flag <player> phones_call_clickable:<entry[accept].id> - flag <player> phones_call_clickable:<entry[accept].id>

View File

@@ -93,18 +93,18 @@ phones_gui_home:
type: task type: task
definitions: player definitions: player
script: script:
- define inventory <inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&0>邒]]> - define inventory "<inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&0>邒]]>"
# settings # settings
- define settings <item[name_tag]> - define settings <item[name_tag]>
- adjust def:settings display:<&6>Settings - adjust def:settings "display:<&6>Settings"
- inventory set destination:<[inventory]> slot:13 origin:<[settings]> - inventory set destination:<[inventory]> slot:13 origin:<[settings]>
# contacts # contacts
- define contacts <item[book]> - define contacts <item[book]>
- adjust def:contacts display:<&6>Contacts - adjust def:contacts "display:<&6>Contacts"
- inventory set destination:<[inventory]> slot:14 origin:<[contacts]> - inventory set destination:<[inventory]> slot:14 origin:<[contacts]>
# texts # texts
- define texts <item[writable_book]> - define texts <item[writable_book]>
- adjust def:texts display:<&6>Messages - adjust def:texts "display:<&6>Messages"
- define notifications_textmessages <[player].flag[phones_notifications].get[textmessages].values.size.if_null[null]> - define notifications_textmessages <[player].flag[phones_notifications].get[textmessages].values.size.if_null[null]>
- if <[notifications_textmessages]> != null && <[notifications_textmessages]> != 0: - if <[notifications_textmessages]> != null && <[notifications_textmessages]> != 0:
- if <[notifications_textmessages]> > 99: - if <[notifications_textmessages]> > 99:
@@ -161,11 +161,11 @@ phones_contacts_print:
- if <[page]> > 0: - if <[page]> > 0:
- clickable usages:1 until:60s save:prev: - clickable usages:1 until:60s save:prev:
- execute as_player "phonecontacts <[page]>" - execute as_player "phonecontacts <[page]>"
- define prevpage <element[<&a><&lt>--].on_click[<entry[prev].command>]> - define prevpage "<element[<&a><&lt>--].on_click[<entry[prev].command>]>"
- if <[contacts].size> > <[page].add[1].mul[6]>: - if <[contacts].size> > <[page].add[1].mul[6]>:
- clickable usages:1 until:60s save:next: - clickable usages:1 until:60s save:next:
- execute as_player "phonecontacts <[page].add[2]>" - execute as_player "phonecontacts <[page].add[2]>"
- define nextpage <element[<&a>--<&gt>].on_click[<entry[next].command>]> - define nextpage "<element[<&a>--<&gt>].on_click[<entry[next].command>]>"
- narrate targets:<[player]> "<&nl><[prevpage]> <&6>Page <[page].add[1]>/<[contacts].size.sub[1].div[6].round_down.add[1]> <[nextpage]>" - narrate targets:<[player]> "<&nl><[prevpage]> <&6>Page <[page].add[1]>/<[contacts].size.sub[1].div[6].round_down.add[1]> <[nextpage]>"
# --- # ---
@@ -177,7 +177,7 @@ phones_texts_store:
type: task type: task
definitions: player|target|contents definitions: player|target|contents
script: script:
- narrate targets:<[player]> format:formats_prefix Sending... - narrate targets:<[player]> format:formats_prefix "Sending..."
# #
- define playertexts phones_texts_<[player].uuid>_<[target].uuid> - define playertexts phones_texts_<[player].uuid>_<[target].uuid>
- if <util.has_file[data/phones/texts/<[player].uuid>_<[target].uuid>.yml]>: - if <util.has_file[data/phones/texts/<[player].uuid>_<[target].uuid>.yml]>:
@@ -218,7 +218,7 @@ phones_texts_print:
type: task type: task
definitions: player|target|page definitions: player|target|page
script: script:
- narrate targets:<[player]> format:formats_prefix Loading... - narrate targets:<[player]> format:formats_prefix "Loading..."
# #
- define playertexts phones_texts_<[player].uuid>_<[target].uuid> - define playertexts phones_texts_<[player].uuid>_<[target].uuid>
- ~yaml id:<[playertexts]> load:data/phones/texts/<[player].uuid>_<[target].uuid>.yml - ~yaml id:<[playertexts]> load:data/phones/texts/<[player].uuid>_<[target].uuid>.yml
@@ -243,11 +243,11 @@ phones_texts_print:
- if <[page]> > 0: - if <[page]> > 0:
- clickable usages:1 until:60s save:prev: - clickable usages:1 until:60s save:prev:
- run phones_texts_print def.player:<[player]> def.target:<[target]> def.page:<[page].sub[1]> - run phones_texts_print def.player:<[player]> def.target:<[target]> def.page:<[page].sub[1]>
- define prevpage <element[<&a><&lt>--].on_click[<entry[prev].command>]> - define prevpage "<element[<&a><&lt>--].on_click[<entry[prev].command>]>"
- if <[messages_size]> > <[page].add[1].mul[5]>: - if <[messages_size]> > <[page].add[1].mul[5]>:
- clickable usages:1 until:60s save:next: - clickable usages:1 until:60s save:next:
- run phones_texts_print def.player:<[player]> def.target:<[target]> def.page:<[page].add[1]> - run phones_texts_print def.player:<[player]> def.target:<[target]> def.page:<[page].add[1]>
- define nextpage <element[<&a>--<&gt>].on_click[<entry[next].command>]> - define nextpage "<element[<&a>--<&gt>].on_click[<entry[next].command>]>"
- narrate targets:<[player]> "<&nl><[prevpage]> <&6>Page <[page].add[1]>/<[messages_size].sub[1].div[5].round_down.add[1]> <[nextpage]>" - narrate targets:<[player]> "<&nl><[prevpage]> <&6>Page <[page].add[1]>/<[messages_size].sub[1].div[5].round_down.add[1]> <[nextpage]>"
# clear notifications? # clear notifications?
- if <[player].flag[phones_notifications].get[textmessages].get[<[target]>].if_null[0]> > 0: - if <[player].flag[phones_notifications].get[textmessages].get[<[target]>].if_null[0]> > 0:
@@ -262,20 +262,20 @@ phones_gui_texts:
type: task type: task
definitions: player|page definitions: player|page
script: script:
- define inventory <inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&1>邒]]> - define inventory "<inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&1>邒]]>"
- define textslist <util.list_files[data/phones/texts].filter[starts_with[<player.uuid>]].parse[split[_].get[2].split[.].get[1]].parse_tag[<player[<[parse_value]>]>].get[<[page].mul[16].add[1]>].to[<[page].add[1].mul[16]>].if_null[<list[]>]> - define textslist <util.list_files[data/phones/texts].filter[starts_with[<player.uuid>]].parse[split[_].get[2].split[.].get[1]].parse_tag[<player[<[parse_value]>]>].get[<[page].mul[16].add[1]>].to[<[page].add[1].mul[16]>].if_null[<list[]>]>
# show contacts/numbers # show contacts/numbers
- foreach <[textslist]> as:target: - foreach <[textslist]> as:target:
- define receiver <proc[phones_relative_name].context[<[player]>|<[target]>]> - define receiver <proc[phones_relative_name].context[<[player]>|<[target]>]>
- define textsender <item[player_head]> - define textsender <item[player_head]>
- adjust def:textsender display:<&e><[receiver]> - adjust def:textsender display:<&e><[receiver]>
- adjust def:textsender lore:<list[<&7>Click to view your conversation.]> - adjust def:textsender "lore:<list[<&7>Click to view your conversation.]>"
# notifications # notifications
- define notifications_text <[player].flag[phones_notifications].get[textmessages].get[<[target]>].if_null[null]> - define notifications_text <[player].flag[phones_notifications].get[textmessages].get[<[target]>].if_null[null]>
- if <[notifications_text]> != null: - if <[notifications_text]> != null:
- if <[notifications_text]> > 99: - if <[notifications_text]> > 99:
- define notifications_text 99+ - define notifications_text 99+
- adjust def:textsender lore:<[textsender].lore.include[|<&7>You have <&6><[notifications_text]> <&7>unread messages.]> - adjust def:textsender "lore:<[textsender].lore.include[|<&7>You have <&6><[notifications_text]> <&7>unread messages.]>"
# #
- flag <[textsender]> phones:<[target]> - flag <[textsender]> phones:<[target]>
- flag <[textsender]> phones_target_skull_uuid:<[target].uuid> - flag <[textsender]> phones_target_skull_uuid:<[target].uuid>
@@ -363,9 +363,9 @@ phones_gui_music:
# ringtone selection mode? # ringtone selection mode?
- define ringtone <[ringtone].if_null[false]> - define ringtone <[ringtone].if_null[false]>
# make inventory # make inventory
- define inventory <inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&2>邒]]> - define inventory "<inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&2>邒]]>"
- if <[ringtone]>: - if <[ringtone]>:
- define inventory <inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&4>邒]]> - define inventory "<inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&4>邒]]>"
- define songsize <util.list_files[data/phones/songs].size> - define songsize <util.list_files[data/phones/songs].size>
- define songsonpage <tern[<[ringtone]>].pass[15].fail[14]> - define songsonpage <tern[<[ringtone]>].pass[15].fail[14]>
- define songlist <util.list_files[data/phones/songs].parse[split[.].get[1]].filter[length.is_more_than[0]].get[<[page].mul[<[songsonpage]>].add[1]>].to[<[page].add[1].mul[<[songsonpage]>]>].if_null[<list[]>]> - define songlist <util.list_files[data/phones/songs].parse[split[.].get[1]].filter[length.is_more_than[0]].get[<[page].mul[<[songsonpage]>].add[1]>].to[<[page].add[1].mul[<[songsonpage]>]>].if_null[<list[]>]>
@@ -373,7 +373,7 @@ phones_gui_music:
- foreach <[songlist]> as:songname: - foreach <[songlist]> as:songname:
- define song <item[jukebox]> - define song <item[jukebox]>
- adjust def:song display:<&e><[songname]> - adjust def:song display:<&e><[songname]>
- adjust def:song lore:<list[<&7>Click to start playing.]> - adjust def:song "lore:<list[<&7>Click to start playing.]>"
- flag <[song]> phones:<[songname]> - flag <[song]> phones:<[songname]>
- inventory set destination:<[inventory]> slot:<[loop_index].sub[1].div[3].round_down.mul[9].add[4].add[<[loop_index].sub[1].mod[3]>]> origin:<[song]> - inventory set destination:<[inventory]> slot:<[loop_index].sub[1].div[3].round_down.mul[9].add[4].add[<[loop_index].sub[1].mod[3]>]> origin:<[song]>
# stop # stop
@@ -405,7 +405,7 @@ phones_gui_settings:
type: task type: task
definitions: player definitions: player
script: script:
- define inventory <inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&3>邒]]> - define inventory "<inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&3>邒]]>"
# ringtone # ringtone
- define ringtone <item[note_block]> - define ringtone <item[note_block]>
- adjust def:ringtone display:<&6>Ringtone - adjust def:ringtone display:<&6>Ringtone
@@ -427,7 +427,7 @@ phones_gui_settings_blocked:
type: task type: task
definitions: player|page definitions: player|page
script: script:
- define inventory <inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&5>邒]]> - define inventory "<inventory[generic[size=54;title=<&f>邑邑邑邑鄀<&5>邒]]>"
- define blockedlist <[player].flag[phones].get[blocked].get[<[page].mul[16].add[1]>].to[<[page].add[1].mul[16]>].if_null[<list[]>]> - define blockedlist <[player].flag[phones].get[blocked].get[<[page].mul[16].add[1]>].to[<[page].add[1].mul[16]>].if_null[<list[]>]>
# show blocked numbers # show blocked numbers
- foreach <[blockedlist]> as:target: - foreach <[blockedlist]> as:target:

View File

@@ -115,11 +115,11 @@ phones_world_gui:
- run phones_gui_music def.player:<player> def.page:0 def.ringtone:false - run phones_gui_music def.player:<player> def.page:0 def.ringtone:false
- else if <[title]> == <&1>邒: - else if <[title]> == <&1>邒:
- if <context.item.material.name> == ender_pearl: - if <context.item.material.name> == ender_pearl:
- define page <player.flag[phones_gui_page].sub[1]> - define page <player.flag[phones_gui_page].sub_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_texts def.player:<player> def.page:<[page]> - run phones_gui_texts def.player:<player> def.page:<[page]>
- else if <context.item.material.name> == ender_eye: - else if <context.item.material.name> == ender_eye:
- define page <player.flag[phones_gui_page].add[1]> - define page <player.flag[phones_gui_page].add_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_texts def.player:<player> def.page:<[page]> - run phones_gui_texts def.player:<player> def.page:<[page]>
- else if <context.slot> == 50: - else if <context.slot> == 50:
@@ -130,11 +130,11 @@ phones_world_gui:
# Music # Music
- else if <[title]> == <&2>邒: - else if <[title]> == <&2>邒:
- if <context.item.material.name> == ender_pearl: - if <context.item.material.name> == ender_pearl:
- define page <player.flag[phones_gui_page].sub[1]> - define page <player.flag[phones_gui_page].sub_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:false - run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:false
- else if <context.item.material.name> == ender_eye: - else if <context.item.material.name> == ender_eye:
- define page <player.flag[phones_gui_page].add[1]> - define page <player.flag[phones_gui_page].add_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:false - run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:false
- else if <context.slot> == 50: - else if <context.slot> == 50:
@@ -158,11 +158,11 @@ phones_world_gui:
# Ringtone Select # Ringtone Select
- else if <[title]> == <&4>邒: - else if <[title]> == <&4>邒:
- if <context.item.material.name> == ender_pearl: - if <context.item.material.name> == ender_pearl:
- define page <player.flag[phones_gui_page].sub[1]> - define page <player.flag[phones_gui_page].sub_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:true - run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:true
- else if <context.item.material.name> == ender_eye: - else if <context.item.material.name> == ender_eye:
- define page <player.flag[phones_gui_page].add[1]> - define page <player.flag[phones_gui_page].add_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:true - run phones_gui_music def.player:<player> def.page:<[page]> def.ringtone:true
- else if <context.slot> == 50: - else if <context.slot> == 50:
@@ -174,11 +174,11 @@ phones_world_gui:
# Blocked # Blocked
- else if <[title]> == <&5>邒: - else if <[title]> == <&5>邒:
- if <context.item.material.name> == ender_pearl: - if <context.item.material.name> == ender_pearl:
- define page <player.flag[phones_gui_page].sub[1]> - define page <player.flag[phones_gui_page].sub_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_settings_blocked def.player:<player> def.page:<[page]> - run phones_gui_settings_blocked def.player:<player> def.page:<[page]>
- else if <context.item.material.name> == ender_eye: - else if <context.item.material.name> == ender_eye:
- define page <player.flag[phones_gui_page].add[1]> - define page <player.flag[phones_gui_page].add_int[1]>
- flag <player> phones_gui_page:<[page]> - flag <player> phones_gui_page:<[page]>
- run phones_gui_settings_blocked def.player:<player> def.page:<[page]> - run phones_gui_settings_blocked def.player:<player> def.page:<[page]>
- else if <context.slot> == 50: - else if <context.slot> == 50:

View File

@@ -9,7 +9,7 @@ requestsearch_command_requestsearch:
- patdown - patdown
permission: invreq.patdown permission: invreq.patdown
tab completions: tab completions:
1: <empty> 1: <empyy>
script: script:
- if <context.source_type> != player: - if <context.source_type> != player:
- narrate "<&c>Please run this command as a player." - narrate "<&c>Please run this command as a player."

View File

@@ -0,0 +1,64 @@
settings_config:
debug: false
type: data
tabs:
- General
- Miscellaneous
keys:
example1_key:
tab: General
name: example1 setting key
description: example1 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: boolean
default: true
example2_key:
tab: General
name: example2 setting key
description: example2 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: number
default: 5
min: 0
max: 10
increment: 0.5
example3_key:
tab: Miscellaneous
name: example3 setting key
description: example3 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: list
default: male
values:
- male
- female
- prefer not to say
example4_key:
tab: Miscellaneous
name: example4 setting key
description: example4 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: text
default: text
max-length: 64
regex: [a-z]
example5_key:
tab: Miscellaneous
name: example5 setting key
description: example5 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: text
default: text
max-length: 64
regex: [a-z]
example6_key:
tab: Miscellaneous
name: example6 setting key
description: example6 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: text
default: text
max-length: 64
regex: [a-z]
example7_key:
tab: Miscellaneous
name: example7 setting key
description: example7 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: text
default: text
max-length: 64
regex: [a-z]

View File

@@ -0,0 +1,128 @@
settings_set:
debug: false
type: task
definitions: player|key|value
script:
- define keys <script[settings_config].data_key[keys]>
- if !<[keys].contains[<[key]>]>:
- determine "Key not found: <[key]>"
- if <[value]> == null:
- determine "Value cannot be null"
- define data <[keys].get[<[key]>]>
- define type <[data].get[type]>
- choose <[type].to_lowercase>:
- case boolean:
- if <[value]> != true && <[value]> != false:
- determine "Value must be true or false"
- case number:
- define min <[data].get[min]>
- define max <[data].get[max]>
- if <[value]> < <[min]> || <[value]> > <[max]>:
- determine "Value must be between <[min]> and <[max]>"
- case list:
- define values <[data].get[values]>
- if !<[values].contains[<[value]>]>:
- determine "Value must be one of the following: <[values].formatted>"
- case text:
- define max_length <[data].get[max-length]>
- define regex <[data].get[regex]>
- if <[value].length> > <[max_length]>:
- determine "Value must be shorter than <[max_length]> characters"
- if !<[value].regex_matches[<[regex]>]>:
- determine "Value should match the regex <[regex]>"
- default:
- determine "Unknown type <[type]>"
- define settings <[player].flag[settings].if_null[<map[]>]>
- define settings <[settings].with[<[key]>].as[<[value]>]>
- flag <[player]> settings:<[settings]>
settings_get:
debug: false
type: procedure
definitions: player|key
script:
- define keys <script[settings_config].data_key[keys]>
- if !<[keys].contains[<[key]>]>:
- determine null
- define settings <[player].flag[settings].if_null[<map[]>]>
- define value <[settings].get[<[key]>].if_null[<[keys].get[<[key]>].get[default]>]>
- determine <[value]>
settings_all_settings_from_tab:
debug: false
type: procedure
definitions: tab
script:
- define keys <script[settings_config].data_key[keys]>
- define keys_in_tab <[keys].keys.filter_tag[<[keys].get[<[filter_value]>].get[tab].equals[<[tab]>]>]>
- determine <[keys_in_tab]>
settings_all_settings_from_page_from_tab:
debug: false
type: procedure
definitions: tab|page
script:
- define keys_in_tab <proc[settings_all_settings_from_tab].context[<[tab]>]>
- define start_index <[page].mul[4].add[1]>
- define end_index <[page].add[1].mul[4]>
- determine <[keys_in_tab].get[<[start_index]>].to[<[end_index]>]>
settings_menu_is_last_page:
debug: false
type: procedure
definitions: tab|page
script:
- define keys_in_tab <proc[settings_all_settings_from_tab].context[<[tab]>]>
- define end_index <[page].add[1].mul[4]>
- determine <[end_index].is_more_than_or_equal_to[<[keys_in_tab].size>]>
settings_menu:
debug: false
type: task
definitions: player|tab|page
script:
- define keys <script[settings_config].data_key[keys]>
- define tabs <script[settings_config].data_key[tabs]>
- define tab <[tab].if_null[<[tabs].get[1]>]>
- define page <[page].if_null[0]>
- define contents <map[]>
- if <[page]> > 0:
- define previous_button <item[ender_pearl[display=<&2><&lt><&lt>]]>
- 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]>]>:
- define next_button <item[ender_eye[display=<&2><&gt><&gt>]]>
- 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]>]>
- foreach <[tabs]> as:t:
- define tab_button <item[book[display=<&b><[t]>]]>
- definemap content_entry_value:
item: <[tab_button]>
script: settings_menu
definitions:
player: <[player]>
tab: <[t]>
page: 0
- define content_entry <map[].with[<[loop_index]>].as[<[content_entry_value]>]>
- define contents <[contents].include[<[content_entry]>]>
- 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]>]]>
- definemap content_entry_value:
item: <[setting_item]>
- define content_entry <map[].with[<[loop_index].mul[9].add[1]>].as[<[content_entry_value]>]>
- define contents <[contents].include[<[content_entry]>]>
- run menu_open def.player:<[player]> def.title:Settings def.size:54 def.contents:<[contents]>

View File

@@ -8,7 +8,7 @@ sports_volleyball_world:
- define ball <context.entity> - define ball <context.entity>
- if !<[ball].has_flag[ball]>: - if !<[ball].has_flag[ball]>:
- stop - stop
- if <[ball].type> == armor_stand: - if <[ball].entity_type> == armor_stand:
- define ball <proc[ball_get].context[<[ball].flag[ball]>]> - define ball <proc[ball_get].context[<[ball].flag[ball]>]>
- if !<[ball].flag[ball].starts_with[sports_volleyball]>: - if !<[ball].flag[ball].starts_with[sports_volleyball]>:
- stop - stop

View File

@@ -17,6 +17,7 @@ ch1_1_marie_assign:
interact scripts: interact scripts:
- ch1_1_marie_interact - ch1_1_marie_interact
# TODO: this seems like the wrong place
ch1_1_define_phone: ch1_1_define_phone:
debug: false debug: false
type: task type: task

View File

@@ -27,7 +27,7 @@ dialogue_npc_kobayashi:
- ~run textbox_choice def.player:<player> def.queue:<queue> def.choices:<[choices]> save:result - ~run textbox_choice def.player:<player> def.queue:<queue> def.choices:<[choices]> save:result
- define choice <entry[result].created_queue.determination.get[1]> - define choice <entry[result].created_queue.determination.get[1]>
- if <[choice]> == left: - if <[choice]> == left:
- ~run textbox_write def.player:<player> def.queue:<queue> def.line3s:What?$$nlWhy? - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:What?$$nlWhy?"
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Well, look, I can't tell you that, luv.$$nl It's against Hospital Policy." - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Well, look, I can't tell you that, luv.$$nl It's against Hospital Policy."
- definemap choices: - definemap choices:
left: left:

View File

@@ -17,7 +17,7 @@ intro_interact_posters_task:
script: script:
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Book-related posters are on the wall." - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Book-related posters are on the wall."
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Screw that. I'm running away.<&dq>" - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Screw that. I'm running away.<&dq>"
- ~run textbox_write def.player:<player> def.queue:<queue> def.line3s:<&o><&dq>Where?<&dq> - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Where?<&dq>"
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Dunno. Do you want to come?<&dq>" - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Dunno. Do you want to come?<&dq>"
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Yes,<&dq> I said without thinking." - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Yes,<&dq> I said without thinking."
@@ -74,12 +74,12 @@ intro_interact_laptop_task_name_callback:
- define __player <[player]> - define __player <[player]>
- define name <[input].substring[1,24]> - define name <[input].substring[1,24]>
- execute as_player player:<[player]> "rpname <[name]>" - execute as_player player:<[player]> "rpname <[name]>"
- ~run textbox_write def.player:<player> def.queue:<queue> def.line3s:<[name]> - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<[name]>"
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:How nice!" - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:How nice!"
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Let's give them a description.$$nlDescribe their physical attributes." - ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Let's give them a description.$$nlDescribe their physical attributes."
- waituntil <player.has_flag[textbox_state].not> max:5s - waituntil <player.has_flag[textbox_state].not> max:5s
- ~run textbox_flush def.player:<player> - ~run textbox_flush def.player:<player>
- run anvil_input def.player:<player> def.prompt:Description def.callback:intro_interact_laptop_task_description_callback - run anvil_input def.player:<player> "def.prompt:Description" def.callback:intro_interact_laptop_task_description_callback
intro_interact_laptop_task_description_callback: intro_interact_laptop_task_description_callback:
debug: false debug: false
@@ -116,7 +116,7 @@ intro_interact_laptop_task_role_menu:
definitions: definitions:
player: <[player]> player: <[player]>
input: yes input: yes
- run menu_open def.player:<[player]> def.title:<&f>邑邑邑邑酐<&a><&sp><&b><&sp><&c><&sp> def.size:9 def.contents:<[contents]> - run menu_open def.player:<[player]> "def.title:<&f>邑邑邑邑酐<&a><&sp><&b><&sp><&c><&sp>" def.size:9 def.contents:<[contents]>
intro_interact_laptop_task_role_callback: intro_interact_laptop_task_role_callback:
debug: false debug: false
@@ -196,4 +196,5 @@ intro_interact_laptop_task_role_callback:
- adjust <player> remove_effects - adjust <player> remove_effects
- adjust <player> show_to_players - adjust <player> show_to_players
- flag <player> intro:done - flag <player> intro:done
- execute as_player player:<player> spawn - execute as_player player:<player> "spawn"

View File

@@ -217,7 +217,7 @@ storyboard_npc_internal_auto_memory_management:
after player joins: after player joins:
- define npcs <player.flag[storyboard_state].get[npcs].if_null[<map[]>]> - define npcs <player.flag[storyboard_state].get[npcs].if_null[<map[]>]>
- foreach <[npcs]> key:name as:data: - foreach <[npcs]> key:name as:data:
- if <[data].get[allocated].if_null[null]> == reallocate: - if <[data].get[allocated]> == reallocate:
- define name <[data].get[name]> - define name <[data].get[name]>
- define type <[data].get[type]> - define type <[data].get[type]>
- define at <[data].get[at]> - define at <[data].get[at]>