拼图方块的消息,自定义拼图结构的可能
我回老家了,一直被催睡觉,于是不能写太多。今天我发现了一些模式文档,好像是用来定义拼图结构的,也就是说他们可能要添加用附加包自定义拼图结构的功能,到时候就可以自定义村庄之类的了。时间紧迫,我处理出来的文档又长,所以先放在下面,大家可以看看。模板池
{
"format_version": "1.21.40",
"minecraft:template_pool": { //用于将方块规则与结构模板配对,并使用加权列表随机放置结构模板。
"description": {
"identifier": "" //模板池的ID。被拼图结构使用,用于将处理器分配给结构模板。
},
"elements": [ //由若干对结构模板和处理器列表组成的列表。
{
"element": { //结构模板的分组、放置结构时要使用的处理器列表以及决定元素被选中可能性的权重。
"element_type": "minecraft:single_pool_element", //元素的类型。目前只支持minecraft:single_pool_element。
"location": "debug_hallway/root", //结构文件的路径。此路径相对于行为包的结构文件夹,也就是sturctures/填写的路径。
"processors": "" //放置结构时要使用的处理器列表的标识符。
},
"projection": "rigid", //可选,指定应如何相对于地形放置结构。支持以下值:["rigid","terrain_matching"]
"weight": 20 //整数,范围是1-200,可选,从模板池中选择元素的加权概率。例如,包含权重为1和3的两个结构的模板池将分别有25%和75%的机会被选中。
}
],
"fallback": "" //可选,当池中没有元素可以成功放置时使用的后备模板池。
}
}
拼图结构
{
"format_version": "1.21.40",
"minecraft:jigsaw": { //代表一组结构模板,它们组成了一个更大的结构。世界生成时放置拼图结构。
"description": {
"identifier": "complementary:debug_hallway" //拼图结构的ID
},
"heightmap_projection": "world_surface", //用于计算相对起始高度的高度图。例如,heightmap_projection填写ocean_floor,而且start_height填写10,拼图结构将在海平面10格上开始生成。可填写ocean_floor或world_surface。
"max_depth": 5, //整数,范围是0-20。拼图结构生成的最大递归深度。例如,生成一个max_depth为5的生成道路的拼图结构,在从原点开始的任何给定方向上,道路长度最多为5个结构模板。
"start_height": 10, //整数,无限制。拼图结构开始生成的高度,配合heightmap_projection使用。
"start_pool": "", //生成拼图结构时使用的第一个模板池。
"step": "underground_structures", //指定拼图结构要在哪个世界生成阶段生成。可填写["fluid_springs","lakes","local_modifications","raw_generation","strongholds","surface_structures","top_layer_modification","underground_decoration","underground_ores","underground_structures","vegetal_decoration"]中的任意一个。
//以上为必需项,以下为可选项。
"terrain_adaptation": "none", //可选,地形应该如何适应生成的拼图结构。可写["beard_box","beard_thin","bury","encapsulate","none"]中的一个。
"biome_filters": {} //可选,拼图结构可以生成的生物群系。此项与地物文件中的同名字段写法一致。
}
}
拼图结构集
{
"format_version": "1.21.40",
"minecraft:structure_set": { //拼图结构集是根据一组规则放置的拼图结构的集合。
"description": {
"identifier": "complementary:debug_hallway_spread" //拼图结构集的ID。
},
"placement": { //描述集合中的结构相对于彼此的生成位置。目前,唯一支持的放置类型是random_spread,它以给定的间隔和分布随机分散结构。
"salt": 4154110189191, //整数,无限制。用于随机生成器的种子,以提供独特的散布模式,并防止在多个结构集使用相同放置值的情况下出现重叠。
"separation": 12, //大于等于0的整数,每个网格单元内的填充(以区块为单位)。填充区域内不会生成结构。
"spacing": 6, //大于等于1的整数,生成结构时使用的网格单元大小(以区块为单位)。结构将尝试在每个单元格内的随机位置生成。
"spread_type": "triangular", //可选,放置结构时使用的随机性算法。填写linear或triangular。
"type": "minecraft:random_spread" //拼图结构集的放置类型,目前只能写minecraft:random_spread。
},
"structures": [ //集合中拼图结构的加权列表。
{
"structure": "complementary:debug_hallway", //拼图结构的ID。
"weight": 20 //整数,范围1-200,拼图结构在集合中的权重。更高的权重更有可能被选择。
}
]
}
}
处理器列表
{
"format_version": "1.21.40",
"minecraft:processor_list": { //拼图结构使用的规则,用于确定在世界中放置结构模板时要修改或替换哪些方块。
"description": {
"identifier": "" //Identifier of the Processor List. This is referenced by Template Pools when pairing processors with Structure Templates.
},
"processors": [ //List of processors to run on the Structure Template. 其中对象可以是四种之一,这里以不同对象表示。
{ //第1种,描述:Replaces and modifies blocks based on a series of rules
"processor_type": "minecraft:rule",
"rules": [ //List of block rules evaluated on all blocks of a Structure Template. Block rules are evaluated in order. If a block rule succeeds and the output_state is set, the output_state block will be used as the input_predicate block for subsequent rules.
{ //在结构模板的所有方块上评估的方块规则。对于任意方块,如果全部谓词的计算结果是true,那么用output_state替换这个方块。
"block_entity_modifier": { //可选,当所有谓词匹配时,用于方块实体的方块状态修饰符。此对象有2种模式,需要填写其中一种模式。
//以下为第1种模式,描述:保持状态不变的修饰符。如果没有指定其他方块修饰符,这是默认的方块修饰符。
"type": "minecraft:passthrough"
//以下为第2种模式,描述:试图给一个方块实体增加战利品的修饰符。
"type": "minecraft:append_loot",
"loot_table": "" //要添加的战利品表路径
},
"input_predicate": { //可选,在结构模板方块上计算的谓词。此对象有4种模式,需要填写其中一种模式。
//以下为第1种模式,描述:始终计算为true的谓词。如果没有指定其他谓词,这是默认谓词。
"predicate_type": "minecraft:always_true"
//以下为第2种模式,描述:如果指定位置的方块是指定的方块,则该谓词的计算结果为true。
"predicate_type": "minecraft:block_match",
"block": "" //要匹配的方块。
//以下为第3种模式,描述:如果指定位置的方块是指定的方块,则以给定的概率为true的谓词。
"predicate_type": "minecraft:random_block_match",
"block": "", //要匹配的方块。
"probability": 0.5 //浮点数,范围是[0.0,1.0),当方块匹配时结果为true的概率。
//以下为第4种模式,描述:如果指定位置的方块包含指定标签,则谓词计算为true。
"predicate_type": "minecraft:tag_match",
"tag": "" //要匹配的标签
},
"location_predicate": { //可选,在世界方块上计算的谓词。此对象有4种模式,需要填写其中一种模式。
//以下为第1种模式,描述:始终计算为true的谓词。如果没有指定其他谓词,这是默认谓词。
"predicate_type": "minecraft:always_true"
//以下为第2种模式,描述:如果指定位置的方块是指定的方块,则该谓词的计算结果为true。
"predicate_type": "minecraft:block_match",
"block": "" //要匹配的方块。
//以下为第3种模式,描述:如果指定位置的方块是指定的方块,则以给定的概率为true的谓词。
"predicate_type": "minecraft:random_block_match",
"block": "", //要匹配的方块。
"probability": 0.5 //浮点数,范围是[0.0,1.0),当方块匹配时结果为true的概率。
//以下为第4种模式,描述:如果指定位置的方块包含指定标签,则谓词计算为true。
"predicate_type": "minecraft:tag_match",
"tag": "" //要匹配的标签
},
"output_state": //如果所有谓词的计算结果都为true,则使用这里指定的方块替换世界方块。此字段有2种模式,需要填写其中一种模式。描述:指定特定的方块。可以是字符串方块名称或JSON对象
//以下为第1种模式。
"" //方块名称
//以下为第2种模式。
{
"name": "", //方块名称
"states": { //包含以每个状态命名的成员,具有布尔值、整数或字符串值。
"state_name": true //可以是布尔值、字符串或整数。
}
}
,
"position_predicate": { //可选,根据结构的原点和世界方块之间的距离计算的谓词。此对象有2种模式,需要填写其中一种模式。
//以下为第1种模式,描述:始终计算为true的谓词。如果没有指定其他谓词,这是默认谓词。
"predicate_type": "minecraft:always_true"
//以下为第2种模式,描述:如果方块在沿着所提供的轴的距离范围内,而且随机数在随机范围之间,则判定评估为true
"predicate_type": "minecraft:axis_aligned_linear_pos",
"axis": "y",
"max_chance": 0.75, //浮点数,范围是[0.0,1.0)
"min_chance": 0.25, //浮点数,范围是[0.0,1.0)
"max_dist": 16, //大于等于0的整数
"min_dist": 2, //大于等于0的整数
}
}
]
},
{ //第2种,描述:Protect blocks from this structure's placement in the world. Ensuring that it does not replace matching blocks in the world
"processor_type": "minecraft:protected_blocks",
"value": "" //Block tag for the blocks that will be protected
},
{ //第3种,描述:Specifies block types in the template that should be ignored by other processors.
"processor_type": "minecraft:block_ignore",
"blocks": [ //List of blocks evaluated on all blocks of a Structure Template. If a block is matched in the provided list the block will be ignored for processing.
""
]
},
{ //第4种,描述:Processor that wraps a processor and caps the number of times the delegated processor can be applied.
"processor_type": "minecraft:capped",
"delegate": //The processor that will be executed. 可以是三者之一。
{ //第1种,描述:Replaces and modifies blocks based on a series of rules
"processor_type": "minecraft:rule",
"rules": [ //List of block rules evaluated on all blocks of a Structure Template. Block rules are evaluated in order. If a block rule succeeds and the output_state is set, the output_state block will be used as the input_predicate block for subsequent rules.
{ //在结构模板的所有方块上评估的方块规则。对于任意方块,如果全部谓词的计算结果是true,那么用output_state替换这个方块。
"block_entity_modifier": { //可选,当所有谓词匹配时,用于方块实体的方块状态修饰符。此对象有2种模式,需要填写其中一种模式。
//以下为第1种模式,描述:保持状态不变的修饰符。如果没有指定其他方块修饰符,这是默认的方块修饰符。
"type": "minecraft:passthrough"
//以下为第2种模式,描述:试图给一个方块实体增加战利品的修饰符。
"type": "minecraft:append_loot",
"loot_table": "" //要添加的战利品表路径
},
"input_predicate": { //可选,在结构模板方块上计算的谓词。此对象有4种模式,需要填写其中一种模式。
//以下为第1种模式,描述:始终计算为true的谓词。如果没有指定其他谓词,这是默认谓词。
"predicate_type": "minecraft:always_true"
//以下为第2种模式,描述:如果指定位置的方块是指定的方块,则该谓词的计算结果为true。
"predicate_type": "minecraft:block_match",
"block": "" //要匹配的方块。
//以下为第3种模式,描述:如果指定位置的方块是指定的方块,则以给定的概率为true的谓词。
"predicate_type": "minecraft:random_block_match",
"block": "", //要匹配的方块。
"probability": 0.5 //浮点数,范围是[0.0,1.0),当方块匹配时结果为true的概率。
//以下为第4种模式,描述:如果指定位置的方块包含指定标签,则谓词计算为true。
"predicate_type": "minecraft:tag_match",
"tag": "" //要匹配的标签
},
"location_predicate": { //可选,在世界方块上计算的谓词。此对象有4种模式,需要填写其中一种模式。
//以下为第1种模式,描述:始终计算为true的谓词。如果没有指定其他谓词,这是默认谓词。
"predicate_type": "minecraft:always_true"
//以下为第2种模式,描述:如果指定位置的方块是指定的方块,则该谓词的计算结果为true。
"predicate_type": "minecraft:block_match",
"block": "" //要匹配的方块。
//以下为第3种模式,描述:如果指定位置的方块是指定的方块,则以给定的概率为true的谓词。
"predicate_type": "minecraft:random_block_match",
"block": "", //要匹配的方块。
"probability": 0.5 //浮点数,范围是[0.0,1.0),当方块匹配时结果为true的概率。
//以下为第4种模式,描述:如果指定位置的方块包含指定标签,则谓词计算为true。
"predicate_type": "minecraft:tag_match",
"tag": "" //要匹配的标签
},
"output_state": //如果所有谓词的计算结果都为true,则使用这里指定的方块替换世界方块。此字段有2种模式,需要填写其中一种模式。描述:指定特定的方块。可以是字符串方块名称或JSON对象
//以下为第1种模式。
"" //方块名称
//以下为第2种模式。
{
"name": "", //方块名称
"states": { //包含以每个状态命名的成员,具有布尔值、整数或字符串值。
"state_name": true //可以是布尔值、字符串或整数。
}
}
,
"position_predicate": { //可选,根据结构的原点和世界方块之间的距离计算的谓词。此对象有2种模式,需要填写其中一种模式。
//以下为第1种模式,描述:始终计算为true的谓词。如果没有指定其他谓词,这是默认谓词。
"predicate_type": "minecraft:always_true"
//以下为第2种模式,描述:如果方块在沿着所提供的轴的距离范围内,而且随机数在随机范围之间,则判定评估为true
"predicate_type": "minecraft:axis_aligned_linear_pos",
"axis": "y",
"max_chance": 0.75, //浮点数,范围是[0.0,1.0)
"min_chance": 0.25, //浮点数,范围是[0.0,1.0)
"max_dist": 16, //大于等于0的整数
"min_dist": 2, //大于等于0的整数
}
}
]
}
{ //第2种,描述:Protect blocks from this structure's placement in the world. Ensuring that it does not replace matching blocks in the world
"processor_type": "minecraft:protected_blocks",
"value": "" //Block tag for the blocks that will be protected
}
{ //第3种,描述:Specifies block types in the template that should be ignored by other processors.
"processor_type": "minecraft:block_ignore",
"blocks": [ //List of blocks evaluated on all blocks of a Structure Template. If a block is matched in the provided list the block will be ignored for processing.
""
]
}
,
"limit": //The maximum number of times that this delegate can be applied. 可以是三者之一。
1 //第一种,整数。
{ //第二种,Specifies a constant integer
"type": "constant",
"value": 1 //Constant value
}
{ //第三种,Specifies a uniformly distributed integer
"type": "uniform",
"min_inclusive": 1, //整数,Minimum value (inclusive)
"max_inclusive": 1 //整数,Maximum value (inclusive)
}
}
]
}
}
页: [1]