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,104 @@
|
|
|
1
|
+
# Sort
|
|
2
|
+
|
|
3
|
+
> 本文档由 `src/stdlib/sort.mcrs` 自动生成,请勿手动编辑。
|
|
4
|
+
|
|
5
|
+
## API 列表
|
|
6
|
+
|
|
7
|
+
- [insertion_sort](#insertion-sort)
|
|
8
|
+
- [insertion_sort_desc](#insertion-sort-desc)
|
|
9
|
+
- [sort_merge](#sort-merge)
|
|
10
|
+
- [merge_sort_noop](#merge-sort-noop)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## `insertion_sort` <Badge type="info" text="v1.0.0" />
|
|
15
|
+
|
|
16
|
+
就地升序排序整数数组(插入排序,O(n²),适合 n≤64)
|
|
17
|
+
|
|
18
|
+
```redscript
|
|
19
|
+
fn insertion_sort(arr: int[], len: int)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**参数**
|
|
23
|
+
|
|
24
|
+
| 参数 | 说明 |
|
|
25
|
+
|------|------|
|
|
26
|
+
| `arr` | 要排序的整数数组(就地修改) |
|
|
27
|
+
| `len` | 要排序的元素数量(arr[0..len-1]) |
|
|
28
|
+
|
|
29
|
+
**返回:** void — 调用后 arr 升序排列
|
|
30
|
+
|
|
31
|
+
**示例**
|
|
32
|
+
|
|
33
|
+
```redscript
|
|
34
|
+
let data: int[] = [30, 10, 50, 20]
|
|
35
|
+
insertion_sort(data, 4)
|
|
36
|
+
// data is now [10, 20, 30, 50]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## `insertion_sort_desc` <Badge type="info" text="v1.0.0" />
|
|
42
|
+
|
|
43
|
+
就地降序排序整数数组(插入排序)
|
|
44
|
+
|
|
45
|
+
```redscript
|
|
46
|
+
fn insertion_sort_desc(arr: int[], len: int)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**参数**
|
|
50
|
+
|
|
51
|
+
| 参数 | 说明 |
|
|
52
|
+
|------|------|
|
|
53
|
+
| `arr` | 要排序的整数数组(就地修改) |
|
|
54
|
+
| `len` | 要排序的元素数量 |
|
|
55
|
+
|
|
56
|
+
**返回:** void — 调用后 arr 降序排列
|
|
57
|
+
|
|
58
|
+
**示例**
|
|
59
|
+
|
|
60
|
+
```redscript
|
|
61
|
+
let scores: int[] = [30, 10, 50, 20]
|
|
62
|
+
insertion_sort_desc(scores, 4)
|
|
63
|
+
// scores is now [50, 30, 20, 10]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## `sort_merge` <Badge type="info" text="v1.0.0" />
|
|
69
|
+
|
|
70
|
+
将两个已排序数组合并为一个新的排序数组
|
|
71
|
+
|
|
72
|
+
```redscript
|
|
73
|
+
fn sort_merge(a: int[], la: int, b: int[], lb: int): int[]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**参数**
|
|
77
|
+
|
|
78
|
+
| 参数 | 说明 |
|
|
79
|
+
|------|------|
|
|
80
|
+
| `a` | 第一个已排序数组 |
|
|
81
|
+
| `la` | a 的元素数量 |
|
|
82
|
+
| `b` | 第二个已排序数组 |
|
|
83
|
+
| `lb` | b 的元素数量 |
|
|
84
|
+
|
|
85
|
+
**返回:** 包含 a 和 b 所有元素的新排序 int[],长度 la+lb
|
|
86
|
+
|
|
87
|
+
**示例**
|
|
88
|
+
|
|
89
|
+
```redscript
|
|
90
|
+
let merged: int[] = sort_merge([1, 3, 5], 3, [2, 4, 6], 3)
|
|
91
|
+
// result: [1, 2, 3, 4, 5, 6]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## `merge_sort_noop` <Badge type="info" text="v1.0.0" />
|
|
97
|
+
|
|
98
|
+
Default no-op callback for merge_sort_coro. Replace with your own handler to react when sorting completes.
|
|
99
|
+
|
|
100
|
+
```redscript
|
|
101
|
+
fn merge_sort_noop()
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Spawn
|
|
2
|
+
|
|
3
|
+
> 本文档由 `src/stdlib/spawn.mcrs` 自动生成,请勿手动编辑。
|
|
4
|
+
|
|
5
|
+
## API 列表
|
|
6
|
+
|
|
7
|
+
- [teleport_to](#teleport-to)
|
|
8
|
+
- [teleport_to_entity](#teleport-to-entity)
|
|
9
|
+
- [spread_players](#spread-players)
|
|
10
|
+
- [gather_all](#gather-all)
|
|
11
|
+
- [launch_up](#launch-up)
|
|
12
|
+
- [goto_lobby](#goto-lobby)
|
|
13
|
+
- [goto_arena](#goto-arena)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## `teleport_to`
|
|
18
|
+
|
|
19
|
+
将目标选择器传送到固定坐标
|
|
20
|
+
|
|
21
|
+
```redscript
|
|
22
|
+
fn teleport_to(target: selector, x: int, y: int, z: int)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**参数**
|
|
26
|
+
|
|
27
|
+
| 参数 | 说明 |
|
|
28
|
+
|------|------|
|
|
29
|
+
| `target` | 要传送的目标选择器 |
|
|
30
|
+
| `x` | 目标 X 坐标 |
|
|
31
|
+
| `y` | 目标 Y 坐标 |
|
|
32
|
+
| `z` | 目标 Z 坐标 |
|
|
33
|
+
|
|
34
|
+
**示例**
|
|
35
|
+
|
|
36
|
+
```redscript
|
|
37
|
+
teleport_to(@p, 0, 64, 0)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## `teleport_to_entity`
|
|
43
|
+
|
|
44
|
+
将目标选择器传送到另一个实体当前位置
|
|
45
|
+
|
|
46
|
+
```redscript
|
|
47
|
+
fn teleport_to_entity(target: selector, dest: selector)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**参数**
|
|
51
|
+
|
|
52
|
+
| 参数 | 说明 |
|
|
53
|
+
|------|------|
|
|
54
|
+
| `target` | 要传送的目标选择器 |
|
|
55
|
+
| `dest` | 作为目的地的实体选择器 |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## `spread_players`
|
|
60
|
+
|
|
61
|
+
预留的随机分散玩家辅助函数;当前仅输出提示消息,尚未真正执行 spreadplayers
|
|
62
|
+
|
|
63
|
+
```redscript
|
|
64
|
+
fn spread_players(x: int, z: int, radius: int)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**参数**
|
|
68
|
+
|
|
69
|
+
| 参数 | 说明 |
|
|
70
|
+
|------|------|
|
|
71
|
+
| `x` | 中心点 X 坐标 |
|
|
72
|
+
| `z` | 中心点 Z 坐标 |
|
|
73
|
+
| `radius` | 最大分散半径(方块) |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## `gather_all`
|
|
78
|
+
|
|
79
|
+
将所有玩家传送到同一位置
|
|
80
|
+
|
|
81
|
+
```redscript
|
|
82
|
+
fn gather_all(x: int, y: int, z: int)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**参数**
|
|
86
|
+
|
|
87
|
+
| 参数 | 说明 |
|
|
88
|
+
|------|------|
|
|
89
|
+
| `x` | 目标 X 坐标 |
|
|
90
|
+
| `y` | 目标 Y 坐标 |
|
|
91
|
+
| `z` | 目标 Z 坐标 |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## `launch_up`
|
|
96
|
+
|
|
97
|
+
按相对坐标将目标向上抬升
|
|
98
|
+
|
|
99
|
+
```redscript
|
|
100
|
+
fn launch_up(target: selector, height: int)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**参数**
|
|
104
|
+
|
|
105
|
+
| 参数 | 说明 |
|
|
106
|
+
|------|------|
|
|
107
|
+
| `target` | 要传送的目标选择器 |
|
|
108
|
+
| `height` | 相对 Y 偏移(方块) |
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## `goto_lobby`
|
|
113
|
+
|
|
114
|
+
将目标传送到内置大厅坐标,并显示欢迎标题
|
|
115
|
+
|
|
116
|
+
```redscript
|
|
117
|
+
fn goto_lobby(target: selector)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**参数**
|
|
121
|
+
|
|
122
|
+
| 参数 | 说明 |
|
|
123
|
+
|------|------|
|
|
124
|
+
| `target` | 要传送到大厅的目标选择器 |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## `goto_arena`
|
|
129
|
+
|
|
130
|
+
将目标传送到内置竞技场坐标,并显示开战标题
|
|
131
|
+
|
|
132
|
+
```redscript
|
|
133
|
+
fn goto_arena(target: selector)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**参数**
|
|
137
|
+
|
|
138
|
+
| 参数 | 说明 |
|
|
139
|
+
|------|------|
|
|
140
|
+
| `target` | 要传送到竞技场的目标选择器 |
|
|
141
|
+
|
|
142
|
+
---
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# State
|
|
2
|
+
|
|
3
|
+
> 本文档由 `src/stdlib/state.mcrs` 自动生成,请勿手动编辑。
|
|
4
|
+
|
|
5
|
+
## API 列表
|
|
6
|
+
|
|
7
|
+
- [get_state](#get-state)
|
|
8
|
+
- [set_state](#set-state)
|
|
9
|
+
- [is_state](#is-state)
|
|
10
|
+
- [init_state](#init-state)
|
|
11
|
+
- [transition](#transition)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## `get_state` <Badge type="info" text="v1.0.0" />
|
|
16
|
+
|
|
17
|
+
读取实体的当前状态值
|
|
18
|
+
|
|
19
|
+
```redscript
|
|
20
|
+
fn get_state(entity: selector) -> int
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**参数**
|
|
24
|
+
|
|
25
|
+
| 参数 | 说明 |
|
|
26
|
+
|------|------|
|
|
27
|
+
| `entity` | 目标实体选择器 |
|
|
28
|
+
|
|
29
|
+
**返回:** rs.state 中存储的状态值;未初始化时返回 -1
|
|
30
|
+
|
|
31
|
+
**示例**
|
|
32
|
+
|
|
33
|
+
```redscript
|
|
34
|
+
let s: int = get_state(@s)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## `set_state` <Badge type="info" text="v1.0.0" />
|
|
40
|
+
|
|
41
|
+
将状态值写入实体
|
|
42
|
+
|
|
43
|
+
```redscript
|
|
44
|
+
fn set_state(entity: selector, state: int)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**参数**
|
|
48
|
+
|
|
49
|
+
| 参数 | 说明 |
|
|
50
|
+
|------|------|
|
|
51
|
+
| `entity` | 目标实体选择器 |
|
|
52
|
+
| `state` | 要写入的整数状态常量 |
|
|
53
|
+
|
|
54
|
+
**示例**
|
|
55
|
+
|
|
56
|
+
```redscript
|
|
57
|
+
set_state(@s, 1)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## `is_state` <Badge type="info" text="v1.0.0" />
|
|
63
|
+
|
|
64
|
+
检查实体当前是否处于指定状态
|
|
65
|
+
|
|
66
|
+
```redscript
|
|
67
|
+
fn is_state(entity: selector, state: int) -> int
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**参数**
|
|
71
|
+
|
|
72
|
+
| 参数 | 说明 |
|
|
73
|
+
|------|------|
|
|
74
|
+
| `entity` | 目标实体选择器 |
|
|
75
|
+
| `state` | 要对比的整数状态常量 |
|
|
76
|
+
|
|
77
|
+
**返回:** 实体处于该状态返回 1,否则返回 0
|
|
78
|
+
|
|
79
|
+
**示例**
|
|
80
|
+
|
|
81
|
+
```redscript
|
|
82
|
+
if (is_state(@s, STATE_COMBAT) == 1) { /* per-tick combat logic */ }
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## `init_state` <Badge type="info" text="v1.0.0" />
|
|
88
|
+
|
|
89
|
+
仅在实体未初始化时(得分为 -1)写入初始状态,避免覆盖进行中的状态
|
|
90
|
+
|
|
91
|
+
```redscript
|
|
92
|
+
fn init_state(entity: selector, initial: int)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**参数**
|
|
96
|
+
|
|
97
|
+
| 参数 | 说明 |
|
|
98
|
+
|------|------|
|
|
99
|
+
| `entity` | 目标实体选择器 |
|
|
100
|
+
| `initial` | 未初始化时写入的状态常量 |
|
|
101
|
+
|
|
102
|
+
**示例**
|
|
103
|
+
|
|
104
|
+
```redscript
|
|
105
|
+
init_state(@s, STATE_IDLE)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## `transition` <Badge type="info" text="v1.0.0" />
|
|
111
|
+
|
|
112
|
+
仅当实体处于 from 状态时执行受保护的状态转换
|
|
113
|
+
|
|
114
|
+
```redscript
|
|
115
|
+
fn transition(entity: selector, from: int, to: int) -> int
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**参数**
|
|
119
|
+
|
|
120
|
+
| 参数 | 说明 |
|
|
121
|
+
|------|------|
|
|
122
|
+
| `entity` | 目标实体选择器 |
|
|
123
|
+
| `from` | 所需的当前状态 |
|
|
124
|
+
| `to` | 目标状态 |
|
|
125
|
+
|
|
126
|
+
**返回:** 转换成功返回 1;实体不在 from 状态返回 0
|
|
127
|
+
|
|
128
|
+
**示例**
|
|
129
|
+
|
|
130
|
+
```redscript
|
|
131
|
+
let ok: int = transition(@s, STATE_IDLE, STATE_COMBAT)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Strings
|
|
2
|
+
|
|
3
|
+
> 本文档由 `src/stdlib/strings.mcrs` 自动生成,请勿手动编辑。
|
|
4
|
+
|
|
5
|
+
## API 列表
|
|
6
|
+
|
|
7
|
+
- [str_len](#str-len)
|
|
8
|
+
- [str_concat](#str-concat)
|
|
9
|
+
- [str_contains](#str-contains)
|
|
10
|
+
- [str_slice](#str-slice)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## `str_len` <Badge type="info" text="v1.0.0" />
|
|
15
|
+
|
|
16
|
+
返回 rs:strings.{s} 中字符串的长度(MC 限制:普通字符串总返回 1)
|
|
17
|
+
|
|
18
|
+
```redscript
|
|
19
|
+
fn str_len(s: string) -> int
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**参数**
|
|
23
|
+
|
|
24
|
+
| 参数 | 说明 |
|
|
25
|
+
|------|------|
|
|
26
|
+
| `s` | rs:strings 中的 NBT 字段名(如 "A") |
|
|
27
|
+
|
|
28
|
+
**返回:** 普通字符串返回 1;字符列表返回元素数量
|
|
29
|
+
|
|
30
|
+
**示例**
|
|
31
|
+
|
|
32
|
+
```redscript
|
|
33
|
+
str_len("A") // result: 1 (plain string) or char count (char-list)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## `str_concat` <Badge type="info" text="v1.0.0" />
|
|
39
|
+
|
|
40
|
+
将 rs:strings 中的两个字符串拼接,结果以 NBT 列表形式写入 rs:strings.Result
|
|
41
|
+
|
|
42
|
+
```redscript
|
|
43
|
+
fn str_concat(a: string, b: string)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**参数**
|
|
47
|
+
|
|
48
|
+
| 参数 | 说明 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| `a` | 第一个字符串的 NBT 字段名(如 "A") |
|
|
51
|
+
| `b` | 第二个字符串的 NBT 字段名(如 "B") |
|
|
52
|
+
|
|
53
|
+
**返回:** rs:strings.Result 被设为 [valueA, valueB] 的 NBT 列表
|
|
54
|
+
|
|
55
|
+
**示例**
|
|
56
|
+
|
|
57
|
+
```redscript
|
|
58
|
+
str_concat("A", "B") // rs:strings.Result = ["hello", "world"]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## `str_contains` <Badge type="info" text="v1.0.0" />
|
|
64
|
+
|
|
65
|
+
检测 rs:strings.{s} 是否包含 rs:strings.{sub}(因 MC 限制始终返回 0)
|
|
66
|
+
|
|
67
|
+
```redscript
|
|
68
|
+
fn str_contains(s: string, sub: string) -> int
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**参数**
|
|
72
|
+
|
|
73
|
+
| 参数 | 说明 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| `s` | 被搜索字符串的 NBT 字段名 |
|
|
76
|
+
| `sub` | 子字符串的 NBT 字段名 |
|
|
77
|
+
|
|
78
|
+
**返回:** 0(始终,MC 原生不支持子串搜索)
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## `str_slice` <Badge type="info" text="v2.2.0" />
|
|
83
|
+
|
|
84
|
+
从 rs:strings.{s} 中提取子串,写入 rs:strings.Result(需要 MC 1.20.2+)
|
|
85
|
+
|
|
86
|
+
```redscript
|
|
87
|
+
fn str_slice(s: string, start: int, end: int)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**参数**
|
|
91
|
+
|
|
92
|
+
| 参数 | 说明 |
|
|
93
|
+
|------|------|
|
|
94
|
+
| `s` | 源字符串的 NBT 字段名(如 "A") |
|
|
95
|
+
| `start` | 起始索引(含,0-based) |
|
|
96
|
+
| `end` | 结束索引(不含,负数从末尾计) |
|
|
97
|
+
|
|
98
|
+
**返回:** rs:strings.Result 包含提取的子串
|
|
99
|
+
|
|
100
|
+
**示例**
|
|
101
|
+
|
|
102
|
+
```redscript
|
|
103
|
+
str_slice("A", 0, 5) // first 5 chars of rs:strings.A
|
|
104
|
+
str_slice("A", 2, -1) // drop first 2 and last 1 chars
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|