mcwss
v2.1.3
Published
Minecraft Bedrock Websocket Server Framework Base For Modern JavaScript
Downloads
55
Maintainers
Readme
Mcwss

The project is refactory version for version of three years (2021) ago base on TypeScript.
A simple Minecraft Bedrock Edition websocket server framework, help developer to setup websocket server faster for Minecraft or your self package depend on it.Its core Mcwss 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.
🧊 Usage
What? You donot know how to install Node.js program? Are you kidding me? Please find Google Search to help you.
Base on program cli to start:
mcwssFor C(~~Z~~)hinese(English understanding hard population):
mcwss --lang zh_CNStart your Minecraft Bedrock Edition and input commands:
/wsserver ws://localhost:1
# or:
/connect ws://localhost:1Test a few:
*/help
*/helphOptions
--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, --versionDisplay version number-h, --helpDisplay this message
Example:
mcwss --port 2333 --mode debug --lang ja_JPbuilt-in commands
*/helpShow Mcwss command help*/connectShow WebSocket connection time*/aboutShow about informatio*/clearsClear chat content*/func <path>Execute mcfunction on server*/helphShow hidden command help,
Game hidden Command:
./closewebsocketClose websocket connection./gettopsolidblock <x> <y> <z>Get top solid block coordinates./querytarget <selector>Get precise float coordinates of entity./agentMascot./enableencryptionUnknown./closechatClose chat./geteduclientinfoGet version info./getlocalplayernameReturn 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
Mcwss
start(): voidStart a websocket serverstop(): voidStop a websocket server
Extends Events:
emit<T extends keyof EventsList>(type: T, ...data: [...Parameters<EventsList[T]>]): voidEmit a eventparallel<T extends keyof EventsList>(type: T, ...data: [...Parameters<EventsList[T]>]): Promise<void>Emit a event asynchronouson<T extends keyof EventsList>(type: T, callback: EventsList[T]): voidListen a eventonce<T extends keyof EventsList>(type: T, callback: EventsList[T]): voidListen a event onceoff<T extends keyof EventsList>(type: T, callback: EventsList[T]): voidCancel to listen a eventoffAll<T extends keyof EventsList>(type: T): voidCancel to listen all events
Client
req: IncomingMessageClient websocket objectsessionId: numberConnection identify atMcwsssessionDate: DateConnection setup timesend(data: SendPacket): voidSend a packet to clientclose(): voidClose connection with clientsubscribe(event: MinecraftEvents): voidSubscribe a minecraft eventunsubscribe(event: MinecraftEvents): voidUnsubscribe a minecraft eventrun(cmd: string | string[]): voidRun a or many of command to clientchat(message: string): voidSend a normal message to client (Base for/say)chatf(message: string, color?: TextColor, sender?: string, target: CommandTarget = CommandTarget.SELF): voidSend a advanced message to client (Base for/tellraw)func(file: string): voidRun a.mcfunctionfile to client
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.
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();📜 License
Comply with The GNU General Public License v3.0 open-source license.
