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,150 @@
1
+ # Teams
2
+
3
+ > 本文档由 `src/stdlib/teams.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [create_team](#create-team)
8
+ - [create_red_team](#create-red-team)
9
+ - [create_blue_team](#create-blue-team)
10
+ - [create_green_team](#create-green-team)
11
+ - [create_yellow_team](#create-yellow-team)
12
+ - [add_to_team](#add-to-team)
13
+ - [remove_from_teams](#remove-from-teams)
14
+ - [setup_two_teams](#setup-two-teams)
15
+ - [setup_four_teams](#setup-four-teams)
16
+ - [cleanup_teams](#cleanup-teams)
17
+
18
+ ---
19
+
20
+ ## `create_team`
21
+
22
+ 创建一个队伍并设置显示颜色
23
+
24
+ ```redscript
25
+ fn create_team(name: string, color: string)
26
+ ```
27
+
28
+ **参数**
29
+
30
+ | 参数 | 说明 |
31
+ |------|------|
32
+ | `name` | 计分板队伍名称 |
33
+ | `color` | Minecraft 队伍颜色字符串,如 `red` 或 `blue` |
34
+
35
+ **示例**
36
+
37
+ ```redscript
38
+ create_team("spectator", "gray")
39
+ ```
40
+
41
+ ---
42
+
43
+ ## `create_red_team`
44
+
45
+ 创建默认红队,并关闭队友伤害
46
+
47
+ ```redscript
48
+ fn create_red_team()
49
+ ```
50
+
51
+ **示例**
52
+
53
+ ```redscript
54
+ create_red_team()
55
+ ```
56
+
57
+ ---
58
+
59
+ ## `create_blue_team`
60
+
61
+ 创建默认蓝队,并关闭队友伤害
62
+
63
+ ```redscript
64
+ fn create_blue_team()
65
+ ```
66
+
67
+ ---
68
+
69
+ ## `create_green_team`
70
+
71
+ 创建默认绿队,并关闭队友伤害
72
+
73
+ ```redscript
74
+ fn create_green_team()
75
+ ```
76
+
77
+ ---
78
+
79
+ ## `create_yellow_team`
80
+
81
+ 创建默认黄队,并关闭队友伤害
82
+
83
+ ```redscript
84
+ fn create_yellow_team()
85
+ ```
86
+
87
+ ---
88
+
89
+ ## `add_to_team`
90
+
91
+ 将目标选择器加入指定队伍
92
+
93
+ ```redscript
94
+ fn add_to_team(target: selector, team_name: string)
95
+ ```
96
+
97
+ **参数**
98
+
99
+ | 参数 | 说明 |
100
+ |------|------|
101
+ | `target` | 要加入队伍的目标选择器 |
102
+ | `team_name` | 已存在的队伍名称 |
103
+
104
+ ---
105
+
106
+ ## `remove_from_teams`
107
+
108
+ 将目标选择器从所有队伍中移除
109
+
110
+ ```redscript
111
+ fn remove_from_teams(target: selector)
112
+ ```
113
+
114
+ **参数**
115
+
116
+ | 参数 | 说明 |
117
+ |------|------|
118
+ | `target` | 要移除的目标选择器 |
119
+
120
+ ---
121
+
122
+ ## `setup_two_teams`
123
+
124
+ 创建默认的双队配置(红队和蓝队)
125
+
126
+ ```redscript
127
+ fn setup_two_teams()
128
+ ```
129
+
130
+ ---
131
+
132
+ ## `setup_four_teams`
133
+
134
+ 创建默认的四队配置(红蓝绿黄)
135
+
136
+ ```redscript
137
+ fn setup_four_teams()
138
+ ```
139
+
140
+ ---
141
+
142
+ ## `cleanup_teams`
143
+
144
+ 删除本模块默认创建的四个标准队伍
145
+
146
+ ```redscript
147
+ fn cleanup_teams()
148
+ ```
149
+
150
+ ---
@@ -0,0 +1,254 @@
1
+ # Timer
2
+
3
+ > 本文档由 `src/stdlib/timer.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [Timer.new](#timer-new)
8
+ - [Timer.start](#timer-start)
9
+ - [Timer.pause](#timer-pause)
10
+ - [Timer.reset](#timer-reset)
11
+ - [Timer.done](#timer-done)
12
+ - [Timer.elapsed](#timer-elapsed)
13
+ - [Timer.remaining](#timer-remaining)
14
+ - [Timer.tick](#timer-tick)
15
+ - [tick_to_seconds](#tick-to-seconds)
16
+ - [tick_to_ms](#tick-to-ms)
17
+ - [seconds_to_ticks](#seconds-to-ticks)
18
+ - [format_time_s](#format-time-s)
19
+ - [format_time_m](#format-time-m)
20
+ - [format_time_h](#format-time-h)
21
+
22
+ ---
23
+
24
+ ## `Timer.new`
25
+
26
+ 创建一个指定持续时长的新计时器
27
+
28
+ ```redscript
29
+ fn new(duration: int) -> Timer
30
+ ```
31
+
32
+ **返回:** 新的 Timer 实例
33
+
34
+ ---
35
+
36
+ ## `Timer.start`
37
+
38
+ 启动或继续计时器
39
+
40
+ ```redscript
41
+ fn start(self)
42
+ ```
43
+
44
+ ---
45
+
46
+ ## `Timer.pause`
47
+
48
+ 暂停计时器
49
+
50
+ ```redscript
51
+ fn pause(self)
52
+ ```
53
+
54
+ ---
55
+
56
+ ## `Timer.reset`
57
+
58
+ 将已流逝的刻数重置为零
59
+
60
+ ```redscript
61
+ fn reset(self)
62
+ ```
63
+
64
+ ---
65
+
66
+ ## `Timer.done`
67
+
68
+ 检查计时器是否已达到持续时间
69
+
70
+ ```redscript
71
+ fn done(self) -> bool
72
+ ```
73
+
74
+ **返回:** 若已完成返回 true,否则返回 false
75
+
76
+ ---
77
+
78
+ ## `Timer.elapsed`
79
+
80
+ 获取已流逝的游戏刻数
81
+
82
+ ```redscript
83
+ fn elapsed(self) -> int
84
+ ```
85
+
86
+ **返回:** 已流逝刻数
87
+
88
+ ---
89
+
90
+ ## `Timer.remaining`
91
+
92
+ 获取剩余刻数(最小为 0)
93
+
94
+ ```redscript
95
+ fn remaining(self) -> int
96
+ ```
97
+
98
+ **返回:** 剩余刻数,不足时为 0
99
+
100
+ ---
101
+
102
+ ## `Timer.tick`
103
+
104
+ 在计时器激活时手动推进一刻
105
+
106
+ ```redscript
107
+ fn tick(self)
108
+ ```
109
+
110
+ ---
111
+
112
+ ## `tick_to_seconds` <Badge type="info" text="v1.0.0" />
113
+
114
+ 将 Minecraft 游戏刻转换为整秒(20 刻 = 1 秒)
115
+
116
+ ```redscript
117
+ fn tick_to_seconds(ticks: int): int
118
+ ```
119
+
120
+ **参数**
121
+
122
+ | 参数 | 说明 |
123
+ |------|------|
124
+ | `ticks` | 游戏刻数 |
125
+
126
+ **返回:** ticks / 20
127
+
128
+ **示例**
129
+
130
+ ```redscript
131
+ let s = tick_to_seconds(100) // result: 5
132
+ ```
133
+
134
+ ---
135
+
136
+ ## `tick_to_ms` <Badge type="info" text="v1.0.0" />
137
+
138
+ 将游戏刻转换为毫秒(1 刻 = 50 ms)
139
+
140
+ ```redscript
141
+ fn tick_to_ms(ticks: int): int
142
+ ```
143
+
144
+ **参数**
145
+
146
+ | 参数 | 说明 |
147
+ |------|------|
148
+ | `ticks` | 游戏刻数 |
149
+
150
+ **返回:** ticks * 50
151
+
152
+ **示例**
153
+
154
+ ```redscript
155
+ let ms = tick_to_ms(20) // result: 1000
156
+ ```
157
+
158
+ ---
159
+
160
+ ## `seconds_to_ticks` <Badge type="info" text="v1.0.0" />
161
+
162
+ 将秒转换为 Minecraft 游戏刻(1 秒 = 20 刻)
163
+
164
+ ```redscript
165
+ fn seconds_to_ticks(s: int): int
166
+ ```
167
+
168
+ **参数**
169
+
170
+ | 参数 | 说明 |
171
+ |------|------|
172
+ | `s` | 秒数 |
173
+
174
+ **返回:** s * 20
175
+
176
+ **示例**
177
+
178
+ ```redscript
179
+ let t = seconds_to_ticks(5) // result: 100
180
+ ```
181
+
182
+ ---
183
+
184
+ ## `format_time_s` <Badge type="info" text="v1.0.0" />
185
+
186
+ 从刻数中提取秒分量(0-59)
187
+
188
+ ```redscript
189
+ fn format_time_s(ticks: int): int
190
+ ```
191
+
192
+ **参数**
193
+
194
+ | 参数 | 说明 |
195
+ |------|------|
196
+ | `ticks` | 游戏刻数 |
197
+
198
+ **返回:** (ticks / 20) % 60
199
+
200
+ **示例**
201
+
202
+ ```redscript
203
+ let s = format_time_s(1500) // result: 15 (75 seconds mod 60)
204
+ ```
205
+
206
+ ---
207
+
208
+ ## `format_time_m` <Badge type="info" text="v1.0.0" />
209
+
210
+ 从刻数中提取分钟分量(0-59)
211
+
212
+ ```redscript
213
+ fn format_time_m(ticks: int): int
214
+ ```
215
+
216
+ **参数**
217
+
218
+ | 参数 | 说明 |
219
+ |------|------|
220
+ | `ticks` | 游戏刻数 |
221
+
222
+ **返回:** (ticks / 1200) % 60
223
+
224
+ **示例**
225
+
226
+ ```redscript
227
+ let m = format_time_m(72000) // result: 0 (1 hour)
228
+ ```
229
+
230
+ ---
231
+
232
+ ## `format_time_h` <Badge type="info" text="v1.0.0" />
233
+
234
+ 从刻数中提取小时分量
235
+
236
+ ```redscript
237
+ fn format_time_h(ticks: int): int
238
+ ```
239
+
240
+ **参数**
241
+
242
+ | 参数 | 说明 |
243
+ |------|------|
244
+ | `ticks` | 游戏刻数 |
245
+
246
+ **返回:** ticks / 72000
247
+
248
+ **示例**
249
+
250
+ ```redscript
251
+ let h = format_time_h(144000) // result: 2
252
+ ```
253
+
254
+ ---
@@ -0,0 +1,158 @@
1
+ # Vec
2
+
3
+ > 本文档由 `src/stdlib/vec.mcrs` 自动生成,请勿手动编辑。
4
+
5
+ ## API 列表
6
+
7
+ - [dot2d](#dot2d)
8
+ - [length2d_fixed](#length2d-fixed)
9
+ - [dot3d](#dot3d)
10
+ - [cross3d_x](#cross3d-x)
11
+ - [cross3d_y](#cross3d-y)
12
+ - [cross3d_z](#cross3d-z)
13
+
14
+ ---
15
+
16
+ ## `dot2d` <Badge type="info" text="v1.0.0" />
17
+
18
+ 两个二维整数向量的点积
19
+
20
+ ```redscript
21
+ fn dot2d(ax: int, ay: int, bx: int, by: int) -> int
22
+ ```
23
+
24
+ **参数**
25
+
26
+ | 参数 | 说明 |
27
+ |------|------|
28
+ | `ax` | 向量 A 的 X 分量 |
29
+ | `ay` | 向量 A 的 Y 分量 |
30
+ | `bx` | 向量 B 的 X 分量 |
31
+ | `by` | 向量 B 的 Y 分量 |
32
+
33
+ **返回:** ax*bx + ay*by
34
+
35
+ **示例**
36
+
37
+ ```redscript
38
+ let d = dot2d(3, 4, 3, 4) // result: 25
39
+ ```
40
+
41
+ ---
42
+
43
+ ## `length2d_fixed` <Badge type="info" text="v1.0.0" />
44
+
45
+ 二维向量的欧几里得长度,结果 ×1000 定点数
46
+
47
+ ```redscript
48
+ fn length2d_fixed(x: int, y: int) -> int
49
+ ```
50
+
51
+ **参数**
52
+
53
+ | 参数 | 说明 |
54
+ |------|------|
55
+ | `x` | X 分量(保持 |x|, |y| ≤ ~1000 以避免溢出) |
56
+ | `y` | Y 分量 |
57
+
58
+ **返回:** sqrt(x²+y²) × 1000
59
+
60
+ **示例**
61
+
62
+ ```redscript
63
+ let l = length2d_fixed(3, 4) // result: 5000
64
+ ```
65
+
66
+ ---
67
+
68
+ ## `dot3d` <Badge type="info" text="v1.0.0" />
69
+
70
+ 两个三维整数向量的点积
71
+
72
+ ```redscript
73
+ fn dot3d(ax: int, ay: int, az: int, bx: int, by: int, bz: int) -> int
74
+ ```
75
+
76
+ **参数**
77
+
78
+ | 参数 | 说明 |
79
+ |------|------|
80
+ | `ax` | 向量 A 的 X 分量 |
81
+ | `ay` | 向量 A 的 Y 分量 |
82
+ | `az` | 向量 A 的 Z 分量 |
83
+ | `bx` | 向量 B 的 X 分量 |
84
+ | `by` | 向量 B 的 Y 分量 |
85
+ | `bz` | 向量 B 的 Z 分量 |
86
+
87
+ **返回:** ax*bx + ay*by + az*bz
88
+
89
+ **示例**
90
+
91
+ ```redscript
92
+ let d = dot3d(1, 0, 0, 1, 0, 0) // result: 1
93
+ ```
94
+
95
+ ---
96
+
97
+ ## `cross3d_x` <Badge type="info" text="v1.0.0" />
98
+
99
+ 叉积 A×B 的 X 分量(ay*bz - az*by)
100
+
101
+ ```redscript
102
+ fn cross3d_x(ax: int, ay: int, az: int, bx: int, by: int, bz: int) -> int
103
+ ```
104
+
105
+ **参数**
106
+
107
+ | 参数 | 说明 |
108
+ |------|------|
109
+ | `ax` | A 的 X 分量 |
110
+ | `bx` | B 的 X 分量 |
111
+
112
+ **返回:** ay*bz - az*by
113
+
114
+ ---
115
+
116
+ ## `cross3d_y` <Badge type="info" text="v1.0.0" />
117
+
118
+ 叉积 A×B 的 Y 分量(az*bx - ax*bz)
119
+
120
+ ```redscript
121
+ fn cross3d_y(ax: int, ay: int, az: int, bx: int, by: int, bz: int) -> int
122
+ ```
123
+
124
+ **参数**
125
+
126
+ | 参数 | 说明 |
127
+ |------|------|
128
+ | `ax` | A 的 X 分量 |
129
+ | `bx` | B 的 X 分量 |
130
+
131
+ **返回:** az*bx - ax*bz
132
+
133
+ ---
134
+
135
+ ## `cross3d_z` <Badge type="info" text="v1.0.0" />
136
+
137
+ 叉积 A×B 的 Z 分量(ax*by - ay*bx)
138
+
139
+ ```redscript
140
+ fn cross3d_z(ax: int, ay: int, az: int, bx: int, by: int, bz: int) -> int
141
+ ```
142
+
143
+ **参数**
144
+
145
+ | 参数 | 说明 |
146
+ |------|------|
147
+ | `ax` | A 的 X 分量 |
148
+ | `bx` | B 的 X 分量 |
149
+
150
+ **返回:** ax*by - ay*bx
151
+
152
+ **示例**
153
+
154
+ ```redscript
155
+ let z = cross3d_z(1, 0, 0, 0, 1, 0) // result: 1
156
+ ```
157
+
158
+ ---