一、启动Minecraft(《我的世界》)

1、启动Start_Server

2、启动“启动侠”

二、操作Minecraf

1、操作角色

  • 移动角色
  • 上升下降
  • 切换人称、查看状态、切换全屏

2、设置Minecraf环境

  • 改变时间
  • 改变天气
  • 游戏模式
  • 防止破坏

三、使用变量传递角色

1、认识世界坐标

2、将角色传递到某处

3、使用时间模块降低传送速度

4、使用注释让你的程序更易于理解


跟李老师学用Python玩Minecraft——开启传送之门


看了上节课的内容,你们搭建好Minecraft的环境了么?今天我们就要来用Python玩Minecraft了,我们先来启动它。

一、启动Minecraft

先双击Start_Sever文件,启动服务器。


跟李老师学用Python玩Minecraft——开启传送之门

接着双击“Minecraft启动侠”启动游戏。


跟李老师学用Python玩Minecraft——开启传送之门


如何启动游戏上次课程李老师已经介绍过了,如果还有什么不懂的地方,你们也可以再去复习一下上节课的内容,这里就不在赘述。

二、操作Minecraft

1、键盘操作

下面我们来看看如何在Minecraft中操作角色,在刚刚打开Minecraft时,我们是用第一人称看世界的,这种视角对下面我们造房并不友好,所以我们可以用F5键将视角改为第三人称。用WASD四个键我们可以移动角色,如果我们一不小心掉进坑里,我们可以用空格键跳出来,如果我们想飞高点看看远处的世界,可以快速按两下空格,然后再长按空格飞起来,如果要想落地,就再快速按两下空格就落回地面,竟然一点也没伤到,是不是很神奇?如果你想暂时释放鼠标去编写程序,就按下ESC暂停一下,接着你可以去干其它事儿了。

2、环境设置

糟糕,我的世界打开为什么黑呼呼的,还在下雨,突然想起一句歌词“雨纷纷,旧故里草木深;我听闻,你始终一个人…"哎,我的世界总是孤独的一个人。。。


跟李老师学用Python玩Minecraft——开启传送之门


让我们按下ESC键,到Start_Server窗口下去敲击一些命令,让我们的心情变得开朗吧~


跟李老师学用Python玩Minecraft——开启传送之门


1)设置时间

在命令行中输入我们希望世界的时间

time set (数值)

我的世界怎么调时间:天黑的时候做实验也是各种不方便,time set 13000 可以让我们享受夕阳。


跟李老师学用Python玩Minecraft——开启传送之门

返回游戏,哇,太美了!每天的这个时候,李老师最喜欢站在玄武湖畔呆呆地凝望,想起一首诗“夕阳无限好,只是近黄昏。”如此壮丽的景象,为什么只有夕阳才有,是不是对人生最后的倔强。好啦,其实大自然每天都有美景,我们珍惜每一天。

跟李老师学用Python玩Minecraft——开启传送之门

大家记住下面的时间点哦:

time set 0 天刚亮

time set 10000 差不多正午

time set 13000(夕阳)
time set 15000(午夜)

time set 21000 天就黑了

2)设定天气


跟李老师学用Python玩Minecraft——开启传送之门

“雨一直下,气氛不太融洽“为什么分手总是在雨天,这种天气总是很容易抑郁,让我们变个魔术,让天也晴朗起来吧。还是回到Start_Server窗口下,输入这样一句话:

weather clear


跟李老师学用Python玩Minecraft——开启传送之门

再来看看效果:


跟李老师学用Python玩Minecraft——开启传送之门

天终于放晴了,心情也开朗了。

输入指令:“weather thunder”,就可以切换为雷雨天了。


跟李老师学用Python玩Minecraft——开启传送之门

如果天气干旱,就输入指令“weather rain”,浇灌下干涸的大地吧。

3)打开生存模式

打开生存模式,可以不需要担心损失健康,感到饥饿或被攻击,全心全意去创造世界。

但也许你为了更有乐趣而想接受生存模式的挑战,在创造模式和生存模式之间进行切换也非常简单。

要想将服务器中的创建模式改为生存模式,请按照以下几点去做。打开 Minecraft Tools 文件夹,然后打开 server 文件夹。找到 server.properties 文件夹并从目录中打开,使用记事本工具打开就可以。


跟李老师学用Python玩Minecraft——开启传送之门

在这个文件里,找到“gamemode=1”并将它改为"gamemode=0”,保存这个文件并关闭。


跟李老师学用Python玩Minecraft——开启传送之门

在Minecraft Tools文件夹中单击 Start Server 来运行服务器,当你登录 Minecraft Python World 游戏时,将处于生存模式。

4)防止破坏

我们游戏的主人公简直就是个破坏王,如果一不小心点个鼠标,面前的方块就被他给砸了,我现在得把他手上的锤子给没收了,否则我的成果一定全部被他全部破坏了。

下面我们打开Pycharm,就在我们上次编写的程序上添加一句命令并执行:

mc.setting("world_immutable",True)


跟李老师学用Python玩Minecraft——开启传送之门

添加这个命令,可以帮助你保护珍贵的作品,使其免遭破坏。

三、使用变量传送

1、认识世界坐标

请大家回忆一下,我们在scratch中是怎样将一个角色从一个位置瞬移到另一个位置,所用的命令是“移到x,y”x,y是平面上某点的坐标。在minecraft中,世界是立体的,除了平面坐标外,我们还需要一个高度的坐标,这样才能表示一个东西在空间上的位置,下面就让我们来认识一下Minecraft中的坐标。Minecraft角色在世界中有一个位置(position),它是由x、y、z坐标构成的。字母y代表的是高度,x和z代表的是在水平面上的位置。我们可以把世界上每个整数坐标都想象成一个方块,我们编程要做的事情就是改变这些方块的性质。


跟李老师学用Python玩Minecraft——开启传送之门

我们可以按键盘上的F3键去查看玩家角色所在的位置。


跟李老师学用Python玩Minecraft——开启传送之门

2、将角色传递到某处

在Minecraft中有两个命令可以用来传送角色:

mc.player.setTilePos(x,y,z)

mc.player.setPos(x,y,z)

我们在Pycharm测试一下,我们分别设置x,y,z为10,110和12:


跟李老师学用Python玩Minecraft——开启传送之门

我们突然发现,我们到了一个黑乎乎什么也看不见的地方,让我们修改下坐标值。


跟李老师学用Python玩Minecraft——开启传送之门

这个时候,我们落在了一个跟刚才不太一样的地方了。


跟李老师学用Python玩Minecraft——开启传送之门

mc.player.setTilePos(x,y,z)和mc.player.setPos(x,y,z)有什么区别呢?mc.player.setTilePos(x,y,z)中的x,y,z必须是整数,而mc.player.setPos(x,y,z)中的x,y,z可以是浮点数,你可以看做是小数。x,y,z除了正数外,可以是负数。

为了不要反复写两个命令,我们可以先将x,y,z的值设置为三个变量,那么我们以后需要修改角色位置的时候,只要修改三个变量就可以了。


跟李老师学用Python玩Minecraft——开启传送之门


跟李老师学用Python玩Minecraft——开启传送之门

y不是100的原因是如果角色不在地面上,会自动落回地面,y就显示的是地面的数值了。

3、使用时间模块降低传递速度

Python 会尽可能快地运行你的程序,但是你也可以人为地让它减速。比如,让它等待一段时间再继续工作。如果想要在你的程序中用到 time(时间)模块,你需要在程序的最上面加入下面这一行代码:

import time

然后我们用time.sleep(时间)来控制时间暂停的长度。

4、添加注释

为了让我们能更好地理解程序的作用,我们经常需要在一段程序块前面加上注释,注释的内容不会被执行,但是它可以很好地告诉我们程序的作用,当我们在很长时间不用这段程序的时候,再次看起来,也可以清楚地回忆起程序的作用。

注释的写法是

# 注释内容

下面我们来编写一个完整的python程序,用来移动游戏角色,并给它取名为tour.py

#连接到 Minecraft

from mcpi.minecraft import Minecraft

mc = Minecraft.create()

import time

#设置x、y和z变量来表示坐标

x = 50

y = 88

Z = 100

#变换玩家的位置

mc.player.setTilePos(x,y,z)

#等待10秒

time.sleep(10)

#设置x、y和z变量来表示坐标

x = 200

y = 100

z = 400

#变换玩家的位置

mc.player.setTilePos(x,y,z)


跟李老师学用Python玩Minecraft——开启传送之门


跟李老师学用Python玩Minecraft——开启传送之门

我们发现,执行了tour.py后,角色在10秒后发生了移动。

你学到了什么

恭喜!你己经学会了编写第一个python 程序来控制 Minecraft中玩家的位置了。你也已经认识了两种全新的数据:整数和浮点数。你还学到了Minecraft Python 中两个重要的 API 接口:setPos() 和 setTilePos()。将来你会慢慢了解如何在Minecraft 中快速搭建建筑,使用数学运算的方法和函数来设定砖块的摆放。

欢迎大家继续跟着李老师学习用python玩Minecraft,我们下期见!