准备工作
首先给出我学习的书籍:
电子版百度网盘链接:链接
然后第一章讲述了怎么使用,这里我是上网找了一个启动器(没有国际版,不过准备冲了)
书上的话,其实看着还是有一点别扭的,所以我给出了一个dl整理的博客:链接
开始
首先介绍一下会使用到的几个模块:
- mcpi.minecraft:我们主要使用的模块,涉及到很多的基本操作,其创建的对象有定位、传送等操作。(反正就是很重要)
- mcpi.block:涉及到各种的方块,这部分我简单看了一下,是前面有一个类,涉及到一些模块的基本属性,后面是各种实例,每一个实例对应一个id编号,我们正常使用的是方块的名称(如AIR、SAND),但函数传参一般是使用id。
- minecraftstuff:这个模块涉及到了很多的建造操作,比如绘制直线和圆(别想多了,用多个方块构成的圆还是很丑)
然后的话,因为我前两个都是直接在GitHub下载的mcpi文件(应该是这样的,反正项目中是有这个文件的),而最后一个是我用pip下载的,所以import方式上可能有一点不一样,大家不要介意。
然后就是我习惯上是mcpi.,所以是将项目文件丢到mcpi文件夹同一层**。
实战操作
这东西,其实主要还是掉包,所以例子会多一点,后面也会更新出很多的案例。
连接
mc = minecraft.Minecraft.create()
我们使用现成的Minecraft类,创建了一个对象,这样我们就可以进行基本的操作了。
奇奇怪怪的部分
mc.postToChat()
玩过mc的都清楚,玩家的聊天栏是很重要的(你要是只玩单机当我没说),而我们脚本和玩家的互动也不能只在控制台中,所以需要一个能在聊天栏显示的。
方块系列
mc.getBlock(x,y,z)
获得(x,y,z)位置上的方块类型,返回的是这个方块的id
(玩过mc的都知道三维坐标这个事,按下F3即可。)
mc.setBlock(x,y,z,block.**.id,编号)
有查询方块就有放置方块,这里还是需要一个三维坐标,另外我们要给出方块的类型。
block->实例名->id
这个看着有一点乱,是这样的。
首先我们是对应block模块,之前说个其中有很多的实例:(左边方块名右边id)
其中的方块名是一个个的实例,这部分是给我们看的;类中有一个id,这个才是计算机能用的上的。
至于最后一个参数,正常是没有的,比如羊毛一些的,所有的都叫block.wool,但是羊毛分颜色,所以给出最后一个编号进行区分。
mc.setBlocks(x1,y1,z1,x2,y2,z2,block.**.id,编号)
一次只能放置一个方块是很不方便的,所以有多个方块同时放置的函数很有必要。
(x1,y1,z1)和(x2,y2,z2)分别位两组坐标,对应着一个长方体的两个对角顶点。根据这两个顶点我们就可以绘制出一个由指定方块组成的长方体。
(想要一个空心的?缩小一圈用air方块填充)
当然了,mc可不是只有这样的方式,在stuff模块我们将给出更多的细节
几乎所有的mc事件都脱离不开方块的打击事件:
envents = mc.event.pollBlockHits()
返回一个被打击方块的列表,我们可以使用for e in events来遍历所有的。
同时,使用e.pos可以获得方块的坐标。
这里有一点不同的是,我们不是再单独地给出xyz的值,而是给出了一个类的实例(这部分参见vec3部分)
其中我们可以通过pos.x、pos.y和pos.z获取相应的部分。
玩家相关
玩家的话,主要还是位置信息
这里我们给出:
mc.player.getTilePos()
获取当前玩家的xyz坐标。返回值仍是一个实例,方便我们进行操作。
同时我们也有修改玩家位置的,也就是tp传送:
mc.player.setPos(x,y,z)
不过不是使用tp。能将玩家传送到(x,y,z)
minecraftstuff模块
前面也说了,是一个比较高级的绘制模块(可能有更强大的功能没学到,但是目前接触的主要还是绘制各种各样的形状,使用MinecraftDrawing)。
先介绍一些简单的部分吧,有一些确实是比较难搞,必须要配合一个例子来看。
首先我们要有这样一个语句:
mcdrawing = minecraftstuff.MinecraftDrawing(mc)
这是一个类的实例(废话)。
mc有一点像pygame中的screen,那么可以说mcdrawing就是这个模块的screen。
(毕竟这个对象是创建对象的参数,还是唯一的)
听不懂没关系,只管往下看就行。
- drawline:绘制直线,传入两个点和方块类型即可(参数可上面的setBlocks)
- getline:这个比较奇怪,是将两个点之间的直线放进一个列表然后返回,如果是寻路过程中会用到
- drawcircle:绘制圆。传入中心点的xyz和半径,以及方块信息。
- drawsphere:绘制球,好家伙越来越花了哈
- drawface:绘制一个面,多边形那种
结语
好了,知道这些我们就可以开始游戏(搞事情)了。
版权归原作者 筱羊冰冰 所有, 如有侵权,请联系我们删除。