Minecraft Bedrock Websocket Server Framework Base For Modern JavaScript
npm install mcwssMcwss base a events emiter and provide many of events which can be listened.In addition,it provides Client instance object to interact with every client.
sh
mcwss
`
For C(~~Z~~)hinese(English understanding hard population):
`sh
mcwss --lang zh_CN
`
Start your Minecraft Bedrock Edition and input commands:
`sh
/wsserver ws://localhost:1
or:
/connect ws://localhost:1
`
Test a few:
`sh
*/help
*/helph
`
$3
- --port [num] Set websocket server port
- --mode [type] Set logger level, debug or build
- --lang [locale] Set view language, en_US, ja_JP, zh_TW, zh_CN
- -v, --version Display version number
- -h, --help Display this message
Example:
`sh
mcwss --port 2333 --mode debug --lang ja_JP
`
$3
- */help Show Mcwss command help
- */connect Show WebSocket connection time
- */about Show about informatio
- */clears Clear chat content
- */func Execute mcfunction on server
- */helph Show hidden command help,
Game hidden Command:
- ./closewebsocket Close websocket connection
- ./gettopsolidblock Get top solid block coordinates
- ./querytarget Get precise float coordinates of entity
- ./agent Mascot
- ./enableencryption Unknown
- ./closechat Close chat
- ./geteduclientinfo Get version info
- ./getlocalplayername Return player name
🎯 Events
Lifecycle Events:
- ready
- dispose
- error
- connection
- message
- close
Minecraft Events:
- block_broken
- block_placed
- end_of_day
- entity_spawned
- item_acquired
- item_crafted
- item_destroyed
- item_smelted
- item_used
- jukebox_used
- mob_interacted
- mob_killed
- player_bounced
- player_died
- player_message
- player_teleported
- player_transform
- player_travelled
- unknown_minecraft_event
- command_response
🚀 Class
$3
- start(): void Start a websocket server
- stop(): void Stop a websocket server
Extends Events:
- emit Emit a event
- parallel Emit a event asynchronous
- on Listen a event
- once Listen a event once
- off Cancel to listen a event
- offAll Cancel to listen all events
$3
- req: IncomingMessage Client websocket object
- sessionId: number Connection identify at Mcwss
- sessionDate: Date Connection setup time
- send(data: SendPacket): void Send a packet to client
- close(): void Close connection with client
- subscribe(event: MinecraftEvents): void Subscribe a minecraft event
- unsubscribe(event: MinecraftEvents): void Unsubscribe a minecraft event
- run(cmd: string | string[]): void Run a or many of command to client
- chat(message: string): void Send a normal message to client (Base for /say)
- chatf(message: string, color?: TextColor, sender?: string, target: CommandTarget = CommandTarget.SELF): void Send a advanced message to client (Base for /tellraw)
- func(file: string): void Run a .mcfunction file to client
`typescript
const enum TextColor {
GREEN = '§a',
RED = '§c',
BLUE = '§b',
YELLOW = '§e'
}
const enum CommandTarget {
ALL = '@a',
SELF = '@s',
RANDOM = '@r',
EVERY = '@e',
NEAR = '@p'
}
`
🧩 Internationalization
Supports languages:
- English
- 日本語 (Japanese)
- 繁體中文 (Traditional Chinese)
- 简体中文(Simplified Chinese)
🌰 Example
Setup your self program or package base on Mcwss, refer to src/utils/line.ts for more information.
`typescript
import Mcwss from 'mcwss';
import { log, error } from 'console';
const mcwss = new Mcwss({ port: 2333 });
/ events register /
mcwss.on('ready', () => log(WebSocketServer started at ws://localehost:${port} ));
mcwss.on('dispose', () => log('WebSocketServer stopped'));
mcwss.on('error', (data) =>
error(data.client ? [Client:${data.client.sessionId}] : '[Server]', data.error.name, data.error.message)
);
mcwss.on('connection', (data) =>
log([Client:${data.client.sessionId}], 'new connection from', data.client.req.socket.remoteAddress)
);
mcwss.on('close', (data) => {
if (data.raw) {
log([Client:${data.raw.client.sessionId}], 'Closing in progress code:', data.raw.code);
return;
}
log('WebSocketServer is closeing...');
});
mcwss.on('block_broken', (data) => {
const { block, player, tool } = data.body;
/ ... /
});
mcwss.on('end_of_day', (data) => {
const { player } = data.body;
/ ... /
});
/ ... /
mcwss.start();
``