Введение

Библиотека MinecraftAPI предоставляет удобный Python-интерфейс для взаимодействия с Minecraft через Programming API.

Примечание: Методы с Поддержка игроков позволяют работать с другими игроками по их никнейму
Быстрый старт:
Минимальная настройка
from minecraft_api import MinecraftAPI

# Инициализация клиента
api = MinecraftAPI(host='localhost', port=4711)

# Установка токена (получить в игре: /api gettoken)
api.set_token('ваш_токен')

# Проверка подключения
position = api.get_position()
if position:
    print(f"Подключено! Позиция: {position}")

Все методы API

Полный список всех доступных методов с описанием и параметрами.

set_block(x, y, z, material)
Устанавливает блок по координатам
x, y, z int
material str
Возвращает: bool (True при успехе)
get_block(x, y, z)
Получает тип блока по координатам
x, y, z int
Возвращает: str (тип блока)
set_blocks(x1, y1, z1, x2, y2, z2, material)
Заполняет область блоками
x1, y1, z1 int
x2, y2, z2 int
material str
Возвращает: bool
get_position()
Получает позицию текущего игрока
Возвращает: tuple (x, y, z)
teleport(x, y, z)
Телепортирует игрока
x, y, z int
Возвращает: bool
send_message(message)
Отправляет сообщение игроку
message str
Возвращает: bool
Поддержка игроков
give_item(material, amount, slot=-1, player_name=None)
Выдает предмет игроку
material str
amount int
slot int
player_name str (опционально)
Возвращает: bool
Поддержка игроков
get_inventory_item(slot, player_name=None)
Получает информацию о предмете в слоте
slot int
player_name str (опционально)
Возвращает: dict
Поддержка игроков
clear_inventory_slot(slot, player_name=None)
Очищает слот инвентаря
slot int
player_name str (опционально)
Возвращает: bool
Поддержка игроков
get_inventory(player_name=None)
Получает весь инвентарь игрока
player_name str (опционально)
Возвращает: dict
get_players()
Получает список всех игроков
Возвращает: list
Поддержка игроков
set_armor(material, armor_slot, player_name=None)
Устанавливает предмет брони
material str
armor_slot int (0-3)
player_name str (опционально)
Возвращает: bool
Поддержка игроков
get_armor(armor_slot=-1, player_name=None)
Получает информацию о броне
armor_slot int
player_name str (опционально)
Возвращает: dict
Поддержка игроков
clear_armor(armor_slot, player_name=None)
Очищает слот брони
armor_slot int
player_name str (опционально)
Возвращает: bool
Поддержка игроков
give_item_with_nbt(material, amount, properties, slot=-1, player_name=None)
Выдает предмет с NBT-тегами
properties dict
player_name str (опционально)
Возвращает: bool
Поддержка игроков
set_armor_with_nbt(material, armor_slot, properties, player_name=None)
Устанавливает броню с NBT-тегами
properties dict
player_name str (опционально)
Возвращает: bool

Методы для работы с другими игроками

Эти методы поддерживают параметр player_name для работы с другими игроками.

Пример работы с другими игроками
# Получить список всех игроков
players = api.get_players()
print(f"Игроки онлайн: {players}")

# Выдать алмазы конкретному игроку
api.give_item("DIAMOND", 5, player_name="Steve")

# Проверить инвентарь другого игрока
inventory = api.get_inventory(player_name="Alex")
if inventory:
    print(f"Инвентарь Alex: {inventory}")

# Надеть броню другому игроку
api.set_armor("DIAMOND_HELMET", 3, player_name="Notch")
Важно: Для работы с другими игроками ваш токен должен иметь соответствующие права на сервере

Работа с блоками

Основные операции с блоками
# Построить простой дом def build_house(api, x, y, z):
    # Фундамент
    api.set_blocks(x-5, y-1, z-5, x+5, y-1, z+5, "STONE")
    
    # Стены
    api.set_blocks(x-5, y, z-5, x+5, y+4, z+5, "OAK_PLANKS")
    
    # Внутреннее пространство
    api.set_blocks(x-4, y+1, z-4, x+4, y+3, z+4, "AIR")
    
    # Крыша
    api.set_blocks(x-5, y+4, z-5, x+5, y+4, z+5, "OAK_STAIRS")
    
    # Дверь
    api.set_block(x, y, z-5, "AIR")
    api.set_block(x, y+1, z-5, "AIR")
    
    print("Дом построен!")

# Проверить блок перед установкой
current_block = api.get_block(10, 64, 20)
if current_block == "AIR":
    api.set_block(10, 64, 20, "CHEST")

Работа с инвентарем

Управление инвентарем
# Выдать стартовый набор def give_starter_kit(api, player_name=None):
    items = [
        ("DIAMOND_PICKAXE", 1, 0),
        ("DIAMOND_SWORD", 1, 1),
        ("COOKED_BEEF", 16, 2),
        ("TORCH", 64, 3)
    ]
    
    for material, amount, slot in items:
        api.give_item(material, amount, slot=slot, player_name=player_name)
    
    # Выдать броню for slot, material in enumerate(["DIAMOND_BOOTS", "DIAMOND_LEGGINGS", 
                                      "DIAMOND_CHESTPLATE", "DIAMOND_HELMET"]):
        api.set_armor(material, slot, player_name=player_name)

# Проверить наличие предмета def has_item(api, item_name, player_name=None):
    inventory = api.get_inventory(player_name=player_name)
    if inventory:
        for slot, item in inventory.items():
            if item and item.get("material") == item_name:
                return True return False

Практические примеры

Мини-игра: Лабиринт
def create_maze_game(api, start_x, start_y, start_z, size=15):
    # Создать лабиринт
    api.set_blocks(
        start_x, start_y, start_z,
        start_x + size, start_y + 3, start_z + size,
        "STONE_BRICKS"
    )
    
    # Создать проходы for i in range(2, size, 3):
        api.set_blocks(
            start_x + 2, start_y + 1, start_z + i,
            start_x + size - 2, start_y + 1, start_z + i,
            "AIR"
        )
    
    # Вход и выход
    api.set_block(start_x, start_y + 1, start_z + 1, "AIR")
    api.set_block(start_x + size, start_y + 1, start_z + size - 1, "AIR")
    
    # Награда в конце
    api.set_block(start_x + size, start_y + 1, start_z + size - 1, "GOLD_BLOCK")
    
    # Телепортировать игрока к началу
    api.teleport(start_x - 1, start_y + 1, start_z + 1)
    api.send_message("Найди выход из лабиринта! Награда ждет тебя в конце!")

Часто задаваемые вопросы

Как получить токен для API?
В игре выполните команду: /api gettoken. Скопируйте полученный токен и используйте api.set_token('ваш_токен').
Какие методы поддерживают работу с другими игроками?
Методы с параметром player_name: give_item, get_inventory_item, clear_inventory_slot, get_inventory, set_armor, get_armor, clear_armor, give_item_with_nbt, set_armor_with_nbt.
Библиотека работает с Minecraft Bedrock Edition?
Нет, только с Minecraft Java Edition с установленным модом Programming API.
Что делать если метод возвращает ошибку?
1. Проверьте правильность токена. 2. Убедитесь что сервер доступен. 3. Проверьте права игрока в игре. 4. Убедитесь что координаты в пределах мира.