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,324 @@
|
|
|
1
|
+
# Effects
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/effects.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [speed](#speed)
|
|
8
|
+
- [jump](#jump)
|
|
9
|
+
- [regen](#regen)
|
|
10
|
+
- [resistance](#resistance)
|
|
11
|
+
- [strength](#strength)
|
|
12
|
+
- [invisible](#invisible)
|
|
13
|
+
- [night_vision](#night-vision)
|
|
14
|
+
- [slow_fall](#slow-fall)
|
|
15
|
+
- [glow](#glow)
|
|
16
|
+
- [clear_effects](#clear-effects)
|
|
17
|
+
- [clear_effect](#clear-effect)
|
|
18
|
+
- [buff_all](#buff-all)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## `speed` <Badge type="info" text="v1.0.0" />
|
|
23
|
+
|
|
24
|
+
Give a speed boost to the target entity.
|
|
25
|
+
|
|
26
|
+
```redscript
|
|
27
|
+
fn speed(target: selector, duration: int, level: int)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Parameters**
|
|
31
|
+
|
|
32
|
+
| Parameter | Description |
|
|
33
|
+
|-----------|-------------|
|
|
34
|
+
| `target` | Entity selector (e.g. @p, @a, @e[...]) |
|
|
35
|
+
| `duration` | Effect duration in ticks (20 ticks = 1 second) |
|
|
36
|
+
| `level` | Amplifier level (0 = Speed I, 1 = Speed II, ...) |
|
|
37
|
+
|
|
38
|
+
**Returns:** void — applies minecraft:speed effect
|
|
39
|
+
|
|
40
|
+
**Example**
|
|
41
|
+
|
|
42
|
+
```redscript
|
|
43
|
+
speed(@p, 200, 1) // Speed II for 10 seconds
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## `jump` <Badge type="info" text="v1.0.0" />
|
|
49
|
+
|
|
50
|
+
Give a jump boost to the target entity.
|
|
51
|
+
|
|
52
|
+
```redscript
|
|
53
|
+
fn jump(target: selector, duration: int, level: int)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Parameters**
|
|
57
|
+
|
|
58
|
+
| Parameter | Description |
|
|
59
|
+
|-----------|-------------|
|
|
60
|
+
| `target` | Entity selector |
|
|
61
|
+
| `duration` | Effect duration in ticks |
|
|
62
|
+
| `level` | Amplifier level (0 = Jump Boost I, 1 = Jump Boost II, ...) |
|
|
63
|
+
|
|
64
|
+
**Returns:** void — applies minecraft:jump_boost effect
|
|
65
|
+
|
|
66
|
+
**Example**
|
|
67
|
+
|
|
68
|
+
```redscript
|
|
69
|
+
jump(@p, 100, 0) // Jump Boost I for 5 seconds
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## `regen` <Badge type="info" text="v1.0.0" />
|
|
75
|
+
|
|
76
|
+
Give regeneration to the target entity.
|
|
77
|
+
|
|
78
|
+
```redscript
|
|
79
|
+
fn regen(target: selector, duration: int, level: int)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Parameters**
|
|
83
|
+
|
|
84
|
+
| Parameter | Description |
|
|
85
|
+
|-----------|-------------|
|
|
86
|
+
| `target` | Entity selector |
|
|
87
|
+
| `duration` | Effect duration in ticks |
|
|
88
|
+
| `level` | Amplifier level (0 = Regeneration I, ...) |
|
|
89
|
+
|
|
90
|
+
**Returns:** void — applies minecraft:regeneration effect
|
|
91
|
+
|
|
92
|
+
**Example**
|
|
93
|
+
|
|
94
|
+
```redscript
|
|
95
|
+
regen(@p, 60, 0) // Regeneration I for 3 seconds
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## `resistance` <Badge type="info" text="v1.0.0" />
|
|
101
|
+
|
|
102
|
+
Give damage resistance to the target entity.
|
|
103
|
+
|
|
104
|
+
```redscript
|
|
105
|
+
fn resistance(target: selector, duration: int, level: int)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Parameters**
|
|
109
|
+
|
|
110
|
+
| Parameter | Description |
|
|
111
|
+
|-----------|-------------|
|
|
112
|
+
| `target` | Entity selector |
|
|
113
|
+
| `duration` | Effect duration in ticks |
|
|
114
|
+
| `level` | Amplifier level (0 = Resistance I, ...) |
|
|
115
|
+
|
|
116
|
+
**Returns:** void — applies minecraft:resistance effect
|
|
117
|
+
|
|
118
|
+
**Example**
|
|
119
|
+
|
|
120
|
+
```redscript
|
|
121
|
+
resistance(@p, 400, 0) // Resistance I for 20 seconds
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## `strength` <Badge type="info" text="v1.0.0" />
|
|
127
|
+
|
|
128
|
+
Give strength to the target entity.
|
|
129
|
+
|
|
130
|
+
```redscript
|
|
131
|
+
fn strength(target: selector, duration: int, level: int)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Parameters**
|
|
135
|
+
|
|
136
|
+
| Parameter | Description |
|
|
137
|
+
|-----------|-------------|
|
|
138
|
+
| `target` | Entity selector |
|
|
139
|
+
| `duration` | Effect duration in ticks |
|
|
140
|
+
| `level` | Amplifier level (0 = Strength I, 1 = Strength II, ...) |
|
|
141
|
+
|
|
142
|
+
**Returns:** void — applies minecraft:strength effect
|
|
143
|
+
|
|
144
|
+
**Example**
|
|
145
|
+
|
|
146
|
+
```redscript
|
|
147
|
+
strength(@p, 200, 1) // Strength II for 10 seconds
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## `invisible` <Badge type="info" text="v1.0.0" />
|
|
153
|
+
|
|
154
|
+
Make the target entity invisible.
|
|
155
|
+
|
|
156
|
+
```redscript
|
|
157
|
+
fn invisible(target: selector, duration: int)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Parameters**
|
|
161
|
+
|
|
162
|
+
| Parameter | Description |
|
|
163
|
+
|-----------|-------------|
|
|
164
|
+
| `target` | Entity selector |
|
|
165
|
+
| `duration` | Effect duration in ticks |
|
|
166
|
+
|
|
167
|
+
**Returns:** void — applies minecraft:invisibility at amplifier 0
|
|
168
|
+
|
|
169
|
+
**Example**
|
|
170
|
+
|
|
171
|
+
```redscript
|
|
172
|
+
invisible(@p, 300) // invisibility for 15 seconds
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## `night_vision` <Badge type="info" text="v1.0.0" />
|
|
178
|
+
|
|
179
|
+
Give night vision to the target entity.
|
|
180
|
+
|
|
181
|
+
```redscript
|
|
182
|
+
fn night_vision(target: selector, duration: int)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Parameters**
|
|
186
|
+
|
|
187
|
+
| Parameter | Description |
|
|
188
|
+
|-----------|-------------|
|
|
189
|
+
| `target` | Entity selector |
|
|
190
|
+
| `duration` | Effect duration in ticks |
|
|
191
|
+
|
|
192
|
+
**Returns:** void — applies minecraft:night_vision at amplifier 0
|
|
193
|
+
|
|
194
|
+
**Example**
|
|
195
|
+
|
|
196
|
+
```redscript
|
|
197
|
+
night_vision(@p, 6000) // night vision for 5 minutes
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## `slow_fall` <Badge type="info" text="v1.0.0" />
|
|
203
|
+
|
|
204
|
+
Give slow falling to the target entity.
|
|
205
|
+
|
|
206
|
+
```redscript
|
|
207
|
+
fn slow_fall(target: selector, duration: int)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Parameters**
|
|
211
|
+
|
|
212
|
+
| Parameter | Description |
|
|
213
|
+
|-----------|-------------|
|
|
214
|
+
| `target` | Entity selector |
|
|
215
|
+
| `duration` | Effect duration in ticks |
|
|
216
|
+
|
|
217
|
+
**Returns:** void — applies minecraft:slow_falling at amplifier 0
|
|
218
|
+
|
|
219
|
+
**Example**
|
|
220
|
+
|
|
221
|
+
```redscript
|
|
222
|
+
slow_fall(@p, 200) // slow falling for 10 seconds
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## `glow` <Badge type="info" text="v1.0.0" />
|
|
228
|
+
|
|
229
|
+
Give the glowing outline effect to the target entity.
|
|
230
|
+
|
|
231
|
+
```redscript
|
|
232
|
+
fn glow(target: selector, duration: int)
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Parameters**
|
|
236
|
+
|
|
237
|
+
| Parameter | Description |
|
|
238
|
+
|-----------|-------------|
|
|
239
|
+
| `target` | Entity selector |
|
|
240
|
+
| `duration` | Effect duration in ticks |
|
|
241
|
+
|
|
242
|
+
**Returns:** void — applies minecraft:glowing at amplifier 0
|
|
243
|
+
|
|
244
|
+
**Example**
|
|
245
|
+
|
|
246
|
+
```redscript
|
|
247
|
+
glow(@e[type=zombie], 100) // make all zombies glow for 5 seconds
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## `clear_effects` <Badge type="info" text="v1.0.0" />
|
|
253
|
+
|
|
254
|
+
Clear all active effects from the target entity.
|
|
255
|
+
|
|
256
|
+
```redscript
|
|
257
|
+
fn clear_effects(target: selector)
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Parameters**
|
|
261
|
+
|
|
262
|
+
| Parameter | Description |
|
|
263
|
+
|-----------|-------------|
|
|
264
|
+
| `target` | Entity selector |
|
|
265
|
+
|
|
266
|
+
**Returns:** void — removes all potion effects via effect_clear
|
|
267
|
+
|
|
268
|
+
**Example**
|
|
269
|
+
|
|
270
|
+
```redscript
|
|
271
|
+
clear_effects(@p) // remove all effects from nearest player
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## `clear_effect` <Badge type="info" text="v1.0.0" />
|
|
277
|
+
|
|
278
|
+
Clear a specific effect from the target entity.
|
|
279
|
+
|
|
280
|
+
```redscript
|
|
281
|
+
fn clear_effect(target: selector, eff: string)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**Parameters**
|
|
285
|
+
|
|
286
|
+
| Parameter | Description |
|
|
287
|
+
|-----------|-------------|
|
|
288
|
+
| `target` | Entity selector |
|
|
289
|
+
| `eff` | Effect resource location string (e.g. "minecraft:speed") |
|
|
290
|
+
|
|
291
|
+
**Returns:** void — removes the specified potion effect
|
|
292
|
+
|
|
293
|
+
**Example**
|
|
294
|
+
|
|
295
|
+
```redscript
|
|
296
|
+
clear_effect(@p, "minecraft:poison") // cure poison
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## `buff_all` <Badge type="info" text="v1.0.0" />
|
|
302
|
+
|
|
303
|
+
Apply a full buff package (Speed I, Strength I, Regeneration I, Resistance I).
|
|
304
|
+
|
|
305
|
+
```redscript
|
|
306
|
+
fn buff_all(target: selector, duration: int)
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**Parameters**
|
|
310
|
+
|
|
311
|
+
| Parameter | Description |
|
|
312
|
+
|-----------|-------------|
|
|
313
|
+
| `target` | Entity selector |
|
|
314
|
+
| `duration` | Duration in ticks for all four effects |
|
|
315
|
+
|
|
316
|
+
**Returns:** void — applies speed, strength, regen, and resistance at level 1 (or 0 for resistance)
|
|
317
|
+
|
|
318
|
+
**Example**
|
|
319
|
+
|
|
320
|
+
```redscript
|
|
321
|
+
buff_all(@p, 600) // full buff for 30 seconds
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Expr
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/expr.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [expr_eval](#expr-eval)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## `expr_eval` <Badge type="info" text="v1.2.0" />
|
|
12
|
+
|
|
13
|
+
Evaluate an RPN (Reverse Polish Notation) token stream with a single variable substitution.
|
|
14
|
+
|
|
15
|
+
Token encoding (all values × 10000):
|
|
16
|
+
- Positive integer: literal value pushed onto the stack
|
|
17
|
+
- `-10000`: variable `x` (replaced by the `x` argument)
|
|
18
|
+
- `-1` ADD, `-2` SUB, `-3` MUL (fixed-point), `-4` DIV (fixed-point)
|
|
19
|
+
- `-5` SIN (degrees × 10000 → result × 10000), `-6` COS, `-7` SQRT, `-8` ABS
|
|
20
|
+
|
|
21
|
+
Internal stack depth: 16 elements. Behaviour is undefined for malformed token streams.
|
|
22
|
+
|
|
23
|
+
```redscript
|
|
24
|
+
fn expr_eval(tokens: int[], n: int, x: int): int
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Parameters**
|
|
28
|
+
|
|
29
|
+
| Parameter | Description |
|
|
30
|
+
|-----------|-------------|
|
|
31
|
+
| `tokens` | RPN token array of length n |
|
|
32
|
+
| `n` | Number of tokens |
|
|
33
|
+
| `x` | Variable value × 10000 substituted for token `-10000` |
|
|
34
|
+
|
|
35
|
+
**Returns:** Top-of-stack value × 10000 after evaluating all tokens
|
|
36
|
+
|
|
37
|
+
**Example**
|
|
38
|
+
|
|
39
|
+
```redscript
|
|
40
|
+
// 2*x + 1 → RPN: [20000, -10000, -3, 10000, -1]
|
|
41
|
+
let prog: int[] = [20000, -10000, -3, 10000, -1];
|
|
42
|
+
expr_eval(prog, 5, 15000); // 40000 (2×1.5 + 1 = 4.0)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Fft
|
|
2
|
+
|
|
3
|
+
> Auto-generated from `src/stdlib/fft.mcrs` — do not edit manually.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
- [dft_noop](#dft-noop)
|
|
8
|
+
- [dft_real](#dft-real)
|
|
9
|
+
- [dft_magnitude](#dft-magnitude)
|
|
10
|
+
- [dft_power](#dft-power)
|
|
11
|
+
- [dft_freq_bin](#dft-freq-bin)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## `dft_noop` <Badge type="info" text="v2.0.0" />
|
|
16
|
+
|
|
17
|
+
Default no-op completion callback for `dft_coro`. Does nothing.
|
|
18
|
+
|
|
19
|
+
```redscript
|
|
20
|
+
fn dft_noop(): void
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## `dft_real` <Badge type="info" text="v2.0.0" />
|
|
26
|
+
|
|
27
|
+
Compute the Discrete Fourier Transform of `input[0..n-1]`.
|
|
28
|
+
|
|
29
|
+
Output arrays must be pre-allocated to length `n` and filled with zeros
|
|
30
|
+
before calling.
|
|
31
|
+
|
|
32
|
+
Formula: `X[k] = Σ x[j] * (cos(2πkj/n) - i·sin(2πkj/n))`
|
|
33
|
+
|
|
34
|
+
```redscript
|
|
35
|
+
fn dft_real(input: int[], n: int, out_re: int[], out_im: int[])
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Parameters**
|
|
39
|
+
|
|
40
|
+
| Parameter | Description |
|
|
41
|
+
|-----------|-------------|
|
|
42
|
+
| `input` | Signal samples in fixed-point ×10000 |
|
|
43
|
+
| `n` | Number of samples (≤ 16 recommended) |
|
|
44
|
+
| `out_re` | Pre-allocated output array for real parts (×10000) |
|
|
45
|
+
| `out_im` | Pre-allocated output array for imaginary parts (×10000) |
|
|
46
|
+
|
|
47
|
+
**Example**
|
|
48
|
+
|
|
49
|
+
```redscript
|
|
50
|
+
let re: int[] = [0, 0, 0, 0]
|
|
51
|
+
let im: int[] = [0, 0, 0, 0]
|
|
52
|
+
dft_real(sig, 4, re, im)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## `dft_magnitude` <Badge type="info" text="v2.0.0" />
|
|
58
|
+
|
|
59
|
+
Return the magnitude of DFT bin `k`: `|X[k]| = sqrt(re[k]² + im[k]²)` in ×10000.
|
|
60
|
+
|
|
61
|
+
Note: squaring ×10000 values can reach ~10⁹ per term, which fits in int32 for
|
|
62
|
+
amplitudes ≤ ~46340. For larger amplitudes, scale the input before calling.
|
|
63
|
+
|
|
64
|
+
```redscript
|
|
65
|
+
fn dft_magnitude(re: int[], im: int[], k: int): int
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Parameters**
|
|
69
|
+
|
|
70
|
+
| Parameter | Description |
|
|
71
|
+
|-----------|-------------|
|
|
72
|
+
| `re` | Real output array from `dft_real` |
|
|
73
|
+
| `im` | Imaginary output array from `dft_real` |
|
|
74
|
+
| `k` | Bin index |
|
|
75
|
+
|
|
76
|
+
**Returns:** Magnitude of bin `k` in ×10000 fixed-point
|
|
77
|
+
|
|
78
|
+
**Example**
|
|
79
|
+
|
|
80
|
+
```redscript
|
|
81
|
+
let mag: int = dft_magnitude(re, im, 1)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## `dft_power` <Badge type="info" text="v2.0.0" />
|
|
87
|
+
|
|
88
|
+
Return the power spectrum value for bin `k`: `re[k]²/10000 + im[k]²/10000`.
|
|
89
|
+
|
|
90
|
+
Division by 10000 prevents int32 overflow for values up to ~46340 (×10000).
|
|
91
|
+
The result is in ×10000 scale (power units).
|
|
92
|
+
|
|
93
|
+
```redscript
|
|
94
|
+
fn dft_power(re: int[], im: int[], k: int): int
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Parameters**
|
|
98
|
+
|
|
99
|
+
| Parameter | Description |
|
|
100
|
+
|-----------|-------------|
|
|
101
|
+
| `re` | Real output array from `dft_real` |
|
|
102
|
+
| `im` | Imaginary output array from `dft_real` |
|
|
103
|
+
| `k` | Bin index |
|
|
104
|
+
|
|
105
|
+
**Returns:** Power of bin `k` in ×10000 units
|
|
106
|
+
|
|
107
|
+
**Example**
|
|
108
|
+
|
|
109
|
+
```redscript
|
|
110
|
+
let power: int = dft_power(re, im, 2)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## `dft_freq_bin` <Badge type="info" text="v2.0.0" />
|
|
116
|
+
|
|
117
|
+
Return the frequency (Hz) corresponding to DFT bin `k`.
|
|
118
|
+
|
|
119
|
+
Formula: `freq = sample_rate_hz * k / n`
|
|
120
|
+
|
|
121
|
+
```redscript
|
|
122
|
+
fn dft_freq_bin(sample_rate_hz: int, n: int, k: int): int
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Parameters**
|
|
126
|
+
|
|
127
|
+
| Parameter | Description |
|
|
128
|
+
|-----------|-------------|
|
|
129
|
+
| `sample_rate_hz` | Sampling rate in Hz (e.g. `20` for Minecraft tick rate) |
|
|
130
|
+
| `n` | Transform size (number of samples) |
|
|
131
|
+
| `k` | Bin index in range [0, n-1] |
|
|
132
|
+
|
|
133
|
+
**Returns:** Frequency in Hz for bin `k`
|
|
134
|
+
|
|
135
|
+
**Example**
|
|
136
|
+
|
|
137
|
+
```redscript
|
|
138
|
+
let freq: int = dft_freq_bin(20, 8, 3)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|