Paste #123950: discgolf

Date: 2024/06/20 09:26:34 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


# Assign the command to give the player a bow and a named arrow
discgolf:
  type: command
  name: discgolf
  description: Gives the player a bow and a named arrow
  usage: /discgolf
  script:
    # Check if the player has the "discgolf" permission
    - if <player.has_permission[discgolf]>:
        # If the player has permission, proceed with the script
        - run store_player_items
        - adjust <player> gamemode:survival
        - define hole 1
        - flag player current_hole:<[hole]>
        - flag player frisbee_shots:0
        - give frisbee_bow|frisbee_arrow
        - actionbar "<green>Kast Arm & Frisbee Givna Till Spelare<green>" targets:<player>
        - sidebar set title:<green>=====<yellow>Discgolf<green>===== "values:Hål <player.flag[current_hole]>: <player.flag[frisbee_shots]>|Kast: <player.flag[frisbee_shots]>" players:<player>
        - sidebar add values:<green>=====<yellow>Discgolf<green>=====
        - teleport <player> <server.flag[hole_<[hole]>_start]>
    # If the player does not have permission, send a message and cancel the script
    - else:
        - narrate "<red>Du har ingen rättighet att utföra detta kommano<red>" targets:<player>

# Detect when a player shoots the arrow named "Frisbee Arrow" with the bow "Kast Arm"
player_shoots_frisbee:
  type: world
  events:
    on player shoots bow:
    - if <context.item> matches frisbee_arrow:
        - if <context.bow> matches frisbee_bow:
            - flag <context.projectile> frisbee:true
            - playsound <player> sound:ui_toast_out volume:1 sound_category:master
            - if !<player.has_flag[frisbee_shots]>:
                - flag player frisbee_shots:0
            - flag player frisbee_shots:++
            - sidebar set title:<green>=====<yellow>Discgolf<green>===== "values:Hål <player.flag[current_hole]>: <player.flag[frisbee_shots]>|Kast: <player.flag[frisbee_shots]>" players:<player>
            - sidebar add values:<green>=====<yellow>Discgolf<green>=====

# Handle the projectile hitting
projectile_hits_frisbee:
  type: world
  events:
    on entity_flagged:frisbee hits:
    - define shooter <context.shooter>
    - define landing_location <context.projectile.location>
    - define current_hole <[shooter].flag[current_hole]>
    - if <context.hit_block> matches stone|dirt|grass_block|birch_log|birch_leaves:
        - actionbar "<red>Otillåtet Kast! Frisbee Återvänder<red>" targets:<[shooter]>
        - give frisbee_arrow
        - remove <context.projectile>
    - else if <context.hit_block> matches barrier:
        - actionbar "<yellow>Snyggt Kast<yellow>" targets:<[shooter]>
        - playsound <player> sound:block_chain_place volume:1 sound_category:master
        - teleport <[shooter]> <context.projectile.location>
        - give frisbee_arrow
        - remove <context.projectile>
        - flag player hole_<[current_hole]>_shots:<player.flag[frisbee_shots]>
        - sidebar remove
        - define next_hole <[current_hole].add[1]>
        - if <server.has_flag[hole_<[next_hole]>_start]>:
            - flag player current_hole:<[next_hole]>
            - flag player frisbee_shots:0
            - sidebar set title:<green>=====<yellow>Discgolf<green>===== "values:Hål <[next_hole]>: 0|Kast: 0" players:<player>
            - sidebar add values:<green>=====<yellow>Discgolf<green>=====
            - teleport <[shooter]> <server.flag[hole_<[next_hole]>_start]>
        - else:
            - run restore_player_items
            - adjust <player> gamemode:creative
            - narrate "<green>Snyggt! Du klarade av banan<green>" targets:<[shooter]>
            - repeat <[current_hole]> as:i:
                - narrate "Hål <[i]>: <[shooter].flag[hole_<[i]>_shots]> Kast" targets:<[shooter]>
    - else:
        - teleport <[shooter]> <[landing_location]>
        - give frisbee_arrow
        - remove <context.projectile>