-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMKB.sublime-syntax
More file actions
213 lines (190 loc) · 12.5 KB
/
MKB.sublime-syntax
File metadata and controls
213 lines (190 loc) · 12.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html
name: MKB
first_line_match: '\$\$\{'
file_extensions:
- txt
scope: source.mkb
variables:
actions: '(?<=\t|^| |;|=)\b(?i:((if|ifnot|elseif|elseifnot|until|while)(|beginswith|contains|enchanted|endswith|fileexists|ininv|invisfull|matches|canharvestblock))|else|getslotitemenchants|getslotitemext|getslotitemnbt|gethitsigntext|getsigntext|setsigntext|getclipboard|gui|setclipboard|adddocs|listdocs|jsonadd|isinteger|jsonremove|getjsonasarray|jsonarrayadd|isjsonobject|isstring|jsonarrayget|jsonget|isfloat|isjsonprimitive|isboolean|isjsonarray|isnumber|getjsonkeys|jsonarraysize|jsonhas|notify|shuffle|trim|functionnotexisting|char|eval|calc|mod|oldname|readfile|unix|fileexists|mkdir|writefile|httpput|httppost|urlencode|httpdelete|httpget|setrequestheader|null|clearcrafting|craft|craftandwait|disconnect|getid|getidrel|getiteminfo|getslot|getslotitem|inventorydown|inventoryup|itemid|itemname|look|looks|pick|placesign|playsound|respawn|setslotitem|slot|slotclick|sprint|tileid|tilename|trace|unsprint|selectchannel|sendmessage|press|type|arraysize|assign|break|calcyawto|dec|decode|do|echo|encode|endif|endunsafe|exec|for|getproperty|iif|inc|indexof|isrunning|join|lcase|log|lograw|logto|loop|match|next|pop|prompt|push|put|random|regexreplace|replace|set|setlabel|setproperty|split|sqrt|stop|strip|toggle|ucase|unsafe|unset|wait|config|import|unimport|bind|camera|chatheight|chatheightfocused|chatopacity|chatscale|chatvisible|chatwidth|fog|fov|gamma|music|reloadresources|resourcepacks|sensitivity|setres|shadergroup|volume|achievementget|bindgui|clearchat|popupmessage|repl|showgui|store|storeover|title|toast|chatfilter|filter|modify|pass|http|sort|teammembers|score|countdownto|countdownfrom|counter|countup|leftpad|timetosec|sectotime|getslotiteminv|getslotinv|getmouseitem|getemptyslots|getchestname|getfishhook|run|getdensity|getitemstacksize|getpercentage|getslotpositions|pressbutton|getslotnbt|getprop|slotmiddleclick|mod|trunc|ackermann|calcstacks|pickmod|antighost|addanim|event|chat|getKeybind|setKeybind|return|sendMessage|encrypt|decrypt|remove|map|particle|countitem|countiteminv|createcontrol|deletecontrol|timestamptodate|time|getiteminfo|getguiname|invfull|baritone|goto|setting|cancel|pause|resume|mine|farm|selstart|selend|selclear|selreplace|strlen|getbreakspeed|pollevent|await|setanviltext|switch|case|default|endswitch|reconnect|function|endfunction|call|return|betterecho|restart|codeexport|runscript|getmapdata|getclipboard|setclipboard|getslotitemext|getslotitemnbt|getslotitemenchants|getslotiteminv|getchestname|setanviltext|getmacrotype|getmkbkeybind|require|setmacrotype|setmkbkeybind|centralize|char|notify|setwindowtitle|takescreenshot|render|unrender|renderzero|getitemstacksize|getpercentage|getbalance|getbits|getlocation|getscoreboard|gettablistfooter|gettablistheader|ackermann|gettitle|getsubtitle|getbossbartext|getbossbarcolor|getbossbarpercentage|formatnumber|getplayeruuid)\b'
booleans_true: '\b(?i:true)\b'
booleans_false: '\b(?i:false)\b'
parameters: '\$\$(!|\?|(\[\%.*?\%\]|\[[^\[\]]*?\]|\[[^\[\]]*?\[.*?\]\])|<.+\.txt>|\d|f|h|i:d|k|m|p|s|t|u|w)'
variables: '\b(?<!\t)(AMBIENTVOLUME|ARMOUR|ATTACKPOWER|ATTACKSPEED|BIOME|BLOCKVOLUME|BOOTS(DAMAGE|DURABILITY|ID|NAME)|BOWCHARGE|CAMERA|CANFLY|CARDINALYAW|CHESTPLATE(DAMAGE|DURABILITY|ID|NAME)|CHUNKUPDATES|CONFIG|CONTAINERSLOTS|COOLDOWN|DATETIME|DATE|DAYTICKS|DAYTIME|DAY|DIFFICULTY|DIMENSION|DIRECTION|DISPLAYHEIGHT|DISPLAYNAME|DISPLAYWIDTH|DURABILITY|FILESEPARATOR|FLYING|FOV|FPS|GAMEMODE|GAMMA|GUI|HACKED|HEALTH|HELMDAMAGE|HELM(DURABILITY|ID|NAME)|HIT(\b|DATA|ID|NAME|PROGRESS|SIDE|UUID|X|Y|Z)|TRACE(\b|DATA|ID|NAME|PROGRESS|SIDE|UUID|TYPE|X|Y|Z)|((TRACE|HIT)_(AGE|ATTACHED|AXIS|BITES|CHECK_DECAY|COLOR|CONDITIONAL|CONTENTS|DAMAGE|DECAYABLE|DELAY|DISARMED|DOWN|EAST|ENABLED|EXPLODE|EXTENDED|EYE|FACING|HALF|HAS_BOTTLE_0|HAS_BOTTLE_1|HAS_BOTTLE_2|HAS_RECORD|HINGE|IN_WALL|LAYERS|LEGACY_DATA|LEVEL|LOCKED|MODE|MOISTURE|NODROP|NORTH|OCCUPIED|OPEN|PART|POWERED|POWER|ROTATION|SEAMLESS|SHAPE|SHORT|SNOWY|SOUTH|STAGE|TRIGGERED|TYPE|UP|VARIANT|WEST|WET)|HOSTILEVOLUME|HUNGER|INVSLOT|ITEM(\b|CODE|DAMAGE|IDDMG|NAME|USEPCT|USETICKS)|KEYID|KEYNAME|LATENCY|LEGGINGS(DAMAGE|DURABILITY|ID|NAME)|LEVEL|LIGHT|LOCALDIFFICULTY|MACROSCONFIGDIR|MAINHAND(COOLDOWN|DURABILITY|ITEMCODE|ITEMDAMAGE|ITEMIDDMG|ITEMNAME|ITEM|STACKSIZE))|MAXPLAYERS|MINECRAFTDIR|MODE|MODULE(CLIPBOARD|FARHIT|GETSLOTITEMEXT|HTTP|JSON|NEI|SIGNTEXT|ANVIL|BARITONE|AEI|CHARICE|FUNCTIONS|SWITCHCASE|TITLE)|MUSIC|NEUTRALVOLUME|NOTIFICATIONMODULE|OFFHAND(COOLDOWN|DURABILITY|ITEM|ITEMCODE|ITEMDAMAGE|ITEMIDDMG|ITEMNAME|STACKSIZE)|ONLINEPLAYERS|OXYGEN|PITCH|PLAYERVOLUME|RAIN|RECORDVOLUME|RESOURCEPACKS|SATURATION|SCREENNAME|SCREEN|SEED|SENSITIVITY|SERVERMOTD|SERVERNAME|SERVER|SHADERGROUP|SOUND|STACKSIZE|TICKS|TIMESTAMP|TIME|TOTALTICKS|TOTALXP|UNIQUEID|UUID|VEHICLEHEALTH|VEHICLE|WEATHERVOLUME|XPOSF|XPOS|XP|YAW|YPOSF|YPOS|ZPOSF|ZPOS|FARHIT(\b|ID|DATA|NAME|SIDE|X|Y|Z|UUID|DIST)|ENTITY(TYPE|NAME|UUID|XPOSF|YPOSF|ZPOSF|XPOS|YPOS|ZPOS|TAG|DX|DY|DZ|DISTANCE|PITCHFROMPLAYER|YAWFROMPLAYER|NBTKEYS|NBT|DIR|PITCH|YAW|HEALTH|MAXHEALTH|ISITEM|ITEM(AGE|OWNER|THROWER|NAME|UNLOCALIZEDNAME|COUNT|DISPLAYNAME|DAMAGE|MAXDAMAGE|METADATA|ENCHANTED|STACKABLE)|(MAINHAND|OFFHAND|BOOTS|LEGGINGS|CHESTPLATE|HELMET)(NAME|ID|NID|DAMAGE|COUNT|ENCHANTMENTS))|PLAYER(\b|NAME|UUID|DISPLAYNAME|TEAM|PING|ISLEGACY)|TEAM(ALLOWFRIENDLYFIRE|COLLISIONRULE|COLOR|DEATHMESSAGEVISIBILITY|DISPLAYNAME|NAME|NAMETAGVISIBILITY|SEEFRIENDLYINVISIBLES|PREFIX|SUFFIX|MEMBERS)|OBJECTIVE(CRITERIA|DISPLAYNAME|NAME|RENDERTYPE)|SCORE(OBJECTIVENAME|PLAYERNAME|VALUE)|REASON|CHAT(\b|CLEAN|PLAYER|MESSAGE|JSON)|OLDINVSLOT|PICKUP(AMOUNT|ITEM|DATA|ID)|JOINEDPLAYER|SOUND(XPOSF|YPOSF|ZPOSF|XPOS|YPOS|ZPOS|CANREPEAT|ATTENUATIONTYPE|CATEGORY|PITCH|VOLUME|RESOURCE)|NEWEFFECT(\b|ID|NAME|POWER|TIME)|~?((ALT|CTRL|LMOUSE|MIDDLEMOUSE|RMOUSE|SHIFT)|KEY_(0|1|2|3|4|5|6|7|8|9|ADD|APOSTROPHE|APPS|AT|AX|A|B|BACK|BACKSLASH|CAPITAL|CIRCUMFLEX|CLEAR|COLON|COMMA|CONVERT|C|DECIMAL|DELETE|DIVIDE|DOWN|D|END|EQUALS|ESCAPE|E|F10|F11|F12|F13|F14|F15|F16|F17|F18|F19|F1|F2|F3|F4|F5|F6|F7|F8|F9|FUNCTION|F|GRAVE|G|HOME|H|INSERT|I|J|KANA|KANJI|K|LBRACKET|LCONTROL|LEFT|LMENU|LMETA|LSHIFT|L|MINUS|MOUSE3|MOUSE4|MULTIPLY|M|NEXT|NOCONVERT|NONE|NUMLOCK|NUMPAD0|NUMPAD1|NUMPAD2|NUMPAD3|NUMPAD4|NUMPAD5|NUMPAD6|NUMPAD7|NUMPAD8|NUMPAD9|NUMPADCOMMA|NUMPADENTER|NUMPADEQUALS|N|O|PAUSE|PERIOD|POWER|PRIOR|P|Q|RBRACKET|RCONTROL|RETURN|RIGHT|RMENU|RMETA|RSHIFT|R|SCROLL|SECTION|SEMICOLON|SLASH|SLEEP|SPACE|STOP|SUBTRACT|SYSRQ|S|TAB|T|UNDERLINE|UNLABELED|UP|U|V|W|X|Y|YEN|Z)|BARITONE|PATHFINDING|FARMING|MINING|FOLLOWING|BUILDING|ALLOWBREAK|ALLOWPLACE|ALLOWSPRINT|ALLOWPARKOUR|ALLOWINVENTORY|ALLOWWALKONBOTTOMSLAB|ALLOWWATERBUCKETFALL|BLOCKBREAKADDITIONALMENTPENALTY|BLOCKPLACEMENTPENALTY|BLOCKREACHDISTANCE|MAXFALLHEIGHTNOWATER|FREELOOK|REPLANTCROPS|EHITX|EHITY|EHITZ|SLOTINDEX|SLOTID|SLOTSTACKSIZE|SLOTDATAVAR|SLOTTAG|KLACAIBAVERSION|MACROID|MACRONAME|MACROTIME|PROPVALUE|PROPNAME|VARNAME|EFFECTTIME|EFFECTPOWER|EFFECTNAME|EFFECTID|EFFECT|CONTROLID|CONTROLTYPE|CONTROLNAME|ENCHANTMENTPOWER|ENCHANTMENT|ENCHANTMENTNAME|ITERATORNAME|TRADE(BUYITEM|BUYITEMAMOUNT|BUYITEM2|BUYITEM2AMOUNT|SELLITEM|SELLITEMAMOUNT|USES|MAXUSES)\b)|SIGNTEXT|POLLALL|P|DOLLARS|DOLLAR|RECONNECT|FUNCTIONNAME)\b'
contexts:
# The prototype context is prepended to all contexts but those setting
# meta_include_prototype: false.
prototype:
- include: comments
- include: rocket
main:
# The main context is the initial starting point of our syntax.
# Include other contexts from here (or specify them directly).
- match: '(?<!\\)\"'
push: strings
- match: '(&|#)?((<[\w@#&\[\]\|=\. /_-]+?>)|(\[[a-zA-Z@#&\[\]\|=\. /_-]*?\])):?'
scope: keyword.other.mkb
- include: actions
- include: binds
- include: booleans
- include: iterators
- include: keywords
- include: numbers
- include: functions
- include: operators
- include: parameters
- include: prefixes
# - include: repl
- include: variables
strings:
- meta_scope: string.mkb
- match: '(\]%)'
scope: keyword.other.mkb
- match: '(?<!\\)"'
pop: true
- match: '\\\\\"'
scope: string.mkb
pop: true
- match: '\\\\'
scope: string.mkb
- match: '({{parameters}})|((%)(({{variables}})|([^%\[\]"]*?))(%))'
captures:
1: variable.parameter.mkb
5: keyword.other.mkb
7: variable.mkb
39: punctuation.definition.keyword.mkb
40: keyword.other.mkb
- match: '({{parameters}})|((%)([^%\[\]"]*?)(\[))'
captures:
1: variable.parameter.mkb
5: keyword.other.mkb
6: punctuation.definition.keyword.mkb
7: keyword.other.mkb
push: strings2
- match: '(&|§)0'
scope: 0.mkb
- match: '(&|§)1'
scope: 1.mkb
- match: '(&|§)2'
scope: 2.mkb
- match: '(&|§)3'
scope: 3.mkb
- match: '(&|§)4'
scope: 4.mkb
- match: '(&|§)5'
scope: 5.mkb
- match: '(&|§)6'
scope: 6.mkb
- match: '(&|§)7'
scope: 7.mkb
- match: '(&|§)8'
scope: 8.mkb
- match: '(&|§)9'
scope: 9.mkb
- match: '(&|§)a'
scope: a.mkb
- match: '(&|§)b'
scope: b.mkb
- match: '(&|§)c'
scope: c.mkb
- match: '(&|§)d'
scope: d.mkb
- match: '(&|§)e'
scope: e.mkb
- match: '(&|§)f'
scope: f.mkb
- match: '(&|§)k'
scope: k.mkb
- match: '(&|§)l'
scope: l.mkb
- match: '(&|§)m'
scope: m.mkb
- match: '(&|§)n'
scope: n.mkb
- match: '(&|§)o'
scope: o.mkb
- match: '(&|§)r'
scope: r.mkb
strings2:
- meta_scope: string.mkb
- match: '((-?[\d.]+(ms|t)?)|(({{booleans_true}})|({{booleans_false}}))|(<|>|==|!=|!|>=|<=|\+|\-(?!\d)|\*|\/|=|:=|:|\(|\))|({{parameters}})|((%)(({{variables}})|([^%\[\]"]*?))(\[|%)))'
captures:
2: constant.numeric.mkb
5: constant.language.true.mkb
6: constant.language.false.mkb
# 7: keyword.operator.mkb
8: variable.parameter.mkb
12: keyword.other.mkb
14: variable.mkb
46: punctuation.definition.keyword.mkb
47: keyword.other.mkb
- match: '\]%'
scope: keyword.other.mkb
pop: true
- match: '\b\"|'
pop: true
actions:
- match: '{{actions}}'
scope: keyword.control.mkb
binds:
- match: '(?i:((keydown|keyup|togglekey)(\()(([0-9]+)|(forward|back|left|right|jump|sneak|playerlist|sprint|)))|((key)(\()(inventory|drop|chat|attack|use|pick|screenshot|smoothcamera|swaphands|)))'
captures:
2: keyword.control.mkb
3: keyword.other.mkb
5: constant.numeric.mkb
6: keyword.control.import.mkb
8: keyword.control.mkb
9: keyword.other.mkb
10: keyword.control.import.mkb
booleans:
- match: '(({{booleans_true}})|({{booleans_false}}))'
captures:
2: constant.language.true.mkb
3: constant.language.false.mkb
comments:
- match: '((^|(?<=;))(\s*\/\/\s*!.*))|((^|(?<=;))(\s*\/\/\s*.*))|((\/\/[^\"\)]*$))'
captures:
3: comment.important.mkb
6: comment.mkb
7: invalid.mkb
iterators:
- match: '(?i:(foreach)((\()(iterators|controls|teams|scores|players|trades|enchantments|env|running|effects|entities|objectives|actions|events|properties|inventory|functions|))?)'
captures:
1: keyword.control.mkb
3: keyword.other.mkb
4: keyword.operator.word.mkb
keywords:
- match: '\$\$\{|\}\$\$|;|,|%|\(|\)|\[|\]|'
scope: keyword.other.mkb
numbers:
- match: '-?[\d]*?\.?[\d]+?(ms|t)?'
scope: constant.numeric.mkb
operators:
- match: '(<|>|==|!=|!|>=|<=|&&|\|\||\bto\b|\bas\b|\bstep\b|=>|\+|\-(?!\d)|\*|\/|=|:=|:|\.\.\.)'
captures:
1: keyword.operator.mkb
parameters:
- match: '{{parameters}}'
scope: variable.parameter.mkb
prefixes:
- match: '(@??[#&\b]??[a-z0-9_-]+(?=\b)(?!\())'
scope: punctuation.definition.keyword.mkb
functions:
- match: '(?i:((((\=)|^)\s*?(call)(\()([a-zA-Z0-9_-]*))|((function) ([a-zA-Z0-9_-]*)(?=\())|((\=)\s*?)?((({{actions}})|(([a-zA-Z0-9_-]*)(?=\())))))'
captures:
4: keyword.operator.mkb
5: keyword.control.mkb
6: keyword.other.mkb
7: meta.function.mkb
9: keyword.control.mkb
10: meta.function.mkb
12: keyword.operator.mkb
15: keyword.control.mkb
19: meta.function.mkb
rocket:
- match: '(\{\*)|(\*\})|(\{\{)|(\}\})'
scope: keyword.other.mkb
variables:
- match: '{{variables}}'
scope: variable.mkb