@@ -39,10 +39,10 @@ public OffsetMaskParser(WorldEdit worldEdit) {
39
39
@ Override
40
40
public Stream <String > getSuggestions (String input , ParserContext context ) {
41
41
if (input .isEmpty ()) {
42
- return Stream .of (">" , "<" );
42
+ return Stream .of (">" , "<" , "~" );
43
43
}
44
44
final char firstChar = input .charAt (0 );
45
- if (firstChar != '>' && firstChar != '<' ) {
45
+ if (firstChar != '>' && firstChar != '<' && firstChar != '~' ) {
46
46
return Stream .empty ();
47
47
}
48
48
return worldEdit .getMaskFactory ().getSuggestions (input .substring (1 ), context ).stream ().map (s -> firstChar + s );
@@ -51,7 +51,7 @@ public Stream<String> getSuggestions(String input, ParserContext context) {
51
51
@ Override
52
52
public Mask parseFromInput (String input , ParserContext context ) throws InputParseException {
53
53
final char firstChar = input .charAt (0 );
54
- if (firstChar != '>' && firstChar != '<' ) {
54
+ if (firstChar != '>' && firstChar != '<' && firstChar != '~' ) {
55
55
return null ;
56
56
}
57
57
@@ -61,6 +61,10 @@ public Mask parseFromInput(String input, ParserContext context) throws InputPars
61
61
} else {
62
62
submask = new ExistingBlockMask (context .requireExtent ());
63
63
}
64
- return OffsetsMask .single (submask , BlockVector3 .at (0 , firstChar == '>' ? -1 : 1 , 0 ));
64
+ if (firstChar == '~' ) {
65
+ return OffsetsMask .adjacent (submask );
66
+ } else {
67
+ return OffsetsMask .single (submask , BlockVector3 .at (0 , firstChar == '>' ? -1 : 1 , 0 ));
68
+ }
65
69
}
66
70
}
0 commit comments