Files
denizen-scripts/scripts/lib/gui_restore.dsc
2025-11-29 22:53:32 +02:00

64 lines
2.2 KiB
Plaintext

#
# GUI Restore - deletes & restores inventories that start with
# some specific special chars (usually color codes)
# (but also anvils because of anvil_input.dsc)
#
gui_restore_config:
debug: false
type: data
special_chars: <&f>邑邑邑邑
gui_restore_set_later:
debug: false
type: task
definitions: player|slot|item
script:
- flag <[player]> gui_restore_later:<[player].flag[gui_restore_later].if_null[<map[]>].with[<[slot]>].as[<[item]>]>
gui_restore_save:
debug: false
type: task
definitions: player
script:
- if <[player].has_flag[gui_restore]>:
- run gui_restore_load def.player:<player>
- flag <[player]> gui_restore:<[player].inventory.map_slots>
- define equipment <[player].inventory.equipment_map>
- inventory clear player:<[player]>
- foreach <[equipment]> key:slot as:item:
- inventory set slot:<[slot]> origin:<[item]> player:<[player]>
- foreach <[player].flag[gui_restore_later].if_null[<map[]>]> key:slot as:item:
- inventory set slot:<[slot]> origin:<[item]> player:<[player]>
gui_restore_load:
debug: false
type: task
definitions: player
script:
- if !<[player].has_flag[gui_restore]>:
- stop
- flag <[player]> gui_restore_later:!
- inventory clear player:<[player]>
- foreach <[player].flag[gui_restore]> key:slot as:item:
- inventory set slot:<[slot]> origin:<[item]> player:<[player]>
- flag <[player]> gui_restore:!
gui_restore_world:
debug: false
type: world
events:
on player joins:
- if <player.has_flag[gui_restore_later]>:
- flag <player> gui_restore_later:!
- if <player.has_flag[gui_restore]>:
- run gui_restore_load def.player:<player>
on player opens inventory bukkit_priority:lowest:
- if <context.inventory.title.starts_with[<script[gui_restore_config].data_key[special_chars].parsed>]>:
- run gui_restore_save def.player:<player>
- if <context.inventory.inventory_type> == anvil:
- run gui_restore_save def.player:<player>
on player closes inventory bukkit_priority:lowest:
- if <player.has_flag[gui_restore]>:
- run gui_restore_load def.player:<player>