教程攻略 pyr插件编写教程 用python写插件

一个简单的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

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
 

附件

最后编辑:
支持一下 回头看看 :evil:
 

在线会员

  • wx321awa
  • 没烦恼
  • 七六
  • jja'k'k'l'l'j'l
  • 思左
  • 唯喵
  • ice_watermelon
  • Coquettishpig
  • 龙亚的游戏太空球
  • 涵筱
  • suphat060841
  • LCH
  • Kalpa
  • Marss
  • ou150654
  • kevin2025
  • Oracle-raven
  • 欣欣欣666
  • Relyonshe
后退
顶部 底部