Date: 2024/06/20 09:26:34 UTC-07:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 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>