Skip to content
This repository was archived by the owner on Dec 8, 2025. It is now read-only.

Commit 749ab63

Browse files
authored
feat: update to 1.21.8 (#315)
adds `dialog` and `waypoint` commands
1 parent b979a9b commit 749ab63

File tree

7 files changed

+458
-79
lines changed

7 files changed

+458
-79
lines changed

examples/basic_1_21_8/beet.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
data_pack:
2+
load: "src"
3+
pipeline:
4+
- mecha
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
dialog show @s {title:"aa",type:"notice"}
2+
dialog show @s minecraft:test
3+
4+
5+
waypoint modify @s color hex FF0
6+
waypoint modify @s color hex eE00ff
7+
waypoint modify @s color blue

mecha/ast.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"AstWildcard",
2828
"AstColor",
2929
"AstColorReset",
30+
"AstHexColor",
3031
"AstSortOrder",
3132
"AstGamemode",
3233
"AstHeightmap",
@@ -561,6 +562,14 @@ class AstColorReset(AstOption):
561562
options = {"reset"}
562563

563564

565+
@dataclass(frozen=True, slots=True)
566+
class AstHexColor(AstLiteral):
567+
"""Ast color node."""
568+
569+
parser = "hex_color"
570+
regex = re.compile(r"[0-9a-fA-F]{6}|[0-9a-fA-F]{3}")
571+
572+
564573
@dataclass(frozen=True, slots=True)
565574
class AstSortOrder(AstOption):
566575
"""Ast sort order node."""

mecha/parse.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
AstGamemode,
112112
AstGreedy,
113113
AstHeightmap,
114+
AstHexColor,
114115
AstItemComponent,
115116
AstItemParticleParameters,
116117
AstItemPredicate,
@@ -249,6 +250,7 @@ def get_default_parsers() -> Dict[str, Parser]:
249250
"wildcard": parse_wildcard,
250251
"color": BasicLiteralParser(AstColor),
251252
"color_reset": BasicLiteralParser(AstColorReset),
253+
"hex_color": HexColorParser(),
252254
"sort_order": BasicLiteralParser(AstSortOrder),
253255
"gamemode": BasicLiteralParser(AstGamemode),
254256
"heightmap": BasicLiteralParser(AstHeightmap),
@@ -492,10 +494,14 @@ def get_default_parsers() -> Dict[str, Parser]:
492494
delegate("color_reset"),
493495
]
494496
),
497+
"command:argument:minecraft:hex_color": delegate("hex_color"),
495498
"command:argument:minecraft:column_pos": delegate("column_pos"),
496499
"command:argument:minecraft:component": MultilineParser(delegate("nbt")),
497500
"command:argument:minecraft:style": MultilineParser(delegate("nbt")),
498501
"command:argument:minecraft:dimension": delegate("resource_location"),
502+
"command:argument:minecraft:dialog": MultilineParser(
503+
delegate("resource_location_or_nbt")
504+
),
499505
"command:argument:minecraft:entity": delegate("entity"),
500506
"command:argument:minecraft:entity_anchor": delegate("entity_anchor"),
501507
"command:argument:minecraft:entity_summon": delegate("resource_location"),
@@ -860,6 +866,25 @@ def create_node(self, stream: TokenStream) -> Any:
860866
return set_location(node, token)
861867

862868

869+
@dataclass
870+
class HexColorParser:
871+
"""Parser for hex color values."""
872+
873+
name: str = "hex_color"
874+
pattern: str = r"[0-9a-fA-F]{6}|[0-9a-fA-F]{3}"
875+
876+
def __call__(self, stream: TokenStream) -> Any:
877+
with stream.syntax(**{self.name: self.pattern}):
878+
stream.expect(self.name)
879+
return self.create_node(stream)
880+
881+
def create_node(self, stream: TokenStream) -> Any:
882+
"""Create the ast node."""
883+
token = stream.current
884+
node = AstHexColor(value=token.value)
885+
return set_location(node, token)
886+
887+
863888
@dataclass
864889
class CoordinateParser(NumericParser):
865890
"""Parser for coordinates."""

0 commit comments

Comments
 (0)