炉分离器使准备熔炉的麻烦成为过去。只需将矿石放入熔炉中,它们就会被分成可配置数量的堆栈。
为每个玩家和他们使用的熔炉类型保存指定的堆栈数量。这意味着您可以在小炉子中分成 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
— 允许玩家使用熔炉分割功能
配置
可以在目录下的文件中配置设置和选项。建议使用编辑器和验证器,以避免格式问题和语法错误。
FurnaceSplitter
config
{
"UiPosition": {
"x": 0.6505,
"y": 0.022
}
}
地方化
默认消息位于目录下的文件中。要添加对另一种语言的支持,请创建一个新的语言文件夹(例如 如果尚未创建,请将默认语言文件复制到新文件夹,然后自定义邮件。
FurnaceSplitter
lang/en
de
{
"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;
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。