- 查看: 4K
- 回复: 2
一个简单的pyr教程
首先必须有一定的python基础
如果你要是一门编程语言都不会的话,建议先学习一下python
网上的教程很多 bilibili ,菜鸟教程等
c,c++,java,python,VB等只要学会了一门,其他的也就不是很难,基本上看两下语法就能用了
python算是这里面比较简单的一种编程语言了,语法比较简单,容易上手,现在理工科大学生基本上都要学习这个
###小白劝退###
资源和源码放在最后面
开发环境搭建
”工欲善其事,必先利其器。“
开发环境有代码编写和调试两部分
代码编写可以使用下面的软件 (完全看个人喜好,我用的是vscode)
windows: vscode pycharm idle 。。。甚至是文本编辑器
带gui的linux:vscode pycharm vim 等
不带gui的linux: vim(vimplus)
只要是能编辑文本的都能写代码,手机也能写,但调试都得用电脑
调试使用已经安装好pyr的开服包,minebbs上很多,把插件放到对应目录,启动服务器就行了。还得有一部手机(或安卓模拟器)安装与服务器相对应版本的Minecraft。用于测试实际效果
如果使用pycharm或vscode建议下载一个辅助开发包(minebbs
中有)放到开发目录中,这样可以进行相关代码自动补全(得先安装补全插件如kite)
插件编写
pyr加载插件的位置是bds根目录(也就是能看到bedrock_server.exe的文件夹)下的plugins中的py文件夹中,即 /plugins/py/ 所有的pyr插件都放在这个目录中必须以 .py作为后缀名

我们写插件可以直接把插件代码文件创建在这个目录,方便我们进行调试,当然你也可以创建在别的目录,调试时复制一份过来
py文件夹中新建一个py文件 如 firstplugin.py 它就是我们插件的主体了(文件名可以随便写,后缀不能改)
写pyr插件必须得包含 mc包 才能使用其中的api,当然我们没有这个包,我们只需要知道这个包里面有什么就行了(辅助开发模块里面有大部分的说明)
下面是一些插件实例:
E1: firstplugin
看一下效果

E2: firstCommand
效果:


更多练习,可以多看看别人的插件源码,或者是自己动手实现别人的功能
API函数接口和监听器的说明后面有,开发时可以多看看
有问题的话也可以给我回帖
pyr github主页 https://github.com/twoone-3/BDSpyrunner/wiki
pyr 接口说明 https://github.com/twoone-3/BDSpyrunner/wiki/API
pyr监听器说明 https://github.com/twoone-3/BDSpyrunner/wiki/Listener
首先必须有一定的python基础
如果你要是一门编程语言都不会的话,建议先学习一下python
网上的教程很多 bilibili ,菜鸟教程等
c,c++,java,python,VB等只要学会了一门,其他的也就不是很难,基本上看两下语法就能用了
python算是这里面比较简单的一种编程语言了,语法比较简单,容易上手,现在理工科大学生基本上都要学习这个
###小白劝退###
资源和源码放在最后面
开发环境搭建
”工欲善其事,必先利其器。“
开发环境有代码编写和调试两部分
代码编写可以使用下面的软件 (完全看个人喜好,我用的是vscode)
windows: vscode pycharm idle 。。。甚至是文本编辑器
带gui的linux:vscode pycharm vim 等
不带gui的linux: vim(vimplus)
只要是能编辑文本的都能写代码,手机也能写,但调试都得用电脑
调试使用已经安装好pyr的开服包,minebbs上很多,把插件放到对应目录,启动服务器就行了。还得有一部手机(或安卓模拟器)安装与服务器相对应版本的Minecraft。用于测试实际效果
如果使用pycharm或vscode建议下载一个辅助开发包(minebbs
中有)放到开发目录中,这样可以进行相关代码自动补全(得先安装补全插件如kite)
插件编写
pyr加载插件的位置是bds根目录(也就是能看到bedrock_server.exe的文件夹)下的plugins中的py文件夹中,即 /plugins/py/ 所有的pyr插件都放在这个目录中必须以 .py作为后缀名

我们写插件可以直接把插件代码文件创建在这个目录,方便我们进行调试,当然你也可以创建在别的目录,调试时复制一份过来
py文件夹中新建一个py文件 如 firstplugin.py 它就是我们插件的主体了(文件名可以随便写,后缀不能改)
写pyr插件必须得包含 mc包 才能使用其中的api,当然我们没有这个包,我们只需要知道这个包里面有什么就行了(辅助开发模块里面有大部分的说明)
下面是一些插件实例:
E1: firstplugin
Python:
#firstplugin.py
import mc #导入mc包,不需要知道这个包在哪里
def firstPlugin(p): #定义一个函数firstplugin
print("玩家:"+p.name+"上线了!") #在服务器控制台输出 这句话,所有的print都会输出到控制台
p.sendModalForm('§4欢迎来到我的世界', '§b公告内容', 'oK', '取消') #发送一个对话框给玩家,相当于一个公告栏
return True #表示不拦截此事件,其他监听器还可以继续响应此事件,要是返回False事件到此就结束了
#mc 颜色 §4红 §c微粉红色 §2绿色 §a微绿色 §b海洋 §1蓝色 §9一样的 §d粉红色
print("[firstPlugin]--插件正在加载!")
mc.setListener('onPlayerJoin',firstPlugin) #创建一个事件监听器,监听'onPlayerJoin'事件(玩家登录),当玩家登录后触发firstplugin函数并将触发事件的玩家的信息回传到参数p
#一般监听器回传的参数有两种类型,字典和玩家对象,这里回传的是玩家对象,这些在api和listener简介中有
看一下效果

E2: firstCommand
Python:
#firstCommand.py
import mc #导入mc包,不需要知道这个包在哪里
#我的第一个命令,将参数以蓝色返回给我
#这里的命令不是真正的命令,需要开启作弊,最近听说pyr好像要支持真正的命令了
def firstCmd(e): #定义一个函数firstplugine
p=e['player'] #将回传参数e中的player保存在p中
cmd=e['cmd'].strip().lower().split(' ') #将命令分解成列表 cmd[0] 就是输入的命令本体 后面的就是参数
if cmd[0]=='/fc':
try: #玩家有可能只输入了命令没加参数,这样的话就会出现错误使用try和except来进行错误处理
p.sendTextPacket('§1'+cmd[1]) #发送文本给玩家
except:
p.sendTextPacket('命令不正确 /fc msg')
return False #表示拦截此事件,因为使用的是我们的命令,就不需要其它响应了
return True #使用的不是我们的命令,放行
#mc 颜色 §4红 §c微粉红色 §2绿色 §a微绿色 §b海洋 §1蓝色 §9一样的 §d粉红色
print("[firstCommand]--插件正在加载!")
mc.setCommandDescription('fc','/fc msg 我的第一个命令,将参数以蓝色返回给我')
mc.setListener('onInputCommand',firstCmd) #创建一个事件监听器,监听'onInputCommand'事件(玩家输入指令),当玩家输入指令后触发firstCmd函数并将触发事件的玩家的信息以及命令信息以字典回传到参数e
效果:


更多练习,可以多看看别人的插件源码,或者是自己动手实现别人的功能
API函数接口和监听器的说明后面有,开发时可以多看看
有问题的话也可以给我回帖
pyr github主页 https://github.com/twoone-3/BDSpyrunner/wiki
pyr 接口说明 https://github.com/twoone-3/BDSpyrunner/wiki/API
pyr监听器说明 https://github.com/twoone-3/BDSpyrunner/wiki/Listener
附件
最后编辑: