The Toolkits
模组属性评比

距离显示结果还剩5票~

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

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

      暂无管理组..

    编辑组申请

      暂无编辑组..

    开发组申请

      暂无开发组..

    最近参与编辑
    活跃
    开源

    The Toolkits

    0.0

    无人问津

    昨日指数: 3
    昨日平均指数: 103.412

    2109

    总浏览

    --

    资料填充率


    如何下载?
    • 概述

      这个 Mod 给 Modded Minecraft 添加了一些工具。

      需要服务器和客户端都安装以生效。


      链接物品到聊天栏

      Quark 有一个 shift-T 命令,可以将物品链接到聊天栏中,但无法在 JEI 的配方和书签里使用。

      这个模组添加了一个新的快捷键(可配置,默认为 shift-/,即问号),可以在 inventory,JEI 的配方和书签中使用。

      发送后文本也是可点击的,点击后将打开 inventory(也就打开了 JEI 界面),并帮你在 JEI 中填写搜索这个物品的文本(由于 NBT 的存在,可能结果不会和原物品等效)。

      因为是按 resource id 搜索,所以需要 JEI Client 配置中的 Resource ID 搜索设置为“REQUIRE_PREFIX”,才能使搜索起作用。

      JEI 不是强依赖,如果 JEI 没有,Mod 还是可以载入(虽然没见过玩 Mod 不带jei/rei/...的)


      打开 JEI 搜索命令

      /the-toolkits jei <search_term>

      这个命令用来实现上面链接物品点击的功能,正常来说对用户没用。


      打印物品 NBT

      /the-toolkits nbt get

      人如其名,这个命令将物品的 NBT 打印到聊天中。需要持有物品,然后运行此命令即可。另外可以通过点击文本将内容复制。你需要是OP才能使用这个 OP 的命令(permission 2)。


      打印人物属性

      /the-toolkits attributes get

      这个命令打印玩家属性,例如速度等。通过 API 可以获取两种类型的属性(syncable 和 dirty),作者也不知道它们有什么区别,反正都打印出来了(看上去它们内容是一样的)。

      作者个人使用它来理解神化的实现原理(神化 Mod 中很多效果,如宝石的穿甲,生命百分比伤害等,是通过给人物增加额外的属性来实现的)。

      考虑到看到属性值也会影响平衡,现在和 NBT 命令一样也是 permission 2(需要 OP 才能用)。


      导出配方到 json 文件

      它的实现值得多说一点(如果你有要导出配方的需求,那么应该可以理解下面的)。

      首先,配方都有一个 Serializer,Serializer 的 name 是一个 Resource ID,类似于'minecraft:crafting_shaped' (所有合成台配方),'create:mechanical_crafting' (机械动力的 crafter 的配方)。Resource ID 前面的部分称作 namespace,后面的部分称作 path。这个功能就基于 namespace 和 path 对配方分类。

      用几个命令示例:

      导出某一类下所有配方:

      /the-toolkits recipe <namespace> <path> dump

      列出所有 namespace(此外,在你输入 list 这一位置的参数时,可以自动补全所有 namespace):

      /the-toolkits recipe list

      The Toolkits-第1张图片

      列出所有属于某 namespace 的 path(此外,在你输入list这一位置的参数时,可以自动补全所有 path):

      /the-toolkits recipe <namespace> list

      The Toolkits-第2张图片统计这个<namespace>:<path>下配方的数量:

      /the-toolkits <namespace> <path> count

      随机打印<namespace>:<path>下的一个配方(以一种比较随意的方式展示):

      /the-toolkits <namespace> <path> random

      The Toolkits-第3张图片

      列出 <namespace>:<path>下的配方 id(最多50个):

      /the-toolkits <namespace> <path> list

      print 某个配方 id 的配方内容:

      /the-toolkits <namespace> <path> print <recipe_id>


      关于导出的格式,如果输出有 NBT,则尽量地将 NBT 转换成了 json 输出。另外,在1.16.5中这个功能通过`RecipeManager`获取到`IRecipe`类型的配方,这是一个接口,如果只用它,能获取到 id, group, type, ingredients (材料), result(成品)等属性,所以输出的 json,每一个配方一定会有这几个属性。

      但是对于 crafting shaped 这种合成台的配方,它们真正实现的类还有 width, height 属性(表示宽、高,如2x3)。如果少了它们,只靠`IRecipe`的属性没有办法完全“复原”这些合成台的配方。这种导出的数据无法完全和原配方等同的现象可能对其他的类型也存在。

      一种解决方式是对一些已知的配方类型做特殊处理,如合成台这种的配方,来补上额外的属性。当前唯一有特殊处理的就只有合成台的配方(ShapedRecipe),增加了 height/width 字段。由于可能有很多其它mod在增加配方时也继承了这个类(如机械动力的mechanical crafting),那么`create:mechanical_crafting`就也会有height/width字段。

      下面是两个例子,第一个是合成台配方的例子(blast furnace高炉),第二个是E6E中create:mechanical_crafting 的一个配方示例:

        {
          "id": "minecraft:blast_furnace",
          "group": "",
          "type": "crafting",
          "isSpecial": false,
          "result": {
            "id": "minecraft:blast_furnace",
            "num": 1,
            "nbt": {}
          },
          "width": 3,
          "height": 3,
          "ingredients": [
            {
              "tag": "forge:ingots/iron"
            },
            {
              "tag": "forge:ingots/iron"
            },
            {
              "tag": "forge:ingots/iron"
            },
            {
              "tag": "forge:ingots/iron"
            },
            {
              "item": "minecraft:furnace"
            },
            {
              "tag": "forge:ingots/iron"
            },
            {
              "item": "minecraft:smooth_stone"
            },
            {
              "item": "minecraft:smooth_stone"
            },
            {
              "item": "minecraft:smooth_stone"
            }
          ]
        },
        {
          "id": "enigmatica:expert/create/mechanical_crafting/compact_machine_maximum",
          "group": "",
          "type": "create:mechanical_crafting",
          "isSpecial": true,
          "result": {
            "id": "compactmachines:machine_maximum",
            "num": 1,
            "nbt": {}
          },
          "width": 5,
          "height": 5,
          "ingredients": [
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "portality:module_energy"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "portality:module_items"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "portality:controller"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "portality:module_fluids"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "resourcefulbees:industrious_honeycomb_block"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "portality:module_interdimensional"
            },
            {
              "item": "compactmachines:wall"
            },
            {
              "item": "compactmachines:wall"
            }
          ]
        },

      注:

      - 当前的实现是server向client发送消息(包含namespace和path,不包含json数据),client收到后自行再获取RecipeManager进行后续逻辑,所以请保证客户端和服务端配方一致,否则可能会有意料之外的事发生。

      - 如果发现某个配方少了,可以用`recipe search "recipe_id"`来搜索Serializer名(例如有一些合成台的配方可能会被放到kubejs这个namespace下)


      列出所有的entity/block_entity

      /the-toolkits entity summary classname/name/registry_name # have a summary of all the entities count
      /the-toolkits entity locations classname/name/registry_name name # dump the locations of them

      把entity替换为block_entity则是block entity相应的命令,不过不能选classname/name/registry_name,默认都是registry_name

    短评加载中..