This release is a pre-release and may not be stable for production use.
Minecraft Bedrock Edition Websocket
Quickstart
Installation
Install with pip install mcbews and import it.
from mcbews import ws
from mcbews.chat import Color, Style
Contents
- Create a simple bot
- Minecraft Events
- Advanced bot options
Create a simple bot
Credits to discord.py for the awesome syntax inspiration.
bot = ws.Bot(
name = "My Bot",
prefix = "!"
)
@bot.event
# this is the only event that is not async
def on_ready(ctx):
print(f"Ready @ {ctx.host}:{ctx.port}")
@bot.event
async def on_connect(ctx):
print("Connected!")
ctx.msg("Hello World.")
@bot.event
async def on_disconnect(ctx):
print("Disconnected!")
@bot.command()
async def ping(ctx):
ctx.msg("Pong")
ctx.cmd("title @a actionbar Welcome")
bot.run("localhost", 6464)
We will go with 6464 as the port but you can
choose any other four-digit number.
Now type /connect localhost:6464 in the Minecraft
Chat and wait for a response.
You may have to disable "Require Encrypted Websockets" in order to make it work.
Most of the time the ctx argument have methods
for sending messages in the game. These are:
cmd(command)
Executes a minecraft command. The slash prefix is optional. Also accessable with
command(...)andexecute(...)
raw(message, target = "@a")
Sends a raw message to the specified target.
msg(message, target = "@a")
Sends a message to the specified target. Also accessable with
message(...)
debug(message, target = "@a")
Sends a debug message to the specified target. The output level must be set to
debugor higher.
info(message, targt = "@a")
Sends an info message to the specified target. The output level must be set to
infoor higher.
err(message, target = "@a")
Sends a error message to the specified target. The output level must be set to
erroror higher. Also accessable witherror(...)
warning(message, target = "@a")
Sends a warning to the specified target. The output level must be set to
warningor higher. Also accessable withwarn(...)
critical(message, target = "@a")
Sends a critical message to the specified target. The output level must be set to
critical. Also accessable withfatal(...)
Events
@bot.event
def on_ready(ctx): # notice here is no async
print(f"Ready @ {ctx.host}:{ctx.port}")
@bot.event
async def on_connect(ctx):
print("Connected!")
ctx.info("Connected!")
@bot.event
async def on_commandresponse(ctx):
pass
@bot.event
async def on_disconnect(ctx):
print("Disconnected!")
print(f"Code: {ctx.code}")
print(f"Reason: {ctx.reason}")
raise SystemExit("Disconnected")
@bot.event
async def on_unknown_command(ctx):
ctx.err(f"Unknown command '{ctx.command}'. Type '{bot.prefix}help' for more information.")
@bot.event
async def on_convert_error(ctx):
ctx.err(f"{ctx.argument} must be type of {ctx.converter}.")
@bot.event
async def on_too_many_arguments(ctx):
ctx.err(f"Too many arguments: {', '.join(ctx.arguments)}. Type '{bot.prefix}help {ctx.command}' for more information.")
@bot.event
async def on_missing_arguments(ctx):
ctx.err(f"Missing argument(s): {', '.join(ctx.arguments)}. Type '{bot.prefix}help {ctx.command}' for more information.")
Minecraft Events
Minecraft sends several events to the bot.
You can react on them with the minectaftevent
decorator:
@bot.minecraftevent
async def block_broken(ctx):
ctx.info(f"{ctx.block_name} has been broken.")
This will display a message which block got broken.
Some events have supported methods (e.g. in
this case block_name) but some don't.
You can access the data with
ctx.data["<name>"] where name could be
"name".
Keep in mind that you have to change the
event name into snakecase format. That means
that BlockBroken becomes block_broken.
Metadata
Release files for mcbews 0.0.1b10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcbews-0.0.1b10-py3-none-any.whl | Python 3 | none | any | Details |
Release files / mcbews-0.0.1b10-py3-none-any.whl
| Download URL | mcbews-0.0.1b10-py3-none-any.whl |
|---|---|
| Size | 13.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97e52a1854f6231eae6009fe43c5178be9f752d028d73dbe0bee74074444279d
|
|
BLAKE2b-256 checksum How to use checksums |
55ac666501904d5b12ba4d0054de6ad9d3a20dc1b5bf677dd05cf8a39cc7419b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|