Paste #21809: Untitled Paste

Date: 2015/10/28 19:34:19 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#-----------------Raw JSON Handler-----------------#
# Valid hoverEvent actions: show_text, others are unsuported.
# Valid clickEvent actions: run_command, suggest_command, change_page, open_url

rtag:
  # you can omit hover and/or click event, for text only.
  # Usage: <proc[rtag].context[text(|hover_event_action:hover_event_value)(|click_event_action:click_event_value)]>
  # exmaples:
  #   <proc[rtag].context[just text]>
  #     will determine {text:"just text"}
  #   <proc[rtag].context[text|show_text:and hover text]>
  #     will determine "{text:"text",hoverEvent:{action:show_text,value:"and hover text"}}"
  #   <proc[rtag].context[text||run_command:/teleport Larry]>
  #     will determine "{text:"text",clickEvent:{action:run_command,value:"/teleport Larry"}}"
  type: procedure
  debug: false
  script:
  - define json 'text:"<def[1].unescaped>"'
  - if <def[2].is[!=].to[]||false> define json '<def[json]>,hoverEvent:{action:<def[2].before[:]>,value:"<def[2].after[:].unescaped>"}'
    else  define json '<def[json]>,hoverEvent:{action:show_text,value:""}'
    # /\ this is a bug 'fix' to remove misleading hover text
  - if <def[3].is[!=].to[]||false> define json '<def[json]>,clickEvent:{action:<def[3].before[:]>,value:"<def[3].after[:].unescaped>"}'
  - define json {<def[json]>}
  - determine '<def[json]>'

rpage:
  # do not include "li@" in context list
  # Usage: <proc[rpage].context[rtag1|rtag2|rtag3|ect..]>
  # exmaples:
  #   <proc[rtag].context[<proc[rtag].context[some ]>|<proc[rtag].context[text.]>]>
  #     will determine [{text:\"some \"},{text:\"text.\"}]
  # note: the quotes become Minecraft escaped when put through the rpage procedure
  type: procedure
  debug: false
  script:
  - define page "["
  - foreach <queue.definitions.exclude[page]> {
    - if <queue.definition[<def[value]>].is[==].to[]> || <queue.definition[<def[value]>].is[==].to[li@]> foreach next
    - define page '<def[page]>,<queue.definition[<def[value]>]>'
    #- narrate "<def[value]>: <queue.definition[<def[value]>].substring[1,10]>"
    }
  - define page "[<def[page].after[,]>]"
  - determine '<def[page].replace[<&dq>].with[\\<&dq>]>'

rbook:
  # do not include "li@" in context list
  # Usage: <proc[rbook].context[page1|page2|page3|ect..]>
  # note: Works just like rpage. just with pages insted of tags.
  type: procedure
  debug: false
  script:
  - define book "["
  - foreach <queue.definitions.exclude[book]> {
    - if <queue.definition[<def[value]>].is[==].to[]> || <queue.definition[<def[value]>].is[==].to[li@]> foreach next
    - define book '<def[book]>,"<queue.definition[<def[value]>]>"'
    #- narrate "<def[value]>: <queue.definition[<def[value]>].substring[1,10]>"
    }
  - define info "title:Title,author:KeangDavid"
  - execute as_op 'give <player.name> written_book 1 0 {pages:[<def[book].replace[\"].with["]>],<def[info]>}'
  - determine "{pages:[<def[book].after[,]>],title:bookScript,author:<player.name>}"

# \/ unsuported! Use new rtag procedure.
ChatButton:
  type: procedure
  debug: false
  script:
  - determine "{text: <&dq><def[2].unescaped><&dq>,color: <def[1]>,clickEvent: {action: run_command,value: <&dq><def[4]><&dq>},hoverEvent: {action: show_text,value: <&dq><def[3].unescaped><&dq>}}"
ChatPlayer:
  type: procedure
  debug: false
  script:
  - define rank "<yaml[<player.name>].read[prison.rank]||Citizen> of <yaml[<player.name>].read[prison.name]||Server>"
  - define playerinfo "<def[rank]>\nNAME: <player.name>\nUUID: <player.uuid>\n\n<aqua>Click to send private message."
  - determine "{text: <&dq><blue>[<reset><player.name.display><blue>]<&dq>,hoverEvent: {action: show_text,value: <&dq><def[playerinfo]><&dq>},clickEvent: {action: suggest_command,value:<&dq>/tell <player.name> <&dq>}}"
#-----------------Raw JSON Handler-----------------#