主要有两种主流方法,适用于不同的场景:

-
使用
mcpi库 (适用于 Minecraft: Pi Edition - 树莓派版)- 这是最经典、最简单的方式,专为教育目的设计,适合初学者。
- 它通过一个简化的 API 直接与游戏通信,可以轻松创建和移动生物。
-
使用
mineflayer库 (适用于 Java Edition - PC版)- 这是目前更强大、更流行的方法,可以在 PC 版的 Minecraft 上实现复杂的自动化机器人。
- 它通过连接到游戏的服务器(本地或远程)来模拟一个玩家,从而执行各种操作,包括与生物交互。
使用 mcpi 库 (Minecraft: Pi Edition)
mcpi 库为 Python 提供了一个非常直接的接口来与树莓派版的 Minecraft 交互,虽然这个版本比较老,但它是学习编程和游戏交互概念的理想起点。
安装和环境准备
你需要拥有 Minecraft: Pi Edition,它只能在树莓派上运行,或者在某些特定的模拟器/旧版系统上运行。

安装 mcpi 库:
pip install mcpi
基本代码示例
下面是一个完整的 Python 脚本,它会连接到 Minecraft,在玩家面前生成一只羊,然后把它移动到另一个位置。
# 导入 mcpi 库
from mcpi.minecraft import Minecraft
import time
# 连接到 Minecraft 服务器
# 如果在本地树莓派上运行,可以使用 mcpi.Minecraft.create()
mc = Minecraft.create()
# 获取玩家的当前位置
player_x, player_y, player_z = mc.player.getPos()
# 在玩家面前5格处生成一只羊
# 生物类型用数字表示,1 代表羊
sheep_x = player_x + 5
sheep_y = player_y
sheep_z = player_z + 5
mc.spawnEntity(sheep_x, sheep_y, sheep_z, 1) # 1 是羊的实体ID
print("一只羊被生成了!")
# 等待2秒
time.sleep(2)
# 获取这只羊的实体ID
# 注意:mcpi库没有直接的方法获取新实体的ID,这里我们简化处理,
# 假设我们记住了位置或者有其他方式获取ID。
# 在实际应用中,你可能需要遍历附近的实体来找到它。
# 这里我们直接使用位置来移动它,虽然mcpi的moveEntity方法需要实体ID,
# 我们用一个更简单的方法:在另一个位置生成新的,并删除旧的。
# 为了演示,我们直接移动玩家,让羊看起来被移动了。
# 更简单的方法:将羊传送到新位置
new_x = player_x + 10
new_y = player_y
new_z = player_z + 10
# mcpi的moveEntity方法需要实体ID,我们这里用一个替代方案:
# 我们先删除原来的羊,然后在原地生成一只新的。
# 删除指定位置的实体 (mcpi没有直接删除单个实体的方法,这是一个简化思路)
# 一个更直接的方法是移动玩家,让羊看起来在动。
# 让我们尝试移动羊
# 首先获取羊的ID (这个在mcpi中比较麻烦,我们换一个思路)
# 我们让羊朝玩家走过来
# 获取羊的坐标 (我们假设它还在生成点)
sheep_pos = mc.entity.getPos(1) # 假设ID为1的实体就是我们的羊,但这不总是可靠
# 一个更实用的例子:生成一个生物并让它朝玩家移动
print("生成一只猪,并让它向你走来!")
pig = mc.spawnEntity(sheep_x, sheep_y, sheep_z, 10) # 10 是猪的ID
# 简单的移动循环
for i in range(20):
# 获取玩家当前位置
player_pos = mc.player.getPos()
# 将猪传送到玩家附近
mc.entity.setTilePos(pig.id, player_pos.x, player_pos.y, player_pos.z - 2)
time.sleep(0.5)
print("猪已经走到你身边了!")
常用生物 ID 列表 (Pi Edition)
| 生物名称 | 数字 ID |
|---|---|
| 羊 | 1 |
| 牛 | 2 |
| 猪 | 10 |
| 鸡 | 11 |
| 僵尸 | 32 |
| 骷髅 | 33 |
| 蜘蛛 | 34 |
| 苦力怕 | 35 |
使用 mineflayer 库 (Minecraft: Java Edition)
mineflayer 是一个 Node.js 库,但我们可以通过 python-mineflayer 这样的封装包在 Python 中使用它的功能,它能让你创建强大的机器人,可以挖矿、建造、战斗、与村民交易等。
安装和环境准备
- 安装 Python 3。
- 安装 Minecraft: Java Edition。
- 启动一个本地服务器:最简单的方式是使用
start-server.sh(Linux/macOS) 或start-server.bat(Windows) 脚本,这些脚本通常随 Minecraft 服务器软件(如 Paper)一起提供,确保online-mode=false,这样本地机器人可以无需登录加入。 - 安装
python-mineflayer:pip install mineflayer
基本代码示例
这个脚本会连接到你本地的 Minecraft 服务器,找到一个猪,然后跟着它走。

from mineflayer import mineflayer
import time
# 机器人的配置
options = {
'host': 'localhost', # 服务器地址
'port': 25565, # 服务器端口
'username': 'PythonBot' # 机器人的名字
}
# 定义机器人的行为
def on_login(bot):
print(f"机器人 {bot.username} 已成功登录服务器!")
# 查找附近的猪
pigs = bot.entities.filter(lambda entity: entity.name == 'pig')
if not pigs:
print("附近没有找到猪。")
# 如果没有猪,生成一只
bot.chat("附近没有猪,我来生成一只!")
bot.chat('/summon pig')
else:
# 找到第一只猪
target_pig = pigs[0]
print(f"找到了一只猪,ID: {target_pig.id}, 位置: {target_pig.position}")
# 让机器人跟随这只猪
print("开始跟随猪...")
while True:
if target_pig and target_pig.valid:
# bot.pathfinder.setGoal() 是一个更高级的寻路方法
# 这里我们用一个简单的移动方法
bot.look_at(target_pig.position)
bot.set_control_state('forward', True)
else:
bot.set_control_state('forward', False)
time.sleep(0.1) # 避免CPU占用过高
# 启动机器人
mineflayer.create_bot(options, on_login)
mineflayer 的常用功能
mineflayer 的功能非常强大,你可以通过它:
- 控制移动:
bot.set_control_state('forward', True):向前移动。bot.look(yaw, pitch):改变视角。bot.pathfinder.setGoal(goal):自动寻路到目标点(如生物、方块)。
- 与方块交互:
bot.blockAt(position):获取指定位置的方块信息。bot.dig(block):挖掘一个方块。bot.place(block, reference_block):放置一个方块。
- 与生物交互:
bot.attack(entity):攻击一个生物。bot.attack(entity):攻击一个生物。bot.entities:获取世界中的所有实体列表。bot.nearestEntity(filter_func):找到最近的符合条件的实体。
- 聊天:
bot.chat("你好,世界!"):发送聊天消息。
- 物品栏管理:
bot.inventory:访问物品栏。bot.inventory.findItem(item_name):在物品栏中寻找某个物品。bot.equip(item, slot):装备物品。
总结与选择
| 特性 | mcpi (Pi Edition) |
mineflayer (Java Edition) |
|---|---|---|
| 适用版本 | Minecraft: Pi Edition (树莓派版) | Minecraft: Java Edition (PC版) |
| 易用性 | 非常简单,API直观,适合编程初学者和儿童教育。 | 功能强大但复杂,需要理解事件驱动、异步编程等概念。 |
| 功能范围 | 基础:生成、移动、删除生物和方块。 | 极其广泛:挖矿、建造、战斗、自动化农场、与村民交易、红石控制等。 |
| 性能 | 轻量级,直接通信。 | 通过网络连接,需要服务器,性能稍高,可远程控制。 |
| 学习曲线 | 平缓 | 陡峭 |
如何选择?
- 如果你是编程初学者,或者想给孩子一个有趣的学习项目,并且有树莓派,
mcpi是完美的起点。 - 如果你想创建一个功能强大的自动化机器人,比如自动挖矿机、自动建造机,或者想在 PC 版服务器上实现复杂的自动化,
mineflayer是不二之选,它能让你实现几乎所有你能想到的自动化任务。
希望这个详细的解释能帮助你开始在 Python 中探索 Minecraft 的生物世界!
