我的世界&python api入门

准备工作

首先给出我学习的书籍:
在这里插入图片描述
电子版百度网盘链接:链接
然后第一章讲述了怎么使用,这里我是上网找了一个启动器(没有国际版,不过准备冲了)
书上的话,其实看着还是有一点别扭的,所以我给出了一个dl整理的博客:链接

开始

首先介绍一下会使用到的几个模块:

  1. mcpi.minecraft:我们主要使用的模块,涉及到很多的基本操作,其创建的对象有定位、传送等操作。(反正就是很重要)
  2. mcpi.block:涉及到各种的方块,这部分我简单看了一下,是前面有一个类,涉及到一些模块的基本属性,后面是各种实例,每一个实例对应一个id编号,我们正常使用的是方块的名称(如AIR、SAND),但函数传参一般是使用id。
  3. 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:绘制一个面,多边形那种

结语

好了,知道这些我们就可以开始游戏(搞事情)了。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值