VSCode Extension
MCX provides a VSCode extension to provide a better development experience.
Installation
Method 1: Install from VSCode Marketplace
Search for ruanhor.mcx-vscode-client in the VSCode extension marketplace and install it.
Method 2: Use Mbler Auto-configuration
When you create a project using Mbler, it will automatically configure the language server settings.
Features
The VSCode extension provides the following features:
- Syntax Highlighting: Support for syntax highlighting in mcx files
- Code Completion: Automatic completion for mcx tags and attributes
- Hover Documentation: Display documentation when hovering over tags or attributes
- Formatting: Support for code formatting in mcx files
- Error Hints: Display compilation errors and warnings
- Language Server: Integrated LSP language server
- TypeScript Support: Auto-configured TypeScript plugin
Extension Detailed Features
# Code Completion (Completion Provider)
The extension provides the following completion features:
MCX Tag Completion
Triggered when typing <, provides the following tags:
script- Script blockEvent- Event definition blockComponent- Component definition blockUi- UI definition blockitems- Item component definitionblocks- Block component definitionentities- Entity component definitionitem- Item definitionblock- Block definitionentity- Entity definition
Attribute Completion
Triggered when typing inside a tag, provides common attributes:
id- Element unique identifierlang- Script language (ts/js)@before- Pre-event hook@after- Post-event hook
Script Block Completion
Provides completions inside <script> block:
- import completion:
Event,createApp - Path completion:
"./event","./events" - Minecraft event completion:
playerJoin- Player joinplayerLeave- Player leaveplayerDie- Player deathplayerRespawn- Player respawnblockBreak- Block breakblockPlace- Block placeitemUse- Item useitemUseOn- Item use on entityentityHit- Entity hitentityDie- Entity deathprojectileHit- Projectile hitweatherChange- Weather changetimeChange- Time change
- Event method completion:
subscribe,unsubscribe,useWorld,createApp
# Hover Documentation (Hover Provider)
Displays detailed documentation when hovering over tags or attributes:
Tag Documentation
<script>: Script block for embedded TypeScript/JavaScript code- Attributes:
lang,id,@before,@after - Languages:
ts,js
- Attributes:
<Event>: Minecraft event handler definition block- Attributes:
id
- Attributes:
<Component>: Component definition block- Attributes:
id
- Attributes:
<Ui>: UI definition block- Attributes:
id
- Attributes:
Attribute Documentation
id: Unique identifier for this elementlang: Script language specification (tsorjs)@before/@after: Event hook for executing code before/after main logic
# Formatting (Formatting Provider)
Supports code formatting for .mcx files, triggered with Shift+Alt+F or command palette.
# Language Server Integration
The extension automatically starts a language server client providing:
- Semantic analysis
- Type checking
- Error diagnostics
Commands
mcx.restart.language: Restart the language server
In the command palette (Ctrl+Shift+P), type MCX: Restart Language Server to restart.
# TypeScript Plugin Integration
The extension automatically detects and configures the TypeScript plugin (@mbler/mcx-ts-plugin):
- Detects VSCode TypeScript extension
- Automatically activates and configures the plugin
- Provides type support for
.mcxfiles
Language Server
MCX uses @mbler/mcx-server as the language server backend.
Install
npm install @mbler/mcx-server --save-dev@mbler/mcx-server API
Install
npm install @mbler/mcx-server --saveExports
import {
MCXVirtualCode,
createMCXLanguagePlugin,
createMCXVirtualCode,
type MCXLanguagePlugin
} from "@mbler/mcx-server";| Export | Type | Description |
|---|---|---|
MCXVirtualCode | class | MCX virtual code class |
createMCXLanguagePlugin | function | Create MCX language plugin |
createMCXVirtualCode | function | Create MCX virtual code |
MCXLanguagePlugin | type | Language plugin type definition |
createMCXLanguagePlugin
Create MCX language plugin for Volar language server.
function createMCXLanguagePlugin(
ts: typeof import("typescript"),
): MCXLanguagePlugin;Parameters:
ts: typeof import("typescript")- TypeScript module
Returns:
MCXLanguagePlugin- MCX language plugin instance
Usage Example:
import * as ts from "typescript";
import { createMCXLanguagePlugin } from "@mbler/mcx-server";
const languagePlugin = createMCXLanguagePlugin(ts);Run Standalone Language Server
# Using npx
npx mcx-language-server
# Or install globally first
npm install -g @mbler/mcx-server
mcx-language-server