Paste #50099: Untitled Paste

Date: 2018/09/29 06:48:09 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


what_color_is_the_dress:
    type: world
    debug: false
    events:
        on player right clicks with diamond_hoe:
        - if <player.item_in_hand.durability||0> != 1 && <player.item_in_hand.durability||0> != 2 {
          - queue clear
          }
        - run set_dress_color def:<player.item_in_hand>
        - take iteminhand quantity:1
        - inventory update
        on player walks:
        - if !<player.has_flag[dress_color]> {
          - queue clear
          }
        - teleport <player.flag[dress_color]> <player.location.with_pose[0,<player.body_yaw>]>
        on player teleports:
        - if !<player.has_flag[dress_color]> {
          - queue clear
          }
        - teleport <player.flag[dress_color]> <player.location.with_pose[0,<player.body_yaw>]>
        on system time minutely:
        - if <queue.exists[dress_loop_queue_magic]> {
          - queue q@dress_loop_queue_magic stop
          }
        - run dress_color_handler id:dress_loop_queue_magic
        on player quits:
        - if !<player.has_flag[dress_color]> {
          - queue clear
          }
        - remove <player.flag[dress_color]>
        - flag player dress_color:!

set_dress_color:
    type: task
    speed: 0
    debug: false
    definitions: item
    script:
    - if <player.has_flag[dress_color]> {
      - define old_dress <player.flag[dress_color].replace[e@]>
      - if <server.entity_is_spawned[<player.flag[dress_color]>]> {
        - remove <player.flag[dress_color]>
        }
      - flag player dress_color:!
      - flag server dress_color.<def[old_dress]>:!
      }
    - if <def[item].material.name||AIR> == AIR {
      - queue clear
      }
    - spawn armor_stand[visible=false] <player.location> save:dresso
    - define dress <entry[dresso].spawned_entities.get[1]||null>
    - if !<server.entity_is_spawned[<def[dress]>]> {
      - debug error "Failed to spawn dress for <player.name>/<player> - <def[dress]>!"
      - queue clear
      }
    - adjust <def[item]> quantity:1 save:patched_item
    - equip <def[dress]> head:<entry[patched_item].result>
    - flag server dress_color.<def[dress].uuid>:<player>
    - flag player dress_color:e@<def[dress].uuid>
    - adjust <def[dress]> attach_to:<player>

dress_color_handler:
    type: task
    speed: 0
    debug: false
    script:
    - repeat 60:
      - wait 1s
      - foreach <server.get_online_players_flagged[dress_color]>:
        - if !<server.entity_is_spawned[<def[value].flag[dress_color]||null>]> {
          - flag server dress_color.<def[value].flag[dress_color].replace[e@]>:!
          - flag <def[value]> dress_color:!
          }
          else if <def[value].flag[dress_color_mode]||off> == off {
          - adjust <def[value]> hide_entity:<def[value].flag[dress_color]>
          }
          else if <def[value].flag[dress_color_mode]||off> == on {
          - adjust <def[value]> show_entity:<def[value].flag[dress_color]>
          }
          else {
          - if <def[value].location.distance_squared[<def[value].flag[last_location]||<def[value].location>>]> > 0.5 {
            - adjust <def[value]> hide_entity:<def[value].flag[dress_color]>
            }
            else {
            - adjust <def[value]> show_entity:<def[value].flag[dress_color]>
            }
          - flag <def[value]> last_location:<def[value].location>
          }