元路
本帖最后由 lilanxiao 于 2019-10-3 15:40 编辑

超级把手
yuanluSuperHandle

0.公告
 已更新一个大版本: 2.0.0
 加入了代码共享功能,现在您可以与他人共享代码啦!(详见6)
 加入了TAB补全功能,现在部分涉及class的地方已经有自动补全功能了(详见8)



1.介绍
 本插件是一款功能强大且极具意义的反射插件
 如果您是程序员,使用本插件可以让您在调试时更方便
 如果您是腐竹/编程爱好者,使用本插件可以让您在游戏里编程
 本插件基于java的反射模式,使用7大反射类型,让您随心所欲的操控程序
 继承面向对象思想,提供"过程"是您可以快速调用程序
 您可以操控任何代码,甚至是访问文件,运行命令,调用API

 本插件开源以供学习,但禁止转载
 大部分插件内的显示文字均可在配置文件内定义, 变量使用请参考String.format(String, String...)



2. 命令相关
 插件根命令: /ysh
 命令工具类: yuanluCommand,版本:1.1.2 (id:4)
 所有命令均需玩家拥有权限才可执行,权限可在配置文件设置
 本插件共计4大命令:
  
cache用户变量
hook事件钩子
handle临时调用
process过程


 详细命令使用方法请见游戏内帮助列表
 部分截图:




3.参数说明
 在插件内含有"表达式"字样的参数将会在(实际)执行时被解析为对象
  类型解析如下(从编号1开始,顺序尝试):
   1.基本类型解析, 这项会尝试解析基本类型(及其部分简称), 例如int,i,long,bool
   2.预设类型解析, 这项会尝试使用(其他)插件注册的类型, 例如 String->java.lang.String
   3.类名解析, 若上述解析规则均不符合, 将直接使用Class.forName解析
  数据解析如下(从编号1开始,顺序尝试):
   1.预设字符串, 这类字符串由插件定义,并位于首位尝试解析寻找其对应参数
   2. 用户缓存, 当找到用户缓存时直接返回缓存值
   3.解析字符串, 这类字符串由#开头,并由@分割类型与参数,通过预定方法来获取
   4.外设解析字符串, 这类字符串由@开头,并由#分割类型与参数,通过(其他)插件注册的外部解析器来解析字符串
   5.直译, 若上述规则均不符合,将直接返回字符串
  在某些特定的地方需要规定类型, 如您需要规定类型, 请在解析字符串前加入: "!<typeClass>~" 来限定类型
  至此, 表达式格式如下:
  [!<typeClass>~]<[getter]/[userCache]/[privateParse]/[otherParse]/[none]>
 tip:
  依据上方数据解析可知,用户缓存(cache)处于解析顺序第二位,所以当名字与预设字符串相同时,其数据不可用
  在cache(变量/缓存)中,部分名字也被占用,例如"事件钩子"将会占用以"event_"为开头的部分名称
  有些方法可能并非对象类所拥有的,而是其父类对象所持有,所以需要强制转换
 
 预设值一览表:
  数据解析-预设字符串
字段代码注释
serverBukkit.getServer()服务器实例,可以操作大部分数据
server_nameBukkit.getName()服务器名称
server_motdBukkit.getMotd()服务器MOTD(可能会被ColorMOTD等覆盖)
server_versionBukkit.getVersion()服务器版本

  数据解析-外设解析字符串
字段使用格式注释
player@player#<playerName>获取服务器在线玩家实例

  类型解析-基本类型解析(简写)
字段类型注释
iint整数
ffloat浮点数
ddouble双精度浮点
boolboolean布尔值
llong长整型
cchar字符

  类型解析-预设类型解析
字段类型注释
Stringjava.lang.String字符串
Objjava.lang.Object对象(所有类的父类)
Objectjava.lang.Object同上
Playerorg.bukkit.entity.Player玩家实例
Serverorg.bukkit.Server服务器
Entityorg.bukkit.entity.Entity实体





4.插件联动
您可使用 yuanluRandomGenerator 和本插件进行联动,达到随机效果
您还可以使用 TabooLib 、ProtocolLib等插件作为前置,通过命令调取API



5.图片展示
本插件更加像一个平台,为用户进行拓展玩法,所以并没有游戏内图片,仅有代码及文件图片



6.一些杂话
本插件更像一种编程语言,您可以在游戏内写代码
同时,由于本插件可做的事情很多,所以其具有一定危险性
如果您服务器内有熊孩子拥有权限,那么破坏可能非常大
解决此问题的唯一办法就是确保拥有权限的人都是可信任的
可以找到人的那种(误)

使用本(插件需要您拥有"一点点"编程)能力
由于插件内不像IDE有补全器,所以如果您能熟练掌握代码可能会提升您的速度
后续可能会加上补全器等(咕~)

本插件为了达到速度、简便、代码可读性之间的一种微妙平衡,已经做了大量测试
如果您有任何建议和问题,非常欢迎通过任何方式提醒我
同时,如果您对此插件还较为满意,希望您能给个评分、金粒!!
您的鼓励是我努力的最大动力!!!

2019.9.14

元路



6.过程共享
 此功能在2.0.0版本加入
 过程共享是2.0.0版本一个最重要的更新
 现在你可以使用/ysh market命令来和他人共享代码了
 发送方:
  发送方需要下载server版本(当前版本 V2:星破叶)
  server端将会生成一个".ProcessServer"文件夹
  所有过程请放在".ProcessServer\datas\类型"文件夹内
  (在服务器上不同的是,每个过程都有一个.info信息文件,并且需要放在类型文件夹内)
  创建一个bat文件(像创建MC服务器的bat一样)并打开,数据服务器便可运行
  在数据服务器运行后您还不可以共享数据,您会发现在日志中有如下信息:
   服务器config文件: xxx\config.ini
   服务器log文件: xxx\log.log
   服务器data文件夹: xxx\datas

  这便是默认数据,您可以通过 参数传入/配置文件设置的方法来设置参数:
   (每个数据以空格分割, 路径不能含有空格)
   conf: xxx  重定向配置文件,仅参数传入可用
   log: xxx 重定向日志文件
   data: xxx 重定向数据文件
   port: xxx 设置端口号 (默认13281)
   time-out: xxx 设置客户端超时时间(毫秒)

  在您设置好(或使用默认配置)后,您需要生成信息文件:
   在控制台输入edit按下回车,即可打开过程编辑界面(详见7)
  在您生成完毕信息文件后,您便可让客户端连接您的服务器了!
  再以后使用中,您只需要双击bat运行即可
 接收方(任何用户):
  在MC内输入"/ysh market"查看详细信息
  使用"/ysh market server add xxx ip 端口"添加一台服务器
  使用"/ysh market net infos xxx"获取所有过程信息(并非真正的过程, 仅信息)
  使用"/ysh market net get xxx 类型 名称"下载某一过程到本地
  
  由于插件功能强大,请确保您的目标服务器可信



7.过程编辑器
 过程编辑器是服务端的一个功能
 在服务器端输入"edit"打开界面
 您将会看到一个窗口弹出

 双击数据/信息文件路径可以选择某个过程
 此界面中您可以修改名称、信息、详细信息、版本
 但不建议您修改数据(建议在MC内修改)
 若仅想生成信息文件:
 选择文件后,修改右侧名称、信息、详细信息、版本,点击保存信息即可!

 
 小提示:您可以单击编辑栏打开大窗口编辑



8.TAB补全
 tab补全是2.0.0版本一个附带功能
 此功能仍处于测试
 您在输入一些类名时将会尝试对类名补全:



9.下载地址
https://share.weiyun.com/5Nv0wEQ
密码:bjgyw8



10.更新日志
2019-10-3 15:40 修改帖子
2019-10-3 14:27 完成插件 2.0.0
2019-10-3 13:39 完成服务器可视化编辑器
2019-10-2 23:00 完成了过程分享功能
2019-9-28 12:00 完成tab补全
2019-9-14 18:30 在MCBBS提交帖子
2019-9-14 12:00 完成插件 1.0.0

11.求赞助qwq!
您的鼓励是我努力的最大动力



12.可能更新
补全器√
过程导入/导出
临时handle记录日志
过程分享(视我服务器性能而定)√





本插件所用所有代码均为原创,不存在借用/抄袭等行为
未经允许,禁止转载



2021.12 数据,可能有更多内容
超级把手
yuanluSuperHandle

0.公告
 已更新一个大版本: 2.0.0
 加入了代码共享功能,现在您可以与他人共享代码啦!(详见6)
 加入了TAB补全功能,现在部分涉及class的地方已经有自动补全功能了(详见8)


1.介绍
 本插件是一款功能强大且极具意义的反射插件
 如果您是程序员,使用本插件可以让您在调试时更方便
 如果您是腐竹/编程爱好者,使用本插件可以让您在游戏里编程
 本插件基于java的反射模式,使用7大反射类型,让您随心所欲的操控程序
 继承面向对象思想,提供&quot;过程&quot;是您可以快速调用程序
 您可以操控任何代码,甚至是访问文件,运行命令,调用API


 本插件开源以供学习,但禁止转载
 大部分插件内的显示文字均可在配置文件内定义, 变量使用请参考String.format(String, String...)


2. 命令相关
 插件根命令: /ysh
 命令工具类: yuanluCommand,版本:1.1.2 (id:4)
 所有命令均需玩家拥有权限才可执行,权限可在配置文件设置
 本插件共计4大命令:
  
cache
用户变量
hook
事件钩子
handle
临时调用
process
过程



 详细命令使用方法请见游戏内帮助列表
 部分截图:



3.参数说明
 在插件内含有&quot;表达式&quot;字样的参数将会在(实际)执行时被解析为对象
  类型解析如下(从编号1开始,顺序尝试):
   1.基本类型解析, 这项会尝试解析基本类型(及其部分简称), 例如int,i,long,bool
   2.预设类型解析, 这项会尝试使用(其他)插件注册的类型, 例如 String-&gt;java.lang.String
   3.类名解析, 若上述解析规则均不符合, 将直接使用Class.forName解析
  数据解析如下(从编号1开始,顺序尝试):
   1.预设字符串, 这类字符串由插件定义,并位于首位尝试解析寻找其对应参数
   2. 用户缓存, 当找到用户缓存时直接返回缓存值
   3.解析字符串, 这类字符串由#开头,并由@分割类型与参数,通过预定方法来获取
   4.外设解析字符串, 这类字符串由@开头,并由#分割类型与参数,通过(其他)插件注册的外部解析器来解析字符串
   5.直译, 若上述规则均不符合,将直接返回字符串
  在某些特定的地方需要规定类型, 如您需要规定类型, 请在解析字符串前加入: &quot;!&lt;typeClass&gt;~&quot; 来限定类型
  至此, 表达式格式如下:
  [!&lt;typeClass&gt;~]&lt;[getter]/[userCache]/[privateParse]/[otherParse]/[none]&gt;
 tip:
  依据上方数据解析可知,用户缓存(cache)处于解析顺序第二位,所以当名字与预设字符串相同时,其数据不可用
  在cache(变量/缓存)中,部分名字也被占用,例如&quot;事件钩子&quot;将会占用以&quot;event_&quot;为开头的部分名称
  有些方法可能并非对象类所拥有的,而是其父类对象所持有,所以需要强制转换
 
 预设值一览表:
  数据解析-预设字符串
字段
代码
注释
server
Bukkit.getServer()
服务器实例,可以操作大部分数据
server_name
Bukkit.getName()
服务器名称
server_motd
Bukkit.getMotd()
服务器MOTD(可能会被ColorMOTD等覆盖)
server_version
Bukkit.getVersion()
服务器版本

  数据解析-外设解析字符串
字段
使用格式
注释
player
@player#&lt;playerName&gt;
获取服务器在线玩家实例

  类型解析-基本类型解析(简写)
字段
类型
注释
i
int
整数
f
float
浮点数
d
double
双精度浮点
bool
boolean
布尔值
l
long
长整型
c
char
字符

  类型解析-预设类型解析
字段
类型
注释
String
java.lang.String
字符串
Obj
java.lang.Object
对象(所有类的父类)
Object
java.lang.Object
同上
Player
org.bukkit.entity.Player
玩家实例
Server
org.bukkit.Server
服务器
Entity
org.bukkit.entity.Entity
实体





4.插件联动
您可使用 yuanluRandomGenerator 和本插件进行联动,达到随机效果
您还可以使用 TabooLib 、ProtocolLib等插件作为前置,通过命令调取API


5.图片展示
本插件更加像一个平台,为用户进行拓展玩法,所以并没有游戏内图片,仅有代码及文件图片








6.一些杂话
本插件更像一种编程语言,您可以在游戏内写代码
同时,由于本插件可做的事情很多,所以其具有一定危险性
如果您服务器内有熊孩子拥有权限,那么破坏可能非常大
解决此问题的唯一办法就是确保拥有权限的人都是可信任的
可以找到人的那种(误)


使用本(插件需要您拥有&quot;一点点&quot;编程)能力
由于插件内不像IDE有补全器,所以如果您能熟练掌握代码可能会提升您的速度
后续可能会加上补全器等(咕~)


本插件为了达到速度、简便、代码可读性之间的一种微妙平衡,已经做了大量测试
如果您有任何建议和问题,非常欢迎通过任何方式提醒我
同时,如果您对此插件还较为满意,希望您能给个评分、金粒!!
您的鼓励是我努力的最大动力!!!

2019.9.14
元路


6.过程共享
 此功能在2.0.0版本加入
 过程共享是2.0.0版本一个最重要的更新
 现在你可以使用/ysh market命令来和他人共享代码了
 发送方:
  发送方需要下载server版本(当前版本 V2:星破叶)
  server端将会生成一个&quot;.ProcessServer&quot;文件夹
  所有过程请放在&quot;.ProcessServer\datas\类型&quot;文件夹内
  (在服务器上不同的是,每个过程都有一个.info信息文件,并且需要放在类型文件夹内)
  创建一个bat文件(像创建MC服务器的bat一样)并打开,数据服务器便可运行
  在数据服务器运行后您还不可以共享数据,您会发现在日志中有如下信息:
   服务器config文件: xxx\config.ini
   服务器log文件: xxx\log.log
   服务器data文件夹: xxx\datas


  这便是默认数据,您可以通过 参数传入/配置文件设置的方法来设置参数:
   (每个数据以空格分割, 路径不能含有空格)
   conf: xxx重定向配置文件,仅参数传入可用
   log: xxx 重定向日志文件
   data: xxx 重定向数据文件
   port: xxx 设置端口号 (默认13281)
   time-out: xxx 设置客户端超时时间(毫秒)


  在您设置好(或使用默认配置)后,您需要生成信息文件:
   在控制台输入edit按下回车,即可打开过程编辑界面(详见7)
  在您生成完毕信息文件后,您便可让客户端连接您的服务器了!
  再以后使用中,您只需要双击bat运行即可
 接收方(任何用户):
  在MC内输入&quot;/ysh market&quot;查看详细信息
  使用&quot;/ysh market server add xxx ip 端口&quot;添加一台服务器
  使用&quot;/ysh market net infos xxx&quot;获取所有过程信息(并非真正的过程, 仅信息)
  使用&quot;/ysh market net get xxx 类型 名称&quot;下载某一过程到本地
  
  由于插件功能强大,请确保您的目标服务器可信


7.过程编辑器
 过程编辑器是服务端的一个功能
 在服务器端输入&quot;edit&quot;打开界面
 您将会看到一个窗口弹出

 双击数据/信息文件路径可以选择某个过程
 此界面中您可以修改名称、信息、详细信息、版本
 但不建议您修改数据(建议在MC内修改)
 若仅想生成信息文件:
 选择文件后,修改右侧名称、信息、详细信息、版本,点击保存信息即可!
 
 小提示:您可以单击编辑栏打开大窗口编辑


8.TAB补全
 tab补全是2.0.0版本一个附带功能
 此功能仍处于测试
 您在输入一些类名时将会尝试对类名补全:



9.下载地址
https://share.weiyun.com/5Nv0wEQ
密码:bjgyw8



10.更新日志
2019-10-3 15:40 修改帖子
2019-10-3 14:27 完成插件 2.0.0
2019-10-3 13:39 完成服务器可视化编辑器
2019-10-2 23:00 完成了过程分享功能
2019-9-28 12:00 完成tab补全
2019-9-14 18:30 在MCBBS提交帖子
2019-9-14 12:00 完成插件 1.0.0
11.求赞助qwq!
您的鼓励是我努力的最大动力



12.可能更新
补全器√
过程导入/导出
临时handle记录日志
过程分享(视我服务器性能而定)√





本插件所用所有代码均为原创,不存在借用/抄袭等行为
未经允许,禁止转载



向文
很好的思路

感觉可以实现我的编程梦了~~~

UltraPanda
这种东西得学习的吧,为什么不直接学Java呢 :\

krgrego
好猛喔真的很不錯!!

元路
407 发表于 2019-9-19 20:39
这种东西得学习的吧,为什么不直接学Java呢 :\

其实最初目的是方便程序员调试的,后来慢慢的加入了很多东西

不过我准备加入"过程"共享等功能,这样用插件直接copy别人的就行了。

但是我高三了,没啥时间emm

第一页 上一页 下一页 最后一页