Home - Sbaoor-fly/CSR-IronPythonRunner GitHub Wiki
Welcome to the IronPythonRunner wiki!
欢迎来到IronPythonRunner文档
一、说明
不同于Twoone3的CpythonRunner,
IronPythonRunner采用.NET框架下的IronPython解释器
使用之前,请确保您已了解了IronPython的语法,可参考 IronPython.org
为什么选择IronPython?
-
IronPython是对.NET Framework的一个极好的补充,它为Python开发人员提供了.NET Framework的强大功能。现有的.NET开发人员也可以使用IronPython作为一种快速而富有表现力的脚本语言,从零开始嵌入、测试或编写新的应用程序。
-
CLR是创建编程语言的一个很好的平台,而DLR使动态语言变得更好。此外,.NETFramework(基类库、演示基础等)为开发者提供了惊人的功能和能力。
二、什么是Python脚本开发
原生的AddOn的方式可以改变很多原版游戏内容,以及添加自定义的游戏内容,但一般无法实现一些较复杂的逻辑,比如右键方块时,会给予物品。这就需要使用脚本来实现了。
在Bedrock_server中,我们使用可以IronPython来编写mod脚本。
我们封装了很多的游戏事件与组件,游戏事件是指游戏内触发了某个操作或达到某一种条件(例如玩家点击方块),可以通知到我们的代码,进而实现我们的逻辑。组件是我们封装好的游戏引擎接口,可以用来设置或获取某些数据(例如操作玩家背包),或者执行一些特殊的功能。
脚本开发就是一个监听事件与调用组件的过程,配合自己的逻辑来实现很酷的玩法
三、搭建开发环境
1.在VScode或者VS的新建作品→python项目,把后缀改为.net.py
2.在 MineBBS 或者 GitHub 处下载IronPythonRunner,注意IronPythonRunner需要作为BDSNETRunner的子mod运行
3.从releases中取出SDK文件夹中的py文件放到你的插件项目同级目录
这样开发环境就搭建完成。
四、IronPython入门
python是一门很容易入门的编程语言,没有接触过python的开发者可以先浏览这个网站的下面这些页面,跟着上面的示例代码来了解python:
- python环境搭建
- python安装
- 系统环境变量配置
- python基础语法
- python标识符
- python保留符
- 行和缩进
- python函数
- 定义一个函数
- 函数调用
- 参数传递
- python字符串
- 访问字符串中的值
- python转义字符
- python字符串格式化
- python模块
- import语句
- PYTHONPATH变量
- python内置函数
五、第一个ipy脚本插件
1.用VScode打开你的插件项目文件并配置环境变量
2.引用mc模块和tool模块,输入'mc.'查看是否有自动补全,如果没有的话就把mc.py也用VScode打开
3.实现右键方块时获得钻石剑
我们通过监听UseItemEvent,然后在响应函数里用addPlyerItem函数向玩家背包添加物品。
首先我们创建一个useitem监听器
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import mc
def load_plugin():
print('示例插件已加载!')
def useitem(a):
pass
其中useitem监听器会传回一个事件,需要我们用mc.AnalysisEvent()函数将其转化成python可以操作的事件类型
要解析这个事件,就需要知道每个key对应的数据是什么,可以到这里来查看监听器获得的返回数据。
接下来我们继续完善插件
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import mc
def load_plugin():
print('示例插件已加载!')
def useitem(a):
d = mc.AnalysisEvent(a)
mc.runcmd('give '+d.playername+' diamond_sword')
这样就可以做到在点击方块的时候给玩家一把钻石剑,接下来把ipy插件放进ipy文件夹,开服测试
可以发现在点击方块后背包中多了一把钻石剑
六、load_plugin()函数是什么
load_plugin()是Python逻辑的入口文件,需要包含mod的初始的处理函数。这些初始化函数中,可以做一些自定义的初始化操作,例如注册指令和检查插件所需的配置文件是否存在。
七、开始行动吧
首先阅读API & Listners熟悉各种API函数及其作用
完全理解后,在Linsters事件中找几个自己感兴趣的,尝试添加到mod里,看能不能生效吧!
熟悉ipyr插件编写入门后,可以查看IPYRDemo来学习CreateGUI和指针组件的使用。
熟悉了ipyrSDK的用法后,可以继续阅读这个网站 的“高级特性”,“面向对象编程”,“常用内建模块”,有助于使用python编写出更复杂的玩法逻辑。
遇到自身没法解决的问题时,及时和开发者沟通反馈(可通过MineBSS或者GitHub提交issues)。