反射命令 (Reflection Command)
红票0 (50%)黑票0 (50%)
模组属性评比

距离显示结果还剩5票~

路过的这位少侠,你觉得这款Mod怎么样,可否愿意来评一评它呢?登录并评比
更新日志
  • 暂无日志..

历史编辑记录更多
    管理组申请

      暂无管理组..

    编辑组申请

      暂无编辑组..

    开发组申请
    最近参与编辑
    活跃
    开源

    反射命令

    Reflection Command

    • 支持平台: JAVA版 (JAVA Edition)
    • 运作方式: Fabric
    • 运行环境: 客户端可选, 服务端必装
    • 收录时间: 12天前
    • 最后推荐: 12天前
    • 模组标签:
    • 支持的MC版本:
    • Mod作者/开发团队:
      显示更多成员

    0.0

    无人问津

    昨日指数: 15
    昨日平均指数: 154.310

    612

    总浏览

    --

    资料填充率


    下载本模组
    • 增加了可以使用Java反射的命令:/reflect

      /reflect有9个子命令:assign, literal, print, field, get, method, invoke, runcommand, clearvars

      • /reflect assign <target> <source>

        • 赋值:把source的值赋给target,如果target为"_all",则将source的值赋给所有变量

        • 示例:/reflect assign myVar _temp,该指令把_temp的值赋给myVar——相当于代码myVar=_temp;

      • /reflect literal <byte|short|int|long|float|double|char|boolean|string> <text>

        • 字面量:根据类型解析字面量,并把解析的结果储存到变量_temp,其中,long、float、double类型没有L、F、D的单位,char被视为无符号整数类型,string不带引号 示例:/reflect literal char 48,该指令将

        • 示例:/reflect literal char 48,该指令把48当做无符号整数char解析,结果为48,即字符'0'

      • /reflect print <var>

        • 打印:将变量var打印到聊天栏或命令方块反馈栏中

        • 示例:/reflect print _temp,该指令把_temp的类型和值打印到聊天栏或命令方块反馈栏中

      • /reflect field <class> <field>

        • 字段:获取class类的field字段(是一个java.lang.reflect.Field对象,不是这个字段的值),并储存到_temp变量

        • 示例:/reflect field java.lang.Character MAX_VALUE,该指令获取了java.lang.Character的MAX_VALUE字段,作为一个java.lang.reflect.Field对象,储存到变量_temp——相当于代码_temp=java.lang.Character.class.getFiled("MAX_VALUE");

      • /reflect get <subject>

        • 获取:获取变量subject的储存在变量_temp的字段的值,并储存到变量_temp。这要求变量_temp必须是一个java.lang.reflect.Filed对象。如果是访问静态字段,subject填null

        • 示例:/reflect get null,假设当前_temp的值为上方的示例所获取的字段,则该指令以null为主体(因为是静态字段)获取了java.lang.Character的MAX_VALUE字段的值('\uFFFF'),作为一个java.lang.Character对象,储存到变量_temp——相当于代码_temp=((Field)_temp).get(null);

      • /reflect method <class> <method> [paras]

        • 方法:获取class类的名为method的参数列表为paras的方法或构造器(是一个java.lang.reflect.Method或java.lang.reflect.Constructor对象,不是调用这个方法或构造器)。如果method填new或<init>,则获取构造器,否则获取方法。paras填每个参数的类名,之间用单个空格分开。如果没有参数,则不要填paras

        • 示例:/reflect method java.lang.String substring int int,该指令获取了java.lang.String的substring(int, int)方法,作为一个java.lang.reflect.Method对象,储存到变量_temp——相当于代码_temp=java.lang.String.class.getMethod("substring", int.class, int.class);

      • /reflect invoke <subject> [paras]

        • 调用:以变量subject为主体调用储存在变量_temp的方法或构造器,传入变量paras参数,并把返回值储存到_temp。这要求_temp必须是一个java.lang.reflect.Method或java.lang.reflect.Constructor对象。如果是调用静态方法或构造器,则subject填null。paras填每个参数的变量名,之间用单个空格分开。如果没有参数,则不要填paras。

        • 示例:/reflect invoke str start end,假设当前str是一个String,start和end都是Integer,_temp的值为上方的示例所获取的方法,则该指令以str为主体调用了substring方法,传入参数start和end,并把返回值储存到变量_temp——相当于代码_temp=((Method)_temp).invoke(str, start, end);

      • /reflect runcommand <command>

        • 运行指令:对变量command调用Objects.toString方法,并将返回的字符串当做命令执行。执行参数(执行者、位置、角度、维度等)与该命令执行的相同。

        • 示例:/reflect runcommand str,假设当前str是"tp ~ ~1 ~",则会将执行者传送到其上方一格——相当于指令/tp ~ ~1 ~;

      • /reflect clearvars

        • 清除变量:清除所有变量

    短评加载中..