Date: 2026/03/18 22:19:00 UTC+00: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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
cfg_quiz:
type: data
config:
time_remind: 10s
time_restart: 1s
time_expire: 30s
questions:
q_diamond:
ask: What is the name of the <&b>bright blue<&f> ore?
# Answers can have spaces in them, and multiple answers can be taken.
answer: diamond|diamond ore
q_redstone:
ask: What is the name of the <&4>magical red<&f> ore?
answer: redstone|redstone ore
q_stick:
ask: What is the most <&a>common item<&f> involved in tool and weapon recipes?
answer: stick|sticks
q_netherwart:
ask: Where can <&4>nether wart<&f> be naturally found?
answer: nether|the nether
q_herobrine:
ask: Who is the <&7>fictional character<&f> constantly potrayed in minecraft creepy pastas?
answer: herobrine
rewards:
items:
ironore:
item: iron_ore
# Min/max quantity
quantity: 1|6
emerald:
item: emerald
quantity: 1|3
dirt:
item: dirt
quantity: 8|64
money:
1k: 100|1000
10k: 1000|10000
100k: 10000|100000
scripts:
# Subscripts in quiz_events
- scriptreward_special
quiz_prefix:
type: format
debug: false
format: <&f>[<&a>Quiz<&f>]<&r> <[text]>
quiz_events:
type: world
debug: false
scripts:
scriptreward_special:
- narrate <element[Yipee! A winner is you!].rainbow>
- firework <player.eye_location> random primary:Red fade:white
quiz_start:
- define ids <script[cfg_quiz].data_key[questions].keys>
# Don't run previous questions asked, reset if all used up.
- if <server.flag[quiz.ids_used].if_null[<list>]>:
- define ids <[ids].exclude[<server.flag[quiz.ids_used]>]>
- if <server.flag[quiz.ids_used].contains[<script[cfg_quiz].data_key[questions].keys>]>:
- flag SERVER quiz.ids_used:<list>
- define ids <script[cfg_quiz].data_key[questions].keys>
- define id <[ids].random>
- flag SERVER quiz.end:!
- flag SERVER quiz.id:<[id]>
- flag SERVER quiz.start:<util.time_now>
- flag SERVER quiz.reminder:<util.time_now>
- define dur <server.flag[quiz.start].add[<[expire_time]>].from_now>
- announce "<script[cfg_quiz].parsed_key[questions.<[id]>.ask]><&nl><&c>⏱ <&7><[dur].formatted_words> left to answer!" format:quiz_prefix
- stop
quiz_remind:
- define dur <server.flag[quiz.start].add[<[expire_time]>].from_now>
- announce "<script[cfg_quiz].parsed_key[questions.<[id]>.ask]><&nl><&c>⏱ <&7><[dur].formatted_words> left to answer!" format:quiz_prefix
- flag SERVER quiz.reminder:<util.time_now>
quiz_expire:
- define ans <script[cfg_quiz].data_key[questions.<[id]>.answer]>
- announce "<&c>No one answered the quiz in time! <&nl>The answer was: <&e><bold><[ans].as[list].parse[to_titlecase].separated_by[ <&f>or<&e><bold> ]>" format:quiz_prefix
- flag SERVER quiz.end:<util.time_now>
- flag SERVER quiz.ids_used:->:<[id]>
- stop
quiz_reward:
- define reward_types <script[cfg_quiz].data_key[rewards].keys>
# Don't give money when it doesn't exist.
- define reward_types:<-:money if:<server.plugins.parse[name].contains_single[vault].not>
- define type <[reward_types].random>
- if <[type]> == scripts:
- define reward <script[cfg_quiz].data_key[rewards.<[type]>].random>
- else:
- define reward <script[cfg_quiz].data_key[rewards.<[type]>].keys.random>
- choose <[type]>:
- case items:
- define i <script[cfg_quiz].data_key[rewards.<[type]>.<[reward]>.item].as[item].if_null[<item[stick]>]>
- define quant <script[cfg_quiz].data_key[rewards.<[type]>.<[reward]>.quantity].as[list]>
- define quant <util.random.int[<[quant].first>].to[<[quant].get[2]>]>
- give <[i]> quantity:<[quant]>
- narrate "<&a>You recieved <&e><[i].material.translated_name> <&f>(<&d>x<[quant]><&f>)<&a> as a reward!"
- case money:
- define amt <script[cfg_quiz].data_key[rewards.<[type]>.<[reward]>].as[list]>
- define amt <util.random.int[<[amt].first>].to[<[amt].get[2]>]>
- narrate "<&a>You recieved <&e><server.economy.format[<[amt]>]><&a> as a reward!"
- case scripts:
- inject <script.name>.scripts.<[reward]>
events:
on delta time secondly:
- define remind_time <script[cfg_quiz].data_key[config.time_remind]>
- define expire_time <script[cfg_quiz].data_key[config.time_expire]>
- define restart_time <script[cfg_quiz].data_key[config.time_restart]>
- if NOT <server.has_flag[quiz]> OR ( <server.has_flag[quiz.end]> AND <util.time_now.is_after[<server.flag[quiz.end].add[<[restart_time]>]>]> ):
- inject <script.name>.scripts.quiz_start
- define id <server.flag[quiz.id]>
- stop if:<server.has_flag[quiz.end]>
# Two checks are needed to check on the dot and if the script gets reloaded causing latency, might not be necessary?
- if <server.flag[quiz.start].add[<[expire_time]>].from_now.in_seconds> <= 0 or <util.time_now.is_after[<server.flag[quiz.start].add[<[expire_time]>]>]>:
- inject <script.name>.scripts.quiz_expire
- if <server.flag[quiz.reminder].add[<[remind_time]>].from_now.in_seconds> <= 0 or <util.time_now.is_after[<server.flag[quiz.reminder].add[<[remind_time]>]>]>:
- inject <script.name>.scripts.quiz_remind
after player chats:
- if <server.has_flag[quiz]> AND NOT <server.has_flag[quiz.end]>:
- define id <server.flag[quiz.id]>
- define ans <script[cfg_quiz].data_key[questions.<[id]>.answer]>
- if <[ans].as[list].contains_any[<context.message.to_lowercase.split>]>:
- announce "<&e><player.display_name><&a> won the quiz!" format:quiz_prefix
- flag SERVER quiz.end:<util.time_now>
- flag SERVER quiz.ids_used:->:<[id]>
- inject <script.name>.scripts.quiz_reward