Metadata-Version: 2.4
Name: pycraftide-lib
Version: 0.1.2
Summary: Python API for controlling Minecraft through PyCraftIDE
Author-email: Goncat200 <gonkat200@mail.ru>
Maintainer-email: Goncat200 <gonkat200@mail.ru>
License: MIT License
        
        Copyright (c) 2026 Gonkat
        
        Permission is hereby granted, free of charge, to any person obtaining a copy of
        this software and associated documentation files (the "Software"), to deal in
        the Software without restriction, including without limitation the rights to
        use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
        of the Software, and to permit persons to whom the Software is furnished to do
        so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/Gonkat/PyCraftIDE_Lib
Project-URL: Repository, https://github.com/Gonkat/PyCraftIDE_Lib
Project-URL: Issues, https://github.com/Gonkat/PyCraftIDE_Lib/issues
Project-URL: Changelog, https://github.com/Gonkat/PyCraftIDE_Lib/blob/main/CHANGELOG.md
Keywords: minecraft,pycraft,pycraftide,minecraft-api,minecraft-python,automation,modding
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Provides-Extra: dev
Requires-Dist: check-manifest; extra == "dev"
Provides-Extra: test
Requires-Dist: coverage; extra == "test"
Requires-Dist: pytest; extra == "test"
Dynamic: license-file

# PyCraft — быстрый справочник

## Запуск

1. Открой мир Minecraft с модом **PyCraft**.
2. Нажми **F8**, чтобы открыть Python IDE.
3. Открой `.py`-файл.
4. Запусти его кнопкой **Run** или клавишей **F5**.

---

## Подключение к Minecraft

Основной API:

```python
from craftcode_api import MinecraftAPI

mc = MinecraftAPI()
```

После установки `pycraftide-lib` через `pip` этот импорт остаётся основным и используется так же, как раньше.

Если файл `craftcode_api.py` предоставляется модом автоматически, он также может использоваться напрямую внутри IDE.

---

## Быстрый пример

```python
from craftcode_api import MinecraftAPI

mc = MinecraftAPI()

mc.sendChat("Привет из Python!")
```

Можно сразу взаимодействовать с миром:

```python
from craftcode_api import MinecraftAPI

mc = MinecraftAPI()

mc.setBlock(0, 100, 0, "diamond_block")
mc.sendChat("Алмазный блок установлен!")
```

---

## Автодополнение

При первом открытии IDE мод проверяет наличие системного Python и предлагает установить **Jedi**:

* глобально;
* или в `.venv`.

Для установки Python используй [python.org](https://www.python.org/) и при установке включи **Add Python to PATH**.

Без Jedi IDE продолжает работать, но автодополнение и подсказки могут быть ограничены.

---

## Часто используемые методы

### Чат

```python
mc.sendChat("Привет!")
```

Отправляет сообщение в чат.

### Блоки

```python
mc.setBlock(x, y, z, "diamond_block")
```

Устанавливает блок.

```python
block = mc.getBlock(x, y, z)
```

Получает информацию о блоке.

```python
mc.fill(
    x1, y1, z1,
    x2, y2, z2,
    "stone"
)
```

Заполняет указанную область блоками.

### Игроки

```python
players = mc.getPlayers()
```

Возвращает список игроков онлайн.

```python
pos = mc.getPlayerPos(player)
```

Получает позицию игрока.

### Команды Minecraft

```python
mc.runCommand("time set day")
```

Выполняет команду Minecraft.

### События

```python
mc.waitForButton(...)
```

Ожидает событие нажатия кнопки.

```python
mc.waitForBlockBreak(...)
```

Ожидает разрушения блока.

Для более сложных сценариев доступны обработчики событий и прослушивание чата.

---

## Пример: дом по команде в чате

```python
from craftcode_api import MinecraftAPI
import time

mc = MinecraftAPI()

mc.sendChat("Напиши в чат: ХОЧУ ДОМ")

while True:
    event = mc.waitForChat(timeout=1)

    if event and event.message.upper() == "ХОЧУ ДОМ":
        player = event.player
        pos = mc.getPlayerPos(player)

        x = int(pos.x) + 5
        y = int(pos.y)
        z = int(pos.z)

        mc.fill(
            x, y, z,
            x + 6, y, z + 6,
            "oak_planks"
        )

        mc.sendChat(f"{player}, дом построен!")

    time.sleep(0.1)
```

---

## Проверка API

Файл `test_all.py` содержит отдельные проверочные примеры для:

* чата;
* блоков;
* игроков;
* мира;
* событий;
* гайдов;
* заданий.

Раскомментируй только нужный блок перед запуском.

---

## Ошибки и рекомендации

Используй `try/except` для обработки ошибок подключения:

```python
try:
    mc.sendChat("Привет!")
except APIConnectionError:
    print("Minecraft или сервер ещё не готовы")
```

Не отправляй большие количества запросов к Minecraft без пауз.

Например, вместо:

```python
for i in range(10000):
    mc.setBlock(i, 100, 0, "stone")
```

для больших операций используй `fill()` или добавляй небольшие паузы.

Для учебных заданий сначала проверяй код на небольшой области мира.

---

## Установка API отдельно от мода

Если ты используешь Python-код вне IDE PyCraft, библиотеку можно установить через PyPI:

```bash
pip install pycraftide-lib
```

После установки API используется привычным способом:

```python
from craftcode_api import MinecraftAPI

mc = MinecraftAPI()
```

Мод PyCraft при этом предоставляет подключение Python-кода к Minecraft.

---

## Полезно знать

**PyCraft** — это Minecraft-мод и IDE.

**PyCraftIDE_Lib** — Python-библиотека, предоставляющая API для взаимодействия с Minecraft.

Они работают вместе, но это разные части проекта.
