redscript-mc 1.0.0 → 1.2.0
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/ISSUE_TEMPLATE/bug_report.yml +72 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +57 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +17 -25
- package/CHANGELOG.md +112 -0
- package/CONTRIBUTING.md +140 -0
- package/README.md +28 -19
- package/README.zh.md +28 -19
- package/dist/__tests__/cli.test.js +148 -10
- package/dist/__tests__/codegen.test.js +26 -1
- package/dist/__tests__/diagnostics.test.js +5 -5
- package/dist/__tests__/e2e.test.js +336 -17
- package/dist/__tests__/formatter.test.d.ts +1 -0
- package/dist/__tests__/formatter.test.js +40 -0
- package/dist/__tests__/lexer.test.js +12 -2
- package/dist/__tests__/lowering.test.js +200 -12
- package/dist/__tests__/mc-integration.test.js +370 -31
- package/dist/__tests__/mc-syntax.test.js +3 -3
- package/dist/__tests__/nbt.test.js +2 -2
- package/dist/__tests__/optimizer-advanced.test.js +5 -5
- package/dist/__tests__/parser.test.js +80 -0
- package/dist/__tests__/runtime.test.js +9 -9
- package/dist/__tests__/typechecker.test.js +158 -0
- package/dist/ast/types.d.ts +40 -3
- package/dist/cli.js +25 -7
- package/dist/codegen/mcfunction/index.d.ts +1 -1
- package/dist/codegen/mcfunction/index.js +38 -3
- package/dist/codegen/structure/index.js +32 -1
- package/dist/compile.d.ts +10 -0
- package/dist/compile.js +36 -5
- package/dist/events/types.d.ts +35 -0
- package/dist/events/types.js +59 -0
- package/dist/formatter/index.d.ts +1 -0
- package/dist/formatter/index.js +26 -0
- package/dist/index.js +3 -2
- package/dist/ir/builder.d.ts +2 -1
- package/dist/ir/types.d.ts +11 -2
- package/dist/ir/types.js +1 -1
- package/dist/lexer/index.d.ts +1 -1
- package/dist/lexer/index.js +2 -0
- package/dist/lowering/index.d.ts +34 -1
- package/dist/lowering/index.js +622 -23
- package/dist/mc-test/runner.d.ts +2 -2
- package/dist/mc-test/runner.js +3 -3
- package/dist/mc-test/setup.js +2 -2
- package/dist/parser/index.d.ts +4 -0
- package/dist/parser/index.js +153 -16
- package/dist/typechecker/index.d.ts +17 -0
- package/dist/typechecker/index.js +343 -17
- package/docs/COMPILATION_STATS.md +24 -24
- package/docs/ENTITY_TYPE_SYSTEM.md +242 -0
- package/docs/IMPLEMENTATION_GUIDE.md +1 -1
- package/docs/STRUCTURE_TARGET.md +1 -1
- package/editors/vscode/.vscodeignore +1 -0
- package/editors/vscode/CHANGELOG.md +9 -0
- package/editors/vscode/icons/mcrs.svg +7 -0
- package/editors/vscode/icons/redscript-icons.json +10 -0
- package/editors/vscode/out/extension.js +1295 -80
- package/editors/vscode/package-lock.json +2 -2
- package/editors/vscode/package.json +10 -3
- package/editors/vscode/src/hover.ts +55 -2
- package/editors/vscode/src/symbols.ts +42 -0
- package/package.json +1 -1
- package/src/__tests__/cli.test.ts +176 -10
- package/src/__tests__/codegen.test.ts +28 -1
- package/src/__tests__/diagnostics.test.ts +5 -5
- package/src/__tests__/e2e.test.ts +335 -17
- package/src/__tests__/fixtures/event-test.mcrs +13 -0
- package/src/__tests__/fixtures/impl-test.mcrs +46 -0
- package/src/__tests__/fixtures/interval-test.mcrs +11 -0
- package/src/__tests__/fixtures/is-check-test.mcrs +20 -0
- package/src/__tests__/fixtures/timeout-test.mcrs +7 -0
- package/src/__tests__/lexer.test.ts +14 -2
- package/src/__tests__/lowering.test.ts +226 -12
- package/src/__tests__/mc-integration.test.ts +421 -31
- package/src/__tests__/mc-syntax.test.ts +3 -3
- package/src/__tests__/nbt.test.ts +2 -2
- package/src/__tests__/optimizer-advanced.test.ts +5 -5
- package/src/__tests__/parser.test.ts +91 -5
- package/src/__tests__/runtime.test.ts +9 -9
- package/src/__tests__/typechecker.test.ts +171 -0
- package/src/ast/types.ts +44 -3
- package/src/cli.ts +10 -10
- package/src/codegen/mcfunction/index.ts +40 -3
- package/src/codegen/structure/index.ts +35 -1
- package/src/compile.ts +54 -6
- package/src/events/types.ts +69 -0
- package/src/examples/capture_the_flag.mcrs +208 -0
- package/src/examples/{counter.rs → counter.mcrs} +1 -1
- package/src/examples/hunger_games.mcrs +301 -0
- package/src/examples/new_features_demo.mcrs +193 -0
- package/src/examples/parkour_race.mcrs +233 -0
- package/src/examples/rpg.mcrs +13 -0
- package/src/examples/{shop.rs → shop.mcrs} +1 -1
- package/src/examples/{showcase_game.rs → showcase_game.mcrs} +3 -3
- package/src/examples/{turret.rs → turret.mcrs} +1 -1
- package/src/examples/zombie_survival.mcrs +314 -0
- package/src/index.ts +4 -3
- package/src/ir/builder.ts +3 -1
- package/src/ir/types.ts +12 -2
- package/src/lexer/index.ts +3 -1
- package/src/lowering/index.ts +684 -24
- package/src/mc-test/runner.ts +3 -3
- package/src/mc-test/setup.ts +2 -2
- package/src/parser/index.ts +170 -19
- package/src/stdlib/README.md +178 -140
- package/src/stdlib/bossbar.mcrs +68 -0
- package/src/stdlib/{cooldown.rs → cooldown.mcrs} +1 -1
- package/src/stdlib/effects.mcrs +64 -0
- package/src/stdlib/interactions.mcrs +195 -0
- package/src/stdlib/inventory.mcrs +38 -0
- package/src/stdlib/mobs.mcrs +99 -0
- package/src/stdlib/particles.mcrs +52 -0
- package/src/stdlib/sets.mcrs +20 -0
- package/src/stdlib/spawn.mcrs +41 -0
- package/src/stdlib/tags.mcrs +951 -0
- package/src/stdlib/teams.mcrs +68 -0
- package/src/stdlib/timer.mcrs +72 -0
- package/src/stdlib/world.mcrs +92 -0
- package/src/typechecker/index.ts +404 -18
- package/src/examples/rpg.rs +0 -13
- package/src/stdlib/mobs.rs +0 -99
- package/src/stdlib/timer.rs +0 -51
- /package/src/examples/{arena.rs → arena.mcrs} +0 -0
- /package/src/examples/{pvp_arena.rs → pvp_arena.mcrs} +0 -0
- /package/src/examples/{quiz.rs → quiz.mcrs} +0 -0
- /package/src/examples/{stdlib_demo.rs → stdlib_demo.mcrs} +0 -0
- /package/src/examples/{world_manager.rs → world_manager.mcrs} +0 -0
- /package/src/stdlib/{combat.rs → combat.mcrs} +0 -0
- /package/src/stdlib/{math.rs → math.mcrs} +0 -0
- /package/src/stdlib/{player.rs → player.mcrs} +0 -0
- /package/src/stdlib/{strings.rs → strings.mcrs} +0 -0
- /package/src/templates/{combat.rs → combat.mcrs} +0 -0
- /package/src/templates/{economy.rs → economy.mcrs} +0 -0
- /package/src/templates/{mini-game-framework.rs → mini-game-framework.mcrs} +0 -0
- /package/src/templates/{quest.rs → quest.mcrs} +0 -0
- /package/src/test_programs/{zombie_game.rs → zombie_game.mcrs} +0 -0
package/src/stdlib/mobs.rs
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
// Vanilla Minecraft Java Edition entity type constants.
|
|
2
|
-
// Copy the names you need into your own project until RedScript gets imports.
|
|
3
|
-
|
|
4
|
-
// Hostile mobs
|
|
5
|
-
const ZOMBIE: string = "minecraft:zombie"
|
|
6
|
-
const SKELETON: string = "minecraft:skeleton"
|
|
7
|
-
const CREEPER: string = "minecraft:creeper"
|
|
8
|
-
const SPIDER: string = "minecraft:spider"
|
|
9
|
-
const CAVE_SPIDER: string = "minecraft:cave_spider"
|
|
10
|
-
const ENDERMAN: string = "minecraft:enderman"
|
|
11
|
-
const WITCH: string = "minecraft:witch"
|
|
12
|
-
const PHANTOM: string = "minecraft:phantom"
|
|
13
|
-
const DROWNED: string = "minecraft:drowned"
|
|
14
|
-
const HUSK: string = "minecraft:husk"
|
|
15
|
-
const STRAY: string = "minecraft:stray"
|
|
16
|
-
const WARDEN: string = "minecraft:warden"
|
|
17
|
-
const PILLAGER: string = "minecraft:pillager"
|
|
18
|
-
const RAVAGER: string = "minecraft:ravager"
|
|
19
|
-
const VINDICATOR: string = "minecraft:vindicator"
|
|
20
|
-
const EVOKER: string = "minecraft:evoker"
|
|
21
|
-
const VEXE: string = "minecraft:vex"
|
|
22
|
-
const ZOMBIE_VILLAGER: string = "minecraft:zombie_villager"
|
|
23
|
-
const BLAZE: string = "minecraft:blaze"
|
|
24
|
-
const GHAST: string = "minecraft:ghast"
|
|
25
|
-
const MAGMA_CUBE: string = "minecraft:magma_cube"
|
|
26
|
-
const SLIME: string = "minecraft:slime"
|
|
27
|
-
const PIGLIN_BRUTE: string = "minecraft:piglin_brute"
|
|
28
|
-
const HOGLIN: string = "minecraft:hoglin"
|
|
29
|
-
const ZOGLIN: string = "minecraft:zoglin"
|
|
30
|
-
const ENDERMITE: string = "minecraft:endermite"
|
|
31
|
-
const SILVERFISH: string = "minecraft:silverfish"
|
|
32
|
-
const SHULKER: string = "minecraft:shulker"
|
|
33
|
-
const GUARDIAN: string = "minecraft:guardian"
|
|
34
|
-
const ELDER_GUARDIAN: string = "minecraft:elder_guardian"
|
|
35
|
-
const BOGGED: string = "minecraft:bogged"
|
|
36
|
-
const BREEZE: string = "minecraft:breeze"
|
|
37
|
-
|
|
38
|
-
// Passive mobs
|
|
39
|
-
const PIG: string = "minecraft:pig"
|
|
40
|
-
const COW: string = "minecraft:cow"
|
|
41
|
-
const SHEEP: string = "minecraft:sheep"
|
|
42
|
-
const CHICKEN: string = "minecraft:chicken"
|
|
43
|
-
const HORSE: string = "minecraft:horse"
|
|
44
|
-
const DONKEY: string = "minecraft:donkey"
|
|
45
|
-
const MULE: string = "minecraft:mule"
|
|
46
|
-
const RABBIT: string = "minecraft:rabbit"
|
|
47
|
-
const COD: string = "minecraft:cod"
|
|
48
|
-
const SALMON: string = "minecraft:salmon"
|
|
49
|
-
const TROPICAL_FISH: string = "minecraft:tropical_fish"
|
|
50
|
-
const PUFFERFISH: string = "minecraft:pufferfish"
|
|
51
|
-
const SQUID: string = "minecraft:squid"
|
|
52
|
-
const GLOW_SQUID: string = "minecraft:glow_squid"
|
|
53
|
-
const BAT: string = "minecraft:bat"
|
|
54
|
-
const VILLAGER: string = "minecraft:villager"
|
|
55
|
-
const WANDERING_TRADER: string = "minecraft:wandering_trader"
|
|
56
|
-
const SNOW_GOLEM: string = "minecraft:snow_golem"
|
|
57
|
-
const STRIDER: string = "minecraft:strider"
|
|
58
|
-
const AXOLOTL: string = "minecraft:axolotl"
|
|
59
|
-
const FROG: string = "minecraft:frog"
|
|
60
|
-
const TADPOLE: string = "minecraft:tadpole"
|
|
61
|
-
const ALLAY: string = "minecraft:allay"
|
|
62
|
-
const SNIFFER: string = "minecraft:sniffer"
|
|
63
|
-
const ARMADILLO: string = "minecraft:armadillo"
|
|
64
|
-
const TURTLE: string = "minecraft:turtle"
|
|
65
|
-
|
|
66
|
-
// Neutral mobs
|
|
67
|
-
const WOLF: string = "minecraft:wolf"
|
|
68
|
-
const BEE: string = "minecraft:bee"
|
|
69
|
-
const POLAR_BEAR: string = "minecraft:polar_bear"
|
|
70
|
-
const DOLPHIN: string = "minecraft:dolphin"
|
|
71
|
-
const IRON_GOLEM: string = "minecraft:iron_golem"
|
|
72
|
-
const PIGLIN: string = "minecraft:piglin"
|
|
73
|
-
const ZOMBIFIED_PIGLIN: string = "minecraft:zombified_piglin"
|
|
74
|
-
const PANDA: string = "minecraft:panda"
|
|
75
|
-
const LLAMA: string = "minecraft:llama"
|
|
76
|
-
const TRADER_LLAMA: string = "minecraft:trader_llama"
|
|
77
|
-
const CAT: string = "minecraft:cat"
|
|
78
|
-
const OCELOT: string = "minecraft:ocelot"
|
|
79
|
-
const FOX: string = "minecraft:fox"
|
|
80
|
-
const GOAT: string = "minecraft:goat"
|
|
81
|
-
const CAMEL: string = "minecraft:camel"
|
|
82
|
-
|
|
83
|
-
// Bosses
|
|
84
|
-
const ENDER_DRAGON: string = "minecraft:ender_dragon"
|
|
85
|
-
const WITHER: string = "minecraft:wither"
|
|
86
|
-
|
|
87
|
-
// Special / misc
|
|
88
|
-
const ARMOR_STAND: string = "minecraft:armor_stand"
|
|
89
|
-
const ITEM_FRAME: string = "minecraft:item_frame"
|
|
90
|
-
const GLOW_ITEM_FRAME: string = "minecraft:glow_item_frame"
|
|
91
|
-
const PAINTING: string = "minecraft:painting"
|
|
92
|
-
const BOAT: string = "minecraft:boat"
|
|
93
|
-
const MINECART: string = "minecraft:minecart"
|
|
94
|
-
const TNT: string = "minecraft:tnt"
|
|
95
|
-
const FALLING_BLOCK: string = "minecraft:falling_block"
|
|
96
|
-
const ITEM: string = "minecraft:item"
|
|
97
|
-
const XP_ORB: string = "minecraft:experience_orb"
|
|
98
|
-
const FIREBALL: string = "minecraft:fireball"
|
|
99
|
-
const PLAYER: string = "minecraft:player"
|
package/src/stdlib/timer.rs
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// Countdown timer helpers.
|
|
2
|
-
//
|
|
3
|
-
// The current compiler does not propagate string literals through user-defined
|
|
4
|
-
// function calls yet, so the `name` parameter is a forward-compatible placeholder.
|
|
5
|
-
// This module manages one timer slot backed by fake players on the `rs` objective.
|
|
6
|
-
|
|
7
|
-
struct Timer {
|
|
8
|
-
ticks: int,
|
|
9
|
-
active: int
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
fn timer_start(name: string, duration: int) {
|
|
13
|
-
scoreboard_set("timer_ticks", #rs, duration);
|
|
14
|
-
scoreboard_set("timer_active", #rs, 1);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
fn timer_tick(name: string) -> int {
|
|
18
|
-
let active: int = scoreboard_get("timer_active", #rs);
|
|
19
|
-
let ticks: int = scoreboard_get("timer_ticks", #rs);
|
|
20
|
-
|
|
21
|
-
if (active == 0) {
|
|
22
|
-
return 0;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (ticks > 0) {
|
|
26
|
-
let next: int = ticks - 1;
|
|
27
|
-
scoreboard_set("timer_ticks", #rs, next);
|
|
28
|
-
|
|
29
|
-
if (next == 0) {
|
|
30
|
-
scoreboard_set("timer_active", #rs, 0);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return next;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
scoreboard_set("timer_active", #rs, 0);
|
|
37
|
-
return 0;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
fn timer_done(name: string) -> int {
|
|
41
|
-
let active: int = scoreboard_get("timer_active", #rs);
|
|
42
|
-
let ticks: int = scoreboard_get("timer_ticks", #rs);
|
|
43
|
-
|
|
44
|
-
if (active == 0) {
|
|
45
|
-
if (ticks <= 0) {
|
|
46
|
-
return 1;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return 0;
|
|
51
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|