本帖最后由 世界边境 于 2019-4-1 11:29 编辑 
前言:
FTGU是一个独具创意的mod,它模仿神秘时代的配方解锁方式将游戏中的合成表锁定,给玩家带回第一次进入Minecraft时的体验。
虽然FTGU这个mod已经发布了一些时日,而且也已经有了不少或知名或无名的玩家做了攻略或实况。
但是至今仍没有玩家发布关于如何编写FTGU配置文件的教程,于是我翻译了mod作者在Github上的wiki,希望能对各个整合包作者或玩家提供一些微小的帮助。
鉴于1.10/1.11版本已经落后太多,所以我并不打算翻译利用CraftTweaker进行配置的那篇文档。
官方文档地址:https://github.com/Astavie/From-the-Ground-Up/wiki/JSON
前言:
FTGU是一个独具创意的mod,它模仿神秘时代的配方解锁方式将游戏中的合成表锁定,给玩家带回第一次进入Minecraft时的体验。
虽然FTGU这个mod已经发布了一些时日,而且也已经有了不少或知名或无名的玩家做了攻略或实况。
但是至今仍没有玩家发布关于如何编写FTGU配置文件的教程,于是我翻译了mod作者在Github上的wiki,希望能对各个整合包作者或玩家提供一些微小的帮助。
鉴于1.10/1.11版本已经落后太多,所以我并不打算翻译利用CraftTweaker进行配置的那篇文档。
官方文档地址:https://github.com/Astavie/From-the-Ground-Up/wiki/JSON
JSON
FTGU允许玩家利用JSON文件来创建自定义科技树。这种文件类型也同样被用于自定义Minecraft原版进度和战利品列表。 FTGU的"科技"文件类似于"进度"文件,而且使用了一些与"进度"文件相同的结构或语句。
文件夹结构
FTGU遵循严格的文件夹结构, 由domain(域)、tree(树)、name(名)组成。内部ID是由这些东西结合在一起组成的,结构如下: domain:tree/name。 配置文件可以被放在以下三个位置:config文件夹里,存档文件夹里或者mod的jar文件里。
在config文件夹中,FTGU的配置文件结构如下:
在存档文件夹中,FTGU的配置文件结构如下:
当在mod中添加配置文件时,mod id将会作为科技文件的domain(域)。 文件夹结构也有一点不同:
Domain、tree和name可以相同,但是最终的mod id必须不同。
比如同一个域下可以有两个相同名字的科技,但是它们不能在同一个tree里,或上一级的tree名不能一样
科技
科技文件类似于Minecraft进度文件。它们有一个display标签,可以有requirements标签,甚至可以有rewards标签。文件中的任何内容都在object {}中。
以下是标签列表:
display、criteria、 requirements和 rewards 是直接取自于进度配置文件的JSON格式,只在display标签有一点不同:你可以设置在科技书中的x、y坐标,例如:
灵感配方
灵感配方在idea对象中设置。该对象有两个标签: amount和ingredients。 amount 是从1到3的整数,他表示idea配方中需要多少个特殊物品才能发现科技;ingredients是可选物品的列表,它需要的物品数目至少为amount中标识的数目。例如:
研究配方
研究配方在 research 对象中设置。如果不进行设置,那么灵感工作台将会直接提供给玩家研究羊皮卷。 有两种类型的谜题可供选择:ftgumod:match 和 ftgumod:connect。使用哪种谜题由type标签指定。
匹配谜题
除了type标签,一个匹配谜题还会包含pattern标签和一个 key标签.pattern标签是一个字符串数组,每一个唯一的字符都是一个不同的项目。 它必须由3个字符串组成,而且每个字符串必须有3个字节。每个字符串都是研究台中的一行。如果一个位置中没有任何东西,可以使用空格key 标签是一个对象,他决定什么字符属于什么项。其中的每个对象都包含另外三个标签: item、hint和decipher。 item是一个物品,hint是一条关于该位置的提示。 decipher是可选的,它的决定是你用放大镜检查一个方块时给予的提示。 decipher是一个对象数组。每一个对象都含有一个hint和一个decipher。decipher是一个方块名。例如:
链接谜题
除了type标签,一个链接谜题还包含left和right 标签。它们都是一个物品。例如:
解锁
unlock 标签是一个物品的数组。当科技研究完成时,这些物品的合成表将会被解锁。例如:
MOD支持
Game Stages
如果你安装了Game Stages,科技是通过阶段来解锁的。将一个科技锁定到一个阶段很简单:只要添加gamestage标签,例如:
要令科技解锁一个阶段,你需要添加一个gamestages:stage类型的解锁。包含有一个 stage 标签(解锁了什么阶段)和一个 message标签 (解锁后向玩家发送什么消息)。如果没有 message,那么将会发送一个Game Stages默认的消息。例如:
沉浸工程
如果你安装了沉浸工程,科技还能解锁多方块结构。为了实现这个目的,你需要添加一个 immersiveengineering:multiblock类型的解锁。 它还包含一个multiblock标签。例如:
常量
FTGU允许用户为他们的科技创建自定义常量。每个常量都是一个项目列表,你可以为它命名,当需要在JSON中使用时,只需要在名字前面加上#号。
常量JSON文件
要创建常量文件,必须将其命名为_constants.json否则他无法工作。 FTGU遵循严格的文件夹结构,类似于原版进度文件。本例中, _constants.json文件是在你的domain文件夹下。对于domain:tab/tech的文件结构,你可以把常量文件放在domain:_constants.json
创建常量
用法
你可以在任何位于相同的domain文件夹下的科技文件里使用该常量。
前言:
FTGU是一个独具创意的mod,它模仿神秘时代的配方解锁方式将游戏中的合成表锁定,给玩家带回第一次进入Minecraft时的体验。
虽然FTGU这个mod已经发布了一些时日,而且也已经有了不少或知名或无名的玩家做了攻略或实况。
但是至今仍没有玩家发布关于如何编写FTGU配置文件的教程,于是我翻译了mod作者在Github上的wiki,希望能对各个整合包作者或玩家提供一些微小的帮助。
鉴于1.10/1.11版本已经落后太多,所以我并不打算翻译利用CraftTweaker进行配置的那篇文档。
官方文档地址:https://github.com/Astavie/From-the-Ground-Up/wiki/JSON
2021.12 数据,可能有更多内容
前言:
FTGU是一个独具创意的mod,它模仿神秘时代的配方解锁方式将游戏中的合成表锁定,给玩家带回第一次进入Minecraft时的体验。
虽然FTGU这个mod已经发布了一些时日,而且也已经有了不少或知名或无名的玩家做了攻略或实况。
但是至今仍没有玩家发布关于如何编写FTGU配置文件的教程,于是我翻译了mod作者在Github上的wiki,希望能对各个整合包作者或玩家提供一些微小的帮助。
鉴于1.10/1.11版本已经落后太多,所以我并不打算翻译利用CraftTweaker进行配置的那篇文档。
官方文档地址:https://github.com/Astavie/From-the-Ground-Up/wiki/JSON
JSON
FTGU允许玩家利用JSON文件来创建自定义科技树。这种文件类型也同样被用于自定义Minecraft原版进度和战利品列表。 FTGU的"科技"文件类似于"进度"文件,而且使用了一些与"进度"文件相同的结构或语句。
文件夹结构
FTGU遵循严格的文件夹结构, 由domain(域)、tree(树)、name(名)组成。内部ID是由这些东西结合在一起组成的,结构如下: domain:tree/name。 配置文件可以被放在以下三个位置:config文件夹里,存档文件夹里或者mod的jar文件里。
在config文件夹中,FTGU的配置文件结构如下:
- config
 - ftgumod
 - technologies
 - domain
 - _constants.json
 - tree
 - name.json
- name.json
 
 
- tree
 - name.json
- name.json
 
 
 
- tree
 
- _constants.json
 
- domain
 
- technologies
 
- ftgumod
在存档文件夹中,FTGU的配置文件结构如下:
- world save folder
 - data
 - technologies
 - domain
 - _constants.json
- tree
 - name.json
- name.json
 
 
 
- tree
 - name.json
- name.json
 
 
 
 
- domain
 
- technologies
 
- data
当在mod中添加配置文件时,mod id将会作为科技文件的domain(域)。 文件夹结构也有一点不同:
- resources
 - assets
 - modid
 - technologies
 - _constants.json
- tree
 - name.json
- name.json
 
 
- tree
 - name.json
- name.json
 
 
 
 
- technologies
 
- modid
 
- assets
Domain、tree和name可以相同,但是最终的mod id必须不同。
比如同一个域下可以有两个相同名字的科技,但是它们不能在同一个tree里,或上一级的tree名不能一样
科技
科技文件类似于Minecraft进度文件。它们有一个display标签,可以有requirements标签,甚至可以有rewards标签。文件中的任何内容都在object {}中。
以下是标签列表:
| 名称 | 
| 数据类型 | 
| 描述 | 
| display | 
| Object {} | 
| 描述该科技如何在科技书中显示出来 | 
| parent | 
| String "" | 
| 父科技的mod id | 
| start | 
| 布尔型 true/false | 
| 如果设置成true,那么在游戏一开始的时候,这个科技就是研究完成的状态 | 
| copy | 
| 布尔型 true/false | 
| 如果设置为false,则无法在研究书籍中拷贝该科技 | 
| criteria | 
| Object {} | 
| 一个进度列表。满足该列表才能解锁这个科技 | 
| requirements | 
| Array [] | 
| 一组标准数组。如果requirements数组中的所有数组全都满足至少一个条件,则该科技将被解锁 | 
| idea | 
| Object {} | 
| 发现该科技的idea(灵感)配方 | 
| research | 
| Object {} | 
| 解锁该科技的research(研究)配方 | 
| unlock | 
| Array [] | 
| 研究完成后,可以合成的物品的列表 | 
| rewards | 
| Object {} | 
| 研究完成后,给于的进度成就的列表 | 
display、criteria、 requirements和 rewards 是直接取自于进度配置文件的JSON格式,只在display标签有一点不同:你可以设置在科技书中的x、y坐标,例如:
代码:
- {
 
-     "display": {
 
-    "x": 10,
 
-    "y": 6
 
-     }
 
- }
灵感配方
灵感配方在idea对象中设置。该对象有两个标签: amount和ingredients。 amount 是从1到3的整数,他表示idea配方中需要多少个特殊物品才能发现科技;ingredients是可选物品的列表,它需要的物品数目至少为amount中标识的数目。例如:
代码:
- {
 
-    "idea": {
 
-      "amount": 2,
 
-      "ingredients": [
 
-       {
 
-         "item": "minecraft:stone",
 
-         "data": 0
 
-       },
 
-       {
 
-         "item": "minecraft:cobblestone"
 
-       },
 
-       {
 
-         "item": "minecraft:dirt",
 
-         "data": 0
 
-       }
 
-      ]
 
-    } 
 
- }
研究配方
研究配方在 research 对象中设置。如果不进行设置,那么灵感工作台将会直接提供给玩家研究羊皮卷。 有两种类型的谜题可供选择:ftgumod:match 和 ftgumod:connect。使用哪种谜题由type标签指定。
匹配谜题
除了type标签,一个匹配谜题还会包含pattern标签和一个 key标签.pattern标签是一个字符串数组,每一个唯一的字符都是一个不同的项目。 它必须由3个字符串组成,而且每个字符串必须有3个字节。每个字符串都是研究台中的一行。如果一个位置中没有任何东西,可以使用空格key 标签是一个对象,他决定什么字符属于什么项。其中的每个对象都包含另外三个标签: item、hint和decipher。 item是一个物品,hint是一条关于该位置的提示。 decipher是可选的,它的决定是你用放大镜检查一个方块时给予的提示。 decipher是一个对象数组。每一个对象都含有一个hint和一个decipher。decipher是一个方块名。例如:
代码:
- {
 
-     "research": {
 
-    "type": "ftgumod:match",
 
-    "pattern": [
 
-       "   ",
 
-       "CIC",
 
-       "CFC"
 
-    ],
 
-    "key": {
 
-       "C": {
 
-         "item": {
 
-        "item": "minecraft:cobblestone"
 
-         },
 
-         "hint": "Insulator"
 
-       },
 
-       "I": {
 
-         "item": {
 
-        "item": "minecraft:iron_ore"
 
-         },
 
-         "hint": "Smelt"
 
-       },
 
-       "F": {
 
-         "item": {
 
-        "item": "minecraft:furnace"
 
-         },
 
-         "hint": "Heat",
 
-         "decipher": [
 
-        {
 
-           "hint": "Furnace",
 
-           "decipher": {
 
-             "block": "minecraft:furnace"
 
-           }
 
-        }
 
-         ]
 
-       }
 
-    }
 
-     }
 
- }
链接谜题
除了type标签,一个链接谜题还包含left和right 标签。它们都是一个物品。例如:
代码:
- {
 
-     "research": {
 
-    "type": "ftgumod:connect"
 
-    "left": {
 
-       "item": "minecraft:planks",
 
-       "data": 0
 
-    },
 
-    "right": {
 
-       "item": "minecraft:wool",
 
-       "data": 0
 
-    }
 
-     }
 
- }
解锁
unlock 标签是一个物品的数组。当科技研究完成时,这些物品的合成表将会被解锁。例如:
代码:
- {
 
-     "unlock": [
 
-    {
 
-       "item": "minecraft:glass"
 
-    },
 
-    {
 
-       "item": "minecraft:stained_glass",
 
-       "data": 32767 // Wildcard value, all stained glass will be unlocked
 
-    }
 
-     ]
 
- }
MOD支持
Game Stages
如果你安装了Game Stages,科技是通过阶段来解锁的。将一个科技锁定到一个阶段很简单:只要添加gamestage标签,例如:
代码:
- { "gamestage": "iron_age" }
代码:
- {
 
-     "unlock": [
 
-    {
 
-       "type": "gamestages:stage",
 
-       "stage": "iron_age",
 
-       "message": "You have now entered the Iron Age!"
 
-    }
 
-     ]
 
- }
沉浸工程
如果你安装了沉浸工程,科技还能解锁多方块结构。为了实现这个目的,你需要添加一个 immersiveengineering:multiblock类型的解锁。 它还包含一个multiblock标签。例如:
代码:
- {
 
-     "unlock": [
 
-    {
 
-       "type": "immersiveengineering:multiblock",
 
-       "multiblock": "IE:CokeOven"
 
-    }
 
-     ]
 
- }
常量
FTGU允许用户为他们的科技创建自定义常量。每个常量都是一个项目列表,你可以为它命名,当需要在JSON中使用时,只需要在名字前面加上#号。
常量JSON文件
要创建常量文件,必须将其命名为_constants.json否则他无法工作。 FTGU遵循严格的文件夹结构,类似于原版进度文件。本例中, _constants.json文件是在你的domain文件夹下。对于domain:tab/tech的文件结构,你可以把常量文件放在domain:_constants.json
- domain/
 - _constants.json
 - tab/
 - tech1.json
- tech2.json
 
 
 
- tab2/
 - tech1.json
- tech2.json
 
 
 
- tab/
 
- _constants.json
创建常量
代码:
- {
 
-     "ingredient": [ // A list of items
 
-     {
 
-    "item": "minecraft:stone_slab",
 
-    "data": 3
 
-     },
 
-     {
 
-    "item": "minecraft:stone_stairs"
 
-     },
 
-     {
 
-    "item": "minecraft:cobblestone_wall",
 
-    "data": 0
 
-     },
 
-       {
 
-    "item": "minecraft:cobblestone_wall",
 
-    "data": 1
 
-     }
 
-     ],
 
-     "name": "cobble" // The name of the constant
 
- }
 
- ]
用法
你可以在任何位于相同的domain文件夹下的科技文件里使用该常量。
代码:
- {
 
-    "item": "#cobble"
 
- }
有个问题,使用connect谜语之后,中间会有三个需要解密的空,这些放什么怎么定义
cuibingwei 发表于 2020-1-1 20:04
有个问题,使用connect谜语之后,中间会有三个需要解密的空,这些放什么怎么定义 ...
不需要去定义,连接谜题是基于合成表的,你只要把与前一项合成直接有关的物品摆进去就可以。
比如左端是个镐子,右端是个木剑,那么他的连接可以是这样的:镐子-木棍(镐子的材料)-木板(木棍的材料)-木棍(木板的产物)-木剑(木棍的产物)。
只要相邻两者在合成上有直接关系就行(前者是后者的产物或材料)