炉分离器使准备熔炉的麻烦成为过去。只需将矿石放入熔炉中,它们就会被分成可配置数量的堆栈。

为每个玩家和他们使用的熔炉类型保存指定的堆栈数量。这意味着您可以在小炉子中分成 3 个烟囱,在大炉子中分成 15 个烟囱,而无需每次使用不同的炉子时在它们之间切换。

如上所示,您还可以打开和关闭插件,以便在需要时仍然可以进行自己的配置。

该插件不仅适用于熔炉。它也适用于篝火和炼油厂。

警告堆栈大小不能且不应超过 7 亿!!任何超过 7 亿的东西,小型熔炉、小型炼油厂和烧烤架往往不会在这一点上将它们分开,必须手动完成。

聊天命令

这些命令允许玩家打开/关闭熔炉分离器选项,默认情况下,此选项设置为打开。

  • /fs— 显示状态和帮助选项
  • /fs on— 启用熔炉分离器
  • /fs off— 禁用熔炉分离器

权限

此插件使用权限系统。若要分配权限,请使用 .若要删除权限,请使用 。oxide.grant <user or group> <name or steam id> <permission>oxide.revoke <user or group> <name or steam id> <permission>
  • furnacesplitter.use— 允许玩家使用熔炉分割功能

配置

可以在目录下的文件中配置设置和选项。建议使用编辑器和验证器,以避免格式问题和语法错误。FurnaceSplitterconfig
{
  "UiPosition": {
    "x": 0.6505,
    "y": 0.022
  }
}

地方化

默认消息位于目录下的文件中。要添加对另一种语言的支持,请创建一个新的语言文件夹(例如 如果尚未创建,请将默认语言文件复制到新文件夹,然后自定义邮件。FurnaceSplitterlang/ende
{
  "turnon": "Turn On",
  "turnoff": "Turn Off",
  "title": "Furnace Splitter",
  "eta": "ETA",
  "totalstacks": "Total stacks",
  "trim": "Trim fuel",
  "lootsource_invalid": "Current loot source invalid",
  "unsupported_furnace": "Unsupported furnace.",
  "nopermission": "You don't have permission to use this.",
  "StatusONColor": "<color=green>ON</color>",
  "StatusOFFColor": "<color=red>OFF</color>",
  "StatusMessage": "Furnace Splitter status set to: "
}

开发者 API

MoveSplitItem(Item item, BaseOven targetOven, int totalStacks) // Inserts the given item into the target oven and splits it up into totalStacks. Returns result as a string.
GetOvenInfo(BaseOven targetOven) // Returns JObject { ETA: float, FuelNeeded: float  }

MoveSplitItem 的可能返回值为:

  • 确定 – 已成功插入完整堆栈。
  • FilledSlots – 堆栈的部分量已成功插入,剩余量保留在输入项中。
  • NotEnoughSlots – 可用插槽的数量小于输入参数 totalStacks。

从 GetOvenInfo 返回的 JObject 值为:

  • 预计到达时间:熔炼炉中所有东西的总秒数。
  • FuelNeeded:熔炼炉中所有东西所需的燃料量。

例:将玩家物品栏中的第一个可烹饪物品插入他们正在查看的炉子中

Copy
[PluginReference]
private Plugin FurnaceSplitter;

[ChatCommand("split")]
private void ChatCommand_Split(BasePlayer player, string command, string[] args)
{
    GameObject lookTarget = GetLookTarget(player);
    var oven = lookTarget?.GetComponent<baseoven>();

    if (oven == null)
    {
        player.ChatMessage("Invalid look target");
        return;
    }

    var firstCookable = player.inventory.containerMain.itemList.FirstOrDefault(x => x.info.GetComponent<itemmodcookable>() != null);

    if (firstCookable != null)
    {
        string result = FurnaceSplitter.Call<string>("MoveSplitItem", firstCookable, oven, totalStacks: 15);
        player.ChatMessage(result);
    }
    else
    {
        player.ChatMessage("No cookable found");
    }
}

private static GameObject GetLookTarget(BasePlayer player)
{
    RaycastHit hit;
    var position = player.eyes.position;
    var direction = player.eyes.HeadForward();
    if (!Physics.Raycast(new Ray(position, direction), out hit, 10f, 1 << (int)Layer.Deployed))
        return null;

    return hit.transform.gameObject;
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。