Explorar o código

move mc strings to translation files

Markus-Rost %!s(int64=5) %!d(string=hai) anos
pai
achega
5c8d20f8dd
Modificáronse 11 ficheiros con 634 adicións e 673 borrados
  1. 24 25
      bot.js
  2. 13 0
      i18n/de.json
  3. 11 0
      i18n/en.json
  4. 12 0
      i18n/fr.json
  5. 11 0
      i18n/nl.json
  6. 12 0
      i18n/pl.json
  7. 13 0
      i18n/pt.json
  8. 11 0
      i18n/ru.json
  9. 11 0
      i18n/tr.json
  10. 11 0
      i18n/zh.json
  11. 505 648
      minecraft.json

+ 24 - 25
bot.js

@@ -687,7 +687,7 @@ function cmd_help(lang, msg, args, line, wiki) {
 	if ( msg.channel.type === 'text' && pause[msg.guild.id] && ( args.join('') || !msg.isAdmin() ) ) return;
 	if ( msg.isAdmin() && msg.defaultSettings ) cmd_helpserver(lang, msg);
 	var cmds = lang.help.list;
-	var isMinecraft = ( wiki === minecraft[lang.lang].link );
+	var isMinecraft = ( wiki === lang.minecraft.link );
 	var isPatreon = ( msg.channel.type === 'text' && msg.guild.id in patreons );
 	var prefix = ( msg.channel.type === 'text' && patreons[msg.guild.id] || process.env.prefix );
 	var cmdintro = '🔹 `' + prefix + ' ';
@@ -706,7 +706,7 @@ function cmd_help(lang, msg, args, line, wiki) {
 			}
 		}
 		else if ( args[0].toLowerCase() === 'minecraft' ) {
-			var cmdlist = '<' + minecraft[lang.lang].link + '>\n' + cmds.filter( cmd => cmd.minecraft && !cmd.hide ).map( cmd => cmdintro + cmd.cmd + '`\n\t' + cmd.desc ).join('\n');
+			var cmdlist = '<' + lang.minecraft.link + '>\n' + cmds.filter( cmd => cmd.minecraft && !cmd.hide ).map( cmd => cmdintro + cmd.cmd + '`\n\t' + cmd.desc ).join('\n');
 			cmdlist = cmdlist.replaceSave( /@mention/g, '@' + ( msg.channel.type === 'text' ? msg.guild.me.displayName : client.user.username ) ).replaceSave( /@prefix/g, prefix );
 			msg.sendChannel( cmdlist, {split:{char:'🔹',prepend:'🔹'}} );
 		}
@@ -901,11 +901,10 @@ function gamepedia_check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '
 	var aliasInvoke = ( lang.aliases[invoke] || invoke );
 	var args = title.split(' ').slice(1);
 	
-	var mclang = minecraft[lang.lang];
-	var mcaliasInvoke = ( mclang.aliases[invoke] || invoke );
-	if ( !msg.notminecraft && wiki === mclang.link && ( mcaliasInvoke in minecraftcmdmap || invoke.startsWith( '/' ) ) ) {
-		if ( mcaliasInvoke in minecraftcmdmap ) minecraftcmdmap[mcaliasInvoke](lang, mclang, msg, args, title, cmd, querystring, fragment, reaction, spoiler);
-		else minecraft_command(lang, mclang, msg, invoke.substring(1), args, title, cmd, querystring, fragment, reaction, spoiler);
+	var mcaliasInvoke = ( lang.minecraft.aliases[invoke] || invoke );
+	if ( !msg.notminecraft && wiki === lang.minecraft.link && ( mcaliasInvoke in minecraftcmdmap || invoke.startsWith( '/' ) ) ) {
+		if ( mcaliasInvoke in minecraftcmdmap ) minecraftcmdmap[mcaliasInvoke](lang, msg, args, title, cmd, querystring, fragment, reaction, spoiler);
+		else minecraft_command(lang, msg, invoke.substring(1), args, title, cmd, querystring, fragment, reaction, spoiler);
 	}
 	else if ( aliasInvoke === 'random' && !args.join('') && !querystring && !fragment ) gamepedia_random(lang, msg, wiki, reaction, spoiler);
 	else if ( aliasInvoke === 'overview' && !args.join('') && !querystring && !fragment ) gamepedia_overview(lang, msg, wiki, reaction, spoiler);
@@ -5106,7 +5105,7 @@ function fandom_overview(lang, msg, wiki, reaction, spoiler) {
 	} );
 }
 
-function minecraft_bug(lang, mclang, msg, args, title, cmd, querystring, fragment, reaction, spoiler) {
+function minecraft_bug(lang, msg, args, title, cmd, querystring, fragment, reaction, spoiler) {
 	var invoke = args[0];
 	args = args.slice(1);
 	if ( invoke && /\d+$/.test(invoke) && !args.length ) {
@@ -5122,7 +5121,7 @@ function minecraft_bug(lang, mclang, msg, args, title, cmd, querystring, fragmen
 						msg.reactEmoji('🤷');
 					}
 					else if ( body.errorMessages.includes( 'You do not have the permission to see the specified issue.' ) ) {
-						msg.sendChannel( spoiler + mclang.bug.private + '\n<' + link + invoke + '>' + spoiler );
+						msg.sendChannel( spoiler + lang.minecraft.private + '\n<' + link + invoke + '>' + spoiler );
 					}
 					else {
 						console.log( '- ' + ( response && response.statusCode ) + ': Error while getting the issue: ' + body.errorMessages.join(' - ') );
@@ -5152,12 +5151,12 @@ function minecraft_bug(lang, mclang, msg, args, title, cmd, querystring, fragmen
 							if ( embed.fields.length < 25 ) embed.addField( name, value );
 							else extrabugs.push({name,value,inline:false});
 						} );
-						if ( extrabugs.length ) embed.setFooter( mclang.bug.more.replaceSave( '%s', extrabugs.length ) );
+						if ( extrabugs.length ) embed.setFooter( lang.minecraft.more.replaceSave( '%s', extrabugs.length ) );
 					}
 					var status = '**' + ( body.fields.resolution ? body.fields.resolution.name : body.fields.status.name ) + ':** ';
 					var fixed = '';
 					if ( body.fields.resolution && body.fields.fixVersions && body.fields.fixVersions.length ) {
-						fixed = '\n' + mclang.bug.fixed + ' ' + body.fields.fixVersions.map( v => v.name ).join(', ');
+						fixed = '\n' + lang.minecraft.fixed + ' ' + body.fields.fixVersions.map( v => v.name ).join(', ');
 					}
 					msg.sendChannel( spoiler + status + body.fields.summary.escapeFormatting() + '\n<' + link + body.key + '>' + fixed + spoiler, {embed} );
 				}
@@ -5204,9 +5203,9 @@ function minecraft_bug(lang, mclang, msg, args, title, cmd, querystring, fragmen
 							var value = status + ': [' + bug.fields.summary.escapeFormatting() + '](https://bugs.mojang.com/browse/' + bug.key + ')';
 							embed.addField( bug.key, value );
 						} );
-						if ( body.total > 25 ) embed.setFooter( mclang.bug.more.replaceSave( '%s', body.total - 25 ) );
+						if ( body.total > 25 ) embed.setFooter( lang.minecraft.more.replaceSave( '%s', body.total - 25 ) );
 					}
-					var total = '**' + args.join(' ') + ':** ' + mclang.bug.total.replaceSave( '%s', body.total );
+					var total = '**' + args.join(' ') + ':** ' + lang.minecraft.total.replaceSave( '%s', body.total );
 					msg.sendChannel( spoiler + total + '\n<' + link + '>' + spoiler, {embed} );
 				}
 			}
@@ -5219,16 +5218,16 @@ function minecraft_bug(lang, mclang, msg, args, title, cmd, querystring, fragmen
 	}
 	else {
 		msg.notminecraft = true;
-		gamepedia_check_wiki(lang, msg, title, mclang.link, cmd, reaction, spoiler, querystring, fragment);
+		gamepedia_check_wiki(lang, msg, title, lang.minecraft.link, cmd, reaction, spoiler, querystring, fragment);
 	}
 }
 
-function minecraft_command(lang, mclang, msg, befehl, args, title, cmd, querystring, fragment, reaction, spoiler) {
+function minecraft_command(lang, msg, befehl, args, title, cmd, querystring, fragment, reaction, spoiler) {
 	befehl = befehl.toLowerCase();
-	var aliasCmd = ( minecraft.cmd.aliases[befehl] || befehl );
+	var aliasCmd = ( minecraft.aliases[befehl] || befehl );
 	
-	if ( aliasCmd in minecraft.cmd.list ) {
-		var cmdSyntaxMap = minecraft.cmd.list[aliasCmd].map( command => {
+	if ( aliasCmd in minecraft.list ) {
+		var cmdSyntaxMap = minecraft.list[aliasCmd].map( command => {
 			var cmdargs = command.split(' ');
 			if ( cmdargs[0].startsWith( '/' ) ) cmdargs = cmdargs.slice(1);
 			var argmatches = cmdargs.map( (arg, i) => {
@@ -5243,25 +5242,25 @@ function minecraft_command(lang, mclang, msg, befehl, args, title, cmd, querystr
 		var lastIndex = Math.max(...cmdSyntaxMap.map( command => command[0] ));
 		var matchCount = Math.max(...cmdSyntaxMap.filter( command => command[0] === lastIndex ).map( command => command[1] ));
 		var regex = new RegExp('/' + aliasCmd, 'g');
-		var cmdSyntax = minecraft.cmd.list[aliasCmd].filter( (command, i) => ( lastIndex === -1 || cmdSyntaxMap[i][0] === lastIndex ) && cmdSyntaxMap[i][1] === matchCount ).join('\n').replaceSave( regex, '/' + befehl );
-		msg.sendChannel( spoiler + '```md\n' + cmdSyntax + '```<' + mclang.link + mclang.cmd.page + aliasCmd + '>' + spoiler, {split:{maxLength:2000,prepend:spoiler + '```md\n',append:'```' + spoiler}} );
+		var cmdSyntax = minecraft.list[aliasCmd].filter( (command, i) => ( lastIndex === -1 || cmdSyntaxMap[i][0] === lastIndex ) && cmdSyntaxMap[i][1] === matchCount ).join('\n').replaceSave( regex, '/' + befehl );
+		msg.sendChannel( spoiler + '```md\n' + cmdSyntax + '```<' + lang.minecraft.link + lang.minecraft.cmdpage + aliasCmd + '>' + spoiler, {split:{maxLength:2000,prepend:spoiler + '```md\n',append:'```' + spoiler}} );
 		if ( reaction ) reaction.removeEmoji();
 	}
 	else {
 		msg.reactEmoji('❓');
 		msg.notminecraft = true;
-		gamepedia_check_wiki(lang, msg, title, mclang.link, cmd, reaction, spoiler, querystring, fragment);
+		gamepedia_check_wiki(lang, msg, title, lang.minecraft.link, cmd, reaction, spoiler, querystring, fragment);
 	}
 }
 
-function minecraft_command2(lang, mclang, msg, args, title, cmd, querystring, fragment, reaction, spoiler) {
+function minecraft_command2(lang, msg, args, title, cmd, querystring, fragment, reaction, spoiler) {
 	if ( args.join('') ) {
-		if ( args[0].startsWith( '/' ) ) minecraft_command(lang, mclang, msg, args[0].substring(1), args.slice(1), title, cmd, querystring, fragment, reaction, spoiler);
-		else minecraft_command(lang, mclang, msg, args[0], args.slice(1), title, cmd, querystring, fragment, reaction, spoiler);
+		if ( args[0].startsWith( '/' ) ) minecraft_command(lang, msg, args[0].substring(1), args.slice(1), title, cmd, querystring, fragment, reaction, spoiler);
+		else minecraft_command(lang, msg, args[0], args.slice(1), title, cmd, querystring, fragment, reaction, spoiler);
 	}
 	else {
 		msg.notminecraft = true;
-		gamepedia_check_wiki(lang, msg, title, mclang.link, cmd, reaction, spoiler, querystring, fragment);
+		gamepedia_check_wiki(lang, msg, title, lang.minecraft.link, cmd, reaction, spoiler, querystring, fragment);
 	}
 }
 

+ 13 - 0
i18n/de.json

@@ -379,5 +379,18 @@
 			{ "cmd": "pause @mention", "desc": "Ich werde auf diesem Server wieder auf alle Befehle reagieren.", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "Wenn ich gerade aktiv bin, werde ich antworten! Sonst nicht.", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-de.gamepedia.com/",
+		"cmdpage": "Befehl/",
+		"aliases": {
+			"cmd": "command",
+			"befehl": "command",
+			"fehler": "bug"
+		},
+		"private": "**Privater Fehler**",
+		"fixed": "Lösungsversion:",
+		"more": "Und %s mehr.",
+		"total": "%s Fehler korrigiert"
 	}
 }

+ 11 - 0
i18n/en.json

@@ -362,5 +362,16 @@
 			{ "cmd": "pause @mention", "desc": "I will respond to all commands on this server again.", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "If I'm active, I'll answer! Otherwise not.", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft.gamepedia.com/",
+		"cmdpage": "Commands/",
+		"aliases": {
+			"cmd": "command"
+		},
+		"private": "**Private Issue**",
+		"fixed": "Fixed Version:",
+		"more": "And %s more.",
+		"total": "%s issues fixed"
 	}
 }

+ 12 - 0
i18n/fr.json

@@ -392,5 +392,17 @@
 			{ "cmd": "pause @mention", "desc": "Je vais répondre à nouveau à tous les commandes sur ce serveur.", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "Si je suis actif, je répondrai ! Autrement non.", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-fr.gamepedia.com/",
+		"cmdpage": "Commandes#",
+		"aliases": {
+			"cmd": "command",
+			"commande": "command"
+		},
+		"private": "**Problème privé**",
+		"fixed": "Corrigé lors de la version",
+		"more": "Et %s autres.",
+		"total": "%s bugs corrigés"
 	}
 }

+ 11 - 0
i18n/nl.json

@@ -373,5 +373,16 @@
 			{ "cmd": "pause @mention", "desc": "Ik zal weer op alle opdrachten op deze server reageren.", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "Als ik actief ben, zal ik antwoorden! Anders niet.", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-nl.gamepedia.com/",
+		"cmdpage": "Opdrachten#",
+		"aliases": {
+			"cmd": "command"
+		},
+		"private": "**Privé issue**",
+		"fixed": "Fixed versie:",
+		"more": "En %s meer.",
+		"total": "%s bugs opgelost"
 	}
 }

+ 12 - 0
i18n/pl.json

@@ -402,5 +402,17 @@
 			{ "cmd": "pause @mention", "desc": "Ponownie będę odpowiadał na wszystkie komendy na tym serwerze.", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "Gdy jestem aktywny - odpowiem.", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-pl.gamepedia.com/",
+		"cmdpage": "Komendy#",
+		"aliases": {
+			"cmd": "command",
+			"komenda": "command"
+		},
+		"private": "**Private Issue**",
+		"fixed": "Naprawione w wersji:",
+		"more": "Oraz %s innych.",
+		"total": "naprawiono %s błędów"
 	}
 }

+ 13 - 0
i18n/pt.json

@@ -378,5 +378,18 @@
 			{ "cmd": "teste", "desc": "Se estou ativo, respondo! Caso contrário, não.", "pause": true },
 			{ "cmd": "test", "desc": "Se estou ativo, respondo! Caso contrário, não.", "hide": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-pt.gamepedia.com/",
+		"cmdpage": "Comandos/",
+		"aliases": {
+			"cmd": "command",
+			"comando": "command",
+			"erro": "bug"
+		},
+		"private": "**Private Issue**",
+		"fixed": "Versão corrigida:",
+		"more": "E %s mais.",
+		"total": "%s problemas corrigidos"
 	}
 }

+ 11 - 0
i18n/ru.json

@@ -367,5 +367,16 @@
 			{ "cmd": "pause @mention", "desc": "Я снова буду отвечать на все команды на этом сервере.", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "Если я активен, я отвечу! Иначе нет.", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-ru.gamepedia.com/",
+		"cmdpage": "Команды_консоли/",
+		"aliases": {
+			"cmd": "command"
+		},
+		"private": "**Конфиденциальный отчёт об ошибке**",
+		"fixed": "Исправлено в версии:",
+		"more": "и ещё %s ошибок.",
+		"total": "%s issues fixed"
 	}
 }

+ 11 - 0
i18n/tr.json

@@ -371,5 +371,16 @@
 			{ "cmd": "pause @mention", "desc": "Bu sunucudaki tüm komutlara tekrar cevap vereceğim.", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "Eğer aktifsem, cevap veririm! Aksi takdirde vermem.", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-tr.gamepedia.com/",
+		"cmdpage": "en:Commands/",
+		"aliases": {
+			"cmd": "command"
+		},
+		"private": "**Private Issue**",
+		"fixed": "Fixed Version:",
+		"more": "Ve %s tane daha.",
+		"total": "%s hata düzeltildi"
 	}
 }

+ 11 - 0
i18n/zh.json

@@ -364,5 +364,16 @@
 			{ "cmd": "pause @mention", "desc": "我将重新接受全部指令", "unsearchable": true, "hide": true, "pause": true },
 			{ "cmd": "test", "desc": "如果我被激活了,我就会回答你!否则不会。", "pause": true }
 		]
+	},
+	"minecraft": {
+		"link": "https://minecraft-zh.gamepedia.com/",
+		"cmdpage": "命令/",
+		"aliases": {
+			"cmd": "command"
+		},
+		"private": "**Private Issue**",
+		"fixed": "Fixed Version:",
+		"more": "And %s more.",
+		"total": "%s issues fixed"
 	}
 }

+ 505 - 648
minecraft.json

@@ -1,652 +1,509 @@
 {
-	"en": {
-		"link": "https://minecraft.gamepedia.com/",
-		"aliases": {
-			"cmd": "command"
-		},
-		"bug": {
-			"private": "**Private Issue**",
-			"fixed": "Fixed Version:",
-			"more": "And %s more.",
-			"total": "%s issues fixed"
-		},
-		"cmd": {
-			"page": "Commands/"
-		}
+	"aliases": {
+		"connect": "wsserver",
+		"tell": "msg",
+		"tm": "teammsg",
+		"tp": "teleport",
+		"w": "msg",
+		"xp": "experience"
 	},
-	"de": {
-		"link": "https://minecraft-de.gamepedia.com/",
-		"aliases": {
-			"cmd": "command",
-			"befehl": "command",
-			"fehler": "bug"
-		},
-		"bug": {
-			"private": "**Privater Fehler**",
-			"fixed": "Lösungsversion:",
-			"more": "Und %s mehr.",
-			"total": "%s Fehler korrigiert"
-		},
-		"cmd": {
-			"page": "Befehl/"
-		}
-	},
-	"fr": {
-		"link": "https://minecraft-fr.gamepedia.com/",
-		"aliases": {
-			"cmd": "command",
-			"commande": "command"
-		},
-		"bug": {
-			"private": "**Problème privé**",
-			"fixed": "Corrigé lors de la version",
-			"more": "Et %s autres.",
-			"total": "%s bugs corrigés"
-		},
-		"cmd": {
-			"page": "Commandes#"
-		}
-	},
-	"nl": {
-		"link": "https://minecraft-nl.gamepedia.com/",
-		"aliases": {
-			"cmd": "command"
-		},
-		"bug": {
-			"private": "**Privé issue**",
-			"fixed": "Fixed versie:",
-			"more": "En %s meer.",
-			"total": "%s bugs opgelost"
-		},
-		"cmd": {
-			"page": "Opdrachten#"
-		}
-	},
-	"pl": {
-		"link": "https://minecraft-pl.gamepedia.com/",
-		"aliases": {
-			"cmd": "command",
-			"komenda": "command"
-		},
-		"bug": {
-			"private": "**Private Issue**",
-			"fixed": "Naprawione w wersji:",
-			"more": "Oraz %s innych.",
-			"total": "naprawiono %s błędów"
-		},
-		"cmd": {
-			"page": "Komendy#"
-		}
-	},
-	"pt": {
-		"link": "https://minecraft-pt.gamepedia.com/",
-		"aliases": {
-			"cmd": "command",
-			"comando": "command",
-			"erro": "bug"
-		},
-		"bug": {
-			"private": "**Private Issue**",
-			"fixed": "Versão corrigida:",
-			"more": "E %s mais.",
-			"total": "%s problemas corrigidos"
-		},
-		"cmd": {
-			"page": "Comandos/"
-		}
-	},
-	"ru": {
-		"link": "https://minecraft-ru.gamepedia.com/",
-		"aliases": {
-			"cmd": "command"
-		},
-		"bug": {
-			"private": "**Конфиденциальный отчёт об ошибке**",
-			"fixed": "Исправлено в версии:",
-			"more": "и ещё %s ошибок.",
-			"total": "%s issues fixed"
-		},
-		"cmd": {
-			"page": "Команды_консоли/"
-		}
-	},
-	"tr": {
-		"link": "https://minecraft-tr.gamepedia.com/",
-		"aliases": {
-			"cmd": "command"
-		},
-		"bug": {
-			"private": "**Private Issue**",
-			"fixed": "Fixed Version:",
-			"more": "Ve %s tane daha.",
-			"total": "%s hata düzeltildi"
-		},
-		"cmd": {
-			"page": "en:Commands/"
-		}
-	},
-	"zh": {
-		"link": "https://minecraft-zh.gamepedia.com/",
-		"aliases": {
-			"cmd": "command"
-		},
-		"bug": {
-			"private": "**Private Issue**",
-			"fixed": "Fixed Version:",
-			"more": "And %s more.",
-			"total": "%s issues fixed"
-		},
-		"cmd": {
-			"page": "命令/"
-		}
-	},
-	"cmd": {
-		"aliases": {
-			"connect": "wsserver",
-			"tell": "msg",
-			"tm": "teammsg",
-			"tp": "teleport",
-			"w": "msg",
-			"xp": "experience"
-		},
-		"list": {
-			"advancement": [
-				"/advancement grant <targets> everything",
-				"/advancement grant <targets> from <advancement>",
-				"/advancement grant <targets> only <advancement>",
-				"/advancement grant <targets> only <advancement> <criterion>",
-				"/advancement grant <targets> through <advancement>",
-				"/advancement grant <targets> until <advancement>",
-				"/advancement revoke <targets> everything",
-				"/advancement revoke <targets> from <advancement>",
-				"/advancement revoke <targets> only <advancement>",
-				"/advancement revoke <targets> only <advancement> <criterion>",
-				"/advancement revoke <targets> through <advancement>",
-				"/advancement revoke <targets> until <advancement>"
-			],
-			"attribute": [
-				"/attribute <target> <attribute> get [<scale>]",
-				"/attribute <target> <attribute> base get [<scale>]",
-				"/attribute <target> <attribute> base set <value>",
-				"/attribute <target> <attribute> modifier add <uuid> <name> <value> (add|multiply|multiply_base)",
-				"/attribute <target> <attribute> modifier remove <uuid>",
-				"/attribute <target> <attribute> modifier value get <uuid> [<scale>]"
-			],
-			"ban": [
-				"/ban <targets>",
-				"/ban <targets> <reason>"
-			],
-			"ban-ip": [
-				"/ban-ip <target>",
-				"/ban-ip <target> <reason>"
-			],
-			"banlist": [
-				"/banlist",
-				"/banlist ips",
-				"/banlist players"
-			],
-			"bossbar": [
-				"/bossbar add <id> <name>",
-				"/bossbar get <id> max",
-				"/bossbar get <id> players",
-				"/bossbar get <id> value",
-				"/bossbar get <id> visible",
-				"/bossbar list",
-				"/bossbar remove <id>",
-				"/bossbar set <id> color <color>",
-				"/bossbar set <id> max <max>",
-				"/bossbar set <id> name <name>",
-				"/bossbar set <id> players",
-				"/bossbar set <id> players <targets>",
-				"/bossbar set <id> style <style>",
-				"/bossbar set <id> value <value>",
-				"/bossbar set <id> visible <visible>"
-			],
-			"clear": [
-				"/clear",
-				"/clear <targets>",
-				"/clear <targets> <item>",
-				"/clear <targets> <item> <maxCount>"
-			],
-			"clone": [
-				"/clone <begin> <end> <destination>",
-				"/clone <begin> <end> <destination> filtered <filter>",
-				"/clone <begin> <end> <destination> filtered <filter> <mode>",
-				"/clone <begin> <end> <destination> masked",
-				"/clone <begin> <end> <destination> masked <mode>",
-				"/clone <begin> <end> <destination> replace",
-				"/clone <begin> <end> <destination> replace <mode>"
-			],
-			"data": [
-				"/data get (block <targetPos>|entity <target>|storage <target>)",
-				"/data get (block <targetPos>|entity <target>|storage <target>) <path>",
-				"/data get (block <targetPos>|entity <target>|storage <target>) <path> <scale>",
-				"/data merge (block <targetPos>|entity <target>|storage <target>) <nbt>",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> append value <value>",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> append from (block <sourcePos>|entity <source>) [<sourcePath>]",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> insert <index> value <value>",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> insert <index> from (block <sourcePos>|entity <source>) [<sourcePath>]",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> merge value <value>",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> merge from (block <sourcePos>|entity <source>) [<sourcePath>]",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> prepend value <value>",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> prepend from (block <sourcePos>|entity <source>) [<sourcePath>]",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> set value <value>",
-				"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> set from (block <sourcePos>|entity <source>) [<sourcePath>]",
-				"/data remove (block <targetPos>|entity <target>|storage <target>) <path>"
-			],
-			"datapack": [
-				"/datapack disable <name>",
-				"/datapack enable <name>",
-				"/datapack enable <name> after <existing>",
-				"/datapack enable <name> before <existing>",
-				"/datapack enable <name> first",
-				"/datapack enable <name> last",
-				"/datapack list",
-				"/datapack list available",
-				"/datapack list enabled"
-			],
-			"debug": [
-				"/debug start",
-				"/debug stop"
-			],
-			"defaultgamemode": [
-				"/defaultgamemode adventure",
-				"/defaultgamemode creative",
-				"/defaultgamemode spectator",
-				"/defaultgamemode survival"
-			],
-			"deop": [
-				"/deop <targets>"
-			],
-			"difficulty": [
-				"/difficulty",
-				"/difficulty easy",
-				"/difficulty hard",
-				"/difficulty normal",
-				"/difficulty peaceful"
-			],
-			"effect": [
-				"/effect clear",
-				"/effect clear <targets>",
-				"/effect clear <targets> <effect>",
-				"/effect give <targets> <effect>",
-				"/effect give <targets> <effect> <seconds>",
-				"/effect give <targets> <effect> <seconds> <amplifier>",
-				"/effect give <targets> <effect> <seconds> <amplifier> <hideParticles>"
-			],
-			"enchant": [
-				"/enchant <targets> <enchantment>",
-				"/enchant <targets> <enchantment> <level>"
-			],
-			"execute":[
-				"/execute < subcommand >",
-				"\nSubcommands:\n============",
-				"run <command>",
-				"align <axes> < subcommand >",
-				"anchored <anchor> < subcommand >",
-				"as <targets> < subcommand >",
-				"at <targets> < subcommand >",
-				"facing entity <targets> <anchor> < subcommand >",
-				"facing <pos> < subcommand >",
-				"if block <pos> <block> < subcommand >",
-				"if blocks <start> <end> <destination> all < subcommand >",
-				"if blocks <start> <end> <destination> masked < subcommand >",
-				"if data (block <sourcePos>|entity <source>) <path> < subcommand >",
-				"if entity <entities> < subcommand >",
-				"if predicate <predicate> < subcommand >",
-				"if score <target> <targetObjective> <operation> <source> <sourceObjective> < subcommand >",
-				"if score <target> <targetObjective> matches <range> < subcommand >",
-				"unless block <pos> <block> < subcommand >",
-				"unless blocks <start> <end> <destination> all < subcommand >",
-				"unless blocks <start> <end> <destination> masked < subcommand >",
-				"unless data (block <sourcePos>|entity <source>) <path> < subcommand >",
-				"unless entity <entities> < subcommand >",
-				"unless predicate <predicate> < subcommand >",
-				"unless score <target> <targetObjective> <operation> <source> <sourceObjective> < subcommand >",
-				"unless score <target> <targetObjective> matches <range> < subcommand >",
-				"in <dimension> < subcommand >",
-				"positioned as <targets> < subcommand >",
-				"positioned <pos> < subcommand >",
-				"rotated as <targets> < subcommand >",
-				"rotated <rot> < subcommand >",
-				"store result block <pos> <path> <dataType> <scale> < subcommand >",
-				"store result bossbar <id> max < subcommand >",
-				"store result bossbar <id> value < subcommand >",
-				"store result entity <targets> <path> <dataType> <scale> < subcommand >",
-				"store result storage <storage> <path> <dataType> <scale> < subcommand >",
-				"store result score <targets> <objective> < subcommand >",
-				"store success block <pos> <path> <dataType> <scale> < subcommand >",
-				"store success bossbar <id> max < subcommand >",
-				"store success bossbar <id> value < subcommand >",
-				"store success entity <targets> <path> <dataType> <scale> < subcommand >",
-				"store success storage <storage> <path> <dataType> <scale> < subcommand >",
-				"store success score <targets> <objective> < subcommand >"
-			],
-			"experience": [
-				"/experience add <targets> <amount>",
-				"/experience add <targets> <amount> levels",
-				"/experience add <targets> <amount> points",
-				"/experience query <targets> levels",
-				"/experience query <targets> points",
-				"/experience set <targets> <amount>",
-				"/experience set <targets> <amount> levels",
-				"/experience set <targets> <amount> points"
-			],
-			"fill": [
-				"/fill <from> <to> <block>",
-				"/fill <from> <to> <block> destroy",
-				"/fill <from> <to> <block> hollow",
-				"/fill <from> <to> <block> keep",
-				"/fill <from> <to> <block> outline",
-				"/fill <from> <to> <block> replace",
-				"/fill <from> <to> <block> replace <filter>"
-			],
-			"forceload": [
-				"/forceload add <from>",
-				"/forceload add <from> <to>",
-				"/forceload query",
-				"/forceload query <pos>",
-				"/forceload remove all",
-				"/forceload remove <from>",
-				"/forceload remove <from> <to>"
-			],
-			"function": [
-				"/function <name>"
-			],
-			"gamemode": [
-				"/gamemode adventure",
-				"/gamemode adventure <target>",
-				"/gamemode creative",
-				"/gamemode creative <target>",
-				"/gamemode spectator",
-				"/gamemode spectator <target>",
-				"/gamemode survival",
-				"/gamemode survival <target>"
-			],
-			"gamerule": [
-				"/gamerule <rule>",
-				"/gamerule <rule> <value>"
-			],
-			"give": [
-				"/give <targets> <item>",
-				"/give <targets> <item> <count>"
-			],
-			"help": [
-				"/help",
-				"/help <command>"
-			],
-			"kick": [
-				"/kick <targets>",
-				"/kick <targets> <reason>"
-			],
-			"kill": [
-				"/kill",
-				"/kill <targets>"
-			],
-			"list": [
-				"/list",
-				"/list uuids"
-			],
-			"locate": [
-				"/locate <structure>"
-			],
-			"locatebiome": [
-				"/locatebiome <biome>"
-			],
-			"loot": [
-				"/loot give <players> <source>",
-				"/loot insert <targetPos> <source>",
-				"/loot replace block <targetPos> <slot> <source>",
-				"/loot replace block <targetPos> <slot> <count> <source>",
-				"/loot replace entity <entities> <slot> <source>",
-				"/loot replace entity <entities> <slot> <count> <source>",
-				"/loot spawn <targetPos> <source>"
-			],
-			"me": [
-				"/me <action>"
-			],
-			"msg": [
-				"/msg <targets> <message>"
-			],
-			"op": [
-				"/op <targets>"
-			],
-			"pardon": [
-				"/pardon <targets>"
-			],
-			"pardon-ip": [
-				"/pardon-ip <target>"
-			],
-			"particle": [
-				"/particle <name>",
-				"/particle <name> <pos>",
-				"/particle <name> <pos> <delta> <speed> <count>",
-				"/particle <name> <pos> <delta> <speed> <count> force",
-				"/particle <name> <pos> <delta> <speed> <count> force <targets>",
-				"/particle <name> <pos> <delta> <speed> <count> normal",
-				"/particle <name> <pos> <delta> <speed> <count> normal <targets>",
-				"/particle <name> <style>",
-				"/particle <name> <style> <pos>",
-				"/particle <name> <style> <pos> <delta> <speed> <count>",
-				"/particle <name> <style> <pos> <delta> <speed> <count> force",
-				"/particle <name> <style> <pos> <delta> <speed> <count> force <targets>",
-				"/particle <name> <style> <pos> <delta> <speed> <count> normal",
-				"/particle <name> <style> <pos> <delta> <speed> <count> normal <targets>"
-			],
-			"playsound": [
-				"/playsound <sound> <source> <targets>",
-				"/playsound <sound> <source> <targets> <pos>",
-				"/playsound <sound> <source> <targets> <pos> <volume>",
-				"/playsound <sound> <source> <targets> <pos> <volume> <pitch>",
-				"/playsound <sound> <source> <targets> <pos> <volume> <pitch> <minVolume>"
-			],
-			"publish": [
-				"/publish",
-				"/publish <port>"
-			],
-			"recipe": [
-				"/recipe give <targets> *",
-				"/recipe give <targets> <recipe>",
-				"/recipe take <targets> *",
-				"/recipe take <targets> <recipe>"
-			],
-			"reload": [
-				"/reload"
-			],
-			"replaceitem": [
-				"/replaceitem block <pos> <slot> <item>",
-				"/replaceitem block <pos> <slot> <item> <count>",
-				"/replaceitem entity <targets> <slot> <item>",
-				"/replaceitem entity <targets> <slot> <item> <count>"
-			],
-			"save-all": [
-				"/save-all",
-				"/save-all flush"
-			],
-			"save-off": [
-				"/save-off"
-			],
-			"save-on": [
-				"/save-on"
-			],
-			"say": [
-				"/say <message>"
-			],
-			"schedule": [
-				"/schedule clear <function>",
-				"/schedule function <function> <time>",
-				"/schedule function <function> <time> append",
-				"/schedule function <function> <time> replace"
-			],
-			"scoreboard": [
-				"/scoreboard objectives add <objective> <criteria>",
-				"/scoreboard objectives add <objective> <criteria> <displayName>",
-				"/scoreboard objectives list",
-				"/scoreboard objectives modify <objective> displayname <displayName>",
-				"/scoreboard objectives modify <objective> rendertype hearts",
-				"/scoreboard objectives modify <objective> rendertype integer",
-				"/scoreboard objectives remove <objective>",
-				"/scoreboard objectives setdisplay <slot>",
-				"/scoreboard objectives setdisplay <slot> <objective>",
-				"/scoreboard players add <targets> <objective> <score>",
-				"/scoreboard players enable <targets> <objective>",
-				"/scoreboard players get <target> <objective>",
-				"/scoreboard players list",
-				"/scoreboard players list <target>",
-				"/scoreboard players operation <targets> <targetObjective> <operation> <source> <sourceObjective>",
-				"/scoreboard players remove <targets> <objective> <score>",
-				"/scoreboard players reset <targets>",
-				"/scoreboard players reset <targets> <objective>",
-				"/scoreboard players set <targets> <objective> <score>"
-			],
-			"seed": [
-				"/seed"
-			],
-			"setblock": [
-				"/setblock <pos> <block>",
-				"/setblock <pos> <block> destroy",
-				"/setblock <pos> <block> keep",
-				"/setblock <pos> <block> replace"
-			],
-			"setidletimeout": [
-				"/setidletimeout <seconds>"
-			],
-			"setworldspawn": [
-				"/setworldspawn",
-				"/setworldspawn <pos>"
-			],
-			"spawnpoint": [
-				"/spawnpoint",
-				"/spawnpoint <targets>",
-				"/spawnpoint <targets> <pos>"
-			],
-			"spectate": [
-				"/spectate <target>",
-				"/spectate <target> <player>"
-			],
-			"spreadplayers": [
-				"/spreadplayers <center> <spreadDistance> <maxRange> <respectTeams> <targets>",
-				"/spreadplayers <center> <spreadDistance> <maxRange> under <maxHeight> <respectTeams> <targets>"
-			],
-			"stop": [
-				"/stop"
-			],
-			"stopsound": [
-				"/stopsound <targets>",
-				"/stopsound <targets> * <sound>",
-				"/stopsound <targets> <source>",
-				"/stopsound <targets> <source> <sound>"
-			],
-			"summon": [
-				"/summon <entity>",
-				"/summon <entity> <pos>",
-				"/summon <entity> <pos> <nbt>"
-			],
-			"tag": [
-				"/tag <targets> add <name>",
-				"/tag <targets> list",
-				"/tag <targets> remove <name>"
-			],
-			"team": [
-				"/team add <team>",
-				"/team add <team> <displayName>",
-				"/team empty <team>",
-				"/team join <team>",
-				"/team join <team> <members>",
-				"/team leave <members>",
-				"/team list",
-				"/team list <team>",
-				"/team modify <team> <option> <value>",
-				"/team remove <team>"
-			],
-			"teammsg": [
-				"/teammsg <message>"
-			],
-			"teleport": [
-				"/teleport <destination>",
-				"/teleport <location>",
-				"/teleport <targets> <destination>",
-				"/teleport <targets> <location>",
-				"/teleport <targets> <location> <rotation>",
-				"/teleport <targets> <location> facing <facingLocation>",
-				"/teleport <targets> <location> facing entity <facingEntity> eyes",
-				"/teleport <targets> <location> facing entity <facingEntity> feet"
-			],
-			"tellraw": [
-				"/tellraw <targets> <message>"
-			],
-			"tickingarea": [
-				"/* This command is Bedrock Edition only */",
-				"/tickingarea add <from: x y z> <to: x y z>",
-				"/tickingarea add <from: x y z> <to: x y z> <name: string>",
-				"/tickingarea add circle <center: x y z> <radius: int>",
-				"/tickingarea add circle <center: x y z> <radius: int> <name: string>",
-				"/tickingarea remove <name: string>",
-				"/tickingarea remove <position: x y z>",
-				"/tickingarea remove_all",
-				"/tickingarea list",
-				"/tickingarea list all-dimensions"
-			],
-			"time": [
-				"/time add <time>",
-				"/time query day",
-				"/time query daytime",
-				"/time query gametime",
-				"/time set day",
-				"/time set midnight",
-				"/time set night",
-				"/time set noon",
-				"/time set <time>"
-			],
-			"title": [
-				"/title <targets> actionbar <title>",
-				"/title <targets> clear",
-				"/title <targets> reset",
-				"/title <targets> subtitle <title>",
-				"/title <targets> times <fadeIn> <stay> <fadeOut>",
-				"/title <targets> title <title>"
-			],
-			"transferserver": [
-				"/* This command is Bedrock Edition only */",
-				"/transferserver <server: string> <port: int>"
-			],
-			"trigger": [
-				"/trigger <objective>",
-				"/trigger <objective> add <value>",
-				"/trigger <objective> set <value>"
-			],
-			"weather": [
-				"/weather clear",
-				"/weather clear <duration>",
-				"/weather rain",
-				"/weather rain <duration>",
-				"/weather thunder",
-				"/weather thunder <duration>"
-			],
-			"whitelist": [
-				"/whitelist add <targets>",
-				"/whitelist list",
-				"/whitelist off",
-				"/whitelist on",
-				"/whitelist reload",
-				"/whitelist remove <targets>"
-			],
-			"worldborder": [
-				"/worldborder add <distance>",
-				"/worldborder add <distance> <time>",
-				"/worldborder center <pos>",
-				"/worldborder damage amount <damagePerBlock>",
-				"/worldborder damage buffer <distance>",
-				"/worldborder get",
-				"/worldborder set <distance>",
-				"/worldborder set <distance> <time>",
-				"/worldborder warning distance <distance>",
-				"/worldborder warning time <time>"
-			],
-			"wsserver": [
-				"/* This command is Bedrock Edition only */",
-				"/wsserver <serverUri: string>"
-			]
-		}
+	"list": {
+		"advancement": [
+			"/advancement grant <targets> everything",
+			"/advancement grant <targets> from <advancement>",
+			"/advancement grant <targets> only <advancement>",
+			"/advancement grant <targets> only <advancement> <criterion>",
+			"/advancement grant <targets> through <advancement>",
+			"/advancement grant <targets> until <advancement>",
+			"/advancement revoke <targets> everything",
+			"/advancement revoke <targets> from <advancement>",
+			"/advancement revoke <targets> only <advancement>",
+			"/advancement revoke <targets> only <advancement> <criterion>",
+			"/advancement revoke <targets> through <advancement>",
+			"/advancement revoke <targets> until <advancement>"
+		],
+		"attribute": [
+			"/attribute <target> <attribute> get [<scale>]",
+			"/attribute <target> <attribute> base get [<scale>]",
+			"/attribute <target> <attribute> base set <value>",
+			"/attribute <target> <attribute> modifier add <uuid> <name> <value> (add|multiply|multiply_base)",
+			"/attribute <target> <attribute> modifier remove <uuid>",
+			"/attribute <target> <attribute> modifier value get <uuid> [<scale>]"
+		],
+		"ban": [
+			"/ban <targets>",
+			"/ban <targets> <reason>"
+		],
+		"ban-ip": [
+			"/ban-ip <target>",
+			"/ban-ip <target> <reason>"
+		],
+		"banlist": [
+			"/banlist",
+			"/banlist ips",
+			"/banlist players"
+		],
+		"bossbar": [
+			"/bossbar add <id> <name>",
+			"/bossbar get <id> max",
+			"/bossbar get <id> players",
+			"/bossbar get <id> value",
+			"/bossbar get <id> visible",
+			"/bossbar list",
+			"/bossbar remove <id>",
+			"/bossbar set <id> color <color>",
+			"/bossbar set <id> max <max>",
+			"/bossbar set <id> name <name>",
+			"/bossbar set <id> players",
+			"/bossbar set <id> players <targets>",
+			"/bossbar set <id> style <style>",
+			"/bossbar set <id> value <value>",
+			"/bossbar set <id> visible <visible>"
+		],
+		"clear": [
+			"/clear",
+			"/clear <targets>",
+			"/clear <targets> <item>",
+			"/clear <targets> <item> <maxCount>"
+		],
+		"clone": [
+			"/clone <begin> <end> <destination>",
+			"/clone <begin> <end> <destination> filtered <filter>",
+			"/clone <begin> <end> <destination> filtered <filter> <mode>",
+			"/clone <begin> <end> <destination> masked",
+			"/clone <begin> <end> <destination> masked <mode>",
+			"/clone <begin> <end> <destination> replace",
+			"/clone <begin> <end> <destination> replace <mode>"
+		],
+		"data": [
+			"/data get (block <targetPos>|entity <target>|storage <target>)",
+			"/data get (block <targetPos>|entity <target>|storage <target>) <path>",
+			"/data get (block <targetPos>|entity <target>|storage <target>) <path> <scale>",
+			"/data merge (block <targetPos>|entity <target>|storage <target>) <nbt>",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> append value <value>",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> append from (block <sourcePos>|entity <source>) [<sourcePath>]",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> insert <index> value <value>",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> insert <index> from (block <sourcePos>|entity <source>) [<sourcePath>]",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> merge value <value>",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> merge from (block <sourcePos>|entity <source>) [<sourcePath>]",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> prepend value <value>",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> prepend from (block <sourcePos>|entity <source>) [<sourcePath>]",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> set value <value>",
+			"/data modify (block <targetPos>|entity <target>|storage <target>) <targetPath> set from (block <sourcePos>|entity <source>) [<sourcePath>]",
+			"/data remove (block <targetPos>|entity <target>|storage <target>) <path>"
+		],
+		"datapack": [
+			"/datapack disable <name>",
+			"/datapack enable <name>",
+			"/datapack enable <name> after <existing>",
+			"/datapack enable <name> before <existing>",
+			"/datapack enable <name> first",
+			"/datapack enable <name> last",
+			"/datapack list",
+			"/datapack list available",
+			"/datapack list enabled"
+		],
+		"debug": [
+			"/debug start",
+			"/debug stop"
+		],
+		"defaultgamemode": [
+			"/defaultgamemode adventure",
+			"/defaultgamemode creative",
+			"/defaultgamemode spectator",
+			"/defaultgamemode survival"
+		],
+		"deop": [
+			"/deop <targets>"
+		],
+		"difficulty": [
+			"/difficulty",
+			"/difficulty easy",
+			"/difficulty hard",
+			"/difficulty normal",
+			"/difficulty peaceful"
+		],
+		"effect": [
+			"/effect clear",
+			"/effect clear <targets>",
+			"/effect clear <targets> <effect>",
+			"/effect give <targets> <effect>",
+			"/effect give <targets> <effect> <seconds>",
+			"/effect give <targets> <effect> <seconds> <amplifier>",
+			"/effect give <targets> <effect> <seconds> <amplifier> <hideParticles>"
+		],
+		"enchant": [
+			"/enchant <targets> <enchantment>",
+			"/enchant <targets> <enchantment> <level>"
+		],
+		"execute":[
+			"/execute < subcommand >",
+			"\nSubcommands:\n============",
+			"run <command>",
+			"align <axes> < subcommand >",
+			"anchored <anchor> < subcommand >",
+			"as <targets> < subcommand >",
+			"at <targets> < subcommand >",
+			"facing entity <targets> <anchor> < subcommand >",
+			"facing <pos> < subcommand >",
+			"if block <pos> <block> < subcommand >",
+			"if blocks <start> <end> <destination> all < subcommand >",
+			"if blocks <start> <end> <destination> masked < subcommand >",
+			"if data (block <sourcePos>|entity <source>) <path> < subcommand >",
+			"if entity <entities> < subcommand >",
+			"if predicate <predicate> < subcommand >",
+			"if score <target> <targetObjective> <operation> <source> <sourceObjective> < subcommand >",
+			"if score <target> <targetObjective> matches <range> < subcommand >",
+			"unless block <pos> <block> < subcommand >",
+			"unless blocks <start> <end> <destination> all < subcommand >",
+			"unless blocks <start> <end> <destination> masked < subcommand >",
+			"unless data (block <sourcePos>|entity <source>) <path> < subcommand >",
+			"unless entity <entities> < subcommand >",
+			"unless predicate <predicate> < subcommand >",
+			"unless score <target> <targetObjective> <operation> <source> <sourceObjective> < subcommand >",
+			"unless score <target> <targetObjective> matches <range> < subcommand >",
+			"in <dimension> < subcommand >",
+			"positioned as <targets> < subcommand >",
+			"positioned <pos> < subcommand >",
+			"rotated as <targets> < subcommand >",
+			"rotated <rot> < subcommand >",
+			"store result block <pos> <path> <dataType> <scale> < subcommand >",
+			"store result bossbar <id> max < subcommand >",
+			"store result bossbar <id> value < subcommand >",
+			"store result entity <targets> <path> <dataType> <scale> < subcommand >",
+			"store result storage <storage> <path> <dataType> <scale> < subcommand >",
+			"store result score <targets> <objective> < subcommand >",
+			"store success block <pos> <path> <dataType> <scale> < subcommand >",
+			"store success bossbar <id> max < subcommand >",
+			"store success bossbar <id> value < subcommand >",
+			"store success entity <targets> <path> <dataType> <scale> < subcommand >",
+			"store success storage <storage> <path> <dataType> <scale> < subcommand >",
+			"store success score <targets> <objective> < subcommand >"
+		],
+		"experience": [
+			"/experience add <targets> <amount>",
+			"/experience add <targets> <amount> levels",
+			"/experience add <targets> <amount> points",
+			"/experience query <targets> levels",
+			"/experience query <targets> points",
+			"/experience set <targets> <amount>",
+			"/experience set <targets> <amount> levels",
+			"/experience set <targets> <amount> points"
+		],
+		"fill": [
+			"/fill <from> <to> <block>",
+			"/fill <from> <to> <block> destroy",
+			"/fill <from> <to> <block> hollow",
+			"/fill <from> <to> <block> keep",
+			"/fill <from> <to> <block> outline",
+			"/fill <from> <to> <block> replace",
+			"/fill <from> <to> <block> replace <filter>"
+		],
+		"forceload": [
+			"/forceload add <from>",
+			"/forceload add <from> <to>",
+			"/forceload query",
+			"/forceload query <pos>",
+			"/forceload remove all",
+			"/forceload remove <from>",
+			"/forceload remove <from> <to>"
+		],
+		"function": [
+			"/function <name>"
+		],
+		"gamemode": [
+			"/gamemode adventure",
+			"/gamemode adventure <target>",
+			"/gamemode creative",
+			"/gamemode creative <target>",
+			"/gamemode spectator",
+			"/gamemode spectator <target>",
+			"/gamemode survival",
+			"/gamemode survival <target>"
+		],
+		"gamerule": [
+			"/gamerule <rule>",
+			"/gamerule <rule> <value>"
+		],
+		"give": [
+			"/give <targets> <item>",
+			"/give <targets> <item> <count>"
+		],
+		"help": [
+			"/help",
+			"/help <command>"
+		],
+		"kick": [
+			"/kick <targets>",
+			"/kick <targets> <reason>"
+		],
+		"kill": [
+			"/kill",
+			"/kill <targets>"
+		],
+		"list": [
+			"/list",
+			"/list uuids"
+		],
+		"locate": [
+			"/locate <structure>"
+		],
+		"locatebiome": [
+			"/locatebiome <biome>"
+		],
+		"loot": [
+			"/loot give <players> <source>",
+			"/loot insert <targetPos> <source>",
+			"/loot replace block <targetPos> <slot> <source>",
+			"/loot replace block <targetPos> <slot> <count> <source>",
+			"/loot replace entity <entities> <slot> <source>",
+			"/loot replace entity <entities> <slot> <count> <source>",
+			"/loot spawn <targetPos> <source>"
+		],
+		"me": [
+			"/me <action>"
+		],
+		"msg": [
+			"/msg <targets> <message>"
+		],
+		"op": [
+			"/op <targets>"
+		],
+		"pardon": [
+			"/pardon <targets>"
+		],
+		"pardon-ip": [
+			"/pardon-ip <target>"
+		],
+		"particle": [
+			"/particle <name>",
+			"/particle <name> <pos>",
+			"/particle <name> <pos> <delta> <speed> <count>",
+			"/particle <name> <pos> <delta> <speed> <count> force",
+			"/particle <name> <pos> <delta> <speed> <count> force <targets>",
+			"/particle <name> <pos> <delta> <speed> <count> normal",
+			"/particle <name> <pos> <delta> <speed> <count> normal <targets>",
+			"/particle <name> <style>",
+			"/particle <name> <style> <pos>",
+			"/particle <name> <style> <pos> <delta> <speed> <count>",
+			"/particle <name> <style> <pos> <delta> <speed> <count> force",
+			"/particle <name> <style> <pos> <delta> <speed> <count> force <targets>",
+			"/particle <name> <style> <pos> <delta> <speed> <count> normal",
+			"/particle <name> <style> <pos> <delta> <speed> <count> normal <targets>"
+		],
+		"playsound": [
+			"/playsound <sound> <source> <targets>",
+			"/playsound <sound> <source> <targets> <pos>",
+			"/playsound <sound> <source> <targets> <pos> <volume>",
+			"/playsound <sound> <source> <targets> <pos> <volume> <pitch>",
+			"/playsound <sound> <source> <targets> <pos> <volume> <pitch> <minVolume>"
+		],
+		"publish": [
+			"/publish",
+			"/publish <port>"
+		],
+		"recipe": [
+			"/recipe give <targets> *",
+			"/recipe give <targets> <recipe>",
+			"/recipe take <targets> *",
+			"/recipe take <targets> <recipe>"
+		],
+		"reload": [
+			"/reload"
+		],
+		"replaceitem": [
+			"/replaceitem block <pos> <slot> <item>",
+			"/replaceitem block <pos> <slot> <item> <count>",
+			"/replaceitem entity <targets> <slot> <item>",
+			"/replaceitem entity <targets> <slot> <item> <count>"
+		],
+		"save-all": [
+			"/save-all",
+			"/save-all flush"
+		],
+		"save-off": [
+			"/save-off"
+		],
+		"save-on": [
+			"/save-on"
+		],
+		"say": [
+			"/say <message>"
+		],
+		"schedule": [
+			"/schedule clear <function>",
+			"/schedule function <function> <time>",
+			"/schedule function <function> <time> append",
+			"/schedule function <function> <time> replace"
+		],
+		"scoreboard": [
+			"/scoreboard objectives add <objective> <criteria>",
+			"/scoreboard objectives add <objective> <criteria> <displayName>",
+			"/scoreboard objectives list",
+			"/scoreboard objectives modify <objective> displayname <displayName>",
+			"/scoreboard objectives modify <objective> rendertype hearts",
+			"/scoreboard objectives modify <objective> rendertype integer",
+			"/scoreboard objectives remove <objective>",
+			"/scoreboard objectives setdisplay <slot>",
+			"/scoreboard objectives setdisplay <slot> <objective>",
+			"/scoreboard players add <targets> <objective> <score>",
+			"/scoreboard players enable <targets> <objective>",
+			"/scoreboard players get <target> <objective>",
+			"/scoreboard players list",
+			"/scoreboard players list <target>",
+			"/scoreboard players operation <targets> <targetObjective> <operation> <source> <sourceObjective>",
+			"/scoreboard players remove <targets> <objective> <score>",
+			"/scoreboard players reset <targets>",
+			"/scoreboard players reset <targets> <objective>",
+			"/scoreboard players set <targets> <objective> <score>"
+		],
+		"seed": [
+			"/seed"
+		],
+		"setblock": [
+			"/setblock <pos> <block>",
+			"/setblock <pos> <block> destroy",
+			"/setblock <pos> <block> keep",
+			"/setblock <pos> <block> replace"
+		],
+		"setidletimeout": [
+			"/setidletimeout <seconds>"
+		],
+		"setworldspawn": [
+			"/setworldspawn",
+			"/setworldspawn <pos>"
+		],
+		"spawnpoint": [
+			"/spawnpoint",
+			"/spawnpoint <targets>",
+			"/spawnpoint <targets> <pos>"
+		],
+		"spectate": [
+			"/spectate <target>",
+			"/spectate <target> <player>"
+		],
+		"spreadplayers": [
+			"/spreadplayers <center> <spreadDistance> <maxRange> <respectTeams> <targets>",
+			"/spreadplayers <center> <spreadDistance> <maxRange> under <maxHeight> <respectTeams> <targets>"
+		],
+		"stop": [
+			"/stop"
+		],
+		"stopsound": [
+			"/stopsound <targets>",
+			"/stopsound <targets> * <sound>",
+			"/stopsound <targets> <source>",
+			"/stopsound <targets> <source> <sound>"
+		],
+		"summon": [
+			"/summon <entity>",
+			"/summon <entity> <pos>",
+			"/summon <entity> <pos> <nbt>"
+		],
+		"tag": [
+			"/tag <targets> add <name>",
+			"/tag <targets> list",
+			"/tag <targets> remove <name>"
+		],
+		"team": [
+			"/team add <team>",
+			"/team add <team> <displayName>",
+			"/team empty <team>",
+			"/team join <team>",
+			"/team join <team> <members>",
+			"/team leave <members>",
+			"/team list",
+			"/team list <team>",
+			"/team modify <team> <option> <value>",
+			"/team remove <team>"
+		],
+		"teammsg": [
+			"/teammsg <message>"
+		],
+		"teleport": [
+			"/teleport <destination>",
+			"/teleport <location>",
+			"/teleport <targets> <destination>",
+			"/teleport <targets> <location>",
+			"/teleport <targets> <location> <rotation>",
+			"/teleport <targets> <location> facing <facingLocation>",
+			"/teleport <targets> <location> facing entity <facingEntity> eyes",
+			"/teleport <targets> <location> facing entity <facingEntity> feet"
+		],
+		"tellraw": [
+			"/tellraw <targets> <message>"
+		],
+		"tickingarea": [
+			"/* This command is Bedrock Edition only */",
+			"/tickingarea add <from: x y z> <to: x y z>",
+			"/tickingarea add <from: x y z> <to: x y z> <name: string>",
+			"/tickingarea add circle <center: x y z> <radius: int>",
+			"/tickingarea add circle <center: x y z> <radius: int> <name: string>",
+			"/tickingarea remove <name: string>",
+			"/tickingarea remove <position: x y z>",
+			"/tickingarea remove_all",
+			"/tickingarea list",
+			"/tickingarea list all-dimensions"
+		],
+		"time": [
+			"/time add <time>",
+			"/time query day",
+			"/time query daytime",
+			"/time query gametime",
+			"/time set day",
+			"/time set midnight",
+			"/time set night",
+			"/time set noon",
+			"/time set <time>"
+		],
+		"title": [
+			"/title <targets> actionbar <title>",
+			"/title <targets> clear",
+			"/title <targets> reset",
+			"/title <targets> subtitle <title>",
+			"/title <targets> times <fadeIn> <stay> <fadeOut>",
+			"/title <targets> title <title>"
+		],
+		"transferserver": [
+			"/* This command is Bedrock Edition only */",
+			"/transferserver <server: string> <port: int>"
+		],
+		"trigger": [
+			"/trigger <objective>",
+			"/trigger <objective> add <value>",
+			"/trigger <objective> set <value>"
+		],
+		"weather": [
+			"/weather clear",
+			"/weather clear <duration>",
+			"/weather rain",
+			"/weather rain <duration>",
+			"/weather thunder",
+			"/weather thunder <duration>"
+		],
+		"whitelist": [
+			"/whitelist add <targets>",
+			"/whitelist list",
+			"/whitelist off",
+			"/whitelist on",
+			"/whitelist reload",
+			"/whitelist remove <targets>"
+		],
+		"worldborder": [
+			"/worldborder add <distance>",
+			"/worldborder add <distance> <time>",
+			"/worldborder center <pos>",
+			"/worldborder damage amount <damagePerBlock>",
+			"/worldborder damage buffer <distance>",
+			"/worldborder get",
+			"/worldborder set <distance>",
+			"/worldborder set <distance> <time>",
+			"/worldborder warning distance <distance>",
+			"/worldborder warning time <time>"
+		],
+		"wsserver": [
+			"/* This command is Bedrock Edition only */",
+			"/wsserver <serverUri: string>"
+		]
 	}
 }