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.
- package/.github/workflows/ci.yml +1 -0
- package/README.md +119 -313
- package/README.zh.md +118 -314
- package/ROADMAP.md +5 -5
- package/dist/data/impl_test/function/counter/get.mcfunction +5 -0
- package/dist/data/impl_test/function/counter/inc.mcfunction +7 -0
- package/dist/data/impl_test/function/counter/new.mcfunction +4 -0
- package/dist/data/impl_test/function/load.mcfunction +1 -0
- package/dist/data/impl_test/function/test_impl.mcfunction +10 -0
- package/dist/data/minecraft/tags/function/load.json +5 -0
- package/dist/data/playground/function/load.mcfunction +1 -0
- package/dist/data/playground/function/start.mcfunction +4 -0
- package/dist/data/playground/function/start__say_macro_t1.mcfunction +1 -0
- package/dist/data/playground/function/stop.mcfunction +5 -0
- package/dist/data/playground/function/stop__say_macro_t0.mcfunction +1 -0
- package/dist/data/stdlib_queue8_test/function/__queue_append_apply.mcfunction +4 -0
- package/dist/data/stdlib_queue8_test/function/__queue_peek_apply.mcfunction +4 -0
- package/dist/data/stdlib_queue8_test/function/__queue_size_raw_apply.mcfunction +4 -0
- package/dist/data/stdlib_queue8_test/function/load.mcfunction +1 -0
- package/dist/data/stdlib_queue8_test/function/queue_clear.mcfunction +6 -0
- package/dist/data/stdlib_queue8_test/function/queue_empty__merge_1.mcfunction +5 -0
- package/dist/data/stdlib_queue8_test/function/queue_empty__then_0.mcfunction +5 -0
- package/dist/data/stdlib_queue8_test/function/queue_peek__merge_1.mcfunction +13 -0
- package/dist/data/stdlib_queue8_test/function/queue_peek__then_0.mcfunction +5 -0
- package/dist/data/stdlib_queue8_test/function/queue_pop__merge_1.mcfunction +15 -0
- package/dist/data/stdlib_queue8_test/function/queue_pop__then_0.mcfunction +5 -0
- package/dist/data/stdlib_queue8_test/function/queue_push__const_11.mcfunction +6 -0
- package/dist/data/stdlib_queue8_test/function/queue_push__const_22.mcfunction +6 -0
- package/dist/data/stdlib_queue8_test/function/queue_size.mcfunction +13 -0
- package/dist/data/stdlib_queue8_test/function/test_queue_push_and_size.mcfunction +13 -0
- package/dist/data/test/function/load.mcfunction +1 -0
- package/dist/data/test/function/say_at.mcfunction +6 -0
- package/dist/data/test/function/test.mcfunction +4 -0
- package/dist/pack.mcmeta +6 -0
- package/dist/package.json +1 -1
- package/dist/src/__tests__/formatter-extra.test.d.ts +7 -0
- package/dist/src/__tests__/formatter-extra.test.js +123 -0
- package/dist/src/__tests__/global-vars.test.d.ts +13 -0
- package/dist/src/__tests__/global-vars.test.js +156 -0
- package/dist/src/__tests__/lint/new-rules.test.d.ts +9 -0
- package/dist/src/__tests__/lint/new-rules.test.js +402 -0
- package/dist/src/__tests__/lsp-rename.test.d.ts +8 -0
- package/dist/src/__tests__/lsp-rename.test.js +157 -0
- package/dist/src/__tests__/mc-integration/say-fstring.test.d.ts +11 -0
- package/dist/src/__tests__/mc-integration/say-fstring.test.js +220 -0
- package/dist/src/__tests__/mc-integration/stdlib-coverage-2.test.js +1 -1
- package/dist/src/__tests__/mc-integration/stdlib-coverage-3.test.js +1 -1
- package/dist/src/__tests__/mc-integration/stdlib-coverage-4.test.js +1 -1
- package/dist/src/__tests__/mc-integration/stdlib-coverage-5.test.js +1 -1
- package/dist/src/__tests__/mc-integration/stdlib-coverage-6.test.js +1 -1
- package/dist/src/__tests__/mc-integration/stdlib-coverage-7.test.js +1 -1
- package/dist/src/__tests__/mc-integration/stdlib-coverage-8.test.js +1 -1
- package/dist/src/__tests__/mc-syntax.test.js +4 -1
- package/dist/src/__tests__/monomorphize-coverage.test.d.ts +9 -0
- package/dist/src/__tests__/monomorphize-coverage.test.js +204 -0
- package/dist/src/__tests__/optimizer-cse.test.d.ts +7 -0
- package/dist/src/__tests__/optimizer-cse.test.js +226 -0
- package/dist/src/__tests__/parser.test.js +4 -13
- package/dist/src/__tests__/repl-server-extra.test.js +6 -7
- package/dist/src/__tests__/repl-server.test.js +5 -7
- package/dist/src/__tests__/stdlib/queue.test.js +6 -6
- package/dist/src/cli.js +0 -0
- package/dist/src/lexer/index.js +2 -1
- package/dist/src/lint/index.d.ts +12 -5
- package/dist/src/lint/index.js +730 -5
- package/dist/src/lsp/main.js +0 -0
- package/dist/src/mc-test/client.d.ts +21 -0
- package/dist/src/mc-test/client.js +34 -0
- package/dist/src/mir/lower.js +108 -6
- package/dist/src/optimizer/interprocedural.js +37 -2
- package/dist/src/parser/decl-parser.d.ts +19 -0
- package/dist/src/parser/decl-parser.js +323 -0
- package/dist/src/parser/expr-parser.d.ts +46 -0
- package/dist/src/parser/expr-parser.js +759 -0
- package/dist/src/parser/index.d.ts +8 -129
- package/dist/src/parser/index.js +13 -2262
- package/dist/src/parser/stmt-parser.d.ts +28 -0
- package/dist/src/parser/stmt-parser.js +577 -0
- package/dist/src/parser/type-parser.d.ts +20 -0
- package/dist/src/parser/type-parser.js +257 -0
- package/dist/src/parser/utils.d.ts +34 -0
- package/dist/src/parser/utils.js +141 -0
- package/docs/dev/README-mc-integration-tests.md +141 -0
- package/docs/lint-rules.md +162 -0
- package/docs/stdlib/bigint.md +2 -0
- package/editors/vscode/README.md +63 -41
- package/editors/vscode/out/extension.js +1881 -1776
- package/editors/vscode/out/lsp-server.js +4257 -3651
- package/editors/vscode/package-lock.json +3 -3
- package/editors/vscode/package.json +1 -1
- package/examples/loops-demo.mcrs +87 -0
- package/package.json +1 -1
- package/redscript-docs/docs/en/stdlib/advanced.md +629 -0
- package/redscript-docs/docs/en/stdlib/bigint.md +316 -0
- package/redscript-docs/docs/en/stdlib/bits.md +292 -0
- package/redscript-docs/docs/en/stdlib/bossbar.md +177 -0
- package/redscript-docs/docs/en/stdlib/calculus.md +289 -0
- package/redscript-docs/docs/en/stdlib/color.md +353 -0
- package/redscript-docs/docs/en/stdlib/combat.md +88 -0
- package/redscript-docs/docs/en/stdlib/cooldown.md +82 -0
- package/redscript-docs/docs/en/stdlib/dialog.md +155 -0
- package/redscript-docs/docs/en/stdlib/easing.md +558 -0
- package/redscript-docs/docs/en/stdlib/ecs.md +475 -0
- package/redscript-docs/docs/en/stdlib/effects.md +324 -0
- package/redscript-docs/docs/en/stdlib/events.md +3 -0
- package/redscript-docs/docs/en/stdlib/expr.md +45 -0
- package/redscript-docs/docs/en/stdlib/fft.md +141 -0
- package/redscript-docs/docs/en/stdlib/geometry.md +430 -0
- package/redscript-docs/docs/en/stdlib/graph.md +259 -0
- package/redscript-docs/docs/en/stdlib/heap.md +185 -0
- package/redscript-docs/docs/en/stdlib/interactions.md +179 -0
- package/redscript-docs/docs/en/stdlib/inventory.md +97 -0
- package/redscript-docs/docs/en/stdlib/linalg.md +557 -0
- package/redscript-docs/docs/en/stdlib/list.md +559 -0
- package/redscript-docs/docs/en/stdlib/map.md +140 -0
- package/redscript-docs/docs/en/stdlib/math.md +193 -0
- package/redscript-docs/docs/en/stdlib/math_hp.md +149 -0
- package/redscript-docs/docs/en/stdlib/matrix.md +403 -0
- package/redscript-docs/docs/en/stdlib/mobs.md +965 -0
- package/redscript-docs/docs/en/stdlib/noise.md +244 -0
- package/redscript-docs/docs/en/stdlib/ode.md +253 -0
- package/redscript-docs/docs/en/stdlib/parabola.md +342 -0
- package/redscript-docs/docs/en/stdlib/particles.md +311 -0
- package/redscript-docs/docs/en/stdlib/pathfind.md +255 -0
- package/redscript-docs/docs/en/stdlib/physics.md +493 -0
- package/redscript-docs/docs/en/stdlib/player.md +78 -0
- package/redscript-docs/docs/en/stdlib/quaternion.md +673 -0
- package/redscript-docs/docs/en/stdlib/queue.md +134 -0
- package/redscript-docs/docs/en/stdlib/random.md +223 -0
- package/redscript-docs/docs/en/stdlib/result.md +143 -0
- package/redscript-docs/docs/en/stdlib/scheduler.md +183 -0
- package/redscript-docs/docs/en/stdlib/set_int.md +190 -0
- package/redscript-docs/docs/en/stdlib/sets.md +101 -0
- package/redscript-docs/docs/en/stdlib/signal.md +400 -0
- package/redscript-docs/docs/en/stdlib/sort.md +104 -0
- package/redscript-docs/docs/en/stdlib/spawn.md +147 -0
- package/redscript-docs/docs/en/stdlib/state.md +142 -0
- package/redscript-docs/docs/en/stdlib/strings.md +154 -0
- package/redscript-docs/docs/en/stdlib/tags.md +3451 -0
- package/redscript-docs/docs/en/stdlib/teams.md +153 -0
- package/redscript-docs/docs/en/stdlib/timer.md +246 -0
- package/redscript-docs/docs/en/stdlib/vec.md +158 -0
- package/redscript-docs/docs/en/stdlib/world.md +298 -0
- package/redscript-docs/docs/zh/stdlib/advanced.md +615 -0
- package/redscript-docs/docs/zh/stdlib/bigint.md +316 -0
- package/redscript-docs/docs/zh/stdlib/bits.md +292 -0
- package/redscript-docs/docs/zh/stdlib/bossbar.md +170 -0
- package/redscript-docs/docs/zh/stdlib/calculus.md +287 -0
- package/redscript-docs/docs/zh/stdlib/color.md +353 -0
- package/redscript-docs/docs/zh/stdlib/combat.md +88 -0
- package/redscript-docs/docs/zh/stdlib/cooldown.md +84 -0
- package/redscript-docs/docs/zh/stdlib/dialog.md +152 -0
- package/redscript-docs/docs/zh/stdlib/easing.md +558 -0
- package/redscript-docs/docs/zh/stdlib/ecs.md +472 -0
- package/redscript-docs/docs/zh/stdlib/effects.md +324 -0
- package/redscript-docs/docs/zh/stdlib/events.md +3 -0
- package/redscript-docs/docs/zh/stdlib/expr.md +37 -0
- package/redscript-docs/docs/zh/stdlib/fft.md +128 -0
- package/redscript-docs/docs/zh/stdlib/geometry.md +430 -0
- package/redscript-docs/docs/zh/stdlib/graph.md +259 -0
- package/redscript-docs/docs/zh/stdlib/heap.md +185 -0
- package/redscript-docs/docs/zh/stdlib/interactions.md +160 -0
- package/redscript-docs/docs/zh/stdlib/inventory.md +94 -0
- package/redscript-docs/docs/zh/stdlib/linalg.md +543 -0
- package/redscript-docs/docs/zh/stdlib/list.md +561 -0
- package/redscript-docs/docs/zh/stdlib/map.md +132 -0
- package/redscript-docs/docs/zh/stdlib/math.md +193 -0
- package/redscript-docs/docs/zh/stdlib/math_hp.md +143 -0
- package/redscript-docs/docs/zh/stdlib/matrix.md +396 -0
- package/redscript-docs/docs/zh/stdlib/mobs.md +965 -0
- package/redscript-docs/docs/zh/stdlib/noise.md +244 -0
- package/redscript-docs/docs/zh/stdlib/ode.md +243 -0
- package/redscript-docs/docs/zh/stdlib/parabola.md +337 -0
- package/redscript-docs/docs/zh/stdlib/particles.md +307 -0
- package/redscript-docs/docs/zh/stdlib/pathfind.md +255 -0
- package/redscript-docs/docs/zh/stdlib/physics.md +493 -0
- package/redscript-docs/docs/zh/stdlib/player.md +78 -0
- package/redscript-docs/docs/zh/stdlib/quaternion.md +669 -0
- package/redscript-docs/docs/zh/stdlib/queue.md +124 -0
- package/redscript-docs/docs/zh/stdlib/random.md +222 -0
- package/redscript-docs/docs/zh/stdlib/result.md +147 -0
- package/redscript-docs/docs/zh/stdlib/scheduler.md +173 -0
- package/redscript-docs/docs/zh/stdlib/set_int.md +180 -0
- package/redscript-docs/docs/zh/stdlib/sets.md +107 -0
- package/redscript-docs/docs/zh/stdlib/signal.md +373 -0
- package/redscript-docs/docs/zh/stdlib/sort.md +104 -0
- package/redscript-docs/docs/zh/stdlib/spawn.md +142 -0
- package/redscript-docs/docs/zh/stdlib/state.md +134 -0
- package/redscript-docs/docs/zh/stdlib/strings.md +107 -0
- package/redscript-docs/docs/zh/stdlib/tags.md +3451 -0
- package/redscript-docs/docs/zh/stdlib/teams.md +150 -0
- package/redscript-docs/docs/zh/stdlib/timer.md +254 -0
- package/redscript-docs/docs/zh/stdlib/vec.md +158 -0
- package/redscript-docs/docs/zh/stdlib/world.md +289 -0
- package/src/__tests__/formatter-extra.test.ts +139 -0
- package/src/__tests__/global-vars.test.ts +171 -0
- package/src/__tests__/lint/new-rules.test.ts +437 -0
- package/src/__tests__/lsp-rename.test.ts +171 -0
- package/src/__tests__/mc-integration/say-fstring.test.ts +211 -0
- package/src/__tests__/mc-integration/stdlib-coverage-2.test.ts +1 -1
- package/src/__tests__/mc-integration/stdlib-coverage-3.test.ts +1 -1
- package/src/__tests__/mc-integration/stdlib-coverage-4.test.ts +1 -1
- package/src/__tests__/mc-integration/stdlib-coverage-5.test.ts +1 -1
- package/src/__tests__/mc-integration/stdlib-coverage-6.test.ts +1 -1
- package/src/__tests__/mc-integration/stdlib-coverage-7.test.ts +1 -1
- package/src/__tests__/mc-integration/stdlib-coverage-8.test.ts +1 -1
- package/src/__tests__/mc-syntax.test.ts +3 -0
- package/src/__tests__/monomorphize-coverage.test.ts +220 -0
- package/src/__tests__/optimizer-cse.test.ts +250 -0
- package/src/__tests__/parser.test.ts +4 -13
- package/src/__tests__/repl-server-extra.test.ts +6 -6
- package/src/__tests__/repl-server.test.ts +5 -6
- package/src/__tests__/stdlib/queue.test.ts +6 -6
- package/src/lexer/index.ts +2 -1
- package/src/lint/index.ts +713 -5
- package/src/mc-test/client.ts +40 -0
- package/src/mir/lower.ts +111 -2
- package/src/optimizer/interprocedural.ts +40 -2
- package/src/parser/decl-parser.ts +349 -0
- package/src/parser/expr-parser.ts +838 -0
- package/src/parser/index.ts +17 -2558
- package/src/parser/stmt-parser.ts +585 -0
- package/src/parser/type-parser.ts +276 -0
- package/src/parser/utils.ts +173 -0
- package/src/stdlib/queue.mcrs +19 -6
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
# Color
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/color.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [rgb_pack](#rgb-pack)
|
|
8
|
+
- [rgb_r](#rgb-r)
|
|
9
|
+
- [rgb_g](#rgb-g)
|
|
10
|
+
- [rgb_b](#rgb-b)
|
|
11
|
+
- [rgb_lerp](#rgb-lerp)
|
|
12
|
+
- [rgb_to_l](#rgb-to-l)
|
|
13
|
+
- [rgb_to_s](#rgb-to-s)
|
|
14
|
+
- [rgb_to_h](#rgb-to-h)
|
|
15
|
+
- [hsl_to_r](#hsl-to-r)
|
|
16
|
+
- [hsl_to_g](#hsl-to-g)
|
|
17
|
+
- [hsl_to_b](#hsl-to-b)
|
|
18
|
+
- [hsl_to_packed](#hsl-to-packed)
|
|
19
|
+
- [rgb_to_hex](#rgb-to-hex)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## `rgb_pack` <Badge type="info" text="v1.0.0" />
|
|
24
|
+
|
|
25
|
+
Pack RGB components into a single integer (0xRRGGBB format).
|
|
26
|
+
|
|
27
|
+
```redscript
|
|
28
|
+
fn rgb_pack(r: int, g: int, b: int): int
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Parameters**
|
|
32
|
+
|
|
33
|
+
| Parameter | Description |
|
|
34
|
+
|-----------|-------------|
|
|
35
|
+
| `r` | Red channel, range [0, 255] |
|
|
36
|
+
| `g` | Green channel, range [0, 255] |
|
|
37
|
+
| `b` | Blue channel, range [0, 255] |
|
|
38
|
+
|
|
39
|
+
**Returns:** r*65536 + g*256 + b
|
|
40
|
+
|
|
41
|
+
**Example**
|
|
42
|
+
|
|
43
|
+
```redscript
|
|
44
|
+
let red: int = rgb_pack(255, 0, 0) // result: 16711680 (0xFF0000)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## `rgb_r` <Badge type="info" text="v1.0.0" />
|
|
50
|
+
|
|
51
|
+
Extract the red component from a packed RGB integer.
|
|
52
|
+
|
|
53
|
+
```redscript
|
|
54
|
+
fn rgb_r(packed: int): int
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Parameters**
|
|
58
|
+
|
|
59
|
+
| Parameter | Description |
|
|
60
|
+
|-----------|-------------|
|
|
61
|
+
| `packed` | Packed color integer (0xRRGGBB) |
|
|
62
|
+
|
|
63
|
+
**Returns:** Red channel value in [0, 255]
|
|
64
|
+
|
|
65
|
+
**Example**
|
|
66
|
+
|
|
67
|
+
```redscript
|
|
68
|
+
let r: int = rgb_r(16711680) // result: 255
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## `rgb_g` <Badge type="info" text="v1.0.0" />
|
|
74
|
+
|
|
75
|
+
Extract the green component from a packed RGB integer.
|
|
76
|
+
|
|
77
|
+
```redscript
|
|
78
|
+
fn rgb_g(packed: int): int
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Parameters**
|
|
82
|
+
|
|
83
|
+
| Parameter | Description |
|
|
84
|
+
|-----------|-------------|
|
|
85
|
+
| `packed` | Packed color integer (0xRRGGBB) |
|
|
86
|
+
|
|
87
|
+
**Returns:** Green channel value in [0, 255]
|
|
88
|
+
|
|
89
|
+
**Example**
|
|
90
|
+
|
|
91
|
+
```redscript
|
|
92
|
+
let g: int = rgb_g(65280) // result: 255 (0x00FF00)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## `rgb_b` <Badge type="info" text="v1.0.0" />
|
|
98
|
+
|
|
99
|
+
Extract the blue component from a packed RGB integer.
|
|
100
|
+
|
|
101
|
+
```redscript
|
|
102
|
+
fn rgb_b(packed: int): int
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Parameters**
|
|
106
|
+
|
|
107
|
+
| Parameter | Description |
|
|
108
|
+
|-----------|-------------|
|
|
109
|
+
| `packed` | Packed color integer (0xRRGGBB) |
|
|
110
|
+
|
|
111
|
+
**Returns:** Blue channel value in [0, 255]
|
|
112
|
+
|
|
113
|
+
**Example**
|
|
114
|
+
|
|
115
|
+
```redscript
|
|
116
|
+
let b: int = rgb_b(255) // result: 255 (0x0000FF)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## `rgb_lerp` <Badge type="info" text="v1.0.0" />
|
|
122
|
+
|
|
123
|
+
Linear interpolation between two packed RGB colors.
|
|
124
|
+
|
|
125
|
+
```redscript
|
|
126
|
+
fn rgb_lerp(a: int, b: int, t: int): int
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Parameters**
|
|
130
|
+
|
|
131
|
+
| Parameter | Description |
|
|
132
|
+
|-----------|-------------|
|
|
133
|
+
| `a` | Start color (packed 0xRRGGBB) |
|
|
134
|
+
| `b` | End color (packed 0xRRGGBB) |
|
|
135
|
+
| `t` | Blend factor in [0, 1000] (0 = a, 1000 = b) |
|
|
136
|
+
|
|
137
|
+
**Returns:** Packed RGB interpolated between a and b
|
|
138
|
+
|
|
139
|
+
**Example**
|
|
140
|
+
|
|
141
|
+
```redscript
|
|
142
|
+
let mid: int = rgb_lerp(0xFF0000, 0x0000FF, 500) // halfway between red and blue
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## `rgb_to_l` <Badge type="info" text="v1.0.0" />
|
|
148
|
+
|
|
149
|
+
Compute the HSL lightness from RGB components (×10000 scale).
|
|
150
|
+
|
|
151
|
+
```redscript
|
|
152
|
+
fn rgb_to_l(r: int, g: int, b: int): int
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Parameters**
|
|
156
|
+
|
|
157
|
+
| Parameter | Description |
|
|
158
|
+
|-----------|-------------|
|
|
159
|
+
| `r` | Red ×10000, range [0, 2550000] |
|
|
160
|
+
| `g` | Green ×10000, range [0, 2550000] |
|
|
161
|
+
| `b` | Blue ×10000, range [0, 2550000] |
|
|
162
|
+
|
|
163
|
+
**Returns:** Lightness in [0, 10000] (0 = black, 10000 = white)
|
|
164
|
+
|
|
165
|
+
**Example**
|
|
166
|
+
|
|
167
|
+
```redscript
|
|
168
|
+
let l: int = rgb_to_l(2550000, 2550000, 2550000) // result: 10000 (white)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## `rgb_to_s` <Badge type="info" text="v1.0.0" />
|
|
174
|
+
|
|
175
|
+
Compute the HSL saturation from RGB components (×10000 scale).
|
|
176
|
+
|
|
177
|
+
```redscript
|
|
178
|
+
fn rgb_to_s(r: int, g: int, b: int): int
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Parameters**
|
|
182
|
+
|
|
183
|
+
| Parameter | Description |
|
|
184
|
+
|-----------|-------------|
|
|
185
|
+
| `r` | Red ×10000, range [0, 2550000] |
|
|
186
|
+
| `g` | Green ×10000, range [0, 2550000] |
|
|
187
|
+
| `b` | Blue ×10000, range [0, 2550000] |
|
|
188
|
+
|
|
189
|
+
**Returns:** Saturation in [0, 10000] (0 = grey, 10000 = fully saturated)
|
|
190
|
+
|
|
191
|
+
**Example**
|
|
192
|
+
|
|
193
|
+
```redscript
|
|
194
|
+
let s: int = rgb_to_s(2550000, 0, 0) // result: 10000 (pure red is fully saturated)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## `rgb_to_h` <Badge type="info" text="v1.0.0" />
|
|
200
|
+
|
|
201
|
+
Compute the HSL hue from RGB components (×10000 scale).
|
|
202
|
+
|
|
203
|
+
```redscript
|
|
204
|
+
fn rgb_to_h(r: int, g: int, b: int): int
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Parameters**
|
|
208
|
+
|
|
209
|
+
| Parameter | Description |
|
|
210
|
+
|-----------|-------------|
|
|
211
|
+
| `r` | Red ×10000, range [0, 2550000] |
|
|
212
|
+
| `g` | Green ×10000, range [0, 2550000] |
|
|
213
|
+
| `b` | Blue ×10000, range [0, 2550000] |
|
|
214
|
+
|
|
215
|
+
**Returns:** Hue in [0, 3600000] (degrees × 10000; 0=red, 1200000=green, 2400000=blue)
|
|
216
|
+
|
|
217
|
+
**Example**
|
|
218
|
+
|
|
219
|
+
```redscript
|
|
220
|
+
let h: int = rgb_to_h(0, 2550000, 0) // result: 1200000 (120°, pure green)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## `hsl_to_r` <Badge type="info" text="v1.0.0" />
|
|
226
|
+
|
|
227
|
+
Convert HSL to the red channel of RGB (×10000 scale).
|
|
228
|
+
|
|
229
|
+
```redscript
|
|
230
|
+
fn hsl_to_r(h: int, s: int, l: int): int
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Parameters**
|
|
234
|
+
|
|
235
|
+
| Parameter | Description |
|
|
236
|
+
|-----------|-------------|
|
|
237
|
+
| `h` | Hue ×10000, range [0, 3600000] |
|
|
238
|
+
| `s` | Saturation ×10000, range [0, 10000] |
|
|
239
|
+
| `l` | Lightness ×10000, range [0, 10000] |
|
|
240
|
+
|
|
241
|
+
**Returns:** Red channel ×10000, range [0, 2550000]; divide by 10000 for 0-255
|
|
242
|
+
|
|
243
|
+
**Example**
|
|
244
|
+
|
|
245
|
+
```redscript
|
|
246
|
+
let r: int = hsl_to_r(0, 10000, 5000) // pure red → 2550000
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## `hsl_to_g` <Badge type="info" text="v1.0.0" />
|
|
252
|
+
|
|
253
|
+
Convert HSL to the green channel of RGB (×10000 scale).
|
|
254
|
+
|
|
255
|
+
```redscript
|
|
256
|
+
fn hsl_to_g(h: int, s: int, l: int): int
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Parameters**
|
|
260
|
+
|
|
261
|
+
| Parameter | Description |
|
|
262
|
+
|-----------|-------------|
|
|
263
|
+
| `h` | Hue ×10000, range [0, 3600000] |
|
|
264
|
+
| `s` | Saturation ×10000, range [0, 10000] |
|
|
265
|
+
| `l` | Lightness ×10000, range [0, 10000] |
|
|
266
|
+
|
|
267
|
+
**Returns:** Green channel ×10000, range [0, 2550000]
|
|
268
|
+
|
|
269
|
+
**Example**
|
|
270
|
+
|
|
271
|
+
```redscript
|
|
272
|
+
let g: int = hsl_to_g(1200000, 10000, 5000) // pure green → 2550000
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## `hsl_to_b` <Badge type="info" text="v1.0.0" />
|
|
278
|
+
|
|
279
|
+
Convert HSL to the blue channel of RGB (×10000 scale).
|
|
280
|
+
|
|
281
|
+
```redscript
|
|
282
|
+
fn hsl_to_b(h: int, s: int, l: int): int
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Parameters**
|
|
286
|
+
|
|
287
|
+
| Parameter | Description |
|
|
288
|
+
|-----------|-------------|
|
|
289
|
+
| `h` | Hue ×10000, range [0, 3600000] |
|
|
290
|
+
| `s` | Saturation ×10000, range [0, 10000] |
|
|
291
|
+
| `l` | Lightness ×10000, range [0, 10000] |
|
|
292
|
+
|
|
293
|
+
**Returns:** Blue channel ×10000, range [0, 2550000]
|
|
294
|
+
|
|
295
|
+
**Example**
|
|
296
|
+
|
|
297
|
+
```redscript
|
|
298
|
+
let b: int = hsl_to_b(2400000, 10000, 5000) // pure blue → 2550000
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## `hsl_to_packed` <Badge type="info" text="v1.0.0" />
|
|
304
|
+
|
|
305
|
+
Convert HSL (×10000 scale) to a packed RGB integer (0xRRGGBB).
|
|
306
|
+
|
|
307
|
+
```redscript
|
|
308
|
+
fn hsl_to_packed(h: int, s: int, l: int): int
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**Parameters**
|
|
312
|
+
|
|
313
|
+
| Parameter | Description |
|
|
314
|
+
|-----------|-------------|
|
|
315
|
+
| `h` | Hue ×10000, range [0, 3600000] |
|
|
316
|
+
| `s` | Saturation ×10000, range [0, 10000] |
|
|
317
|
+
| `l` | Lightness ×10000, range [0, 10000] |
|
|
318
|
+
|
|
319
|
+
**Returns:** Packed RGB integer (0xRRGGBB), each channel 0-255
|
|
320
|
+
|
|
321
|
+
**Example**
|
|
322
|
+
|
|
323
|
+
```redscript
|
|
324
|
+
let col: int = hsl_to_packed(0, 10000, 5000) // pure red → 0xFF0000
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## `rgb_to_hex` <Badge type="info" text="v1.0.0" />
|
|
330
|
+
|
|
331
|
+
Pack RGB into a 0xRRGGBB integer (alias for rgb_pack with explicit naming).
|
|
332
|
+
|
|
333
|
+
```redscript
|
|
334
|
+
fn rgb_to_hex(r: int, g: int, b: int): int
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Parameters**
|
|
338
|
+
|
|
339
|
+
| Parameter | Description |
|
|
340
|
+
|-----------|-------------|
|
|
341
|
+
| `r` | Red channel, range [0, 255] |
|
|
342
|
+
| `g` | Green channel, range [0, 255] |
|
|
343
|
+
| `b` | Blue channel, range [0, 255] |
|
|
344
|
+
|
|
345
|
+
**Returns:** r*65536 + g*256 + b (same as rgb_pack)
|
|
346
|
+
|
|
347
|
+
**Example**
|
|
348
|
+
|
|
349
|
+
```redscript
|
|
350
|
+
let hex: int = rgb_to_hex(0, 128, 255) // result: 32895 (0x0080FF)
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
---
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Combat
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/combat.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [weapon_damage](#weapon-damage)
|
|
8
|
+
- [take_damage](#take-damage)
|
|
9
|
+
- [is_dead](#is-dead)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `weapon_damage` <Badge type="info" text="v1.0.0" />
|
|
14
|
+
|
|
15
|
+
Calculate total weapon damage from a base value plus a bonus.
|
|
16
|
+
|
|
17
|
+
```redscript
|
|
18
|
+
fn weapon_damage(base: int, bonus: int): int
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Parameters**
|
|
22
|
+
|
|
23
|
+
| Parameter | Description |
|
|
24
|
+
|-----------|-------------|
|
|
25
|
+
| `base` | Base weapon damage value |
|
|
26
|
+
| `bonus` | Additional damage modifier (e.g. from enchantments or buffs) |
|
|
27
|
+
|
|
28
|
+
**Returns:** base + bonus
|
|
29
|
+
|
|
30
|
+
**Example**
|
|
31
|
+
|
|
32
|
+
```redscript
|
|
33
|
+
let dmg: int = weapon_damage(10, 5) // result: 15
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## `take_damage` <Badge type="info" text="v1.0.0" />
|
|
39
|
+
|
|
40
|
+
Apply damage to a health value, clamping the result to a minimum of 0.
|
|
41
|
+
|
|
42
|
+
```redscript
|
|
43
|
+
fn take_damage(health: int, amount: int): int
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Parameters**
|
|
47
|
+
|
|
48
|
+
| Parameter | Description |
|
|
49
|
+
|-----------|-------------|
|
|
50
|
+
| `health` | Current health value (e.g. from scoreboard) |
|
|
51
|
+
| `amount` | Damage amount to subtract |
|
|
52
|
+
|
|
53
|
+
**Returns:** health - amount, clamped to 0; use scoreboard_set after calling
|
|
54
|
+
|
|
55
|
+
**Example**
|
|
56
|
+
|
|
57
|
+
```redscript
|
|
58
|
+
let new_hp: int = take_damage(current_hp, 8)
|
|
59
|
+
scoreboard_set(@p, #health, new_hp)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## `is_dead` <Badge type="info" text="v1.0.0" />
|
|
65
|
+
|
|
66
|
+
Check whether an entity is dead (health at or below zero).
|
|
67
|
+
|
|
68
|
+
```redscript
|
|
69
|
+
fn is_dead(health: int): int
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Parameters**
|
|
73
|
+
|
|
74
|
+
| Parameter | Description |
|
|
75
|
+
|-----------|-------------|
|
|
76
|
+
| `health` | Current health value to test |
|
|
77
|
+
|
|
78
|
+
**Returns:** 1 if health <= 0 (dead), 0 otherwise (alive)
|
|
79
|
+
|
|
80
|
+
**Example**
|
|
81
|
+
|
|
82
|
+
```redscript
|
|
83
|
+
if (is_dead(current_hp) == 1) {
|
|
84
|
+
// trigger death logic
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Cooldown
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/cooldown.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [cooldown_start](#cooldown-start)
|
|
8
|
+
- [cooldown_ready](#cooldown-ready)
|
|
9
|
+
- [cooldown_tick](#cooldown-tick)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `cooldown_start` <Badge type="info" text="v1.2.0" />
|
|
14
|
+
|
|
15
|
+
Start (or restart) a cooldown for the given slot.
|
|
16
|
+
The cooldown expires after `ticks` game ticks.
|
|
17
|
+
|
|
18
|
+
```redscript
|
|
19
|
+
fn cooldown_start(name: string, ticks: int)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Parameters**
|
|
23
|
+
|
|
24
|
+
| Parameter | Description |
|
|
25
|
+
|-----------|-------------|
|
|
26
|
+
| `name` | Cooldown slot identifier (reserved for future multi-slot support) |
|
|
27
|
+
| `ticks` | Duration in game ticks (20 ticks = 1 second) |
|
|
28
|
+
|
|
29
|
+
**Example**
|
|
30
|
+
|
|
31
|
+
```redscript
|
|
32
|
+
cooldown_start("sword", 40); // 2-second cooldown
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## `cooldown_ready` <Badge type="info" text="v1.2.0" />
|
|
38
|
+
|
|
39
|
+
Check whether the cooldown has expired (i.e. is ready to fire again).
|
|
40
|
+
|
|
41
|
+
```redscript
|
|
42
|
+
fn cooldown_ready(name: string) -> int
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Parameters**
|
|
46
|
+
|
|
47
|
+
| Parameter | Description |
|
|
48
|
+
|-----------|-------------|
|
|
49
|
+
| `name` | Cooldown slot identifier (reserved for future multi-slot support) |
|
|
50
|
+
|
|
51
|
+
**Returns:** 1 if the cooldown is ready (inactive or ticks remaining ≤ 0), 0 otherwise
|
|
52
|
+
|
|
53
|
+
**Example**
|
|
54
|
+
|
|
55
|
+
```redscript
|
|
56
|
+
if (cooldown_ready("sword") == 1) { attack(); cooldown_start("sword", 40); }
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## `cooldown_tick` <Badge type="info" text="v1.2.0" />
|
|
62
|
+
|
|
63
|
+
Advance the cooldown by one tick. Call this every tick from a `@tick` function.
|
|
64
|
+
Automatically marks the cooldown inactive when the remaining ticks reach zero.
|
|
65
|
+
|
|
66
|
+
```redscript
|
|
67
|
+
fn cooldown_tick(name: string)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Parameters**
|
|
71
|
+
|
|
72
|
+
| Parameter | Description |
|
|
73
|
+
|-----------|-------------|
|
|
74
|
+
| `name` | Cooldown slot identifier (reserved for future multi-slot support) |
|
|
75
|
+
|
|
76
|
+
**Example**
|
|
77
|
+
|
|
78
|
+
```redscript
|
|
79
|
+
@tick fn game_tick() { cooldown_tick("sword"); }
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Dialog
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/dialog.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [dialog_say](#dialog-say)
|
|
8
|
+
- [dialog_broadcast](#dialog-broadcast)
|
|
9
|
+
- [dialog_say_color](#dialog-say-color)
|
|
10
|
+
- [dialog_title](#dialog-title)
|
|
11
|
+
- [dialog_title_clear](#dialog-title-clear)
|
|
12
|
+
- [dialog_actionbar](#dialog-actionbar)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## `dialog_say` <Badge type="info" text="v1.0.0" />
|
|
17
|
+
|
|
18
|
+
Sends a plain white chat message to a player or selector.
|
|
19
|
+
|
|
20
|
+
```redscript
|
|
21
|
+
fn dialog_say(p: selector, msg: string)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Parameters**
|
|
25
|
+
|
|
26
|
+
| Parameter | Description |
|
|
27
|
+
|-----------|-------------|
|
|
28
|
+
| `p` | Recipient selector |
|
|
29
|
+
| `msg` | Plain text message content |
|
|
30
|
+
|
|
31
|
+
**Example**
|
|
32
|
+
|
|
33
|
+
```redscript
|
|
34
|
+
dialog_say(@p, "Quest updated")
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## `dialog_broadcast` <Badge type="info" text="v1.0.0" />
|
|
40
|
+
|
|
41
|
+
Broadcasts a plain white chat message to all players.
|
|
42
|
+
|
|
43
|
+
```redscript
|
|
44
|
+
fn dialog_broadcast(msg: string)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Parameters**
|
|
48
|
+
|
|
49
|
+
| Parameter | Description |
|
|
50
|
+
|-----------|-------------|
|
|
51
|
+
| `msg` | Plain text message content |
|
|
52
|
+
|
|
53
|
+
**Example**
|
|
54
|
+
|
|
55
|
+
```redscript
|
|
56
|
+
dialog_broadcast("Server restart in 60 seconds")
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## `dialog_say_color` <Badge type="info" text="v1.0.0" />
|
|
62
|
+
|
|
63
|
+
Sends a colored chat message to a player or selector.
|
|
64
|
+
|
|
65
|
+
Color mapping: `0=white`, `1=red`, `2=green`, `3=gold`, `4=aqua`.
|
|
66
|
+
Any other value falls back to white.
|
|
67
|
+
|
|
68
|
+
```redscript
|
|
69
|
+
fn dialog_say_color(p: selector, msg: string, color: int)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Parameters**
|
|
73
|
+
|
|
74
|
+
| Parameter | Description |
|
|
75
|
+
|-----------|-------------|
|
|
76
|
+
| `p` | Recipient selector |
|
|
77
|
+
| `msg` | Plain text message content |
|
|
78
|
+
| `color` | Color selector integer (0=white, 1=red, 2=green, 3=gold, 4=aqua) |
|
|
79
|
+
|
|
80
|
+
**Example**
|
|
81
|
+
|
|
82
|
+
```redscript
|
|
83
|
+
dialog_say_color(@s, "You died!", 1)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## `dialog_title` <Badge type="info" text="v1.0.0" />
|
|
89
|
+
|
|
90
|
+
Displays a title and subtitle on a player's screen.
|
|
91
|
+
|
|
92
|
+
```redscript
|
|
93
|
+
fn dialog_title(p: selector, title: string, subtitle: string)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Parameters**
|
|
97
|
+
|
|
98
|
+
| Parameter | Description |
|
|
99
|
+
|-----------|-------------|
|
|
100
|
+
| `p` | Recipient selector |
|
|
101
|
+
| `title` | Large title text |
|
|
102
|
+
| `subtitle` | Subtitle text shown below the title |
|
|
103
|
+
|
|
104
|
+
**Example**
|
|
105
|
+
|
|
106
|
+
```redscript
|
|
107
|
+
dialog_title(@s, "Stage 2", "Defeat the boss")
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## `dialog_title_clear` <Badge type="info" text="v1.0.0" />
|
|
113
|
+
|
|
114
|
+
Clears any currently displayed title for the target selector.
|
|
115
|
+
|
|
116
|
+
```redscript
|
|
117
|
+
fn dialog_title_clear(p: selector)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Parameters**
|
|
121
|
+
|
|
122
|
+
| Parameter | Description |
|
|
123
|
+
|-----------|-------------|
|
|
124
|
+
| `p` | Recipient selector |
|
|
125
|
+
|
|
126
|
+
**Example**
|
|
127
|
+
|
|
128
|
+
```redscript
|
|
129
|
+
dialog_title_clear(@s)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## `dialog_actionbar` <Badge type="info" text="v1.0.0" />
|
|
135
|
+
|
|
136
|
+
Displays a short message in the player's actionbar.
|
|
137
|
+
|
|
138
|
+
```redscript
|
|
139
|
+
fn dialog_actionbar(p: selector, msg: string)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Parameters**
|
|
143
|
+
|
|
144
|
+
| Parameter | Description |
|
|
145
|
+
|-----------|-------------|
|
|
146
|
+
| `p` | Recipient selector |
|
|
147
|
+
| `msg` | Plain text message content |
|
|
148
|
+
|
|
149
|
+
**Example**
|
|
150
|
+
|
|
151
|
+
```redscript
|
|
152
|
+
dialog_actionbar(@s, "Mana: 80/100")
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|