Paste #39963: Untitled Paste

Date: 2017/02/16 19:12:36 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


cosmetic_handler_gui_handler:
  type: world
  debug: true
  events:
    on player clicks in cosmetic_handler_gui:
    - determine cancelled passively
    - define action <context.item.nbt[action]||null>

    - choose <def[action]>:

      - case open:
        - define menu <context.item.nbt[menu]||null>
        - if <def[menu]> != null {
          - playsound <player> sound:UI_BUTTON_CLICK
          - flag <player> cosmetic_handler.gui.current_menu:<def[menu]>
          - run cosmetic_handler_open_gui def:<def[menu]>
          }

      - case perform:
        - define cosmetic <context.item.nbt[cosmetic]||null>
        - if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled].not> {
          - playsound <player> sound:UI_BUTTON_CLICK pitch:1.2
          } else {
          - playsound <player> sound:UI_BUTTON_CLICK pitch:0.8
          }
        - wait 1t
        - ~run cosmetic_handler_toggle def:<def[cosmetic]> instantly
        - run cosmetic_handler_open_gui def:<player.flag[cosmetic_handler.gui.current_menu]||null>



##
# cosmetic controllers
##


cosmetic_handler_toggle:
  type: task
  debug: true
  speed: 0
  script:
  - define cosmetic <def[1]||null>
  - if <def[cosmetic]> == null {
    - debug error "No cosmetic specified!"
    - queue clear
    }

  - if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled].not> {
    - ~run cosmetic_handler_enable_cosmetic def:<def[cosmetic]>
    } else {
    - ~run cosmetic_handler_disable_cosmetic def:<def[cosmetic]>
    }


cosmetic_handler_enable_cosmetic:
  type: task
  debug: true
  speed: 0
  script:
    - define cosmetic <def[1]||null>
    - if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled]> {
      - queue clear
      }
    - ~run cosmetic_handler_disable_all_cosmetics
    - flag <player> cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled
    - flag <player> cosmetic_handler.active_cosmetics:->:<def[cosmetic]>
    - define flag cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled

    - define category <s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.category]||null>
    - flag <player> cosmetic_handler.gui.inventory.<def[category]>[<player.flag[cosmetic_handler.gui.caching_index_of.<def[category]>.<def[cosmetic]>]||0>]:<proc[cosmetic_gui_item].context[<def[cosmetic]>].escaped>

    - define script "<s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.script name].as_script>"
    - if "<def[script].list_keys[].contains[on enable]||false>" {
      - inject <def[script]> "path:on enable"
      }


cosmetic_handler_disable_cosmetic:
  type: task
  debug: true
  speed: 0
  script:
    - define cosmetic <def[1]||null>
    - if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled].not> {
      - queue clear
      }
    - flag <player> cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled:!
    - flag <player> cosmetic_handler.active_cosmetics:<-:<def[cosmetic]>

    - define category <s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.category]||null>
    - flag <player> cosmetic_handler.gui.inventory.<def[category]>[<player.flag[cosmetic_handler.gui.caching_index_of.<def[category]>.<def[cosmetic]>]||0>]:<proc[cosmetic_gui_item].context[<def[cosmetic]>].escaped>

    - define script "<s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.script name].as_script>"
    - if "<def[script].list_keys[].contains[on disable]||false>" {
      - inject <def[script]> "path:on disable"
      }


cosmetic_handler_disable_all_cosmetics:
  type: task
  debug: true
  speed: 0
  script:
  - foreach <player.flag[cosmetic_handler.active_cosmetics]||li@>:
    - ~run cosmetic_handler_disable_cosmetic def:<def[value]>
    - wait 1t