Metadata-Version: 2.5
Name: leafish
Version: 0.1.0
Summary: A pure Python, asynchronous Minecraft Java Edition bot framework inspired by Mineflayer.
Project-URL: Homepage, https://github.com/leafish/leafish
Author: Leafish contributors
License: MIT
License-File: LICENSE
Keywords: asyncio,bot,minecraft,protocol
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Games/Entertainment
Requires-Python: >=3.11
Requires-Dist: cryptography>=42
Requires-Dist: httpx>=0.27
Requires-Dist: protolib>=0.4
Provides-Extra: dev
Requires-Dist: build>=1.0; extra == 'dev'
Requires-Dist: hypothesis>=6; extra == 'dev'
Requires-Dist: mkdocs-material>=9.5; extra == 'dev'
Requires-Dist: mkdocs>=1.5; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Requires-Dist: ty>=0.0.1a0; extra == 'dev'
Description-Content-Type: text/markdown

# Leafish

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

A pure Python, asynchronous Minecraft Java Edition bot framework inspired by
[Mineflayer](https://github.com/PrismarineJS/mineflayer).

Leafish lets you programmatically control Minecraft Java Edition clients from
Python: join servers, chat, move, mine, build, craft, fight, and automate —
all through a modern `asyncio` API with an event-driven architecture.

## Features (planned / in progress)

See [IMPLEMENTATION_STATUS.md](IMPLEMENTATION_STATUS.md) for the honest,
current state of every subsystem.

- Native Minecraft Java Edition protocol implementation (no Node.js, no
  external bot process)
- Offline and Microsoft authentication
- Async, event-driven API with plugin support
- World, chunk, entity, and inventory tracking
- Pathfinding, digging, placing, crafting, combat, containers
- Multi-version protocol support driven by vendored minecraft-data

## Requirements

- Python 3.11+

## Installation

```bash
pip install leafish
```

For development:

```bash
git clone https://github.com/leafish/leafish
cd leafish
pip install -e ".[dev]"
```

## Quick start

```python
import asyncio
from leafish import Leafish

async def main():
    bot = await Leafish.create_bot(
        host="localhost",
        port=25565,
        username="Leafish",
        auth="offline",
    )

    @bot.on("spawn")
    async def on_spawn():
        print("Leafish joined the world!")

    @bot.on("chat")
    async def on_chat(username, message):
        print(f"<{username}> {message}")

    await bot.wait_until_disconnected()

asyncio.run(main())
```

## Status

Leafish is under active development. The protocol layer, bot API, world model,
and automation modules are implemented incrementally — check
[ROADMAP.md](ROADMAP.md) and [IMPLEMENTATION_STATUS.md](IMPLEMENTATION_STATUS.md)
for details. Features are not advertised until they are implemented and tested.

## License

MIT — see [LICENSE](LICENSE).
