Skip to content

🛠️ Minecraft Bedrock Edition Client ( bot ) Library

Notifications You must be signed in to change notification settings

SanctumTerra/Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛠️ Minecraft Bedrock Edition Client Library

Version npm License

Discord

A powerful and easy-to-use client library for Minecraft Bedrock Edition.

📦 Installation

npm i @sanctumterra/client

⚠️ Important Notes

  • The Connection class is a bare-bones client, while the Client class offers more features.
  • Due to protocol support requirements, versions cannot be automatically switched. Specific client library versions are needed.

📊 Supported Versions

Client Version Protocol Version Minecraft Version
2.0.10 712 1.21.20
2.1.5 729 1.21.30
2.1.12 748 1.21.40
2.1.16 766 1.21.50

🚀 Usage Example

const { Client, Logger, DeviceOS } = require("@sanctumterra/client");

const client = new Client({
    host: "127.0.0.1",
    port: 19132,
    offline: true,
    username: "SanctumTerra",
    tokensFolder: "./cache/tokens",
    version: "1.21.50",
    deviceOS: DeviceOS.Android,
    sendAuthInput: true,
    logPacketErrors: false,
    tickRate: 50 // 50 is the default tick rate
});

client.connect();

client.on("TextPacket", (packet) => {
    if (packet.parameters) {
        if (packet.message.includes("chat.type.text")) {
            return Logger.chat(`§f<${packet.parameters[0]}> ${packet.parameters[1]}`);
        }
        if (packet.message.includes("multiplayer.player.joined")) {
            return Logger.chat(`§e${packet.parameters[0]} joined the game`);
        }
        if (packet.message.includes("multiplayer.player.left")) {
            return Logger.chat(`§e${packet.parameters[0]} left the game`);
        }
        if (packet.message.includes("%chat.type.announcement")) {
            return Logger.chat(`§d<${packet.parameters[0]}> ${packet.parameters[1]}`);
        }
    }
    Logger.chat(packet.message);
});

client.on("spawn", () => {
    Logger.info("Spawned!");
});

📚 Features

🎛️ Client Configuration

  • Required Parameters: host, port
  • Optional Parameters: offline, username, tokensFolder, version, deviceOS, viewDistance, sendAuthInput, logPacketErrors, tickRate

📡 Event Handling

  • Events allow you to listen to any implemented packet if it is not implemented you will receive a warning and it should not crash if there is a crash then make an issue on github.

🎨 Custom Logging

  • Supports Minecraft color codes for in-game styled message logging
  • Easier to use and understand

📜 Changelog

2.1.16

  • Fixed bugs with BDS.
  • Added more options.
  • New Listener Events.

2.1.14

  • Use latest version of Raknet
  • Fixes

2.1.13

  • Added support for Minecraft 1.21.50.
  • Fixed many bugs.
  • Slightly Improved performance.

2.1.12

  • Added support for Minecraft 1.21.40.
  • New Raknet! It now uses NAPI as Rust is faster.
  • connect function now returns [Advertisement, StartGamePacket]

2.1.5

  • Added DeviceOS to the Client.

2.1.3

  • Removed Protocol Validation
  • Added more debug logs
  • Improved performance

2.1.2

  • Added a couple examples in /examples/ (readline, skinStealer).
  • debug logs n options.
  • Allow safe disconnection.

2.1.0

  • Separated Client into Connection and Client classes.
  • Fixed CraftingDataPacket for Shields.
  • Improved packet handling for pre-spawn packets.
  • Enhanced Listener Events for "secret" / "hidden" events.

2.0.11

  • Added support for Minecraft 1.21.30.

2.0.0

  • Initial Release of V2.

❤️ Credits

Project Description Link
SerenityJS Packet processing frameworks GitHub
PrismarineJS Authentication framework GitHub

Made with ❤️ by SanctumTerra