文档首页

来源: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”条件,而第一条消息将捕获第一个条件。