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,298 @@
1
+ # World
2
+
3
+ > Auto-generated from `src/stdlib/world.mcrs` — do not edit manually.
4
+
5
+ ## API
6
+
7
+ - [set_day](#set-day)
8
+ - [set_night](#set-night)
9
+ - [set_noon](#set-noon)
10
+ - [set_midnight](#set-midnight)
11
+ - [weather_clear](#weather-clear)
12
+ - [weather_rain](#weather-rain)
13
+ - [weather_thunder](#weather-thunder)
14
+ - [enable_keep_inventory](#enable-keep-inventory)
15
+ - [disable_keep_inventory](#disable-keep-inventory)
16
+ - [disable_mob_griefing](#disable-mob-griefing)
17
+ - [disable_fire_spread](#disable-fire-spread)
18
+ - [set_peaceful](#set-peaceful)
19
+ - [set_easy](#set-easy)
20
+ - [set_normal](#set-normal)
21
+ - [set_hard](#set-hard)
22
+ - [barrier_wall](#barrier-wall)
23
+ - [clear_area](#clear-area)
24
+ - [glass_box](#glass-box)
25
+ - [sun_altitude](#sun-altitude)
26
+ - [sun_azimuth](#sun-azimuth)
27
+
28
+ ---
29
+
30
+ ## `set_day`
31
+
32
+ Sets the world time to daytime.
33
+ Uses tick 1000, the standard morning daylight value in Minecraft.
34
+
35
+ ```redscript
36
+ fn set_day()
37
+ ```
38
+
39
+ ---
40
+
41
+ ## `set_night`
42
+
43
+ Sets the world time to night.
44
+ Uses tick 13000, the standard nighttime value in Minecraft.
45
+
46
+ ```redscript
47
+ fn set_night()
48
+ ```
49
+
50
+ ---
51
+
52
+ ## `set_noon`
53
+
54
+ Sets the world time to noon.
55
+ Uses tick 6000, when the sun is at its highest point.
56
+
57
+ ```redscript
58
+ fn set_noon()
59
+ ```
60
+
61
+ ---
62
+
63
+ ## `set_midnight`
64
+
65
+ Sets the world time to midnight.
66
+ Uses tick 18000, when the moon is at its highest point.
67
+
68
+ ```redscript
69
+ fn set_midnight()
70
+ ```
71
+
72
+ ---
73
+
74
+ ## `weather_clear`
75
+
76
+ Sets the weather to clear.
77
+
78
+ ```redscript
79
+ fn weather_clear()
80
+ ```
81
+
82
+ ---
83
+
84
+ ## `weather_rain`
85
+
86
+ Sets the weather to rain.
87
+
88
+ ```redscript
89
+ fn weather_rain()
90
+ ```
91
+
92
+ ---
93
+
94
+ ## `weather_thunder`
95
+
96
+ Sets the weather to thunder.
97
+
98
+ ```redscript
99
+ fn weather_thunder()
100
+ ```
101
+
102
+ ---
103
+
104
+ ## `enable_keep_inventory`
105
+
106
+ Enables the `keepInventory` gamerule.
107
+
108
+ ```redscript
109
+ fn enable_keep_inventory()
110
+ ```
111
+
112
+ ---
113
+
114
+ ## `disable_keep_inventory`
115
+
116
+ Disables the `keepInventory` gamerule.
117
+
118
+ ```redscript
119
+ fn disable_keep_inventory()
120
+ ```
121
+
122
+ ---
123
+
124
+ ## `disable_mob_griefing`
125
+
126
+ Disables mob griefing by setting `mobGriefing` to false.
127
+
128
+ ```redscript
129
+ fn disable_mob_griefing()
130
+ ```
131
+
132
+ ---
133
+
134
+ ## `disable_fire_spread`
135
+
136
+ Disables fire spread by setting `doFireTick` to false.
137
+
138
+ ```redscript
139
+ fn disable_fire_spread()
140
+ ```
141
+
142
+ ---
143
+
144
+ ## `set_peaceful`
145
+
146
+ Sets the difficulty to peaceful.
147
+
148
+ ```redscript
149
+ fn set_peaceful()
150
+ ```
151
+
152
+ ---
153
+
154
+ ## `set_easy`
155
+
156
+ Sets the difficulty to easy.
157
+
158
+ ```redscript
159
+ fn set_easy()
160
+ ```
161
+
162
+ ---
163
+
164
+ ## `set_normal`
165
+
166
+ Sets the difficulty to normal.
167
+
168
+ ```redscript
169
+ fn set_normal()
170
+ ```
171
+
172
+ ---
173
+
174
+ ## `set_hard`
175
+
176
+ Sets the difficulty to hard.
177
+
178
+ ```redscript
179
+ fn set_hard()
180
+ ```
181
+
182
+ ---
183
+
184
+ ## `barrier_wall`
185
+
186
+ Fills a cuboid with barriers.
187
+
188
+ ```redscript
189
+ fn barrier_wall(x1: int, y1: int, z1: int, x2: int, y2: int, z2: int)
190
+ ```
191
+
192
+ **Parameters**
193
+
194
+ | Parameter | Description |
195
+ |-----------|-------------|
196
+ | `x1` | First corner X |
197
+ | `y1` | First corner Y |
198
+ | `z1` | First corner Z |
199
+ | `x2` | Opposite corner X |
200
+ | `y2` | Opposite corner Y |
201
+ | `z2` | Opposite corner Z |
202
+
203
+ ---
204
+
205
+ ## `clear_area`
206
+
207
+ Replaces a cuboid with air to clear the area.
208
+
209
+ ```redscript
210
+ fn clear_area(x1: int, y1: int, z1: int, x2: int, y2: int, z2: int)
211
+ ```
212
+
213
+ **Parameters**
214
+
215
+ | Parameter | Description |
216
+ |-----------|-------------|
217
+ | `x1` | First corner X |
218
+ | `y1` | First corner Y |
219
+ | `z1` | First corner Z |
220
+ | `x2` | Opposite corner X |
221
+ | `y2` | Opposite corner Y |
222
+ | `z2` | Opposite corner Z |
223
+
224
+ ---
225
+
226
+ ## `glass_box`
227
+
228
+ Builds a hollow glass box.
229
+ The outer cuboid is filled with glass and the interior is then carved out.
230
+
231
+ ```redscript
232
+ fn glass_box(x1: int, y1: int, z1: int, x2: int, y2: int, z2: int)
233
+ ```
234
+
235
+ **Parameters**
236
+
237
+ | Parameter | Description |
238
+ |-----------|-------------|
239
+ | `x1` | First corner X |
240
+ | `y1` | First corner Y |
241
+ | `z1` | First corner Z |
242
+ | `x2` | Opposite corner X |
243
+ | `y2` | Opposite corner Y |
244
+ | `z2` | Opposite corner Z |
245
+
246
+ ---
247
+
248
+ ## `sun_altitude`
249
+
250
+ Computes the sun elevation angle from world time.
251
+ Result is fixed-point degrees ×10000 where noon is `900000` (+90°)
252
+ and midnight is `-900000` (-90°).
253
+ Uses `sin_fixed`, so callers must also include `math.mcrs`.
254
+
255
+ ```redscript
256
+ fn sun_altitude(ticks: int): int
257
+ ```
258
+
259
+ **Parameters**
260
+
261
+ | Parameter | Description |
262
+ |-----------|-------------|
263
+ | `ticks` | World time in Minecraft ticks |
264
+
265
+ **Returns:** Sun altitude in degrees ×10000
266
+
267
+ **Example**
268
+
269
+ ```redscript
270
+ let alt = sun_altitude(6000) // 900000
271
+ ```
272
+
273
+ ---
274
+
275
+ ## `sun_azimuth`
276
+
277
+ Computes the sun compass azimuth from world time.
278
+ Tick 0 maps to east (`0`) and advances linearly through the day.
279
+
280
+ ```redscript
281
+ fn sun_azimuth(ticks: int): int
282
+ ```
283
+
284
+ **Parameters**
285
+
286
+ | Parameter | Description |
287
+ |-----------|-------------|
288
+ | `ticks` | World time in Minecraft ticks |
289
+
290
+ **Returns:** Compass angle in degrees ×10000, wrapped to `[0, 3600000)`
291
+
292
+ **Example**
293
+
294
+ ```redscript
295
+ let az = sun_azimuth(6000) // 900000
296
+ ```
297
+
298
+ ---