Paste #103698: ventscriptthing

Date: 2022/12/05 13:13:06 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


ventmarkercmd:
    debug: false
    type: command
    name: ventmarker
    description: Toggles the status of a block as a vent
    usage: /ventmarker
    script:
        - if !<player.is_op>:
            - narrate "<&c>No can do, my friend."
            - stop
        - if <player.has_flag[ventmarkerflag]>:
            - flag <player> ventmarkerflag:!
            - narrate "<&e>[D] <&f>Vent marker <&c>off"
            - stop
        - else:
            - if <context.args.size> < 1:
                - narrate "<&e>[D] <&7>(This needs an argument)"
                - stop
            - flag <player> ventmarkerflag:<context.args.get[1]>
            - narrate "<&e>[D] <&f>Vent marker <&a>on<&f>, level <context.args.get[1]>"
        - stop

ventmarkerpunch:
  type: world
  debug: false
  events:
    on player breaks block:
    - if <player.has_flag[ventmarkerflag]>:
        - determine cancelled passively
        - if <context.location.has_flag[ventlevel]>:
            - flag <context.location> ventlevel:!
            - narrate "<&e>[D] <&c>Unlabeled <context.location.center.simple> as a vent!"
            - stop
        - flag <context.location> ventlevel:<player.flag[ventmarkerflag]>
        - narrate "<&e>[D] <&a>Labeled <context.location.center.simple> as a vent, difficulty <player.flag[ventmarkerflag]>!"

ventopeninputitem1:
    type: item
    material: emerald_block
    display name: <&a>Left click!
    flags:
        click: LEFT
ventopeninputitem2:
    type: item
    material: emerald_block
    display name: <&c>Right click!
    flags:
        click: RIGHT
ventopeninputitem3:
    type: item
    material: emerald_block
    display name: <&b>Drop!
    flags:
        click: DROP
ventopeninputitem4:
    type: item
    material: emerald_block
    display name: <&d>Press <&f>4<&d>!
    flags:
        click: NUMBER4


ventopeninventory:
    type: inventory
    inventory: HOPPER
    title: hoo
    gui: true
    definitions:
        inputitem: ventopeninputitem<util.random.int[1].to[4]>
    slots:
    - [] [] [inputitem] [] []



ventmarkeropen:
    type: world
    debug: false
    events:
        on player right clicks block:
            - if <context.location.has_flag[ventlevel]||false>:
                - determine cancelled passively
                - inventory open destination:ventopeninventory
                - flag <player> ventdifficulty:<context.location.flag[ventlevel]>
                - flag <player> ventprogress:0
                - flag <player> theventinquestion:<context.location>
                - define progressbar <element[<&b><element[].repeat[<player.flag[ventprogress].round_up.max[0]>]><&1><element[].repeat[<element[20].sub[<player.flag[ventprogress].round_up.max[0]>]>]>]>
                - inventory adjust lore:<list[<element[<[progressbar]>]>]> destination:<player.open_inventory> slot:3
        on player closes ventopeninventory:
            - flag <player> ventdifficulty:!
            - flag <player> ventprogress:!

        on player clicks item in ventopeninventory:
            - stop if:!<context.item.has_flag[click]||false>
            - ratelimit <player> 1t
            - stop if:<player.has_flag[ventfailcooldown]>
            - if <context.click||null> == NUMBER_KEY:
                - if NUMBER<context.hotbar_button> == <context.item.flag[click]>:
                    - flag <player> ventprogress:+:1

                    - if <player.flag[ventprogress]> >= 20:
                        - flag <player> ventdifficulty:!
                        - inventory close
                        - define oldblock:<player.flag[theventinquestion].material>
                        - define oldblockloc:<player.flag[theventinquestion]>
                        - flag <player> theventinquestion:!
                        - modifyblock <[oldblockloc]> air
                        - wait 15s
                        - modifyblock <[oldblockloc]> <[oldblock]>
                        - stop
                    - wait 1t
                    - inventory set origin:ventopeninputitem<util.random.int[1].to[4]> destination:<player.open_inventory> slot:3
                    - define progressbar <element[<&b><element[].repeat[<player.flag[ventprogress].round_up.max[0]>]><&1><element[].repeat[<element[20].sub[<player.flag[ventprogress].round_up.max[0]>]>]>]>
                    - inventory adjust lore:<list[<[progressbar]>]> slot:3
                    - playsound <player.location> <player> sound:item_spyglass_use pitch:<player.flag[ventprogress].div[14].min[2]>
                    - stop
            - else:
                - if <context.click||null> == <context.item.flag[click]>:
                    - flag <player> ventprogress:+:1

                    - if <player.flag[ventprogress]> >= 20:
                        - flag <player> ventdifficulty:!
                        - inventory close
                        - define oldblock:<player.flag[theventinquestion].material>
                        - define oldblockloc:<player.flag[theventinquestion]>
                        - modifyblock <[oldblockloc]> air
                        - flag <player> theventinquestion:!
                        - wait 15s
                        - modifyblock <[oldblockloc]> <[oldblock]>
                        - stop
                    - wait 1t
                    - inventory set origin:ventopeninputitem<util.random.int[1].to[4]> destination:<player.open_inventory> slot:3
                    - define progressbar <element[<&b><element[].repeat[<player.flag[ventprogress].round_up.max[0]>]><&1><element[].repeat[<element[20].sub[<player.flag[ventprogress].round_up.max[0]>]>]>]>
                    - inventory adjust lore:<list[<[progressbar]>]> slot:3
                    - playsound <player.location> <player> sound:item_spyglass_use pitch:<player.flag[ventprogress].div[14].min[2]>
                    - stop
            #- failed
            - playsound <player.location> <server.online_players> sound:block_anvil_place
            - flag <player> ventfailcooldown expire:50t
            - if <player.flag[ventprogress]> < 0:
                - flag <player> ventprogress:0
        on tick every:2:
            - foreach <server.online_players_flagged[ventdifficulty]>:
                - if <[value].flag[ventprogress]> > 0:
                    - flag <[value]> ventprogress:-:<[value].flag[ventdifficulty].mul[2].div[28]||0>
                    - if <[value].flag[ventprogress]> < 0:
                        - flag <[value]> ventprogress:0
                - if <[value].has_flag[ventfailcooldown]>:
                    - define progressbar <element[<&c><element[].repeat[<[value].flag[ventprogress].round_up.max[0]>]><&4><element[].repeat[<element[20].sub[<[value].flag[ventprogress].round_up.max[0]>]>]>]>
                - else:
                    - define progressbar <element[<&b><element[].repeat[<[value].flag[ventprogress].round_up.max[0]>]><&1><element[].repeat[<element[20].sub[<[value].flag[ventprogress].round_up.max[0]>]>]>]>
                - if <[value].open_inventory> != <[value].inventory>:
                    - inventory adjust lore:<list[<[progressbar]>]> destination:<[value].open_inventory> slot:3