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,104 @@
1
+ # Sort
2
+
3
+ > 本文档由 `src/stdlib/sort.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [insertion_sort](#insertion-sort)
8
+ - [insertion_sort_desc](#insertion-sort-desc)
9
+ - [sort_merge](#sort-merge)
10
+ - [merge_sort_noop](#merge-sort-noop)
11
+
12
+ ---
13
+
14
+ ## `insertion_sort` <Badge type="info" text="v1.0.0" />
15
+
16
+ 就地升序排序整数数组(插入排序,O(n²),适合 n≤64)
17
+
18
+ ```redscript
19
+ fn insertion_sort(arr: int[], len: int)
20
+ ```
21
+
22
+ **参数**
23
+
24
+ | 参数 | 说明 |
25
+ |------|------|
26
+ | `arr` | 要排序的整数数组(就地修改) |
27
+ | `len` | 要排序的元素数量(arr[0..len-1]) |
28
+
29
+ **返回:** void — 调用后 arr 升序排列
30
+
31
+ **示例**
32
+
33
+ ```redscript
34
+ let data: int[] = [30, 10, 50, 20]
35
+ insertion_sort(data, 4)
36
+ // data is now [10, 20, 30, 50]
37
+ ```
38
+
39
+ ---
40
+
41
+ ## `insertion_sort_desc` <Badge type="info" text="v1.0.0" />
42
+
43
+ 就地降序排序整数数组(插入排序)
44
+
45
+ ```redscript
46
+ fn insertion_sort_desc(arr: int[], len: int)
47
+ ```
48
+
49
+ **参数**
50
+
51
+ | 参数 | 说明 |
52
+ |------|------|
53
+ | `arr` | 要排序的整数数组(就地修改) |
54
+ | `len` | 要排序的元素数量 |
55
+
56
+ **返回:** void — 调用后 arr 降序排列
57
+
58
+ **示例**
59
+
60
+ ```redscript
61
+ let scores: int[] = [30, 10, 50, 20]
62
+ insertion_sort_desc(scores, 4)
63
+ // scores is now [50, 30, 20, 10]
64
+ ```
65
+
66
+ ---
67
+
68
+ ## `sort_merge` <Badge type="info" text="v1.0.0" />
69
+
70
+ 将两个已排序数组合并为一个新的排序数组
71
+
72
+ ```redscript
73
+ fn sort_merge(a: int[], la: int, b: int[], lb: int): int[]
74
+ ```
75
+
76
+ **参数**
77
+
78
+ | 参数 | 说明 |
79
+ |------|------|
80
+ | `a` | 第一个已排序数组 |
81
+ | `la` | a 的元素数量 |
82
+ | `b` | 第二个已排序数组 |
83
+ | `lb` | b 的元素数量 |
84
+
85
+ **返回:** 包含 a 和 b 所有元素的新排序 int[],长度 la+lb
86
+
87
+ **示例**
88
+
89
+ ```redscript
90
+ let merged: int[] = sort_merge([1, 3, 5], 3, [2, 4, 6], 3)
91
+ // result: [1, 2, 3, 4, 5, 6]
92
+ ```
93
+
94
+ ---
95
+
96
+ ## `merge_sort_noop` <Badge type="info" text="v1.0.0" />
97
+
98
+ Default no-op callback for merge_sort_coro. Replace with your own handler to react when sorting completes.
99
+
100
+ ```redscript
101
+ fn merge_sort_noop()
102
+ ```
103
+
104
+ ---
@@ -0,0 +1,142 @@
1
+ # Spawn
2
+
3
+ > 本文档由 `src/stdlib/spawn.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [teleport_to](#teleport-to)
8
+ - [teleport_to_entity](#teleport-to-entity)
9
+ - [spread_players](#spread-players)
10
+ - [gather_all](#gather-all)
11
+ - [launch_up](#launch-up)
12
+ - [goto_lobby](#goto-lobby)
13
+ - [goto_arena](#goto-arena)
14
+
15
+ ---
16
+
17
+ ## `teleport_to`
18
+
19
+ 将目标选择器传送到固定坐标
20
+
21
+ ```redscript
22
+ fn teleport_to(target: selector, x: int, y: int, z: int)
23
+ ```
24
+
25
+ **参数**
26
+
27
+ | 参数 | 说明 |
28
+ |------|------|
29
+ | `target` | 要传送的目标选择器 |
30
+ | `x` | 目标 X 坐标 |
31
+ | `y` | 目标 Y 坐标 |
32
+ | `z` | 目标 Z 坐标 |
33
+
34
+ **示例**
35
+
36
+ ```redscript
37
+ teleport_to(@p, 0, 64, 0)
38
+ ```
39
+
40
+ ---
41
+
42
+ ## `teleport_to_entity`
43
+
44
+ 将目标选择器传送到另一个实体当前位置
45
+
46
+ ```redscript
47
+ fn teleport_to_entity(target: selector, dest: selector)
48
+ ```
49
+
50
+ **参数**
51
+
52
+ | 参数 | 说明 |
53
+ |------|------|
54
+ | `target` | 要传送的目标选择器 |
55
+ | `dest` | 作为目的地的实体选择器 |
56
+
57
+ ---
58
+
59
+ ## `spread_players`
60
+
61
+ 预留的随机分散玩家辅助函数;当前仅输出提示消息,尚未真正执行 spreadplayers
62
+
63
+ ```redscript
64
+ fn spread_players(x: int, z: int, radius: int)
65
+ ```
66
+
67
+ **参数**
68
+
69
+ | 参数 | 说明 |
70
+ |------|------|
71
+ | `x` | 中心点 X 坐标 |
72
+ | `z` | 中心点 Z 坐标 |
73
+ | `radius` | 最大分散半径(方块) |
74
+
75
+ ---
76
+
77
+ ## `gather_all`
78
+
79
+ 将所有玩家传送到同一位置
80
+
81
+ ```redscript
82
+ fn gather_all(x: int, y: int, z: int)
83
+ ```
84
+
85
+ **参数**
86
+
87
+ | 参数 | 说明 |
88
+ |------|------|
89
+ | `x` | 目标 X 坐标 |
90
+ | `y` | 目标 Y 坐标 |
91
+ | `z` | 目标 Z 坐标 |
92
+
93
+ ---
94
+
95
+ ## `launch_up`
96
+
97
+ 按相对坐标将目标向上抬升
98
+
99
+ ```redscript
100
+ fn launch_up(target: selector, height: int)
101
+ ```
102
+
103
+ **参数**
104
+
105
+ | 参数 | 说明 |
106
+ |------|------|
107
+ | `target` | 要传送的目标选择器 |
108
+ | `height` | 相对 Y 偏移(方块) |
109
+
110
+ ---
111
+
112
+ ## `goto_lobby`
113
+
114
+ 将目标传送到内置大厅坐标,并显示欢迎标题
115
+
116
+ ```redscript
117
+ fn goto_lobby(target: selector)
118
+ ```
119
+
120
+ **参数**
121
+
122
+ | 参数 | 说明 |
123
+ |------|------|
124
+ | `target` | 要传送到大厅的目标选择器 |
125
+
126
+ ---
127
+
128
+ ## `goto_arena`
129
+
130
+ 将目标传送到内置竞技场坐标,并显示开战标题
131
+
132
+ ```redscript
133
+ fn goto_arena(target: selector)
134
+ ```
135
+
136
+ **参数**
137
+
138
+ | 参数 | 说明 |
139
+ |------|------|
140
+ | `target` | 要传送到竞技场的目标选择器 |
141
+
142
+ ---
@@ -0,0 +1,134 @@
1
+ # State
2
+
3
+ > 本文档由 `src/stdlib/state.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [get_state](#get-state)
8
+ - [set_state](#set-state)
9
+ - [is_state](#is-state)
10
+ - [init_state](#init-state)
11
+ - [transition](#transition)
12
+
13
+ ---
14
+
15
+ ## `get_state` <Badge type="info" text="v1.0.0" />
16
+
17
+ 读取实体的当前状态值
18
+
19
+ ```redscript
20
+ fn get_state(entity: selector) -> int
21
+ ```
22
+
23
+ **参数**
24
+
25
+ | 参数 | 说明 |
26
+ |------|------|
27
+ | `entity` | 目标实体选择器 |
28
+
29
+ **返回:** rs.state 中存储的状态值;未初始化时返回 -1
30
+
31
+ **示例**
32
+
33
+ ```redscript
34
+ let s: int = get_state(@s)
35
+ ```
36
+
37
+ ---
38
+
39
+ ## `set_state` <Badge type="info" text="v1.0.0" />
40
+
41
+ 将状态值写入实体
42
+
43
+ ```redscript
44
+ fn set_state(entity: selector, state: int)
45
+ ```
46
+
47
+ **参数**
48
+
49
+ | 参数 | 说明 |
50
+ |------|------|
51
+ | `entity` | 目标实体选择器 |
52
+ | `state` | 要写入的整数状态常量 |
53
+
54
+ **示例**
55
+
56
+ ```redscript
57
+ set_state(@s, 1)
58
+ ```
59
+
60
+ ---
61
+
62
+ ## `is_state` <Badge type="info" text="v1.0.0" />
63
+
64
+ 检查实体当前是否处于指定状态
65
+
66
+ ```redscript
67
+ fn is_state(entity: selector, state: int) -> int
68
+ ```
69
+
70
+ **参数**
71
+
72
+ | 参数 | 说明 |
73
+ |------|------|
74
+ | `entity` | 目标实体选择器 |
75
+ | `state` | 要对比的整数状态常量 |
76
+
77
+ **返回:** 实体处于该状态返回 1,否则返回 0
78
+
79
+ **示例**
80
+
81
+ ```redscript
82
+ if (is_state(@s, STATE_COMBAT) == 1) { /* per-tick combat logic */ }
83
+ ```
84
+
85
+ ---
86
+
87
+ ## `init_state` <Badge type="info" text="v1.0.0" />
88
+
89
+ 仅在实体未初始化时(得分为 -1)写入初始状态,避免覆盖进行中的状态
90
+
91
+ ```redscript
92
+ fn init_state(entity: selector, initial: int)
93
+ ```
94
+
95
+ **参数**
96
+
97
+ | 参数 | 说明 |
98
+ |------|------|
99
+ | `entity` | 目标实体选择器 |
100
+ | `initial` | 未初始化时写入的状态常量 |
101
+
102
+ **示例**
103
+
104
+ ```redscript
105
+ init_state(@s, STATE_IDLE)
106
+ ```
107
+
108
+ ---
109
+
110
+ ## `transition` <Badge type="info" text="v1.0.0" />
111
+
112
+ 仅当实体处于 from 状态时执行受保护的状态转换
113
+
114
+ ```redscript
115
+ fn transition(entity: selector, from: int, to: int) -> int
116
+ ```
117
+
118
+ **参数**
119
+
120
+ | 参数 | 说明 |
121
+ |------|------|
122
+ | `entity` | 目标实体选择器 |
123
+ | `from` | 所需的当前状态 |
124
+ | `to` | 目标状态 |
125
+
126
+ **返回:** 转换成功返回 1;实体不在 from 状态返回 0
127
+
128
+ **示例**
129
+
130
+ ```redscript
131
+ let ok: int = transition(@s, STATE_IDLE, STATE_COMBAT)
132
+ ```
133
+
134
+ ---
@@ -0,0 +1,107 @@
1
+ # Strings
2
+
3
+ > 本文档由 `src/stdlib/strings.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [str_len](#str-len)
8
+ - [str_concat](#str-concat)
9
+ - [str_contains](#str-contains)
10
+ - [str_slice](#str-slice)
11
+
12
+ ---
13
+
14
+ ## `str_len` <Badge type="info" text="v1.0.0" />
15
+
16
+ 返回 rs:strings.{s} 中字符串的长度(MC 限制:普通字符串总返回 1)
17
+
18
+ ```redscript
19
+ fn str_len(s: string) -> int
20
+ ```
21
+
22
+ **参数**
23
+
24
+ | 参数 | 说明 |
25
+ |------|------|
26
+ | `s` | rs:strings 中的 NBT 字段名(如 "A") |
27
+
28
+ **返回:** 普通字符串返回 1;字符列表返回元素数量
29
+
30
+ **示例**
31
+
32
+ ```redscript
33
+ str_len("A") // result: 1 (plain string) or char count (char-list)
34
+ ```
35
+
36
+ ---
37
+
38
+ ## `str_concat` <Badge type="info" text="v1.0.0" />
39
+
40
+ 将 rs:strings 中的两个字符串拼接,结果以 NBT 列表形式写入 rs:strings.Result
41
+
42
+ ```redscript
43
+ fn str_concat(a: string, b: string)
44
+ ```
45
+
46
+ **参数**
47
+
48
+ | 参数 | 说明 |
49
+ |------|------|
50
+ | `a` | 第一个字符串的 NBT 字段名(如 "A") |
51
+ | `b` | 第二个字符串的 NBT 字段名(如 "B") |
52
+
53
+ **返回:** rs:strings.Result 被设为 [valueA, valueB] 的 NBT 列表
54
+
55
+ **示例**
56
+
57
+ ```redscript
58
+ str_concat("A", "B") // rs:strings.Result = ["hello", "world"]
59
+ ```
60
+
61
+ ---
62
+
63
+ ## `str_contains` <Badge type="info" text="v1.0.0" />
64
+
65
+ 检测 rs:strings.{s} 是否包含 rs:strings.{sub}(因 MC 限制始终返回 0)
66
+
67
+ ```redscript
68
+ fn str_contains(s: string, sub: string) -> int
69
+ ```
70
+
71
+ **参数**
72
+
73
+ | 参数 | 说明 |
74
+ |------|------|
75
+ | `s` | 被搜索字符串的 NBT 字段名 |
76
+ | `sub` | 子字符串的 NBT 字段名 |
77
+
78
+ **返回:** 0(始终,MC 原生不支持子串搜索)
79
+
80
+ ---
81
+
82
+ ## `str_slice` <Badge type="info" text="v2.2.0" />
83
+
84
+ 从 rs:strings.{s} 中提取子串,写入 rs:strings.Result(需要 MC 1.20.2+)
85
+
86
+ ```redscript
87
+ fn str_slice(s: string, start: int, end: int)
88
+ ```
89
+
90
+ **参数**
91
+
92
+ | 参数 | 说明 |
93
+ |------|------|
94
+ | `s` | 源字符串的 NBT 字段名(如 "A") |
95
+ | `start` | 起始索引(含,0-based) |
96
+ | `end` | 结束索引(不含,负数从末尾计) |
97
+
98
+ **返回:** rs:strings.Result 包含提取的子串
99
+
100
+ **示例**
101
+
102
+ ```redscript
103
+ str_slice("A", 0, 5) // first 5 chars of rs:strings.A
104
+ str_slice("A", 2, -1) // drop first 2 and last 1 chars
105
+ ```
106
+
107
+ ---