Skip to main content

Minecraft command emulator library

Project description

mcemu

A lightweight, programmatic, and interactive Minecraft Command Emulator designed as a standalone Python library and REPL environment. It simulates a virtual Minecraft environment, allowing you to test, debug, and execute complex command sequences and .mcfunction files without needing to launch the game!

🚀 Features

  • Interactive REPL Environment: Start the engine right from your terminal and type commands in real time. Features colored syntax feedback, auto-suggestions, and deep typo detection.
  • .mcfunction & Macros Support: Load and execute function files, complete with support for scheduling, ticking, and dynamic NBT macro arguments via regex substitution (e.g., /function namespace:test {a: 42} matching $(a)).
  • Security Control: Includes a rigorous allow_functions engine configuration to restrict potentially malicious local file system access when evaluating untrusted text.
  • Robust Entity Management: Create and manage players and entities dynamically within a simulated world, complete with inventory, nbt properties, and active effects tracking.
  • Scoreboard Simulation: A fully-featured programmatic scoreboard that replicates the in-game behavior for mathematical operations and player tracking.
  • Command Dispatcher: An exact replica of the Minecraft command-tree parsing structure, enabling you to powerfully chain execute subcommands seamlessly.
  • Vast Command Library: Emulates over 60 native Minecraft commands directly out of the box, cleanly modularized for easy extendability.

📦 Installation

To install mcemu directly from PyPI (once published):

pip install mcemu

If you are developing locally, clone the repository and install it in editable mode with development dependencies:

git clone https://github.com/OguzhanUmutlu/mcemu.git
cd mcemu
pip install -e .[dev]

🎮 Usage

Once installed, mcemu exposes a powerful command-line interface. Simply open your terminal and type:

mcemu

Supported Commands

The emulator currently supports an extensive array of commands, grouped intuitively in the backend but accessible seamlessly:

Entities & Players: summon, kill, tp, teleport, damage, ride, spectate, xp, experience, clear, give, item, effect, enchant Data & Logic: data, execute, function, return, schedule, scoreboard, tag, attribute, advancement, recipe World Manipulation: setblock, fill, clone, time, weather, difficulty, gamerule, seed, worldborder, spawnpoint, setworldspawn Administration: op, deop, ban, pardon, ban-ip, pardon-ip, whitelist, kick, stop, save-all, save-on, save-off, reload, debug, jfr, perf, publish, stopwatch Chat & Visuals: say, tell, msg, w, me, teammsg, tellraw (with ANSI JSON Component parsing!), title, tm, bossbar, particle, playsound, stopsound, dialog, team, setidletimeout, forceload, datapack, list, transfer

Special REPL Commands

The interactive console also provides helpful emulator-specific utilities:

  • entities: Prints all tracked entities, inventories, and effects.
  • scores: Prints the current scoreboard dictionary.
  • toggleblocks: Enables or disables actual block data storage in memory (useful for large /fill commands).
  • getblock <x> <y> <z>: Returns the stored blockstate at a coordinate.
  • returncode: Prints the integer return value of the last evaluated command to prevent clutter.
  • reset: Completely resets the internal environment memory map.
  • exit: Shuts down the emulator.

Example Interaction

mcemu> scoreboard objectives add kills dummy

mcemu> give @p minecraft:diamond_sword{Enchantments:[{id:"minecraft:sharpness",lvl:5}]} 1

mcemu> effect give @p minecraft:speed 100 2 true

mcemu> entities
- Dev (minecraft:player) at (0.0, 0.0, 0.0) tags: set()
  inventory: {'inventory.0': {'id': 'minecraft:diamond_sword', 'count': 1, 'nbt': '{Enchantments:[{id:"minecraft:sharpness",lvl:5}]}'}}
  effects: {'minecraft:speed': {'duration': 2000, 'amplifier': 2, 'hideParticles': True}}

mcemu> toggleblocks
Block tracking enabled.

mcemu> setblock 0 0 0 minecraft:stone
mcemu> getblock 0 0 0
Block at 0 0 0: minecraft:stone

🧪 Testing

To run the built-in test suite locally, use the provided script:

./run_tests.sh

This automatically sets up a virtual environment and runs pytest across the package.

📄 License

This project is licensed under the MIT License. See the LICENSE file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcemu-0.3.7.tar.gz (35.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcemu-0.3.7-py3-none-any.whl (56.0 kB view details)

Uploaded Python 3

File details

Details for the file mcemu-0.3.7.tar.gz.

File metadata

  • Download URL: mcemu-0.3.7.tar.gz
  • Upload date:
  • Size: 35.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mcemu-0.3.7.tar.gz
Algorithm Hash digest
SHA256 b6bf8d6cfd87534c9dca9907b3306c45c154deb1ba7301f0a4bb3ca0f723620a
MD5 ce8b68c632d52cfa7a5b3c26152de978
BLAKE2b-256 79d1362840abea9ea66a87557abe4412387ce93c9e9ac66dbd6259906a509d0b

See more details on using hashes here.

File details

Details for the file mcemu-0.3.7-py3-none-any.whl.

File metadata

  • Download URL: mcemu-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 56.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mcemu-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 60ed124ed7900932d1fef44d6802573e5a682f30321fc5c8a47dcdcdd6f6e6af
MD5 d102e8ba9faa63c12d6d517e7baf5e4d
BLAKE2b-256 3d559d3536d1fa47600f4953b2d2c1d2aa295693010eaf349e47a11e6b2a1119

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page