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,324 @@
1
+ # Effects
2
+
3
+ > Auto-generated from `src/stdlib/effects.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [speed](#speed)
8
+ - [jump](#jump)
9
+ - [regen](#regen)
10
+ - [resistance](#resistance)
11
+ - [strength](#strength)
12
+ - [invisible](#invisible)
13
+ - [night_vision](#night-vision)
14
+ - [slow_fall](#slow-fall)
15
+ - [glow](#glow)
16
+ - [clear_effects](#clear-effects)
17
+ - [clear_effect](#clear-effect)
18
+ - [buff_all](#buff-all)
19
+
20
+ ---
21
+
22
+ ## `speed` <Badge type="info" text="v1.0.0" />
23
+
24
+ Give a speed boost to the target entity.
25
+
26
+ ```redscript
27
+ fn speed(target: selector, duration: int, level: int)
28
+ ```
29
+
30
+ **Parameters**
31
+
32
+ | Parameter | Description |
33
+ |-----------|-------------|
34
+ | `target` | Entity selector (e.g. @p, @a, @e[...]) |
35
+ | `duration` | Effect duration in ticks (20 ticks = 1 second) |
36
+ | `level` | Amplifier level (0 = Speed I, 1 = Speed II, ...) |
37
+
38
+ **Returns:** void — applies minecraft:speed effect
39
+
40
+ **Example**
41
+
42
+ ```redscript
43
+ speed(@p, 200, 1) // Speed II for 10 seconds
44
+ ```
45
+
46
+ ---
47
+
48
+ ## `jump` <Badge type="info" text="v1.0.0" />
49
+
50
+ Give a jump boost to the target entity.
51
+
52
+ ```redscript
53
+ fn jump(target: selector, duration: int, level: int)
54
+ ```
55
+
56
+ **Parameters**
57
+
58
+ | Parameter | Description |
59
+ |-----------|-------------|
60
+ | `target` | Entity selector |
61
+ | `duration` | Effect duration in ticks |
62
+ | `level` | Amplifier level (0 = Jump Boost I, 1 = Jump Boost II, ...) |
63
+
64
+ **Returns:** void — applies minecraft:jump_boost effect
65
+
66
+ **Example**
67
+
68
+ ```redscript
69
+ jump(@p, 100, 0) // Jump Boost I for 5 seconds
70
+ ```
71
+
72
+ ---
73
+
74
+ ## `regen` <Badge type="info" text="v1.0.0" />
75
+
76
+ Give regeneration to the target entity.
77
+
78
+ ```redscript
79
+ fn regen(target: selector, duration: int, level: int)
80
+ ```
81
+
82
+ **Parameters**
83
+
84
+ | Parameter | Description |
85
+ |-----------|-------------|
86
+ | `target` | Entity selector |
87
+ | `duration` | Effect duration in ticks |
88
+ | `level` | Amplifier level (0 = Regeneration I, ...) |
89
+
90
+ **Returns:** void — applies minecraft:regeneration effect
91
+
92
+ **Example**
93
+
94
+ ```redscript
95
+ regen(@p, 60, 0) // Regeneration I for 3 seconds
96
+ ```
97
+
98
+ ---
99
+
100
+ ## `resistance` <Badge type="info" text="v1.0.0" />
101
+
102
+ Give damage resistance to the target entity.
103
+
104
+ ```redscript
105
+ fn resistance(target: selector, duration: int, level: int)
106
+ ```
107
+
108
+ **Parameters**
109
+
110
+ | Parameter | Description |
111
+ |-----------|-------------|
112
+ | `target` | Entity selector |
113
+ | `duration` | Effect duration in ticks |
114
+ | `level` | Amplifier level (0 = Resistance I, ...) |
115
+
116
+ **Returns:** void — applies minecraft:resistance effect
117
+
118
+ **Example**
119
+
120
+ ```redscript
121
+ resistance(@p, 400, 0) // Resistance I for 20 seconds
122
+ ```
123
+
124
+ ---
125
+
126
+ ## `strength` <Badge type="info" text="v1.0.0" />
127
+
128
+ Give strength to the target entity.
129
+
130
+ ```redscript
131
+ fn strength(target: selector, duration: int, level: int)
132
+ ```
133
+
134
+ **Parameters**
135
+
136
+ | Parameter | Description |
137
+ |-----------|-------------|
138
+ | `target` | Entity selector |
139
+ | `duration` | Effect duration in ticks |
140
+ | `level` | Amplifier level (0 = Strength I, 1 = Strength II, ...) |
141
+
142
+ **Returns:** void — applies minecraft:strength effect
143
+
144
+ **Example**
145
+
146
+ ```redscript
147
+ strength(@p, 200, 1) // Strength II for 10 seconds
148
+ ```
149
+
150
+ ---
151
+
152
+ ## `invisible` <Badge type="info" text="v1.0.0" />
153
+
154
+ Make the target entity invisible.
155
+
156
+ ```redscript
157
+ fn invisible(target: selector, duration: int)
158
+ ```
159
+
160
+ **Parameters**
161
+
162
+ | Parameter | Description |
163
+ |-----------|-------------|
164
+ | `target` | Entity selector |
165
+ | `duration` | Effect duration in ticks |
166
+
167
+ **Returns:** void — applies minecraft:invisibility at amplifier 0
168
+
169
+ **Example**
170
+
171
+ ```redscript
172
+ invisible(@p, 300) // invisibility for 15 seconds
173
+ ```
174
+
175
+ ---
176
+
177
+ ## `night_vision` <Badge type="info" text="v1.0.0" />
178
+
179
+ Give night vision to the target entity.
180
+
181
+ ```redscript
182
+ fn night_vision(target: selector, duration: int)
183
+ ```
184
+
185
+ **Parameters**
186
+
187
+ | Parameter | Description |
188
+ |-----------|-------------|
189
+ | `target` | Entity selector |
190
+ | `duration` | Effect duration in ticks |
191
+
192
+ **Returns:** void — applies minecraft:night_vision at amplifier 0
193
+
194
+ **Example**
195
+
196
+ ```redscript
197
+ night_vision(@p, 6000) // night vision for 5 minutes
198
+ ```
199
+
200
+ ---
201
+
202
+ ## `slow_fall` <Badge type="info" text="v1.0.0" />
203
+
204
+ Give slow falling to the target entity.
205
+
206
+ ```redscript
207
+ fn slow_fall(target: selector, duration: int)
208
+ ```
209
+
210
+ **Parameters**
211
+
212
+ | Parameter | Description |
213
+ |-----------|-------------|
214
+ | `target` | Entity selector |
215
+ | `duration` | Effect duration in ticks |
216
+
217
+ **Returns:** void — applies minecraft:slow_falling at amplifier 0
218
+
219
+ **Example**
220
+
221
+ ```redscript
222
+ slow_fall(@p, 200) // slow falling for 10 seconds
223
+ ```
224
+
225
+ ---
226
+
227
+ ## `glow` <Badge type="info" text="v1.0.0" />
228
+
229
+ Give the glowing outline effect to the target entity.
230
+
231
+ ```redscript
232
+ fn glow(target: selector, duration: int)
233
+ ```
234
+
235
+ **Parameters**
236
+
237
+ | Parameter | Description |
238
+ |-----------|-------------|
239
+ | `target` | Entity selector |
240
+ | `duration` | Effect duration in ticks |
241
+
242
+ **Returns:** void — applies minecraft:glowing at amplifier 0
243
+
244
+ **Example**
245
+
246
+ ```redscript
247
+ glow(@e[type=zombie], 100) // make all zombies glow for 5 seconds
248
+ ```
249
+
250
+ ---
251
+
252
+ ## `clear_effects` <Badge type="info" text="v1.0.0" />
253
+
254
+ Clear all active effects from the target entity.
255
+
256
+ ```redscript
257
+ fn clear_effects(target: selector)
258
+ ```
259
+
260
+ **Parameters**
261
+
262
+ | Parameter | Description |
263
+ |-----------|-------------|
264
+ | `target` | Entity selector |
265
+
266
+ **Returns:** void — removes all potion effects via effect_clear
267
+
268
+ **Example**
269
+
270
+ ```redscript
271
+ clear_effects(@p) // remove all effects from nearest player
272
+ ```
273
+
274
+ ---
275
+
276
+ ## `clear_effect` <Badge type="info" text="v1.0.0" />
277
+
278
+ Clear a specific effect from the target entity.
279
+
280
+ ```redscript
281
+ fn clear_effect(target: selector, eff: string)
282
+ ```
283
+
284
+ **Parameters**
285
+
286
+ | Parameter | Description |
287
+ |-----------|-------------|
288
+ | `target` | Entity selector |
289
+ | `eff` | Effect resource location string (e.g. "minecraft:speed") |
290
+
291
+ **Returns:** void — removes the specified potion effect
292
+
293
+ **Example**
294
+
295
+ ```redscript
296
+ clear_effect(@p, "minecraft:poison") // cure poison
297
+ ```
298
+
299
+ ---
300
+
301
+ ## `buff_all` <Badge type="info" text="v1.0.0" />
302
+
303
+ Apply a full buff package (Speed I, Strength I, Regeneration I, Resistance I).
304
+
305
+ ```redscript
306
+ fn buff_all(target: selector, duration: int)
307
+ ```
308
+
309
+ **Parameters**
310
+
311
+ | Parameter | Description |
312
+ |-----------|-------------|
313
+ | `target` | Entity selector |
314
+ | `duration` | Duration in ticks for all four effects |
315
+
316
+ **Returns:** void — applies speed, strength, regen, and resistance at level 1 (or 0 for resistance)
317
+
318
+ **Example**
319
+
320
+ ```redscript
321
+ buff_all(@p, 600) // full buff for 30 seconds
322
+ ```
323
+
324
+ ---
@@ -0,0 +1,3 @@
1
+ # Events
2
+
3
+ > Auto-generated from `src/stdlib/events.mcrs` — do not edit manually.
@@ -0,0 +1,45 @@
1
+ # Expr
2
+
3
+ > Auto-generated from `src/stdlib/expr.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [expr_eval](#expr-eval)
8
+
9
+ ---
10
+
11
+ ## `expr_eval` <Badge type="info" text="v1.2.0" />
12
+
13
+ Evaluate an RPN (Reverse Polish Notation) token stream with a single variable substitution.
14
+
15
+ Token encoding (all values × 10000):
16
+ - Positive integer: literal value pushed onto the stack
17
+ - `-10000`: variable `x` (replaced by the `x` argument)
18
+ - `-1` ADD, `-2` SUB, `-3` MUL (fixed-point), `-4` DIV (fixed-point)
19
+ - `-5` SIN (degrees × 10000 → result × 10000), `-6` COS, `-7` SQRT, `-8` ABS
20
+
21
+ Internal stack depth: 16 elements. Behaviour is undefined for malformed token streams.
22
+
23
+ ```redscript
24
+ fn expr_eval(tokens: int[], n: int, x: int): int
25
+ ```
26
+
27
+ **Parameters**
28
+
29
+ | Parameter | Description |
30
+ |-----------|-------------|
31
+ | `tokens` | RPN token array of length n |
32
+ | `n` | Number of tokens |
33
+ | `x` | Variable value × 10000 substituted for token `-10000` |
34
+
35
+ **Returns:** Top-of-stack value × 10000 after evaluating all tokens
36
+
37
+ **Example**
38
+
39
+ ```redscript
40
+ // 2*x + 1 → RPN: [20000, -10000, -3, 10000, -1]
41
+ let prog: int[] = [20000, -10000, -3, 10000, -1];
42
+ expr_eval(prog, 5, 15000); // 40000 (2×1.5 + 1 = 4.0)
43
+ ```
44
+
45
+ ---
@@ -0,0 +1,141 @@
1
+ # Fft
2
+
3
+ > Auto-generated from `src/stdlib/fft.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [dft_noop](#dft-noop)
8
+ - [dft_real](#dft-real)
9
+ - [dft_magnitude](#dft-magnitude)
10
+ - [dft_power](#dft-power)
11
+ - [dft_freq_bin](#dft-freq-bin)
12
+
13
+ ---
14
+
15
+ ## `dft_noop` <Badge type="info" text="v2.0.0" />
16
+
17
+ Default no-op completion callback for `dft_coro`. Does nothing.
18
+
19
+ ```redscript
20
+ fn dft_noop(): void
21
+ ```
22
+
23
+ ---
24
+
25
+ ## `dft_real` <Badge type="info" text="v2.0.0" />
26
+
27
+ Compute the Discrete Fourier Transform of `input[0..n-1]`.
28
+
29
+ Output arrays must be pre-allocated to length `n` and filled with zeros
30
+ before calling.
31
+
32
+ Formula: `X[k] = Σ x[j] * (cos(2πkj/n) - i·sin(2πkj/n))`
33
+
34
+ ```redscript
35
+ fn dft_real(input: int[], n: int, out_re: int[], out_im: int[])
36
+ ```
37
+
38
+ **Parameters**
39
+
40
+ | Parameter | Description |
41
+ |-----------|-------------|
42
+ | `input` | Signal samples in fixed-point ×10000 |
43
+ | `n` | Number of samples (≤ 16 recommended) |
44
+ | `out_re` | Pre-allocated output array for real parts (×10000) |
45
+ | `out_im` | Pre-allocated output array for imaginary parts (×10000) |
46
+
47
+ **Example**
48
+
49
+ ```redscript
50
+ let re: int[] = [0, 0, 0, 0]
51
+ let im: int[] = [0, 0, 0, 0]
52
+ dft_real(sig, 4, re, im)
53
+ ```
54
+
55
+ ---
56
+
57
+ ## `dft_magnitude` <Badge type="info" text="v2.0.0" />
58
+
59
+ Return the magnitude of DFT bin `k`: `|X[k]| = sqrt(re[k]² + im[k]²)` in ×10000.
60
+
61
+ Note: squaring ×10000 values can reach ~10⁹ per term, which fits in int32 for
62
+ amplitudes ≤ ~46340. For larger amplitudes, scale the input before calling.
63
+
64
+ ```redscript
65
+ fn dft_magnitude(re: int[], im: int[], k: int): int
66
+ ```
67
+
68
+ **Parameters**
69
+
70
+ | Parameter | Description |
71
+ |-----------|-------------|
72
+ | `re` | Real output array from `dft_real` |
73
+ | `im` | Imaginary output array from `dft_real` |
74
+ | `k` | Bin index |
75
+
76
+ **Returns:** Magnitude of bin `k` in ×10000 fixed-point
77
+
78
+ **Example**
79
+
80
+ ```redscript
81
+ let mag: int = dft_magnitude(re, im, 1)
82
+ ```
83
+
84
+ ---
85
+
86
+ ## `dft_power` <Badge type="info" text="v2.0.0" />
87
+
88
+ Return the power spectrum value for bin `k`: `re[k]²/10000 + im[k]²/10000`.
89
+
90
+ Division by 10000 prevents int32 overflow for values up to ~46340 (×10000).
91
+ The result is in ×10000 scale (power units).
92
+
93
+ ```redscript
94
+ fn dft_power(re: int[], im: int[], k: int): int
95
+ ```
96
+
97
+ **Parameters**
98
+
99
+ | Parameter | Description |
100
+ |-----------|-------------|
101
+ | `re` | Real output array from `dft_real` |
102
+ | `im` | Imaginary output array from `dft_real` |
103
+ | `k` | Bin index |
104
+
105
+ **Returns:** Power of bin `k` in ×10000 units
106
+
107
+ **Example**
108
+
109
+ ```redscript
110
+ let power: int = dft_power(re, im, 2)
111
+ ```
112
+
113
+ ---
114
+
115
+ ## `dft_freq_bin` <Badge type="info" text="v2.0.0" />
116
+
117
+ Return the frequency (Hz) corresponding to DFT bin `k`.
118
+
119
+ Formula: `freq = sample_rate_hz * k / n`
120
+
121
+ ```redscript
122
+ fn dft_freq_bin(sample_rate_hz: int, n: int, k: int): int
123
+ ```
124
+
125
+ **Parameters**
126
+
127
+ | Parameter | Description |
128
+ |-----------|-------------|
129
+ | `sample_rate_hz` | Sampling rate in Hz (e.g. `20` for Minecraft tick rate) |
130
+ | `n` | Transform size (number of samples) |
131
+ | `k` | Bin index in range [0, n-1] |
132
+
133
+ **Returns:** Frequency in Hz for bin `k`
134
+
135
+ **Example**
136
+
137
+ ```redscript
138
+ let freq: int = dft_freq_bin(20, 8, 3)
139
+ ```
140
+
141
+ ---