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,559 @@
|
|
|
1
|
+
# List
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/list.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [sort2_min](#sort2-min)
|
|
8
|
+
- [sort2_max](#sort2-max)
|
|
9
|
+
- [list_min3](#list-min3)
|
|
10
|
+
- [list_max3](#list-max3)
|
|
11
|
+
- [list_min5](#list-min5)
|
|
12
|
+
- [list_max5](#list-max5)
|
|
13
|
+
- [list_sum5](#list-sum5)
|
|
14
|
+
- [list_sum4](#list-sum4)
|
|
15
|
+
- [list_sum3](#list-sum3)
|
|
16
|
+
- [avg3](#avg3)
|
|
17
|
+
- [avg5](#avg5)
|
|
18
|
+
- [sort3](#sort3)
|
|
19
|
+
- [weighted2](#weighted2)
|
|
20
|
+
- [weighted3](#weighted3)
|
|
21
|
+
- [sort4](#sort4)
|
|
22
|
+
- [sort5](#sort5)
|
|
23
|
+
- [list_sort_asc](#list-sort-asc)
|
|
24
|
+
- [list_sort_desc](#list-sort-desc)
|
|
25
|
+
- [list_sum](#list-sum)
|
|
26
|
+
- [list_avg](#list-avg)
|
|
27
|
+
- [list_min](#list-min)
|
|
28
|
+
- [list_max](#list-max)
|
|
29
|
+
- [list_contains](#list-contains)
|
|
30
|
+
- [list_index_of](#list-index-of)
|
|
31
|
+
- [list_shuffle](#list-shuffle)
|
|
32
|
+
- [list_dedup_count](#list-dedup-count)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## `sort2_min` <Badge type="info" text="v1.0.0" />
|
|
37
|
+
|
|
38
|
+
Return the smaller of two integers.
|
|
39
|
+
|
|
40
|
+
```redscript
|
|
41
|
+
fn sort2_min(a: int, b: int): int
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Parameters**
|
|
45
|
+
|
|
46
|
+
| Parameter | Description |
|
|
47
|
+
|-----------|-------------|
|
|
48
|
+
| `a` | First value |
|
|
49
|
+
| `b` | Second value |
|
|
50
|
+
|
|
51
|
+
**Returns:** a if a ≤ b, otherwise b
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## `sort2_max` <Badge type="info" text="v1.0.0" />
|
|
56
|
+
|
|
57
|
+
Return the larger of two integers.
|
|
58
|
+
|
|
59
|
+
```redscript
|
|
60
|
+
fn sort2_max(a: int, b: int): int
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Parameters**
|
|
64
|
+
|
|
65
|
+
| Parameter | Description |
|
|
66
|
+
|-----------|-------------|
|
|
67
|
+
| `a` | First value |
|
|
68
|
+
| `b` | Second value |
|
|
69
|
+
|
|
70
|
+
**Returns:** a if a ≥ b, otherwise b
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## `list_min3` <Badge type="info" text="v1.0.0" />
|
|
75
|
+
|
|
76
|
+
Minimum of three integers.
|
|
77
|
+
|
|
78
|
+
```redscript
|
|
79
|
+
fn list_min3(a: int, b: int, c: int): int
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Parameters**
|
|
83
|
+
|
|
84
|
+
| Parameter | Description |
|
|
85
|
+
|-----------|-------------|
|
|
86
|
+
| `a` | First value |
|
|
87
|
+
| `b` | Second value |
|
|
88
|
+
| `c` | Third value |
|
|
89
|
+
|
|
90
|
+
**Returns:** The smallest of a, b, c
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## `list_max3` <Badge type="info" text="v1.0.0" />
|
|
95
|
+
|
|
96
|
+
Maximum of three integers.
|
|
97
|
+
|
|
98
|
+
```redscript
|
|
99
|
+
fn list_max3(a: int, b: int, c: int): int
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Parameters**
|
|
103
|
+
|
|
104
|
+
| Parameter | Description |
|
|
105
|
+
|-----------|-------------|
|
|
106
|
+
| `a` | First value |
|
|
107
|
+
| `b` | Second value |
|
|
108
|
+
| `c` | Third value |
|
|
109
|
+
|
|
110
|
+
**Returns:** The largest of a, b, c
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## `list_min5` <Badge type="info" text="v1.0.0" />
|
|
115
|
+
|
|
116
|
+
Minimum of five integers.
|
|
117
|
+
|
|
118
|
+
```redscript
|
|
119
|
+
fn list_min5(a: int, b: int, c: int, d: int, e: int): int
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Parameters**
|
|
123
|
+
|
|
124
|
+
| Parameter | Description |
|
|
125
|
+
|-----------|-------------|
|
|
126
|
+
| `a` | Value 1 |
|
|
127
|
+
| `b` | Value 2 |
|
|
128
|
+
| `c` | Value 3 |
|
|
129
|
+
| `d` | Value 4 |
|
|
130
|
+
| `e` | Value 5 |
|
|
131
|
+
|
|
132
|
+
**Returns:** The smallest of the five inputs
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## `list_max5` <Badge type="info" text="v1.0.0" />
|
|
137
|
+
|
|
138
|
+
Maximum of five integers.
|
|
139
|
+
|
|
140
|
+
```redscript
|
|
141
|
+
fn list_max5(a: int, b: int, c: int, d: int, e: int): int
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Parameters**
|
|
145
|
+
|
|
146
|
+
| Parameter | Description |
|
|
147
|
+
|-----------|-------------|
|
|
148
|
+
| `a` | Value 1 |
|
|
149
|
+
| `b` | Value 2 |
|
|
150
|
+
| `c` | Value 3 |
|
|
151
|
+
| `d` | Value 4 |
|
|
152
|
+
| `e` | Value 5 |
|
|
153
|
+
|
|
154
|
+
**Returns:** The largest of the five inputs
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## `list_sum5` <Badge type="info" text="v1.0.0" />
|
|
159
|
+
|
|
160
|
+
Sum of five integers.
|
|
161
|
+
|
|
162
|
+
```redscript
|
|
163
|
+
fn list_sum5(a: int, b: int, c: int, d: int, e: int): int
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Parameters**
|
|
167
|
+
|
|
168
|
+
| Parameter | Description |
|
|
169
|
+
|-----------|-------------|
|
|
170
|
+
| `a` | Value 1 |
|
|
171
|
+
| `b` | Value 2 |
|
|
172
|
+
| `c` | Value 3 |
|
|
173
|
+
| `d` | Value 4 |
|
|
174
|
+
| `e` | Value 5 |
|
|
175
|
+
|
|
176
|
+
**Returns:** a + b + c + d + e
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## `list_sum4` <Badge type="info" text="v1.0.0" />
|
|
181
|
+
|
|
182
|
+
Sum of four integers.
|
|
183
|
+
|
|
184
|
+
```redscript
|
|
185
|
+
fn list_sum4(a: int, b: int, c: int, d: int): int
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Parameters**
|
|
189
|
+
|
|
190
|
+
| Parameter | Description |
|
|
191
|
+
|-----------|-------------|
|
|
192
|
+
| `a` | Value 1 |
|
|
193
|
+
| `b` | Value 2 |
|
|
194
|
+
| `c` | Value 3 |
|
|
195
|
+
| `d` | Value 4 |
|
|
196
|
+
|
|
197
|
+
**Returns:** a + b + c + d
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## `list_sum3` <Badge type="info" text="v1.0.0" />
|
|
202
|
+
|
|
203
|
+
Sum of three integers.
|
|
204
|
+
|
|
205
|
+
```redscript
|
|
206
|
+
fn list_sum3(a: int, b: int, c: int): int
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Parameters**
|
|
210
|
+
|
|
211
|
+
| Parameter | Description |
|
|
212
|
+
|-----------|-------------|
|
|
213
|
+
| `a` | Value 1 |
|
|
214
|
+
| `b` | Value 2 |
|
|
215
|
+
| `c` | Value 3 |
|
|
216
|
+
|
|
217
|
+
**Returns:** a + b + c
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## `avg3` <Badge type="info" text="v1.0.0" />
|
|
222
|
+
|
|
223
|
+
Integer average of three values (truncates toward zero).
|
|
224
|
+
|
|
225
|
+
```redscript
|
|
226
|
+
fn avg3(a: int, b: int, c: int): int
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**Parameters**
|
|
230
|
+
|
|
231
|
+
| Parameter | Description |
|
|
232
|
+
|-----------|-------------|
|
|
233
|
+
| `a` | Value 1 |
|
|
234
|
+
| `b` | Value 2 |
|
|
235
|
+
| `c` | Value 3 |
|
|
236
|
+
|
|
237
|
+
**Returns:** (a + b + c) / 3
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## `avg5` <Badge type="info" text="v1.0.0" />
|
|
242
|
+
|
|
243
|
+
Integer average of five values (truncates toward zero).
|
|
244
|
+
|
|
245
|
+
```redscript
|
|
246
|
+
fn avg5(a: int, b: int, c: int, d: int, e: int): int
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Parameters**
|
|
250
|
+
|
|
251
|
+
| Parameter | Description |
|
|
252
|
+
|-----------|-------------|
|
|
253
|
+
| `a` | Value 1 |
|
|
254
|
+
| `b` | Value 2 |
|
|
255
|
+
| `c` | Value 3 |
|
|
256
|
+
| `d` | Value 4 |
|
|
257
|
+
| `e` | Value 5 |
|
|
258
|
+
|
|
259
|
+
**Returns:** (a + b + c + d + e) / 5
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## `sort3` <Badge type="info" text="v1.0.0" />
|
|
264
|
+
|
|
265
|
+
Sort three values and return the one at position `pos` (0 = min, 1 = mid, 2 = max).
|
|
266
|
+
|
|
267
|
+
```redscript
|
|
268
|
+
fn sort3(a: int, b: int, c: int, pos: int): int
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**Parameters**
|
|
272
|
+
|
|
273
|
+
| Parameter | Description |
|
|
274
|
+
|-----------|-------------|
|
|
275
|
+
| `a` | Value 1 |
|
|
276
|
+
| `b` | Value 2 |
|
|
277
|
+
| `c` | Value 3 |
|
|
278
|
+
| `pos` | Desired position in sorted order (0, 1, or 2) |
|
|
279
|
+
|
|
280
|
+
**Returns:** The value at the requested sorted position
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## `weighted2` <Badge type="info" text="v1.0.0" />
|
|
285
|
+
|
|
286
|
+
Weighted random choice between two options (0 or 1) using an LCG seed.
|
|
287
|
+
|
|
288
|
+
```redscript
|
|
289
|
+
fn weighted2(seed: int, w0: int, w1: int): int
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Parameters**
|
|
293
|
+
|
|
294
|
+
| Parameter | Description |
|
|
295
|
+
|-----------|-------------|
|
|
296
|
+
| `seed` | LCG seed (any integer) |
|
|
297
|
+
| `w0` | Weight for option 0 (must be > 0) |
|
|
298
|
+
| `w1` | Weight for option 1 (must be > 0) |
|
|
299
|
+
|
|
300
|
+
**Returns:** 0 with probability w0/(w0+w1), 1 otherwise
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## `weighted3` <Badge type="info" text="v1.0.0" />
|
|
305
|
+
|
|
306
|
+
Weighted random choice among three options (0, 1, or 2) using an LCG seed.
|
|
307
|
+
|
|
308
|
+
```redscript
|
|
309
|
+
fn weighted3(seed: int, w0: int, w1: int, w2: int): int
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**Parameters**
|
|
313
|
+
|
|
314
|
+
| Parameter | Description |
|
|
315
|
+
|-----------|-------------|
|
|
316
|
+
| `seed` | LCG seed (any integer) |
|
|
317
|
+
| `w0` | Weight for option 0 |
|
|
318
|
+
| `w1` | Weight for option 1 |
|
|
319
|
+
| `w2` | Weight for option 2 |
|
|
320
|
+
|
|
321
|
+
**Returns:** 0, 1, or 2 proportional to the respective weights
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## `sort4` <Badge type="info" text="v1.0.0" />
|
|
326
|
+
|
|
327
|
+
Sort four values using an optimal 5-comparison sorting network, returning the value at `pos`.
|
|
328
|
+
|
|
329
|
+
```redscript
|
|
330
|
+
fn sort4(a: int, b: int, c: int, d: int, pos: int): int
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Parameters**
|
|
334
|
+
|
|
335
|
+
| Parameter | Description |
|
|
336
|
+
|-----------|-------------|
|
|
337
|
+
| `a` | Value 1 |
|
|
338
|
+
| `b` | Value 2 |
|
|
339
|
+
| `c` | Value 3 |
|
|
340
|
+
| `d` | Value 4 |
|
|
341
|
+
| `pos` | Desired position in sorted order (0 = min, 3 = max) |
|
|
342
|
+
|
|
343
|
+
**Returns:** The value at the requested sorted position
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## `sort5` <Badge type="info" text="v1.0.0" />
|
|
348
|
+
|
|
349
|
+
Sort five values using a 9-comparison Batcher odd-even merge sort network, returning the value at `pos`.
|
|
350
|
+
|
|
351
|
+
```redscript
|
|
352
|
+
fn sort5(a: int, b: int, c: int, d: int, e: int, pos: int): int
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**Parameters**
|
|
356
|
+
|
|
357
|
+
| Parameter | Description |
|
|
358
|
+
|-----------|-------------|
|
|
359
|
+
| `a` | Value 1 |
|
|
360
|
+
| `b` | Value 2 |
|
|
361
|
+
| `c` | Value 3 |
|
|
362
|
+
| `d` | Value 4 |
|
|
363
|
+
| `e` | Value 5 |
|
|
364
|
+
| `pos` | Desired position in sorted order (0 = min, 4 = max) |
|
|
365
|
+
|
|
366
|
+
**Returns:** The value at the requested sorted position
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## `list_sort_asc` <Badge type="info" text="v1.0.0" />
|
|
371
|
+
|
|
372
|
+
In-place ascending bubble sort for an array of any length.
|
|
373
|
+
Requires RedScript ≥ 2.4.0 (array parameter passed by reference).
|
|
374
|
+
|
|
375
|
+
```redscript
|
|
376
|
+
fn list_sort_asc(arr: int[], len: int)
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**Parameters**
|
|
380
|
+
|
|
381
|
+
| Parameter | Description |
|
|
382
|
+
|-----------|-------------|
|
|
383
|
+
| `arr` | Array to sort (modified in-place) |
|
|
384
|
+
| `len` | Number of elements to sort |
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## `list_sort_desc` <Badge type="info" text="v1.0.0" />
|
|
389
|
+
|
|
390
|
+
In-place descending bubble sort for an array of any length.
|
|
391
|
+
Requires RedScript ≥ 2.4.0 (array parameter passed by reference).
|
|
392
|
+
|
|
393
|
+
```redscript
|
|
394
|
+
fn list_sort_desc(arr: int[], len: int)
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
**Parameters**
|
|
398
|
+
|
|
399
|
+
| Parameter | Description |
|
|
400
|
+
|-----------|-------------|
|
|
401
|
+
| `arr` | Array to sort (modified in-place) |
|
|
402
|
+
| `len` | Number of elements to sort |
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## `list_sum` <Badge type="info" text="v1.0.0" />
|
|
407
|
+
|
|
408
|
+
Sum all elements of an array.
|
|
409
|
+
|
|
410
|
+
```redscript
|
|
411
|
+
fn list_sum(arr: int[], len: int): int
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**Parameters**
|
|
415
|
+
|
|
416
|
+
| Parameter | Description |
|
|
417
|
+
|-----------|-------------|
|
|
418
|
+
| `arr` | Input array |
|
|
419
|
+
| `len` | Number of elements |
|
|
420
|
+
|
|
421
|
+
**Returns:** Sum of arr[0..len)
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## `list_avg` <Badge type="info" text="v1.0.0" />
|
|
426
|
+
|
|
427
|
+
Arithmetic mean of an array as fixed-point × 10000.
|
|
428
|
+
|
|
429
|
+
```redscript
|
|
430
|
+
fn list_avg(arr: int[], len: int): int
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
**Parameters**
|
|
434
|
+
|
|
435
|
+
| Parameter | Description |
|
|
436
|
+
|-----------|-------------|
|
|
437
|
+
| `arr` | Input array |
|
|
438
|
+
| `len` | Number of elements (must be > 0) |
|
|
439
|
+
|
|
440
|
+
**Returns:** (sum × 10000) / len; returns 0 for empty array
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## `list_min` <Badge type="info" text="v1.0.0" />
|
|
445
|
+
|
|
446
|
+
Minimum element in an array.
|
|
447
|
+
|
|
448
|
+
```redscript
|
|
449
|
+
fn list_min(arr: int[], len: int): int
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
**Parameters**
|
|
453
|
+
|
|
454
|
+
| Parameter | Description |
|
|
455
|
+
|-----------|-------------|
|
|
456
|
+
| `arr` | Input array (must have at least one element) |
|
|
457
|
+
| `len` | Number of elements |
|
|
458
|
+
|
|
459
|
+
**Returns:** Smallest value in arr[0..len)
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
## `list_max` <Badge type="info" text="v1.0.0" />
|
|
464
|
+
|
|
465
|
+
Maximum element in an array.
|
|
466
|
+
|
|
467
|
+
```redscript
|
|
468
|
+
fn list_max(arr: int[], len: int): int
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
**Parameters**
|
|
472
|
+
|
|
473
|
+
| Parameter | Description |
|
|
474
|
+
|-----------|-------------|
|
|
475
|
+
| `arr` | Input array (must have at least one element) |
|
|
476
|
+
| `len` | Number of elements |
|
|
477
|
+
|
|
478
|
+
**Returns:** Largest value in arr[0..len)
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## `list_contains` <Badge type="info" text="v1.0.0" />
|
|
483
|
+
|
|
484
|
+
Test whether a value exists in an array.
|
|
485
|
+
|
|
486
|
+
```redscript
|
|
487
|
+
fn list_contains(arr: int[], len: int, val: int): int
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
**Parameters**
|
|
491
|
+
|
|
492
|
+
| Parameter | Description |
|
|
493
|
+
|-----------|-------------|
|
|
494
|
+
| `arr` | Input array |
|
|
495
|
+
| `len` | Number of elements |
|
|
496
|
+
| `val` | Value to search for |
|
|
497
|
+
|
|
498
|
+
**Returns:** 1 if val is found, 0 otherwise
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
## `list_index_of` <Badge type="info" text="v1.0.0" />
|
|
503
|
+
|
|
504
|
+
Find the first index of a value in an array.
|
|
505
|
+
|
|
506
|
+
```redscript
|
|
507
|
+
fn list_index_of(arr: int[], len: int, val: int): int
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
**Parameters**
|
|
511
|
+
|
|
512
|
+
| Parameter | Description |
|
|
513
|
+
|-----------|-------------|
|
|
514
|
+
| `arr` | Input array |
|
|
515
|
+
| `len` | Number of elements |
|
|
516
|
+
| `val` | Value to search for |
|
|
517
|
+
|
|
518
|
+
**Returns:** First index of val, or -1 if not found
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
## `list_shuffle` <Badge type="info" text="v1.0.0" />
|
|
523
|
+
|
|
524
|
+
Fisher-Yates in-place shuffle using a linear congruential generator.
|
|
525
|
+
|
|
526
|
+
```redscript
|
|
527
|
+
fn list_shuffle(arr: int[], len: int, seed: int): int[]
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
**Parameters**
|
|
531
|
+
|
|
532
|
+
| Parameter | Description |
|
|
533
|
+
|-----------|-------------|
|
|
534
|
+
| `arr` | Array to shuffle (modified in-place) |
|
|
535
|
+
| `len` | Number of elements |
|
|
536
|
+
| `seed` | Initial LCG seed (any integer) |
|
|
537
|
+
|
|
538
|
+
**Returns:** The shuffled array (same reference as arr)
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
## `list_dedup_count` <Badge type="info" text="v1.0.0" />
|
|
543
|
+
|
|
544
|
+
Count the number of unique values in an array (O(n²); suitable for small arrays).
|
|
545
|
+
|
|
546
|
+
```redscript
|
|
547
|
+
fn list_dedup_count(arr: int[], len: int): int
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
**Parameters**
|
|
551
|
+
|
|
552
|
+
| Parameter | Description |
|
|
553
|
+
|-----------|-------------|
|
|
554
|
+
| `arr` | Input array |
|
|
555
|
+
| `len` | Number of elements |
|
|
556
|
+
|
|
557
|
+
**Returns:** Count of distinct values in arr[0..len)
|
|
558
|
+
|
|
559
|
+
---
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Map
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/map.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [map_set](#map-set)
|
|
8
|
+
- [map_get](#map-get)
|
|
9
|
+
- [map_has](#map-has)
|
|
10
|
+
- [map_delete](#map-delete)
|
|
11
|
+
- [map_clear](#map-clear)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## `map_set` <Badge type="info" text="v3.0.0" />
|
|
16
|
+
|
|
17
|
+
Stores an integer value in `storage rs:maps.{map_name}.{key}`.
|
|
18
|
+
|
|
19
|
+
This creates the parent compound on demand if it does not already exist.
|
|
20
|
+
Both `map_name` and `key` are inserted directly into the NBT path, so they
|
|
21
|
+
must be valid path segments.
|
|
22
|
+
|
|
23
|
+
```redscript
|
|
24
|
+
fn map_set(map_name: string, key: string, value: int)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Parameters**
|
|
28
|
+
|
|
29
|
+
| Parameter | Description |
|
|
30
|
+
|-----------|-------------|
|
|
31
|
+
| `map_name` | Top-level map name under `storage rs:maps` |
|
|
32
|
+
| `key` | Key name inside the selected map compound |
|
|
33
|
+
| `value` | Integer value to write |
|
|
34
|
+
|
|
35
|
+
**Example**
|
|
36
|
+
|
|
37
|
+
```redscript
|
|
38
|
+
map_set("Stats", "kills", 7)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## `map_get` <Badge type="info" text="v3.0.0" />
|
|
44
|
+
|
|
45
|
+
Reads an integer value from `storage rs:maps.{map_name}.{key}`.
|
|
46
|
+
|
|
47
|
+
If the path does not exist, this function returns `0`.
|
|
48
|
+
|
|
49
|
+
```redscript
|
|
50
|
+
fn map_get(map_name: string, key: string): int
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Parameters**
|
|
54
|
+
|
|
55
|
+
| Parameter | Description |
|
|
56
|
+
|-----------|-------------|
|
|
57
|
+
| `map_name` | Top-level map name under `storage rs:maps` |
|
|
58
|
+
| `key` | Key name inside the selected map compound |
|
|
59
|
+
|
|
60
|
+
**Returns:** Stored integer value, or `0` if the key is missing
|
|
61
|
+
|
|
62
|
+
**Example**
|
|
63
|
+
|
|
64
|
+
```redscript
|
|
65
|
+
let kills: int = map_get("Stats", "kills")
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## `map_has` <Badge type="info" text="v3.0.0" />
|
|
71
|
+
|
|
72
|
+
Checks whether `storage rs:maps.{map_name}.{key}` exists.
|
|
73
|
+
|
|
74
|
+
```redscript
|
|
75
|
+
fn map_has(map_name: string, key: string): int
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Parameters**
|
|
79
|
+
|
|
80
|
+
| Parameter | Description |
|
|
81
|
+
|-----------|-------------|
|
|
82
|
+
| `map_name` | Top-level map name under `storage rs:maps` |
|
|
83
|
+
| `key` | Key name inside the selected map compound |
|
|
84
|
+
|
|
85
|
+
**Returns:** `1` if the key exists, otherwise `0`
|
|
86
|
+
|
|
87
|
+
**Example**
|
|
88
|
+
|
|
89
|
+
```redscript
|
|
90
|
+
if (map_has("Stats", "kills") == 1) { }
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## `map_delete` <Badge type="info" text="v3.0.0" />
|
|
96
|
+
|
|
97
|
+
Removes a key from the selected map compound.
|
|
98
|
+
|
|
99
|
+
Removing a missing key is a no-op in Minecraft.
|
|
100
|
+
|
|
101
|
+
```redscript
|
|
102
|
+
fn map_delete(map_name: string, key: string)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Parameters**
|
|
106
|
+
|
|
107
|
+
| Parameter | Description |
|
|
108
|
+
|-----------|-------------|
|
|
109
|
+
| `map_name` | Top-level map name under `storage rs:maps` |
|
|
110
|
+
| `key` | Key name inside the selected map compound |
|
|
111
|
+
|
|
112
|
+
**Example**
|
|
113
|
+
|
|
114
|
+
```redscript
|
|
115
|
+
map_delete("Stats", "kills")
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## `map_clear` <Badge type="info" text="v3.0.0" />
|
|
121
|
+
|
|
122
|
+
Removes the entire map compound from `storage rs:maps`.
|
|
123
|
+
|
|
124
|
+
```redscript
|
|
125
|
+
fn map_clear(map_name: string)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Parameters**
|
|
129
|
+
|
|
130
|
+
| Parameter | Description |
|
|
131
|
+
|-----------|-------------|
|
|
132
|
+
| `map_name` | Top-level map name under `storage rs:maps` |
|
|
133
|
+
|
|
134
|
+
**Example**
|
|
135
|
+
|
|
136
|
+
```redscript
|
|
137
|
+
map_clear("Stats")
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|