redscript-mc 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/.github/workflows/ci.yml +1 -0
  2. package/README.md +119 -313
  3. package/README.zh.md +118 -314
  4. package/ROADMAP.md +5 -5
  5. package/dist/data/impl_test/function/counter/get.mcfunction +5 -0
  6. package/dist/data/impl_test/function/counter/inc.mcfunction +7 -0
  7. package/dist/data/impl_test/function/counter/new.mcfunction +4 -0
  8. package/dist/data/impl_test/function/load.mcfunction +1 -0
  9. package/dist/data/impl_test/function/test_impl.mcfunction +10 -0
  10. package/dist/data/minecraft/tags/function/load.json +5 -0
  11. package/dist/data/playground/function/load.mcfunction +1 -0
  12. package/dist/data/playground/function/start.mcfunction +4 -0
  13. package/dist/data/playground/function/start__say_macro_t1.mcfunction +1 -0
  14. package/dist/data/playground/function/stop.mcfunction +5 -0
  15. package/dist/data/playground/function/stop__say_macro_t0.mcfunction +1 -0
  16. package/dist/data/stdlib_queue8_test/function/__queue_append_apply.mcfunction +4 -0
  17. package/dist/data/stdlib_queue8_test/function/__queue_peek_apply.mcfunction +4 -0
  18. package/dist/data/stdlib_queue8_test/function/__queue_size_raw_apply.mcfunction +4 -0
  19. package/dist/data/stdlib_queue8_test/function/load.mcfunction +1 -0
  20. package/dist/data/stdlib_queue8_test/function/queue_clear.mcfunction +6 -0
  21. package/dist/data/stdlib_queue8_test/function/queue_empty__merge_1.mcfunction +5 -0
  22. package/dist/data/stdlib_queue8_test/function/queue_empty__then_0.mcfunction +5 -0
  23. package/dist/data/stdlib_queue8_test/function/queue_peek__merge_1.mcfunction +13 -0
  24. package/dist/data/stdlib_queue8_test/function/queue_peek__then_0.mcfunction +5 -0
  25. package/dist/data/stdlib_queue8_test/function/queue_pop__merge_1.mcfunction +15 -0
  26. package/dist/data/stdlib_queue8_test/function/queue_pop__then_0.mcfunction +5 -0
  27. package/dist/data/stdlib_queue8_test/function/queue_push__const_11.mcfunction +6 -0
  28. package/dist/data/stdlib_queue8_test/function/queue_push__const_22.mcfunction +6 -0
  29. package/dist/data/stdlib_queue8_test/function/queue_size.mcfunction +13 -0
  30. package/dist/data/stdlib_queue8_test/function/test_queue_push_and_size.mcfunction +13 -0
  31. package/dist/data/test/function/load.mcfunction +1 -0
  32. package/dist/data/test/function/say_at.mcfunction +6 -0
  33. package/dist/data/test/function/test.mcfunction +4 -0
  34. package/dist/pack.mcmeta +6 -0
  35. package/dist/package.json +1 -1
  36. package/dist/src/__tests__/formatter-extra.test.d.ts +7 -0
  37. package/dist/src/__tests__/formatter-extra.test.js +123 -0
  38. package/dist/src/__tests__/global-vars.test.d.ts +13 -0
  39. package/dist/src/__tests__/global-vars.test.js +156 -0
  40. package/dist/src/__tests__/lint/new-rules.test.d.ts +9 -0
  41. package/dist/src/__tests__/lint/new-rules.test.js +402 -0
  42. package/dist/src/__tests__/lsp-rename.test.d.ts +8 -0
  43. package/dist/src/__tests__/lsp-rename.test.js +157 -0
  44. package/dist/src/__tests__/mc-integration/say-fstring.test.d.ts +11 -0
  45. package/dist/src/__tests__/mc-integration/say-fstring.test.js +220 -0
  46. package/dist/src/__tests__/mc-integration/stdlib-coverage-2.test.js +1 -1
  47. package/dist/src/__tests__/mc-integration/stdlib-coverage-3.test.js +1 -1
  48. package/dist/src/__tests__/mc-integration/stdlib-coverage-4.test.js +1 -1
  49. package/dist/src/__tests__/mc-integration/stdlib-coverage-5.test.js +1 -1
  50. package/dist/src/__tests__/mc-integration/stdlib-coverage-6.test.js +1 -1
  51. package/dist/src/__tests__/mc-integration/stdlib-coverage-7.test.js +1 -1
  52. package/dist/src/__tests__/mc-integration/stdlib-coverage-8.test.js +1 -1
  53. package/dist/src/__tests__/mc-syntax.test.js +4 -1
  54. package/dist/src/__tests__/monomorphize-coverage.test.d.ts +9 -0
  55. package/dist/src/__tests__/monomorphize-coverage.test.js +204 -0
  56. package/dist/src/__tests__/optimizer-cse.test.d.ts +7 -0
  57. package/dist/src/__tests__/optimizer-cse.test.js +226 -0
  58. package/dist/src/__tests__/parser.test.js +4 -13
  59. package/dist/src/__tests__/repl-server-extra.test.js +6 -7
  60. package/dist/src/__tests__/repl-server.test.js +5 -7
  61. package/dist/src/__tests__/stdlib/queue.test.js +6 -6
  62. package/dist/src/cli.js +0 -0
  63. package/dist/src/lexer/index.js +2 -1
  64. package/dist/src/lint/index.d.ts +12 -5
  65. package/dist/src/lint/index.js +730 -5
  66. package/dist/src/lsp/main.js +0 -0
  67. package/dist/src/mc-test/client.d.ts +21 -0
  68. package/dist/src/mc-test/client.js +34 -0
  69. package/dist/src/mir/lower.js +108 -6
  70. package/dist/src/optimizer/interprocedural.js +37 -2
  71. package/dist/src/parser/decl-parser.d.ts +19 -0
  72. package/dist/src/parser/decl-parser.js +323 -0
  73. package/dist/src/parser/expr-parser.d.ts +46 -0
  74. package/dist/src/parser/expr-parser.js +759 -0
  75. package/dist/src/parser/index.d.ts +8 -129
  76. package/dist/src/parser/index.js +13 -2262
  77. package/dist/src/parser/stmt-parser.d.ts +28 -0
  78. package/dist/src/parser/stmt-parser.js +577 -0
  79. package/dist/src/parser/type-parser.d.ts +20 -0
  80. package/dist/src/parser/type-parser.js +257 -0
  81. package/dist/src/parser/utils.d.ts +34 -0
  82. package/dist/src/parser/utils.js +141 -0
  83. package/docs/dev/README-mc-integration-tests.md +141 -0
  84. package/docs/lint-rules.md +162 -0
  85. package/docs/stdlib/bigint.md +2 -0
  86. package/editors/vscode/README.md +63 -41
  87. package/editors/vscode/out/extension.js +1881 -1776
  88. package/editors/vscode/out/lsp-server.js +4257 -3651
  89. package/editors/vscode/package-lock.json +3 -3
  90. package/editors/vscode/package.json +1 -1
  91. package/examples/loops-demo.mcrs +87 -0
  92. package/package.json +1 -1
  93. package/redscript-docs/docs/en/stdlib/advanced.md +629 -0
  94. package/redscript-docs/docs/en/stdlib/bigint.md +316 -0
  95. package/redscript-docs/docs/en/stdlib/bits.md +292 -0
  96. package/redscript-docs/docs/en/stdlib/bossbar.md +177 -0
  97. package/redscript-docs/docs/en/stdlib/calculus.md +289 -0
  98. package/redscript-docs/docs/en/stdlib/color.md +353 -0
  99. package/redscript-docs/docs/en/stdlib/combat.md +88 -0
  100. package/redscript-docs/docs/en/stdlib/cooldown.md +82 -0
  101. package/redscript-docs/docs/en/stdlib/dialog.md +155 -0
  102. package/redscript-docs/docs/en/stdlib/easing.md +558 -0
  103. package/redscript-docs/docs/en/stdlib/ecs.md +475 -0
  104. package/redscript-docs/docs/en/stdlib/effects.md +324 -0
  105. package/redscript-docs/docs/en/stdlib/events.md +3 -0
  106. package/redscript-docs/docs/en/stdlib/expr.md +45 -0
  107. package/redscript-docs/docs/en/stdlib/fft.md +141 -0
  108. package/redscript-docs/docs/en/stdlib/geometry.md +430 -0
  109. package/redscript-docs/docs/en/stdlib/graph.md +259 -0
  110. package/redscript-docs/docs/en/stdlib/heap.md +185 -0
  111. package/redscript-docs/docs/en/stdlib/interactions.md +179 -0
  112. package/redscript-docs/docs/en/stdlib/inventory.md +97 -0
  113. package/redscript-docs/docs/en/stdlib/linalg.md +557 -0
  114. package/redscript-docs/docs/en/stdlib/list.md +559 -0
  115. package/redscript-docs/docs/en/stdlib/map.md +140 -0
  116. package/redscript-docs/docs/en/stdlib/math.md +193 -0
  117. package/redscript-docs/docs/en/stdlib/math_hp.md +149 -0
  118. package/redscript-docs/docs/en/stdlib/matrix.md +403 -0
  119. package/redscript-docs/docs/en/stdlib/mobs.md +965 -0
  120. package/redscript-docs/docs/en/stdlib/noise.md +244 -0
  121. package/redscript-docs/docs/en/stdlib/ode.md +253 -0
  122. package/redscript-docs/docs/en/stdlib/parabola.md +342 -0
  123. package/redscript-docs/docs/en/stdlib/particles.md +311 -0
  124. package/redscript-docs/docs/en/stdlib/pathfind.md +255 -0
  125. package/redscript-docs/docs/en/stdlib/physics.md +493 -0
  126. package/redscript-docs/docs/en/stdlib/player.md +78 -0
  127. package/redscript-docs/docs/en/stdlib/quaternion.md +673 -0
  128. package/redscript-docs/docs/en/stdlib/queue.md +134 -0
  129. package/redscript-docs/docs/en/stdlib/random.md +223 -0
  130. package/redscript-docs/docs/en/stdlib/result.md +143 -0
  131. package/redscript-docs/docs/en/stdlib/scheduler.md +183 -0
  132. package/redscript-docs/docs/en/stdlib/set_int.md +190 -0
  133. package/redscript-docs/docs/en/stdlib/sets.md +101 -0
  134. package/redscript-docs/docs/en/stdlib/signal.md +400 -0
  135. package/redscript-docs/docs/en/stdlib/sort.md +104 -0
  136. package/redscript-docs/docs/en/stdlib/spawn.md +147 -0
  137. package/redscript-docs/docs/en/stdlib/state.md +142 -0
  138. package/redscript-docs/docs/en/stdlib/strings.md +154 -0
  139. package/redscript-docs/docs/en/stdlib/tags.md +3451 -0
  140. package/redscript-docs/docs/en/stdlib/teams.md +153 -0
  141. package/redscript-docs/docs/en/stdlib/timer.md +246 -0
  142. package/redscript-docs/docs/en/stdlib/vec.md +158 -0
  143. package/redscript-docs/docs/en/stdlib/world.md +298 -0
  144. package/redscript-docs/docs/zh/stdlib/advanced.md +615 -0
  145. package/redscript-docs/docs/zh/stdlib/bigint.md +316 -0
  146. package/redscript-docs/docs/zh/stdlib/bits.md +292 -0
  147. package/redscript-docs/docs/zh/stdlib/bossbar.md +170 -0
  148. package/redscript-docs/docs/zh/stdlib/calculus.md +287 -0
  149. package/redscript-docs/docs/zh/stdlib/color.md +353 -0
  150. package/redscript-docs/docs/zh/stdlib/combat.md +88 -0
  151. package/redscript-docs/docs/zh/stdlib/cooldown.md +84 -0
  152. package/redscript-docs/docs/zh/stdlib/dialog.md +152 -0
  153. package/redscript-docs/docs/zh/stdlib/easing.md +558 -0
  154. package/redscript-docs/docs/zh/stdlib/ecs.md +472 -0
  155. package/redscript-docs/docs/zh/stdlib/effects.md +324 -0
  156. package/redscript-docs/docs/zh/stdlib/events.md +3 -0
  157. package/redscript-docs/docs/zh/stdlib/expr.md +37 -0
  158. package/redscript-docs/docs/zh/stdlib/fft.md +128 -0
  159. package/redscript-docs/docs/zh/stdlib/geometry.md +430 -0
  160. package/redscript-docs/docs/zh/stdlib/graph.md +259 -0
  161. package/redscript-docs/docs/zh/stdlib/heap.md +185 -0
  162. package/redscript-docs/docs/zh/stdlib/interactions.md +160 -0
  163. package/redscript-docs/docs/zh/stdlib/inventory.md +94 -0
  164. package/redscript-docs/docs/zh/stdlib/linalg.md +543 -0
  165. package/redscript-docs/docs/zh/stdlib/list.md +561 -0
  166. package/redscript-docs/docs/zh/stdlib/map.md +132 -0
  167. package/redscript-docs/docs/zh/stdlib/math.md +193 -0
  168. package/redscript-docs/docs/zh/stdlib/math_hp.md +143 -0
  169. package/redscript-docs/docs/zh/stdlib/matrix.md +396 -0
  170. package/redscript-docs/docs/zh/stdlib/mobs.md +965 -0
  171. package/redscript-docs/docs/zh/stdlib/noise.md +244 -0
  172. package/redscript-docs/docs/zh/stdlib/ode.md +243 -0
  173. package/redscript-docs/docs/zh/stdlib/parabola.md +337 -0
  174. package/redscript-docs/docs/zh/stdlib/particles.md +307 -0
  175. package/redscript-docs/docs/zh/stdlib/pathfind.md +255 -0
  176. package/redscript-docs/docs/zh/stdlib/physics.md +493 -0
  177. package/redscript-docs/docs/zh/stdlib/player.md +78 -0
  178. package/redscript-docs/docs/zh/stdlib/quaternion.md +669 -0
  179. package/redscript-docs/docs/zh/stdlib/queue.md +124 -0
  180. package/redscript-docs/docs/zh/stdlib/random.md +222 -0
  181. package/redscript-docs/docs/zh/stdlib/result.md +147 -0
  182. package/redscript-docs/docs/zh/stdlib/scheduler.md +173 -0
  183. package/redscript-docs/docs/zh/stdlib/set_int.md +180 -0
  184. package/redscript-docs/docs/zh/stdlib/sets.md +107 -0
  185. package/redscript-docs/docs/zh/stdlib/signal.md +373 -0
  186. package/redscript-docs/docs/zh/stdlib/sort.md +104 -0
  187. package/redscript-docs/docs/zh/stdlib/spawn.md +142 -0
  188. package/redscript-docs/docs/zh/stdlib/state.md +134 -0
  189. package/redscript-docs/docs/zh/stdlib/strings.md +107 -0
  190. package/redscript-docs/docs/zh/stdlib/tags.md +3451 -0
  191. package/redscript-docs/docs/zh/stdlib/teams.md +150 -0
  192. package/redscript-docs/docs/zh/stdlib/timer.md +254 -0
  193. package/redscript-docs/docs/zh/stdlib/vec.md +158 -0
  194. package/redscript-docs/docs/zh/stdlib/world.md +289 -0
  195. package/src/__tests__/formatter-extra.test.ts +139 -0
  196. package/src/__tests__/global-vars.test.ts +171 -0
  197. package/src/__tests__/lint/new-rules.test.ts +437 -0
  198. package/src/__tests__/lsp-rename.test.ts +171 -0
  199. package/src/__tests__/mc-integration/say-fstring.test.ts +211 -0
  200. package/src/__tests__/mc-integration/stdlib-coverage-2.test.ts +1 -1
  201. package/src/__tests__/mc-integration/stdlib-coverage-3.test.ts +1 -1
  202. package/src/__tests__/mc-integration/stdlib-coverage-4.test.ts +1 -1
  203. package/src/__tests__/mc-integration/stdlib-coverage-5.test.ts +1 -1
  204. package/src/__tests__/mc-integration/stdlib-coverage-6.test.ts +1 -1
  205. package/src/__tests__/mc-integration/stdlib-coverage-7.test.ts +1 -1
  206. package/src/__tests__/mc-integration/stdlib-coverage-8.test.ts +1 -1
  207. package/src/__tests__/mc-syntax.test.ts +3 -0
  208. package/src/__tests__/monomorphize-coverage.test.ts +220 -0
  209. package/src/__tests__/optimizer-cse.test.ts +250 -0
  210. package/src/__tests__/parser.test.ts +4 -13
  211. package/src/__tests__/repl-server-extra.test.ts +6 -6
  212. package/src/__tests__/repl-server.test.ts +5 -6
  213. package/src/__tests__/stdlib/queue.test.ts +6 -6
  214. package/src/lexer/index.ts +2 -1
  215. package/src/lint/index.ts +713 -5
  216. package/src/mc-test/client.ts +40 -0
  217. package/src/mir/lower.ts +111 -2
  218. package/src/optimizer/interprocedural.ts +40 -2
  219. package/src/parser/decl-parser.ts +349 -0
  220. package/src/parser/expr-parser.ts +838 -0
  221. package/src/parser/index.ts +17 -2558
  222. package/src/parser/stmt-parser.ts +585 -0
  223. package/src/parser/type-parser.ts +276 -0
  224. package/src/parser/utils.ts +173 -0
  225. package/src/stdlib/queue.mcrs +19 -6
@@ -0,0 +1,353 @@
1
+ # Color
2
+
3
+ > Auto-generated from `src/stdlib/color.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [rgb_pack](#rgb-pack)
8
+ - [rgb_r](#rgb-r)
9
+ - [rgb_g](#rgb-g)
10
+ - [rgb_b](#rgb-b)
11
+ - [rgb_lerp](#rgb-lerp)
12
+ - [rgb_to_l](#rgb-to-l)
13
+ - [rgb_to_s](#rgb-to-s)
14
+ - [rgb_to_h](#rgb-to-h)
15
+ - [hsl_to_r](#hsl-to-r)
16
+ - [hsl_to_g](#hsl-to-g)
17
+ - [hsl_to_b](#hsl-to-b)
18
+ - [hsl_to_packed](#hsl-to-packed)
19
+ - [rgb_to_hex](#rgb-to-hex)
20
+
21
+ ---
22
+
23
+ ## `rgb_pack` <Badge type="info" text="v1.0.0" />
24
+
25
+ Pack RGB components into a single integer (0xRRGGBB format).
26
+
27
+ ```redscript
28
+ fn rgb_pack(r: int, g: int, b: int): int
29
+ ```
30
+
31
+ **Parameters**
32
+
33
+ | Parameter | Description |
34
+ |-----------|-------------|
35
+ | `r` | Red channel, range [0, 255] |
36
+ | `g` | Green channel, range [0, 255] |
37
+ | `b` | Blue channel, range [0, 255] |
38
+
39
+ **Returns:** r*65536 + g*256 + b
40
+
41
+ **Example**
42
+
43
+ ```redscript
44
+ let red: int = rgb_pack(255, 0, 0) // result: 16711680 (0xFF0000)
45
+ ```
46
+
47
+ ---
48
+
49
+ ## `rgb_r` <Badge type="info" text="v1.0.0" />
50
+
51
+ Extract the red component from a packed RGB integer.
52
+
53
+ ```redscript
54
+ fn rgb_r(packed: int): int
55
+ ```
56
+
57
+ **Parameters**
58
+
59
+ | Parameter | Description |
60
+ |-----------|-------------|
61
+ | `packed` | Packed color integer (0xRRGGBB) |
62
+
63
+ **Returns:** Red channel value in [0, 255]
64
+
65
+ **Example**
66
+
67
+ ```redscript
68
+ let r: int = rgb_r(16711680) // result: 255
69
+ ```
70
+
71
+ ---
72
+
73
+ ## `rgb_g` <Badge type="info" text="v1.0.0" />
74
+
75
+ Extract the green component from a packed RGB integer.
76
+
77
+ ```redscript
78
+ fn rgb_g(packed: int): int
79
+ ```
80
+
81
+ **Parameters**
82
+
83
+ | Parameter | Description |
84
+ |-----------|-------------|
85
+ | `packed` | Packed color integer (0xRRGGBB) |
86
+
87
+ **Returns:** Green channel value in [0, 255]
88
+
89
+ **Example**
90
+
91
+ ```redscript
92
+ let g: int = rgb_g(65280) // result: 255 (0x00FF00)
93
+ ```
94
+
95
+ ---
96
+
97
+ ## `rgb_b` <Badge type="info" text="v1.0.0" />
98
+
99
+ Extract the blue component from a packed RGB integer.
100
+
101
+ ```redscript
102
+ fn rgb_b(packed: int): int
103
+ ```
104
+
105
+ **Parameters**
106
+
107
+ | Parameter | Description |
108
+ |-----------|-------------|
109
+ | `packed` | Packed color integer (0xRRGGBB) |
110
+
111
+ **Returns:** Blue channel value in [0, 255]
112
+
113
+ **Example**
114
+
115
+ ```redscript
116
+ let b: int = rgb_b(255) // result: 255 (0x0000FF)
117
+ ```
118
+
119
+ ---
120
+
121
+ ## `rgb_lerp` <Badge type="info" text="v1.0.0" />
122
+
123
+ Linear interpolation between two packed RGB colors.
124
+
125
+ ```redscript
126
+ fn rgb_lerp(a: int, b: int, t: int): int
127
+ ```
128
+
129
+ **Parameters**
130
+
131
+ | Parameter | Description |
132
+ |-----------|-------------|
133
+ | `a` | Start color (packed 0xRRGGBB) |
134
+ | `b` | End color (packed 0xRRGGBB) |
135
+ | `t` | Blend factor in [0, 1000] (0 = a, 1000 = b) |
136
+
137
+ **Returns:** Packed RGB interpolated between a and b
138
+
139
+ **Example**
140
+
141
+ ```redscript
142
+ let mid: int = rgb_lerp(0xFF0000, 0x0000FF, 500) // halfway between red and blue
143
+ ```
144
+
145
+ ---
146
+
147
+ ## `rgb_to_l` <Badge type="info" text="v1.0.0" />
148
+
149
+ Compute the HSL lightness from RGB components (×10000 scale).
150
+
151
+ ```redscript
152
+ fn rgb_to_l(r: int, g: int, b: int): int
153
+ ```
154
+
155
+ **Parameters**
156
+
157
+ | Parameter | Description |
158
+ |-----------|-------------|
159
+ | `r` | Red ×10000, range [0, 2550000] |
160
+ | `g` | Green ×10000, range [0, 2550000] |
161
+ | `b` | Blue ×10000, range [0, 2550000] |
162
+
163
+ **Returns:** Lightness in [0, 10000] (0 = black, 10000 = white)
164
+
165
+ **Example**
166
+
167
+ ```redscript
168
+ let l: int = rgb_to_l(2550000, 2550000, 2550000) // result: 10000 (white)
169
+ ```
170
+
171
+ ---
172
+
173
+ ## `rgb_to_s` <Badge type="info" text="v1.0.0" />
174
+
175
+ Compute the HSL saturation from RGB components (×10000 scale).
176
+
177
+ ```redscript
178
+ fn rgb_to_s(r: int, g: int, b: int): int
179
+ ```
180
+
181
+ **Parameters**
182
+
183
+ | Parameter | Description |
184
+ |-----------|-------------|
185
+ | `r` | Red ×10000, range [0, 2550000] |
186
+ | `g` | Green ×10000, range [0, 2550000] |
187
+ | `b` | Blue ×10000, range [0, 2550000] |
188
+
189
+ **Returns:** Saturation in [0, 10000] (0 = grey, 10000 = fully saturated)
190
+
191
+ **Example**
192
+
193
+ ```redscript
194
+ let s: int = rgb_to_s(2550000, 0, 0) // result: 10000 (pure red is fully saturated)
195
+ ```
196
+
197
+ ---
198
+
199
+ ## `rgb_to_h` <Badge type="info" text="v1.0.0" />
200
+
201
+ Compute the HSL hue from RGB components (×10000 scale).
202
+
203
+ ```redscript
204
+ fn rgb_to_h(r: int, g: int, b: int): int
205
+ ```
206
+
207
+ **Parameters**
208
+
209
+ | Parameter | Description |
210
+ |-----------|-------------|
211
+ | `r` | Red ×10000, range [0, 2550000] |
212
+ | `g` | Green ×10000, range [0, 2550000] |
213
+ | `b` | Blue ×10000, range [0, 2550000] |
214
+
215
+ **Returns:** Hue in [0, 3600000] (degrees × 10000; 0=red, 1200000=green, 2400000=blue)
216
+
217
+ **Example**
218
+
219
+ ```redscript
220
+ let h: int = rgb_to_h(0, 2550000, 0) // result: 1200000 (120°, pure green)
221
+ ```
222
+
223
+ ---
224
+
225
+ ## `hsl_to_r` <Badge type="info" text="v1.0.0" />
226
+
227
+ Convert HSL to the red channel of RGB (×10000 scale).
228
+
229
+ ```redscript
230
+ fn hsl_to_r(h: int, s: int, l: int): int
231
+ ```
232
+
233
+ **Parameters**
234
+
235
+ | Parameter | Description |
236
+ |-----------|-------------|
237
+ | `h` | Hue ×10000, range [0, 3600000] |
238
+ | `s` | Saturation ×10000, range [0, 10000] |
239
+ | `l` | Lightness ×10000, range [0, 10000] |
240
+
241
+ **Returns:** Red channel ×10000, range [0, 2550000]; divide by 10000 for 0-255
242
+
243
+ **Example**
244
+
245
+ ```redscript
246
+ let r: int = hsl_to_r(0, 10000, 5000) // pure red → 2550000
247
+ ```
248
+
249
+ ---
250
+
251
+ ## `hsl_to_g` <Badge type="info" text="v1.0.0" />
252
+
253
+ Convert HSL to the green channel of RGB (×10000 scale).
254
+
255
+ ```redscript
256
+ fn hsl_to_g(h: int, s: int, l: int): int
257
+ ```
258
+
259
+ **Parameters**
260
+
261
+ | Parameter | Description |
262
+ |-----------|-------------|
263
+ | `h` | Hue ×10000, range [0, 3600000] |
264
+ | `s` | Saturation ×10000, range [0, 10000] |
265
+ | `l` | Lightness ×10000, range [0, 10000] |
266
+
267
+ **Returns:** Green channel ×10000, range [0, 2550000]
268
+
269
+ **Example**
270
+
271
+ ```redscript
272
+ let g: int = hsl_to_g(1200000, 10000, 5000) // pure green → 2550000
273
+ ```
274
+
275
+ ---
276
+
277
+ ## `hsl_to_b` <Badge type="info" text="v1.0.0" />
278
+
279
+ Convert HSL to the blue channel of RGB (×10000 scale).
280
+
281
+ ```redscript
282
+ fn hsl_to_b(h: int, s: int, l: int): int
283
+ ```
284
+
285
+ **Parameters**
286
+
287
+ | Parameter | Description |
288
+ |-----------|-------------|
289
+ | `h` | Hue ×10000, range [0, 3600000] |
290
+ | `s` | Saturation ×10000, range [0, 10000] |
291
+ | `l` | Lightness ×10000, range [0, 10000] |
292
+
293
+ **Returns:** Blue channel ×10000, range [0, 2550000]
294
+
295
+ **Example**
296
+
297
+ ```redscript
298
+ let b: int = hsl_to_b(2400000, 10000, 5000) // pure blue → 2550000
299
+ ```
300
+
301
+ ---
302
+
303
+ ## `hsl_to_packed` <Badge type="info" text="v1.0.0" />
304
+
305
+ Convert HSL (×10000 scale) to a packed RGB integer (0xRRGGBB).
306
+
307
+ ```redscript
308
+ fn hsl_to_packed(h: int, s: int, l: int): int
309
+ ```
310
+
311
+ **Parameters**
312
+
313
+ | Parameter | Description |
314
+ |-----------|-------------|
315
+ | `h` | Hue ×10000, range [0, 3600000] |
316
+ | `s` | Saturation ×10000, range [0, 10000] |
317
+ | `l` | Lightness ×10000, range [0, 10000] |
318
+
319
+ **Returns:** Packed RGB integer (0xRRGGBB), each channel 0-255
320
+
321
+ **Example**
322
+
323
+ ```redscript
324
+ let col: int = hsl_to_packed(0, 10000, 5000) // pure red → 0xFF0000
325
+ ```
326
+
327
+ ---
328
+
329
+ ## `rgb_to_hex` <Badge type="info" text="v1.0.0" />
330
+
331
+ Pack RGB into a 0xRRGGBB integer (alias for rgb_pack with explicit naming).
332
+
333
+ ```redscript
334
+ fn rgb_to_hex(r: int, g: int, b: int): int
335
+ ```
336
+
337
+ **Parameters**
338
+
339
+ | Parameter | Description |
340
+ |-----------|-------------|
341
+ | `r` | Red channel, range [0, 255] |
342
+ | `g` | Green channel, range [0, 255] |
343
+ | `b` | Blue channel, range [0, 255] |
344
+
345
+ **Returns:** r*65536 + g*256 + b (same as rgb_pack)
346
+
347
+ **Example**
348
+
349
+ ```redscript
350
+ let hex: int = rgb_to_hex(0, 128, 255) // result: 32895 (0x0080FF)
351
+ ```
352
+
353
+ ---
@@ -0,0 +1,88 @@
1
+ # Combat
2
+
3
+ > Auto-generated from `src/stdlib/combat.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [weapon_damage](#weapon-damage)
8
+ - [take_damage](#take-damage)
9
+ - [is_dead](#is-dead)
10
+
11
+ ---
12
+
13
+ ## `weapon_damage` <Badge type="info" text="v1.0.0" />
14
+
15
+ Calculate total weapon damage from a base value plus a bonus.
16
+
17
+ ```redscript
18
+ fn weapon_damage(base: int, bonus: int): int
19
+ ```
20
+
21
+ **Parameters**
22
+
23
+ | Parameter | Description |
24
+ |-----------|-------------|
25
+ | `base` | Base weapon damage value |
26
+ | `bonus` | Additional damage modifier (e.g. from enchantments or buffs) |
27
+
28
+ **Returns:** base + bonus
29
+
30
+ **Example**
31
+
32
+ ```redscript
33
+ let dmg: int = weapon_damage(10, 5) // result: 15
34
+ ```
35
+
36
+ ---
37
+
38
+ ## `take_damage` <Badge type="info" text="v1.0.0" />
39
+
40
+ Apply damage to a health value, clamping the result to a minimum of 0.
41
+
42
+ ```redscript
43
+ fn take_damage(health: int, amount: int): int
44
+ ```
45
+
46
+ **Parameters**
47
+
48
+ | Parameter | Description |
49
+ |-----------|-------------|
50
+ | `health` | Current health value (e.g. from scoreboard) |
51
+ | `amount` | Damage amount to subtract |
52
+
53
+ **Returns:** health - amount, clamped to 0; use scoreboard_set after calling
54
+
55
+ **Example**
56
+
57
+ ```redscript
58
+ let new_hp: int = take_damage(current_hp, 8)
59
+ scoreboard_set(@p, #health, new_hp)
60
+ ```
61
+
62
+ ---
63
+
64
+ ## `is_dead` <Badge type="info" text="v1.0.0" />
65
+
66
+ Check whether an entity is dead (health at or below zero).
67
+
68
+ ```redscript
69
+ fn is_dead(health: int): int
70
+ ```
71
+
72
+ **Parameters**
73
+
74
+ | Parameter | Description |
75
+ |-----------|-------------|
76
+ | `health` | Current health value to test |
77
+
78
+ **Returns:** 1 if health <= 0 (dead), 0 otherwise (alive)
79
+
80
+ **Example**
81
+
82
+ ```redscript
83
+ if (is_dead(current_hp) == 1) {
84
+ // trigger death logic
85
+ }
86
+ ```
87
+
88
+ ---
@@ -0,0 +1,82 @@
1
+ # Cooldown
2
+
3
+ > Auto-generated from `src/stdlib/cooldown.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [cooldown_start](#cooldown-start)
8
+ - [cooldown_ready](#cooldown-ready)
9
+ - [cooldown_tick](#cooldown-tick)
10
+
11
+ ---
12
+
13
+ ## `cooldown_start` <Badge type="info" text="v1.2.0" />
14
+
15
+ Start (or restart) a cooldown for the given slot.
16
+ The cooldown expires after `ticks` game ticks.
17
+
18
+ ```redscript
19
+ fn cooldown_start(name: string, ticks: int)
20
+ ```
21
+
22
+ **Parameters**
23
+
24
+ | Parameter | Description |
25
+ |-----------|-------------|
26
+ | `name` | Cooldown slot identifier (reserved for future multi-slot support) |
27
+ | `ticks` | Duration in game ticks (20 ticks = 1 second) |
28
+
29
+ **Example**
30
+
31
+ ```redscript
32
+ cooldown_start("sword", 40); // 2-second cooldown
33
+ ```
34
+
35
+ ---
36
+
37
+ ## `cooldown_ready` <Badge type="info" text="v1.2.0" />
38
+
39
+ Check whether the cooldown has expired (i.e. is ready to fire again).
40
+
41
+ ```redscript
42
+ fn cooldown_ready(name: string) -> int
43
+ ```
44
+
45
+ **Parameters**
46
+
47
+ | Parameter | Description |
48
+ |-----------|-------------|
49
+ | `name` | Cooldown slot identifier (reserved for future multi-slot support) |
50
+
51
+ **Returns:** 1 if the cooldown is ready (inactive or ticks remaining ≤ 0), 0 otherwise
52
+
53
+ **Example**
54
+
55
+ ```redscript
56
+ if (cooldown_ready("sword") == 1) { attack(); cooldown_start("sword", 40); }
57
+ ```
58
+
59
+ ---
60
+
61
+ ## `cooldown_tick` <Badge type="info" text="v1.2.0" />
62
+
63
+ Advance the cooldown by one tick. Call this every tick from a `@tick` function.
64
+ Automatically marks the cooldown inactive when the remaining ticks reach zero.
65
+
66
+ ```redscript
67
+ fn cooldown_tick(name: string)
68
+ ```
69
+
70
+ **Parameters**
71
+
72
+ | Parameter | Description |
73
+ |-----------|-------------|
74
+ | `name` | Cooldown slot identifier (reserved for future multi-slot support) |
75
+
76
+ **Example**
77
+
78
+ ```redscript
79
+ @tick fn game_tick() { cooldown_tick("sword"); }
80
+ ```
81
+
82
+ ---
@@ -0,0 +1,155 @@
1
+ # Dialog
2
+
3
+ > Auto-generated from `src/stdlib/dialog.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [dialog_say](#dialog-say)
8
+ - [dialog_broadcast](#dialog-broadcast)
9
+ - [dialog_say_color](#dialog-say-color)
10
+ - [dialog_title](#dialog-title)
11
+ - [dialog_title_clear](#dialog-title-clear)
12
+ - [dialog_actionbar](#dialog-actionbar)
13
+
14
+ ---
15
+
16
+ ## `dialog_say` <Badge type="info" text="v1.0.0" />
17
+
18
+ Sends a plain white chat message to a player or selector.
19
+
20
+ ```redscript
21
+ fn dialog_say(p: selector, msg: string)
22
+ ```
23
+
24
+ **Parameters**
25
+
26
+ | Parameter | Description |
27
+ |-----------|-------------|
28
+ | `p` | Recipient selector |
29
+ | `msg` | Plain text message content |
30
+
31
+ **Example**
32
+
33
+ ```redscript
34
+ dialog_say(@p, "Quest updated")
35
+ ```
36
+
37
+ ---
38
+
39
+ ## `dialog_broadcast` <Badge type="info" text="v1.0.0" />
40
+
41
+ Broadcasts a plain white chat message to all players.
42
+
43
+ ```redscript
44
+ fn dialog_broadcast(msg: string)
45
+ ```
46
+
47
+ **Parameters**
48
+
49
+ | Parameter | Description |
50
+ |-----------|-------------|
51
+ | `msg` | Plain text message content |
52
+
53
+ **Example**
54
+
55
+ ```redscript
56
+ dialog_broadcast("Server restart in 60 seconds")
57
+ ```
58
+
59
+ ---
60
+
61
+ ## `dialog_say_color` <Badge type="info" text="v1.0.0" />
62
+
63
+ Sends a colored chat message to a player or selector.
64
+
65
+ Color mapping: `0=white`, `1=red`, `2=green`, `3=gold`, `4=aqua`.
66
+ Any other value falls back to white.
67
+
68
+ ```redscript
69
+ fn dialog_say_color(p: selector, msg: string, color: int)
70
+ ```
71
+
72
+ **Parameters**
73
+
74
+ | Parameter | Description |
75
+ |-----------|-------------|
76
+ | `p` | Recipient selector |
77
+ | `msg` | Plain text message content |
78
+ | `color` | Color selector integer (0=white, 1=red, 2=green, 3=gold, 4=aqua) |
79
+
80
+ **Example**
81
+
82
+ ```redscript
83
+ dialog_say_color(@s, "You died!", 1)
84
+ ```
85
+
86
+ ---
87
+
88
+ ## `dialog_title` <Badge type="info" text="v1.0.0" />
89
+
90
+ Displays a title and subtitle on a player's screen.
91
+
92
+ ```redscript
93
+ fn dialog_title(p: selector, title: string, subtitle: string)
94
+ ```
95
+
96
+ **Parameters**
97
+
98
+ | Parameter | Description |
99
+ |-----------|-------------|
100
+ | `p` | Recipient selector |
101
+ | `title` | Large title text |
102
+ | `subtitle` | Subtitle text shown below the title |
103
+
104
+ **Example**
105
+
106
+ ```redscript
107
+ dialog_title(@s, "Stage 2", "Defeat the boss")
108
+ ```
109
+
110
+ ---
111
+
112
+ ## `dialog_title_clear` <Badge type="info" text="v1.0.0" />
113
+
114
+ Clears any currently displayed title for the target selector.
115
+
116
+ ```redscript
117
+ fn dialog_title_clear(p: selector)
118
+ ```
119
+
120
+ **Parameters**
121
+
122
+ | Parameter | Description |
123
+ |-----------|-------------|
124
+ | `p` | Recipient selector |
125
+
126
+ **Example**
127
+
128
+ ```redscript
129
+ dialog_title_clear(@s)
130
+ ```
131
+
132
+ ---
133
+
134
+ ## `dialog_actionbar` <Badge type="info" text="v1.0.0" />
135
+
136
+ Displays a short message in the player's actionbar.
137
+
138
+ ```redscript
139
+ fn dialog_actionbar(p: selector, msg: string)
140
+ ```
141
+
142
+ **Parameters**
143
+
144
+ | Parameter | Description |
145
+ |-----------|-------------|
146
+ | `p` | Recipient selector |
147
+ | `msg` | Plain text message content |
148
+
149
+ **Example**
150
+
151
+ ```redscript
152
+ dialog_actionbar(@s, "Mana: 80/100")
153
+ ```
154
+
155
+ ---