我的世界[1.10.2-1.12.2]Scavenge官方文档搬运
文档首页
来源:https://legacy.curseforge.com/minecraft/mc-mods/scavenge/pages/documentation
只要条件不冲突,你就可以将多个战利品应用于一个方块。
在文档中可以找到更多的自定义方式。
因为核心重写,1.6或更早的脚本不会在1.7中加载!
1.10.2-1.11.x现在不再更新,因为根本没有人使用它。
如何启用json文件:将文件放入scavenge配置文件夹并进入配置文件,有一文件列表,在其中输入文件名。
S:LoadingFiles <
testing.json
>
旁注:该模组有一个JEI插件,可以根据需要进行自定义。
下面是一个更复杂的用法的示例文件:
{
"block_pools": [
{
"name": "Netherrack",
"type": {
"type": "block",
"name": "minecraft:nether_brick"
},
"clicktype": "both",
"properties": [
{
"type": "require_sneak"
}
],
"drops": [
{
"name": "minecraft:iron_ingot"
}
],
"messages": [
{
"id": "require_sneak",
"message": "Player requires to sneak"
}
]
}
]
}
命令:
/scavenge reload,重新加载配置和脚本。(它还会自动触发/scavenge printErrors命令)
/scavenge printErrors,打印脚本的错误。
已知问题:
方块实体不能正常工作。
基本配置
来源:https://legacy.curseforge.com/minecraft/mc-mods/scavenge/pages/documentation/usage-documentation
Scavenge通过Forge Config从其配置文件夹中加载Json文件。
这些文件被变成一种类似脚本的语言,您可以在其中定义某些内容并使其以某种方式执行。
要加载文件,必须提供某种格式。
每个文件都以一个对象开头,其中包含一个称为“block_pools”的值。
示例:
{
"block_pools":
[
]
}
在“block_pools”数组中定义应影响哪些方块。
每个BlockPool可以影响一个或多个方块,具体取决于类型。只要条件不完全相等,BlockPool中也可以定义重复的方块。
现在,您可以定义BlockPool中的几个选项:(下文中BlockPool均指在其中定义的方块)
-
“name”:(定义BlockPool的名称。某些条件/效果依赖于该名称。它必须保持唯一性。)字符串,
-
“type”:(定义BlockPool是单个方块、方块列表还是矿辞。)对象,
-
“clicktype”:(触发条件是左击还是右击或两者皆可)字符串,
-
“blockRightClick”和“blockLeftClick”:(检查点击是否被阻止。可选,默认在处理BlockPool后阻止交互。仅在添加了点击类型时才需要)布尔值,
-
“disableJEI”:(允许在JEI中隐藏此条目。默认值:可见)布尔值,
-
“properties”:(点击时BlockPool应具有的条件/效果)数组或对象,
-
“drops”:(满足所有条件时应产生的战利品)数组或对象,
-
“messages”:(当某些条件满足/不满足时产生的提示信息)数组或对象。
在经过以上基本解释之后,让我们来看更复杂的细节。
“type”用于定义“block”,“ore”或“block_list”。
以下是几个示例:
“block”定义要生效的一个方块。可以通过 3 种方式定义:
任一 “meta”,匹配一种方块元数据。
“metas”,匹配多种方块元数据。
或者忽略它。如果未定义元数据,则匹配任何方块元数据。
示例:
"type":
{
"type": "block",
"name": "minecraft:dirt",
"meta": 5
}
或者:
"type":
{
"type": "block",
"name": "minecraft:dirt",
"metas": [5, 3, 2, 12]
}
“ore”查找所有具有对应矿辞的方块并用于构建列表。
例如,“oreCopper”将所有铜矿石收集在一起,并对它们应用相同的效果。
示例:
"type":
{
"type": "ore",
"name": "oreCopper"
}
“block_list”允许你一次定义多个方块。
对于此添加类型中的每个对象条目,您还可以应用与”block”类型中相同的元数据判断规则。
示例:
"type":{
"type": "block_list",
"blocks":[
{
"name": "minecraft:dirt",
"meta": 5
},
{
"name": "minecraft:dirt",
"metas": [5, 3, 2, 12]
},
{
"name": "minecraft:dirt"
}
]
}
“properties”定义BlockPool的条件和效果。
例如“玩家必须潜行”,“玩家必须有成就并且处于y=55”或“玩家获得5点生命值并失去2点经验值”。
properties可用属性可以在另一篇教程中找到,因为可用条件太多了。
某些条件有冲突,已在下方定义。
方块属性基本可以概括为:“id”,“description”,“parameters”,“Incompatible With”,“type”。
“drops”定义在满足条件集时将掉落的战利品。
这些是完全可选的。但是BlockPool至少需要一种效果或至少一种战利品掉落。
创建战利品掉落时,您需要添加以下内容。
-
“name”:(应掉落的物品名称)字符串,
-
“meta”:(物品的元数据,默认值为0)整数,
-
“amount”:(掉落的数量,默认值为1)整数,
-
“nbt”:(物品的nbt数据,默认无)字符串,
-
“chance”或“weight”:(决定掉落是基于机率还是基于权重。默认机率为100%)浮点数作为机率或者整数作为权重,
-
“rolls”:(仅检查是否选择了“机会”,并定义了允许在一次点击中收集战利品的频率.可以通过块属性修改,默认为20亿次)整数,
-
“disableJEI”: (是否在JEI中显示。默认显示)布尔值,
-
“properties”: (属性定义被动或主动应用于物品的效果。被动表示在脚本中创建战利品时,主动表示收集战利品时。)数组或对象,
-
“conditions”: (允许将块条件添加到战利品本身,然后仅在符合所有条件后才会使战利品掉落。这些像方块条件一样实现。它也适用于基于机率掉落的战利品。)数组或对象,
除”properties”之外的所有属性的示例:
权重:
{
"name": "minecraft:iron_ingot",
"meta": "0",
"amount": "54",
"nbt": "customNBT",
"disableJEI": false,
"weight": 423
}
机率:
{
"name": "minecraft:iron_ingot",
"meta": "0",
"amount": "54",
"nbt": "customNBT",
"disableJEI": false,
"chance": 99,
"rolls": 255
}
带有条件的机率:
{
"name": "minecraft:iron_ingot",
"meta": "0",
"amount": "54",
"nbt": "customNBT",
"disableJEI": false,
"chance": 99,
"rolls": 255,
"conditions":[
{
"type": "require_sneak"
},
{
"type": "require_item",
"name": "minecraft:stick"
}
]
}
应用于战利品的“属性”与应用于块的属性相同,但具有不同的ID。
现在让我们转到BlockPool的”messages”。
消息允许通知玩家可能发生的某些情况。
包括已失败的条件、已起作用的特殊效果或池是否已常规执行。
这是基于”id”和”messages”系统。”id”表示触发消息的条件/效果,而”messages”是发送给玩家的消息。
示例:
"messages":
[
{
"id": "require_empty_Hand",
"message": "You require a Empty Hand to use this effect"
}
]
如果有任何条件失败消息和池已执行消息,还有特殊的”ids”。
这些称为”global”和”success”,并在条件失败(”global”)或块池成功执行(”success”)时调用
最重要的是,如果您有重复的属性条目,也可以通过添加_1或_2来捕获这些条目。
示例:
"messages":
[
{
"id": "require_block",
"message": "You require a dirt Block"
},
{
"id": "require_block_1",
"message": "You require a stone Block"
},
{
"id": "require_block_2",
"message": "You require a wood Block"
}
]
这是根据条件的编写方式完成的,从上到下。因此,第二条消息将捕获第三个“require_block”条件,而第一条消息将捕获第一个条件。