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,153 @@
1
+ # Teams
2
+
3
+ > Auto-generated from `src/stdlib/teams.mcrs` — do not edit manually.
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
+ Creates a team and applies a display color.
23
+
24
+ ```redscript
25
+ fn create_team(name: string, color: string)
26
+ ```
27
+
28
+ **Parameters**
29
+
30
+ | Parameter | Description |
31
+ |-----------|-------------|
32
+ | `name` | Team name used by the scoreboard team system |
33
+ | `color` | Minecraft team color string such as `red` or `blue` |
34
+
35
+ **Example**
36
+
37
+ ```redscript
38
+ create_team("spectator", "gray")
39
+ ```
40
+
41
+ ---
42
+
43
+ ## `create_red_team`
44
+
45
+ Creates the standard red team with friendly fire disabled.
46
+
47
+ ```redscript
48
+ fn create_red_team()
49
+ ```
50
+
51
+ **Example**
52
+
53
+ ```redscript
54
+ create_red_team()
55
+ ```
56
+
57
+ ---
58
+
59
+ ## `create_blue_team`
60
+
61
+ Creates the standard blue team with friendly fire disabled.
62
+
63
+ ```redscript
64
+ fn create_blue_team()
65
+ ```
66
+
67
+ ---
68
+
69
+ ## `create_green_team`
70
+
71
+ Creates the standard green team with friendly fire disabled.
72
+
73
+ ```redscript
74
+ fn create_green_team()
75
+ ```
76
+
77
+ ---
78
+
79
+ ## `create_yellow_team`
80
+
81
+ Creates the standard yellow team with friendly fire disabled.
82
+
83
+ ```redscript
84
+ fn create_yellow_team()
85
+ ```
86
+
87
+ ---
88
+
89
+ ## `add_to_team`
90
+
91
+ Adds an entity or player selector to a team.
92
+
93
+ ```redscript
94
+ fn add_to_team(target: selector, team_name: string)
95
+ ```
96
+
97
+ **Parameters**
98
+
99
+ | Parameter | Description |
100
+ |-----------|-------------|
101
+ | `target` | Target selector to join the team |
102
+ | `team_name` | Existing team name |
103
+
104
+ ---
105
+
106
+ ## `remove_from_teams`
107
+
108
+ Removes an entity or player selector from all teams.
109
+
110
+ ```redscript
111
+ fn remove_from_teams(target: selector)
112
+ ```
113
+
114
+ **Parameters**
115
+
116
+ | Parameter | Description |
117
+ |-----------|-------------|
118
+ | `target` | Target selector to remove from teams |
119
+
120
+ ---
121
+
122
+ ## `setup_two_teams`
123
+
124
+ Creates the default two-team setup used by many arena games.
125
+ This creates `red` and `blue`.
126
+
127
+ ```redscript
128
+ fn setup_two_teams()
129
+ ```
130
+
131
+ ---
132
+
133
+ ## `setup_four_teams`
134
+
135
+ Creates the default four-team setup.
136
+ This creates `red`, `blue`, `green`, and `yellow`.
137
+
138
+ ```redscript
139
+ fn setup_four_teams()
140
+ ```
141
+
142
+ ---
143
+
144
+ ## `cleanup_teams`
145
+
146
+ Removes the default team set created by this module.
147
+ Safe to call during cleanup even if some teams were unused.
148
+
149
+ ```redscript
150
+ fn cleanup_teams()
151
+ ```
152
+
153
+ ---
@@ -0,0 +1,246 @@
1
+ # Timer
2
+
3
+ > Auto-generated from `src/stdlib/timer.mcrs` — do not edit manually.
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
+ Create a new timer with the given duration in ticks.
27
+
28
+ ```redscript
29
+ fn new(duration: int) -> Timer
30
+ ```
31
+
32
+ ---
33
+
34
+ ## `Timer.start`
35
+
36
+ Start or resume the timer.
37
+
38
+ ```redscript
39
+ fn start(self)
40
+ ```
41
+
42
+ ---
43
+
44
+ ## `Timer.pause`
45
+
46
+ Pause the timer.
47
+
48
+ ```redscript
49
+ fn pause(self)
50
+ ```
51
+
52
+ ---
53
+
54
+ ## `Timer.reset`
55
+
56
+ Reset elapsed ticks back to zero.
57
+
58
+ ```redscript
59
+ fn reset(self)
60
+ ```
61
+
62
+ ---
63
+
64
+ ## `Timer.done`
65
+
66
+ Check whether the timer has reached its duration.
67
+
68
+ ```redscript
69
+ fn done(self) -> bool
70
+ ```
71
+
72
+ ---
73
+
74
+ ## `Timer.elapsed`
75
+
76
+ Get elapsed ticks.
77
+
78
+ ```redscript
79
+ fn elapsed(self) -> int
80
+ ```
81
+
82
+ ---
83
+
84
+ ## `Timer.remaining`
85
+
86
+ Get remaining ticks, clamped at zero.
87
+
88
+ ```redscript
89
+ fn remaining(self) -> int
90
+ ```
91
+
92
+ ---
93
+
94
+ ## `Timer.tick`
95
+
96
+ Manually advance the timer by one tick when active.
97
+
98
+ ```redscript
99
+ fn tick(self)
100
+ ```
101
+
102
+ ---
103
+
104
+ ## `tick_to_seconds` <Badge type="info" text="v1.0.0" />
105
+
106
+ Convert Minecraft ticks to whole seconds (20 ticks = 1 second).
107
+
108
+ ```redscript
109
+ fn tick_to_seconds(ticks: int): int
110
+ ```
111
+
112
+ **Parameters**
113
+
114
+ | Parameter | Description |
115
+ |-----------|-------------|
116
+ | `ticks` | Elapsed ticks |
117
+
118
+ **Returns:** ticks / 20
119
+
120
+ **Example**
121
+
122
+ ```redscript
123
+ let s = tick_to_seconds(100) // result: 5
124
+ ```
125
+
126
+ ---
127
+
128
+ ## `tick_to_ms` <Badge type="info" text="v1.0.0" />
129
+
130
+ Convert Minecraft ticks to milliseconds (1 tick = 50 ms).
131
+
132
+ ```redscript
133
+ fn tick_to_ms(ticks: int): int
134
+ ```
135
+
136
+ **Parameters**
137
+
138
+ | Parameter | Description |
139
+ |-----------|-------------|
140
+ | `ticks` | Elapsed ticks |
141
+
142
+ **Returns:** ticks * 50
143
+
144
+ **Example**
145
+
146
+ ```redscript
147
+ let ms = tick_to_ms(20) // result: 1000
148
+ ```
149
+
150
+ ---
151
+
152
+ ## `seconds_to_ticks` <Badge type="info" text="v1.0.0" />
153
+
154
+ Convert seconds to Minecraft ticks (1 second = 20 ticks).
155
+
156
+ ```redscript
157
+ fn seconds_to_ticks(s: int): int
158
+ ```
159
+
160
+ **Parameters**
161
+
162
+ | Parameter | Description |
163
+ |-----------|-------------|
164
+ | `s` | Seconds |
165
+
166
+ **Returns:** s * 20
167
+
168
+ **Example**
169
+
170
+ ```redscript
171
+ let t = seconds_to_ticks(5) // result: 100
172
+ ```
173
+
174
+ ---
175
+
176
+ ## `format_time_s` <Badge type="info" text="v1.0.0" />
177
+
178
+ Extract seconds component from a tick count (0-59).
179
+
180
+ ```redscript
181
+ fn format_time_s(ticks: int): int
182
+ ```
183
+
184
+ **Parameters**
185
+
186
+ | Parameter | Description |
187
+ |-----------|-------------|
188
+ | `ticks` | Elapsed ticks |
189
+
190
+ **Returns:** (ticks / 20) % 60
191
+
192
+ **Example**
193
+
194
+ ```redscript
195
+ let s = format_time_s(1500) // result: 15 (75 seconds mod 60)
196
+ ```
197
+
198
+ ---
199
+
200
+ ## `format_time_m` <Badge type="info" text="v1.0.0" />
201
+
202
+ Extract minutes component from a tick count (0-59).
203
+
204
+ ```redscript
205
+ fn format_time_m(ticks: int): int
206
+ ```
207
+
208
+ **Parameters**
209
+
210
+ | Parameter | Description |
211
+ |-----------|-------------|
212
+ | `ticks` | Elapsed ticks |
213
+
214
+ **Returns:** (ticks / 1200) % 60
215
+
216
+ **Example**
217
+
218
+ ```redscript
219
+ let m = format_time_m(72000) // result: 0 (1 hour)
220
+ ```
221
+
222
+ ---
223
+
224
+ ## `format_time_h` <Badge type="info" text="v1.0.0" />
225
+
226
+ Extract hours component from a tick count.
227
+
228
+ ```redscript
229
+ fn format_time_h(ticks: int): int
230
+ ```
231
+
232
+ **Parameters**
233
+
234
+ | Parameter | Description |
235
+ |-----------|-------------|
236
+ | `ticks` | Elapsed ticks |
237
+
238
+ **Returns:** ticks / 72000
239
+
240
+ **Example**
241
+
242
+ ```redscript
243
+ let h = format_time_h(144000) // result: 2
244
+ ```
245
+
246
+ ---
@@ -0,0 +1,158 @@
1
+ # Vec
2
+
3
+ > Auto-generated from `src/stdlib/vec.mcrs` — do not edit manually.
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
+ Dot product of two 2D integer vectors.
19
+
20
+ ```redscript
21
+ fn dot2d(ax: int, ay: int, bx: int, by: int) -> int
22
+ ```
23
+
24
+ **Parameters**
25
+
26
+ | Parameter | Description |
27
+ |-----------|-------------|
28
+ | `ax` | X component of vector A |
29
+ | `ay` | Y component of vector A |
30
+ | `bx` | X component of vector B |
31
+ | `by` | Y component of vector B |
32
+
33
+ **Returns:** ax*bx + ay*by
34
+
35
+ **Example**
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
+ Euclidean length of a 2D vector, returned as ×1000 fixed-point.
46
+
47
+ ```redscript
48
+ fn length2d_fixed(x: int, y: int) -> int
49
+ ```
50
+
51
+ **Parameters**
52
+
53
+ | Parameter | Description |
54
+ |-----------|-------------|
55
+ | `x` | X component (raw integer; keep |x|,|y| ≤ ~1000 to avoid overflow) |
56
+ | `y` | Y component |
57
+
58
+ **Returns:** sqrt(x²+y²) × 1000
59
+
60
+ **Example**
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
+ Dot product of two 3D integer vectors.
71
+
72
+ ```redscript
73
+ fn dot3d(ax: int, ay: int, az: int, bx: int, by: int, bz: int) -> int
74
+ ```
75
+
76
+ **Parameters**
77
+
78
+ | Parameter | Description |
79
+ |-----------|-------------|
80
+ | `ax` | X component of vector A |
81
+ | `ay` | Y component of vector A |
82
+ | `az` | Z component of vector A |
83
+ | `bx` | X component of vector B |
84
+ | `by` | Y component of vector B |
85
+ | `bz` | Z component of vector B |
86
+
87
+ **Returns:** ax*bx + ay*by + az*bz
88
+
89
+ **Example**
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
+ X component of the cross product A×B (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
+ **Parameters**
106
+
107
+ | Parameter | Description |
108
+ |-----------|-------------|
109
+ | `ax` | X of A @param ay Y of A @param az Z of A |
110
+ | `bx` | X of B @param by Y of B @param bz Z of B |
111
+
112
+ **Returns:** ay*bz - az*by
113
+
114
+ ---
115
+
116
+ ## `cross3d_y` <Badge type="info" text="v1.0.0" />
117
+
118
+ Y component of the cross product A×B (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
+ **Parameters**
125
+
126
+ | Parameter | Description |
127
+ |-----------|-------------|
128
+ | `ax` | X of A @param ay Y of A @param az Z of A |
129
+ | `bx` | X of B @param by Y of B @param bz Z of B |
130
+
131
+ **Returns:** az*bx - ax*bz
132
+
133
+ ---
134
+
135
+ ## `cross3d_z` <Badge type="info" text="v1.0.0" />
136
+
137
+ Z component of the cross product A×B (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
+ **Parameters**
144
+
145
+ | Parameter | Description |
146
+ |-----------|-------------|
147
+ | `ax` | X of A @param ay Y of A @param az Z of A |
148
+ | `bx` | X of B @param by Y of B @param bz Z of B |
149
+
150
+ **Returns:** ax*by - ay*bx
151
+
152
+ **Example**
153
+
154
+ ```redscript
155
+ let z = cross3d_z(1, 0, 0, 0, 1, 0) // result: 1
156
+ ```
157
+
158
+ ---