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
+ > 本文档由 `src/stdlib/color.mcrs` 自动生成,请勿手动编辑。
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
+ 将 RGB 分量打包为单个整数(0xRRGGBB 格式)
26
+
27
+ ```redscript
28
+ fn rgb_pack(r: int, g: int, b: int): int
29
+ ```
30
+
31
+ **参数**
32
+
33
+ | 参数 | 说明 |
34
+ |------|------|
35
+ | `r` | 红色通道,范围 [0, 255] |
36
+ | `g` | 绿色通道,范围 [0, 255] |
37
+ | `b` | 蓝色通道,范围 [0, 255] |
38
+
39
+ **返回:** r*65536 + g*256 + b
40
+
41
+ **示例**
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
+ 从打包 RGB 整数中提取红色分量
52
+
53
+ ```redscript
54
+ fn rgb_r(packed: int): int
55
+ ```
56
+
57
+ **参数**
58
+
59
+ | 参数 | 说明 |
60
+ |------|------|
61
+ | `packed` | 打包颜色整数(0xRRGGBB) |
62
+
63
+ **返回:** 红色通道值,范围 [0, 255]
64
+
65
+ **示例**
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
+ 从打包 RGB 整数中提取绿色分量
76
+
77
+ ```redscript
78
+ fn rgb_g(packed: int): int
79
+ ```
80
+
81
+ **参数**
82
+
83
+ | 参数 | 说明 |
84
+ |------|------|
85
+ | `packed` | 打包颜色整数(0xRRGGBB) |
86
+
87
+ **返回:** 绿色通道值,范围 [0, 255]
88
+
89
+ **示例**
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
+ 从打包 RGB 整数中提取蓝色分量
100
+
101
+ ```redscript
102
+ fn rgb_b(packed: int): int
103
+ ```
104
+
105
+ **参数**
106
+
107
+ | 参数 | 说明 |
108
+ |------|------|
109
+ | `packed` | 打包颜色整数(0xRRGGBB) |
110
+
111
+ **返回:** 蓝色通道值,范围 [0, 255]
112
+
113
+ **示例**
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
+ 两个打包 RGB 颜色之间的线性插值
124
+
125
+ ```redscript
126
+ fn rgb_lerp(a: int, b: int, t: int): int
127
+ ```
128
+
129
+ **参数**
130
+
131
+ | 参数 | 说明 |
132
+ |------|------|
133
+ | `a` | 起始颜色(打包 0xRRGGBB) |
134
+ | `b` | 结束颜色(打包 0xRRGGBB) |
135
+ | `t` | 混合因子,范围 [0, 1000](0=a,1000=b) |
136
+
137
+ **返回:** a 和 b 之间插值得到的打包 RGB 颜色
138
+
139
+ **示例**
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
+ 从 RGB 分量计算 HSL 亮度(×10000 精度)
150
+
151
+ ```redscript
152
+ fn rgb_to_l(r: int, g: int, b: int): int
153
+ ```
154
+
155
+ **参数**
156
+
157
+ | 参数 | 说明 |
158
+ |------|------|
159
+ | `r` | 红色 ×10000,范围 [0, 2550000] |
160
+ | `g` | 绿色 ×10000 |
161
+ | `b` | 蓝色 ×10000 |
162
+
163
+ **返回:** 亮度,范围 [0, 10000](0=黑,10000=白)
164
+
165
+ **示例**
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
+ 从 RGB 分量计算 HSL 饱和度(×10000 精度)
176
+
177
+ ```redscript
178
+ fn rgb_to_s(r: int, g: int, b: int): int
179
+ ```
180
+
181
+ **参数**
182
+
183
+ | 参数 | 说明 |
184
+ |------|------|
185
+ | `r` | 红色 ×10000 |
186
+ | `g` | 绿色 ×10000 |
187
+ | `b` | 蓝色 ×10000 |
188
+
189
+ **返回:** 饱和度,范围 [0, 10000](0=灰,10000=全饱和)
190
+
191
+ **示例**
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
+ 从 RGB 分量计算 HSL 色相(×10000 精度)
202
+
203
+ ```redscript
204
+ fn rgb_to_h(r: int, g: int, b: int): int
205
+ ```
206
+
207
+ **参数**
208
+
209
+ | 参数 | 说明 |
210
+ |------|------|
211
+ | `r` | 红色 ×10000 |
212
+ | `g` | 绿色 ×10000 |
213
+ | `b` | 蓝色 ×10000 |
214
+
215
+ **返回:** 色相,范围 [0, 3600000](度×10000;0=红,1200000=绿,2400000=蓝)
216
+
217
+ **示例**
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
+ **参数**
234
+
235
+ | 参数 | 说明 |
236
+ |------|------|
237
+ | `h` | Hue ×10000, range [0, 3600000] |
238
+ | `s` | Saturation ×10000, range [0, 10000] |
239
+ | `l` | Lightness ×10000, range [0, 10000] |
240
+
241
+ **返回:** Red channel ×10000, range [0, 2550000]; divide by 10000 for 0-255
242
+
243
+ **示例**
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
+ **参数**
260
+
261
+ | 参数 | 说明 |
262
+ |------|------|
263
+ | `h` | Hue ×10000, range [0, 3600000] |
264
+ | `s` | Saturation ×10000, range [0, 10000] |
265
+ | `l` | Lightness ×10000, range [0, 10000] |
266
+
267
+ **返回:** Green channel ×10000, range [0, 2550000]
268
+
269
+ **示例**
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
+ **参数**
286
+
287
+ | 参数 | 说明 |
288
+ |------|------|
289
+ | `h` | Hue ×10000, range [0, 3600000] |
290
+ | `s` | Saturation ×10000, range [0, 10000] |
291
+ | `l` | Lightness ×10000, range [0, 10000] |
292
+
293
+ **返回:** Blue channel ×10000, range [0, 2550000]
294
+
295
+ **示例**
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
+ 将 HSL(×10000 精度)转换为打包 RGB 整数(0xRRGGBB)
306
+
307
+ ```redscript
308
+ fn hsl_to_packed(h: int, s: int, l: int): int
309
+ ```
310
+
311
+ **参数**
312
+
313
+ | 参数 | 说明 |
314
+ |------|------|
315
+ | `h` | 色相 ×10000,范围 [0, 3600000] |
316
+ | `s` | 饱和度 ×10000,范围 [0, 10000] |
317
+ | `l` | 亮度 ×10000,范围 [0, 10000] |
318
+
319
+ **返回:** 打包 RGB 整数,每通道 0-255
320
+
321
+ **示例**
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
+ **参数**
338
+
339
+ | 参数 | 说明 |
340
+ |------|------|
341
+ | `r` | Red channel, range [0, 255] |
342
+ | `g` | Green channel, range [0, 255] |
343
+ | `b` | Blue channel, range [0, 255] |
344
+
345
+ **返回:** r*65536 + g*256 + b (same as rgb_pack)
346
+
347
+ **示例**
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
+ > 本文档由 `src/stdlib/combat.mcrs` 自动生成,请勿手动编辑。
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
+ 计算武器基础伤害加上加成的总伤害
16
+
17
+ ```redscript
18
+ fn weapon_damage(base: int, bonus: int): int
19
+ ```
20
+
21
+ **参数**
22
+
23
+ | 参数 | 说明 |
24
+ |------|------|
25
+ | `base` | 武器基础伤害值 |
26
+ | `bonus` | 额外伤害修饰(如附魔或增益) |
27
+
28
+ **返回:** base + bonus
29
+
30
+ **示例**
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
+ 对生命值应用伤害,结果最低为 0
41
+
42
+ ```redscript
43
+ fn take_damage(health: int, amount: int): int
44
+ ```
45
+
46
+ **参数**
47
+
48
+ | 参数 | 说明 |
49
+ |------|------|
50
+ | `health` | 当前生命值(如来自计分板) |
51
+ | `amount` | 要扣减的伤害量 |
52
+
53
+ **返回:** health - amount,最低为 0;调用后用 scoreboard_set 写回
54
+
55
+ **示例**
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
+ 判断实体是否已死亡(生命值 <= 0)
67
+
68
+ ```redscript
69
+ fn is_dead(health: int): int
70
+ ```
71
+
72
+ **参数**
73
+
74
+ | 参数 | 说明 |
75
+ |------|------|
76
+ | `health` | 要判断的当前生命值 |
77
+
78
+ **返回:** 若 health <= 0 则返回 1(已死亡),否则返回 0(存活)
79
+
80
+ **示例**
81
+
82
+ ```redscript
83
+ if (is_dead(current_hp) == 1) {
84
+ // trigger death logic
85
+ }
86
+ ```
87
+
88
+ ---
@@ -0,0 +1,84 @@
1
+ # Cooldown
2
+
3
+ > 本文档由 `src/stdlib/cooldown.mcrs` 自动生成,请勿手动编辑。
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
+ 启动(或重启)指定槽位的冷却计时,持续 ticks 游戏刻。
16
+
17
+ ```redscript
18
+ fn cooldown_start(name: string, ticks: int)
19
+ ```
20
+
21
+ **参数**
22
+
23
+ | 参数 | 说明 |
24
+ |------|------|
25
+ | `name` | 冷却槽位标识符(保留,供未来多槽位使用) |
26
+ | `ticks` | 冷却持续时间(游戏刻,20 刻 = 1 秒) |
27
+
28
+ **返回:** 无返回值
29
+
30
+ **示例**
31
+
32
+ ```redscript
33
+ cooldown_start("sword", 40); // 2-second cooldown
34
+ ```
35
+
36
+ ---
37
+
38
+ ## `cooldown_ready` <Badge type="info" text="v1.2.0" />
39
+
40
+ 检查冷却是否已到期(可再次触发)。
41
+
42
+ ```redscript
43
+ fn cooldown_ready(name: string) -> int
44
+ ```
45
+
46
+ **参数**
47
+
48
+ | 参数 | 说明 |
49
+ |------|------|
50
+ | `name` | 冷却槽位标识符 |
51
+
52
+ **返回:** 1 表示已就绪(非活跃或剩余刻数 ≤ 0),0 表示仍在冷却
53
+
54
+ **示例**
55
+
56
+ ```redscript
57
+ if (cooldown_ready("sword") == 1) { attack(); cooldown_start("sword", 40); }
58
+ ```
59
+
60
+ ---
61
+
62
+ ## `cooldown_tick` <Badge type="info" text="v1.2.0" />
63
+
64
+ 冷却计时推进一刻,须在 @tick 函数中每刻调用。剩余刻数归零时自动标记为非活跃。
65
+
66
+ ```redscript
67
+ fn cooldown_tick(name: string)
68
+ ```
69
+
70
+ **参数**
71
+
72
+ | 参数 | 说明 |
73
+ |------|------|
74
+ | `name` | 冷却槽位标识符 |
75
+
76
+ **返回:** 无返回值
77
+
78
+ **示例**
79
+
80
+ ```redscript
81
+ @tick fn game_tick() { cooldown_tick("sword"); }
82
+ ```
83
+
84
+ ---
@@ -0,0 +1,152 @@
1
+ # Dialog
2
+
3
+ > 本文档由 `src/stdlib/dialog.mcrs` 自动生成,请勿手动编辑。
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
+ 向玩家或选择器发送一条纯白色聊天消息
19
+
20
+ ```redscript
21
+ fn dialog_say(p: selector, msg: string)
22
+ ```
23
+
24
+ **参数**
25
+
26
+ | 参数 | 说明 |
27
+ |------|------|
28
+ | `p` | 接收者选择器 |
29
+ | `msg` | 纯文本消息内容 |
30
+
31
+ **示例**
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
+ 向所有玩家广播一条纯白色聊天消息
42
+
43
+ ```redscript
44
+ fn dialog_broadcast(msg: string)
45
+ ```
46
+
47
+ **参数**
48
+
49
+ | 参数 | 说明 |
50
+ |------|------|
51
+ | `msg` | 纯文本消息内容 |
52
+
53
+ **示例**
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
+ 向玩家或选择器发送带颜色的聊天消息,未知颜色值会回退为白色
64
+
65
+ ```redscript
66
+ fn dialog_say_color(p: selector, msg: string, color: int)
67
+ ```
68
+
69
+ **参数**
70
+
71
+ | 参数 | 说明 |
72
+ |------|------|
73
+ | `p` | 接收者选择器 |
74
+ | `msg` | 纯文本消息内容 |
75
+ | `color` | 颜色编号(0=white, 1=red, 2=green, 3=gold, 4=aqua) |
76
+
77
+ **示例**
78
+
79
+ ```redscript
80
+ dialog_say_color(@s, "You died!", 1)
81
+ ```
82
+
83
+ ---
84
+
85
+ ## `dialog_title` <Badge type="info" text="v1.0.0" />
86
+
87
+ 在玩家屏幕上显示标题和副标题
88
+
89
+ ```redscript
90
+ fn dialog_title(p: selector, title: string, subtitle: string)
91
+ ```
92
+
93
+ **参数**
94
+
95
+ | 参数 | 说明 |
96
+ |------|------|
97
+ | `p` | 接收者选择器 |
98
+ | `title` | 主标题文本 |
99
+ | `subtitle` | 副标题文本 |
100
+
101
+ **示例**
102
+
103
+ ```redscript
104
+ dialog_title(@s, "Stage 2", "Defeat the boss")
105
+ ```
106
+
107
+ ---
108
+
109
+ ## `dialog_title_clear` <Badge type="info" text="v1.0.0" />
110
+
111
+ 清除目标当前显示的标题
112
+
113
+ ```redscript
114
+ fn dialog_title_clear(p: selector)
115
+ ```
116
+
117
+ **参数**
118
+
119
+ | 参数 | 说明 |
120
+ |------|------|
121
+ | `p` | 接收者选择器 |
122
+
123
+ **示例**
124
+
125
+ ```redscript
126
+ dialog_title_clear(@s)
127
+ ```
128
+
129
+ ---
130
+
131
+ ## `dialog_actionbar` <Badge type="info" text="v1.0.0" />
132
+
133
+ 在玩家动作栏显示一条短消息
134
+
135
+ ```redscript
136
+ fn dialog_actionbar(p: selector, msg: string)
137
+ ```
138
+
139
+ **参数**
140
+
141
+ | 参数 | 说明 |
142
+ |------|------|
143
+ | `p` | 接收者选择器 |
144
+ | `msg` | 纯文本消息内容 |
145
+
146
+ **示例**
147
+
148
+ ```redscript
149
+ dialog_actionbar(@s, "Mana: 80/100")
150
+ ```
151
+
152
+ ---