设为首页收藏官网网盘国家资源立人课堂 今天是: 2023-03-27    美好的一天,从现在开始投稿

立人创客乐享社区

 找回密码
 立即注册
立人创客乐享社区 首页 游戏编程 查看内容

Minecraft 的 Python 编码--国外文章搬迁

2021-7-26 11:12| 发布者: 信息中心| 查看: 143| 评论: 3|原作者: 信息中心

摘要: 这个 Instructable 展示了如何安装和使用我编写的 mod,它可以让您使用 python 脚本控制 Minecraft。我将专注于 Windows,但 OS X 和 Linux 应该也能正常工作。(如果你想要比 Python 更简单的东西,这里是这个项目 ...




9 更多图片








arpruss
跟随











这个 Instructable 展示了如何安装和使用我编写的一个 mod,它可以让你用 python 脚本控制 Minecraft。我将重点介绍 Windows,尽管 OS X 和 Linux 应该也能正常工作。(如果你想要比 python 更简单的东西,这里是这个项目的 Scratch 版本。)
Python 脚本可以在现实世界中生成整洁的东西,网络上有很多例子。只需几条线,您就可以绘制一个巨大的玻璃球体,再多做一些工作就可以在天空中制作一个巨大的 Sierpinski 三角形,甚至可以像航天飞机一样导入 obj 文件。我自己编写了有趣的脚本来绘制一个装满水的玻璃甜甜圈和一个巨大的克莱因瓶,将周围的一切变成 TNT,并使用 MindFlex EEG 玩具用大脑控制 Minecraft。有一整本书介绍了使用 Python 脚本进行 Minecraft 编程,您甚至可以制作简单的基于 Minecraft 的游戏。我还将展示如何在 Minecraft 中绘制简单(有时更复杂)的基于乌龟的绘图,同时您可以像乌龟一样与绘图一起骑行。
一段时间以来,您可以在 Raspberry Pi 上为 Minecraft 编写 python 脚本。我希望我的孩子能够做到这一点,但我们没有 Pi,而且如果使用完整的桌面 Minecraft 来做到这一点会很好。您可以使用Raspberry Juice 插件运行您自己的服务器,该插件可以使大多数 python 脚本正常工作。但并不是每个人都想安装和配置服务器。
所以我为 Minecraft 1.8 编写了Raspberry Jam Mod(现在也移植到 1.8.8、1.8.9 和 1.9),它模拟了大多数 Raspberry Pi Minecraft 协议(与 Raspberry Juice 插件提供的大致相同)并让 Raspberry Pi python 脚本在完整桌面 Minecraft 上运行。(我后来发现有人在几周前为 Minecraft 1.7.10编写了mcpiapi mod 。)我最初为 Python 2.7 编写了这个 Instructable,但我认为我的大部分示例都适用于 3.x。
我假设您具备在 Windows(或您选择的操作系统)上创建文件夹以及下载、解压缩和复制文件的基本能力。
您可以使用文本编辑器、Python 附带的 IDLE 环境或 Windows 上的 Visual Studio Python 工具为 Minecraft 创建 Python 脚本。最后一个在某些方面实际上是最好的,所以我将有一些关于如何做到这一点的可选步骤。
今年夏天,我计划使用 Minecraft、Raspberry Jam Mod、Python 和 Visual Studio 向有天赋的中学生和高中生教授编码和基本 3D 几何。
如果您想在 Android 上使用 Minecraft Pocket Edition 来做到这一点,我也有一个Instructable 。

添加提示问问题评论下载

第 1 步:为 Minecraft 安装 Forge











Forge 管理 Minecraft 模组,并且是 Raspberry Jam 模组所必需的。
我假设你已经安装了 Minecraft。
  • 您需要运行一次 Minecraft 1.12.2(版本很重要)。为此,启动 Minecraft Launcher,登录后单击“安装”,然后按“新建”按钮创建配置文件。从下拉列表中选择“Release 1.12.2”,保存配置文件(你可以给它起一个像“1.12.2”这样的名字),开始一个世界并确保它能正常工作。
  • 退出 Minecraft 和 Minecraft Launcher。
  • 下载1.12.2 的 Forge 安装程序。
  • 运行 Forge 安装程序。默认设置应该有效。
  • 启动我的世界。您现在将拥有一个新的 Forge 1.12.2 配置文件。

添加提示问问题评论下载

第 2 步:Windows Installer [自动安装]






如果你有 Windows,一旦你有 Forge,你就可以使用Windows 安装程序安装所有东西。这将安装 RaspberryJamMod、Python 解释器、Python 的 IDLE 和示例脚本。如果您没有 Windows,或者想要更多控制,请查看接下来的两个步骤(但如果您没有 Windows,则必须调整它们)。

添加提示问问题评论下载

第三步:安装Python【手动安装】






您需要决定是要 Python 2.7 还是 Python 3.x。Adventures in Minecraft 这本书使用的是 2.7,网上流传的大多数脚本都是针对 2.7 的,但我已经为 3.x 转换了很多脚本。
1. 从这里下载您选择安装的 Python 。
2. 运行安装程序。
3. 单击“自定义 Python”对话框,确保向下滚动到“将 python.exe 添加到路径”,单击它并选择“将安装在本地硬盘上”。如果您不将 Python 添加到路径中,您将无法从 Minecraft 中使用/python启动脚本。

添加提示问问题评论下载

第 4 步:安装 Mod 和脚本













1. 在您的 Minecraft 文件夹中创建一个mods文件夹。(为此,按Windows-R,键入% appdata%\.minecraft,然后按enter。您将在 Minecraft 文件夹中看到所有内容。如果您已经有一个mods子文件夹,则无需执行任何操作。否则,使1. 在 Windows 8 上,单击新建文件夹,然后输入名称mods并按回车键。)
2.从最新版本的 Raspberry Jam Mod下载mods.zip文件。将 zip 文件的内容(目前由许多名称如1.8和1.10.2的文件夹组成)放入您刚刚创建的mods文件夹中。
3. 从我的Raspberry Jam Mod github 版本下载包含示例 Python 脚本和 mcpi 库的最新 zip 文件。(这些脚本应该适用于 Python 2.7 和 3.x。)
4. 打开下载的 zip 文件(在 Chrome 中,通过在窗口底部单击它)。它有一个mcpipy文件夹。将mcpipy文件夹复制到您的 Minecraft 文件夹中。(为此,请单击zip 文件中的mcpipy文件夹,然后按ctrl-c ,然后按照步骤 1导航到%appdata%\.minecraft文件夹,然后按ctrl-v)。

添加提示问问题评论下载

第 5 步:测试模组








启动 Minecraft,确保使用Forge配置文件。
创建一个新世界(使用 python 脚本很容易搞砸)。我女儿建议我使用 Creative 和 Superflat。
在 Minecraft 中,输入/py donut并按回车键。
如果一切顺利,你周围会画出一个巨大的玻璃甜甜圈,然后里面装满水。
如果您遇到类似于找不到脚本的错误,这可能意味着您没有在%appdata%\.minecraft\mcpipy文件夹中安装示例脚本。
如果您收到“无法运行程序“python””错误,则说明您的系统路径中没有 python 目录。您可能需要手动将其添加到路径中,或者按照我的 python 安装步骤的第 3 步中的说明重新安装 python。
使用/py运行新脚本会停止运行任何较早的脚本(如果您不喜欢这样,请使用/apy而不是/py)。您可以通过不带任何参数键入/py来停止正在运行的脚本。

添加提示问问题评论下载

第 6 步:开始使用 Python 对 Minecraft 进行编程




2 更多图像







开始使用 Python 编写 Minecraft 编程的最简单方法是从一个更简单的示例脚本开始。我建议在桌面上为脚本文件夹 ( %appdata%\.minecraft\mcpipy ) 创建一个快捷方式。
您可以将脚本加载到 IDLE 中。一个有趣的修改脚本是我的注水甜甜圈脚本 ( donut.py )。例如,将倒数第二行中的WATER更改为GRASS以制作一个愚蠢的充满草的甜甜圈。您可以使用 Minecraft 中的/py donut运行它,或者只需在 IDLE 中按F5即可。
或者要制作一个简单的新脚本,请在脚本目录中使用您最喜欢的文本编辑器(甚至是记事本)创建一个helloworld.py文件。放在最上面:
从我的进口 *
这将导入所需的库代码。它还可以方便地从数学库中导入所有函数以及所有块的名称。通过以下方式连接到 Minecraft:
mc = 我的世界()
然后您可以发送“Hello world!” 给用户的消息:
mc.postToChat("Hello world!")
如果你想在玩家正下方创建一个钻石块,你也可以这样做:
playerPos = mc.player.getPos()mc.setBlock(playerPos.x,playerPos.y-1,playerPos.z,block.DIAMOND_ORE)
setBlock()和getPos()的坐标是从玩家的出生点(因此是 (0,0,0))开始测量的。
(关于除 DIAMOND_ORE 之外的所有方块名称的列表,请参阅脚本文件夹中的mcpi\block.py 。您也可以直接使用 Minecraft 方块编号。)
要运行您的脚本,请保存它并在您的 Minecraft 世界中键入/py helloworld并按enter 键。
有时一次设置整个矩形棱柱块很有用:使用 mc.setBlocks()。例如,我的mengersponge.py脚本的这段摘录在玩家位置绘制了一个 81x81 的立方体(脚本然后递归删除——即,替换为AIR ——subblocks 以形成屏幕截图中的分形图像):
长度 = 3*3*3*3mc.setBlocks(playerPos.x,playerPos.y,playerPos.z,             playerPos.x+length-1,playerPos.y+length-1,playerPos.z+length-1,block.WOOL_PURPLE)
技术说明:从我的导入 *开始,将大量内容(Minecraft、方块定义、实体定义、数学)导入到我们的命名空间中。这对于专注于初学者的基本知识很方便(请记住,我将使用它来向初学者教授编码)。更高级的用户可能更喜欢通过将命名空间分开并放入标头中来变得更加pythonic:
将 mcpi.minecraft 导入为 minecraft将 mcpi.block 导入为块将 mcpi.entity 作为实体导入导入数学
然后从mc = minecraft.Minecraft()甚至mc = minecraft.Minecraft.create()开始。

添加提示问问题评论下载

第 7 步:基于海龟的简单绘图




2 更多图像







在 Minecraft 中绘制的一种特别简单的方法是使用基于海龟的系统。我制作了一个非常简单的 Turtle 类(灵感来自 Martin O'Hanlon 的MinecraftTurtle 类),用于向中学生和高中生介绍 Minecraft python 脚本。
以创意模式启动 Minecraft 世界,让您的玩家飞行(双击空格键)。使用以下命令初始化脚本:
从 mineturtle 导入 *t = 海龟()
(我将所有 Minecraft 连接代码包装在 Turtle 类中,为了方便起见,它还将数学引入命名空间。)您现在可以执行t.go(15)之类的操作,在向前移动 15 个方块时画一条线,t.right( 45)向右旋转45度,t.down(30)向下旋转30度,从而画出简单的图。
你在乌龟画画时跟着它移动,这很有趣,乌龟从玩家所在的地方开始,水平指向。
例如,您可以绘制一个水平正方形:
t.go(50)t.right(90)t.go(50)t.right(90)t.go(50)t.right(90)t.go(50)
你通过做一个 7 边形的星:
t.go(50)t.right(180.-180./7)
七次。或者只是循环一次:
对于我在范围内(7):    t.go(50)    t.right(180.-180./7)
您可以使用penblock()更改材料。例如,金色垂直星:
t.penblock(block.GOLD_BLOCK)对于我在范围内(7):    t.go(50)    t.right(180.-180./7)
您可以使用penwidth(x)更改笔宽。例如,这绘制了一个非常简单的玻璃甜甜圈(实际上是一个加厚的 90 边形,但谁能分辨出区别?):
t.penblock(块。玻璃)半径 = 20周长 = 2 * 半径 * pit.笔宽(10)对于我在范围内(90):    t.go(周长/90)    t.左(360/90)
以下是所有可用的方法:
  • go(x):向前移动 x 个方块(如果笔按下则绘图)
  • back(x):向后移动 x 个方块(如果笔按下则绘图)
  • penup():暂停绘图恢复绘图
  • left(angle):向左旋转角度(以度为单位)
  • right(angle):向右旋转角度(以度为单位)
  • up(angle):向上旋转一个角度(以度为单位);初学者不应该混合左/右和上/下旋转,否则他们可能会得到意想不到的结果(技术说明:与pitch(angle)相同)
  • down(angle):向下旋转一个角度(以度为单位)(技术说明:与pitch(-angle)相同)
  • pendelay(x):海龟每次移动或旋转都会延迟x秒;默认为 0.05;设置为零以获得更快的绘制速度(玩家仍然会随着绘制的每条线移动,但从头到尾瞬间移动)
  • angle(x):将水平角度设置为 x(顺时针方向;0 = 南,90 = 西,180 = 北,270 = 东);重置滚动角度
  • verticalangle(x):将垂直角度设置为 x(以度为单位;向上为正;90 = 垂直向上;-90 = 垂直向下);重置滚动角度
  • angles(compass,vertical,roll):设置罗盘角、垂直角和横滚角;省略的参数被认为是零
  • penblock(x):设置绘图材质到块x;有关预定义块的列表,请参阅mcpi/block.py
  • goto(x,y,z):将笔位置设置为 (x,y,z);您还可以访问t.position.x、t.position.y和t.position.z的位置
  • follow():玩家跟随乌龟
  • nofollow():玩家不跟随乌龟
  • turtle(x):如果 x 是 PLAYER,则与 follow() 相同,如果 x 是 None,则与 nofollow() 相同。如果您使用的是 Raspberry Jam Mod,您还可以使用除您自己以外的其他实体作为乌龟。例如,turtle(HORSE)生成一匹马用作乌龟(所有可用的实体都列在mcpi/entity.py中,但活着的最好,因为其他人无法漂浮;并且无法控制 Ender Dragon) . 脚本完成后实体仍然存在。要让它消失,请调用 turtle(None) 或 turtle(PLAYER)。
  • penwidth(x):将笔划宽度设置为 x(默认为 1;较宽的笔划会减慢绘图速度,如果开启跟随模式,您可能最终会陷入笔划中,因此最后您应该调用penup()并退出的绘图)
  • pitch(x) , yaw(x)和roll(x):通过俯仰/偏航/滚动角度旋转乌龟(参见 Instructable 的下一步)
  • startface()和endface():开始和结束绘制一个填充的凸多边形
  • push()和pop():保存和恢复绘图状态(标题、材料、面状态、厚度;但不是速度或海龟类型);对L 系统有用
  • gridalign():将当前位置和乌龟方向与网格对齐(选择最接近乌龟当前方向的)
与我的 Raspberry Jam Mod 不同,mcpiapi mod 不支持设置播放器的方向。这意味着玩家不会面对与乌龟相同的方向。(并且 turtle 脚本还有可能出现其他问题。)
技术说明:如果您已经有一个 Minecraft 对象mc,请使用t = Turtle(mc)进行初始化。如果您在初始化乌龟时省略了 Minecraft 对象,它会为您创建,在任何一种情况下,您都可以通过t.mc访问 Minecraft 对象。
您还可以直接从 Minecraft 聊天窗口使用 python 代码来控制乌龟。
在 Minecraft 中,通过键入以下命令运行turtleconsole.py脚本:/py turtleconsole [enter]。
然后你输入聊天的每一行 python 都会被 python 解释器执行。要在聊天中输入一行,请按T,键入该行并按[enter]。要退出 turtleconsole,只需键入/py [enter]或在聊天中输入quit() [enter] 。
上下文包括一个初始化为 Turtle() 对象的局部变量t,因此您不需要运行任何初始化代码,就像这样:
t.penblock(block.GOLD_BLOCK)t.back(10)
还有一个用于完整的非 Turtle API 的控制台:console.py(其中包括一个预初始化的mc局部变量)。(只是不要放入任何 postToChat() 调用,否则它们会使解释器感到困惑。)

添加提示问问题评论下载

第 8 步:基于海龟的高级绘图

路过

雷人

握手

鲜花

鸡蛋
Loading...