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
+ > 本文档由 `src/stdlib/effects.mcrs` 自动生成,请勿手动编辑。
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
+ 给目标实体施加速度提升效果
25
+
26
+ ```redscript
27
+ fn speed(target: selector, duration: int, level: int)
28
+ ```
29
+
30
+ **参数**
31
+
32
+ | 参数 | 说明 |
33
+ |------|------|
34
+ | `target` | 实体选择器(如 @p, @a, @e[...]) |
35
+ | `duration` | 效果持续时间(刻,20 刻 = 1 秒) |
36
+ | `level` | 效果等级(0 = 速度 I,1 = 速度 II,...) |
37
+
38
+ **返回:** void — 应用 minecraft:speed 效果
39
+
40
+ **示例**
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
+ 给目标实体施加跳跃提升效果
51
+
52
+ ```redscript
53
+ fn jump(target: selector, duration: int, level: int)
54
+ ```
55
+
56
+ **参数**
57
+
58
+ | 参数 | 说明 |
59
+ |------|------|
60
+ | `target` | 实体选择器 |
61
+ | `duration` | 效果持续时间(刻) |
62
+ | `level` | 效果等级(0 = 跳跃 I,...) |
63
+
64
+ **返回:** void — 应用 minecraft:jump_boost 效果
65
+
66
+ **示例**
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
+ 给目标实体施加生命恢复效果
77
+
78
+ ```redscript
79
+ fn regen(target: selector, duration: int, level: int)
80
+ ```
81
+
82
+ **参数**
83
+
84
+ | 参数 | 说明 |
85
+ |------|------|
86
+ | `target` | 实体选择器 |
87
+ | `duration` | 效果持续时间(刻) |
88
+ | `level` | 效果等级 |
89
+
90
+ **返回:** void — 应用 minecraft:regeneration 效果
91
+
92
+ **示例**
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
+ 给目标实体施加伤害抵抗效果
103
+
104
+ ```redscript
105
+ fn resistance(target: selector, duration: int, level: int)
106
+ ```
107
+
108
+ **参数**
109
+
110
+ | 参数 | 说明 |
111
+ |------|------|
112
+ | `target` | 实体选择器 |
113
+ | `duration` | 效果持续时间(刻) |
114
+ | `level` | 效果等级 |
115
+
116
+ **返回:** void — 应用 minecraft:resistance 效果
117
+
118
+ **示例**
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
+ 给目标实体施加力量提升效果
129
+
130
+ ```redscript
131
+ fn strength(target: selector, duration: int, level: int)
132
+ ```
133
+
134
+ **参数**
135
+
136
+ | 参数 | 说明 |
137
+ |------|------|
138
+ | `target` | 实体选择器 |
139
+ | `duration` | 效果持续时间(刻) |
140
+ | `level` | 效果等级(0 = 力量 I,1 = 力量 II,...) |
141
+
142
+ **返回:** void — 应用 minecraft:strength 效果
143
+
144
+ **示例**
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
+ 使目标实体隐身
155
+
156
+ ```redscript
157
+ fn invisible(target: selector, duration: int)
158
+ ```
159
+
160
+ **参数**
161
+
162
+ | 参数 | 说明 |
163
+ |------|------|
164
+ | `target` | 实体选择器 |
165
+ | `duration` | 效果持续时间(刻) |
166
+
167
+ **返回:** void — 应用 minecraft:invisibility(等级 0)
168
+
169
+ **示例**
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
+ 给目标实体施加夜视效果
180
+
181
+ ```redscript
182
+ fn night_vision(target: selector, duration: int)
183
+ ```
184
+
185
+ **参数**
186
+
187
+ | 参数 | 说明 |
188
+ |------|------|
189
+ | `target` | 实体选择器 |
190
+ | `duration` | 效果持续时间(刻) |
191
+
192
+ **返回:** void — 应用 minecraft:night_vision
193
+
194
+ **示例**
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
+ 给目标实体施加缓降效果
205
+
206
+ ```redscript
207
+ fn slow_fall(target: selector, duration: int)
208
+ ```
209
+
210
+ **参数**
211
+
212
+ | 参数 | 说明 |
213
+ |------|------|
214
+ | `target` | 实体选择器 |
215
+ | `duration` | 效果持续时间(刻) |
216
+
217
+ **返回:** void — 应用 minecraft:slow_falling
218
+
219
+ **示例**
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
+ 使目标实体发光轮廓
230
+
231
+ ```redscript
232
+ fn glow(target: selector, duration: int)
233
+ ```
234
+
235
+ **参数**
236
+
237
+ | 参数 | 说明 |
238
+ |------|------|
239
+ | `target` | 实体选择器 |
240
+ | `duration` | 效果持续时间(刻) |
241
+
242
+ **返回:** void — 应用 minecraft:glowing
243
+
244
+ **示例**
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
+ 清除目标实体的所有药水效果
255
+
256
+ ```redscript
257
+ fn clear_effects(target: selector)
258
+ ```
259
+
260
+ **参数**
261
+
262
+ | 参数 | 说明 |
263
+ |------|------|
264
+ | `target` | 实体选择器 |
265
+
266
+ **返回:** void
267
+
268
+ **示例**
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
+ 清除目标实体的特定效果
279
+
280
+ ```redscript
281
+ fn clear_effect(target: selector, eff: string)
282
+ ```
283
+
284
+ **参数**
285
+
286
+ | 参数 | 说明 |
287
+ |------|------|
288
+ | `target` | 实体选择器 |
289
+ | `eff` | 效果资源位置字符串(如 "minecraft:speed") |
290
+
291
+ **返回:** void
292
+
293
+ **示例**
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
+ 给目标施加完整增益套餐(速度 I、力量 I、生命恢复 I、抵抗 I)
304
+
305
+ ```redscript
306
+ fn buff_all(target: selector, duration: int)
307
+ ```
308
+
309
+ **参数**
310
+
311
+ | 参数 | 说明 |
312
+ |------|------|
313
+ | `target` | 实体选择器 |
314
+ | `duration` | 所有效果的持续时间(刻) |
315
+
316
+ **返回:** void
317
+
318
+ **示例**
319
+
320
+ ```redscript
321
+ buff_all(@p, 600) // full buff for 30 seconds
322
+ ```
323
+
324
+ ---
@@ -0,0 +1,3 @@
1
+ # Events
2
+
3
+ > 本文档由 `src/stdlib/events.mcrs` 自动生成,请勿手动编辑。
@@ -0,0 +1,37 @@
1
+ # Expr
2
+
3
+ > 本文档由 `src/stdlib/expr.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [expr_eval](#expr-eval)
8
+
9
+ ---
10
+
11
+ ## `expr_eval` <Badge type="info" text="v1.2.0" />
12
+
13
+ 求值 RPN(逆波兰表达式)令牌流,支持单变量替换。正整数为字面量,-10000 为变量 x,-1~-8 为运算符。栈深度 16。
14
+
15
+ ```redscript
16
+ fn expr_eval(tokens: int[], n: int, x: int): int
17
+ ```
18
+
19
+ **参数**
20
+
21
+ | 参数 | 说明 |
22
+ |------|------|
23
+ | `tokens` | 长度为 n 的 RPN 令牌数组 |
24
+ | `n` | 令牌数量 |
25
+ | `x` | 替换令牌 -10000 的变量值 ×10000 |
26
+
27
+ **返回:** 求值后栈顶值 ×10000
28
+
29
+ **示例**
30
+
31
+ ```redscript
32
+ // 2*x + 1 → RPN: [20000, -10000, -3, 10000, -1]
33
+ let prog: int[] = [20000, -10000, -3, 10000, -1];
34
+ expr_eval(prog, 5, 15000); // 40000 (2×1.5 + 1 = 4.0)
35
+ ```
36
+
37
+ ---
@@ -0,0 +1,128 @@
1
+ # Fft
2
+
3
+ > 本文档由 `src/stdlib/fft.mcrs` 自动生成,请勿手动编辑。
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
+ dft_coro 的默认空回调,不执行任何操作
18
+
19
+ ```redscript
20
+ fn dft_noop(): void
21
+ ```
22
+
23
+ ---
24
+
25
+ ## `dft_real` <Badge type="info" text="v2.0.0" />
26
+
27
+ 计算 input[0..n-1] 的离散傅里叶变换,输出实部到 out_re
28
+
29
+ ```redscript
30
+ fn dft_real(input: int[], n: int, out_re: int[], out_im: int[])
31
+ ```
32
+
33
+ **参数**
34
+
35
+ | 参数 | 说明 |
36
+ |------|------|
37
+ | `input` | 信号采样值数组,×10000 定点数 |
38
+ | `n` | 采样数量(建议 ≤ 16) |
39
+ | `out_re` | 预分配输出数组,存放实部(×10000) |
40
+ | `out_im` | 预分配输出数组,存放虚部(×10000) |
41
+
42
+ **示例**
43
+
44
+ ```redscript
45
+ let re: int[] = [0, 0, 0, 0]
46
+ let im: int[] = [0, 0, 0, 0]
47
+ dft_real(sig, 4, re, im)
48
+ ```
49
+
50
+ ---
51
+
52
+ ## `dft_magnitude` <Badge type="info" text="v2.0.0" />
53
+
54
+ 返回 DFT 第 k 个频段的幅度(sqrt(re²+im²)),×10000
55
+
56
+ ```redscript
57
+ fn dft_magnitude(re: int[], im: int[], k: int): int
58
+ ```
59
+
60
+ **参数**
61
+
62
+ | 参数 | 说明 |
63
+ |------|------|
64
+ | `re` | dft_real 输出的实部数组 |
65
+ | `im` | dft_real 输出的虚部数组 |
66
+ | `k` | 频段索引 |
67
+
68
+ **返回:** 第 k 频段幅度,×10000
69
+
70
+ **示例**
71
+
72
+ ```redscript
73
+ let mag: int = dft_magnitude(re, im, 1)
74
+ ```
75
+
76
+ ---
77
+
78
+ ## `dft_power` <Badge type="info" text="v2.0.0" />
79
+
80
+ 返回 DFT 第 k 个频段的功率(re²/10000 + im²/10000),×10000
81
+
82
+ ```redscript
83
+ fn dft_power(re: int[], im: int[], k: int): int
84
+ ```
85
+
86
+ **参数**
87
+
88
+ | 参数 | 说明 |
89
+ |------|------|
90
+ | `re` | dft_real 输出的实部数组 |
91
+ | `im` | dft_real 输出的虚部数组 |
92
+ | `k` | 频段索引 |
93
+
94
+ **返回:** 第 k 频段功率,×10000
95
+
96
+ **示例**
97
+
98
+ ```redscript
99
+ let power: int = dft_power(re, im, 2)
100
+ ```
101
+
102
+ ---
103
+
104
+ ## `dft_freq_bin` <Badge type="info" text="v2.0.0" />
105
+
106
+ 返回 DFT 第 k 个频段对应的频率(Hz)
107
+
108
+ ```redscript
109
+ fn dft_freq_bin(sample_rate_hz: int, n: int, k: int): int
110
+ ```
111
+
112
+ **参数**
113
+
114
+ | 参数 | 说明 |
115
+ |------|------|
116
+ | `sample_rate_hz` | 采样率(Hz,如 20 = Minecraft tick 速率) |
117
+ | `n` | 变换大小 |
118
+ | `k` | 频段索引 |
119
+
120
+ **返回:** 第 k 频段对应的频率(Hz)
121
+
122
+ **示例**
123
+
124
+ ```redscript
125
+ let freq: int = dft_freq_bin(20, 8, 3)
126
+ ```
127
+
128
+ ---