RustTip

CanFastTrackCraftTask

OxideCarbonItem

Called to determine whether to fast track craft task.

Return true to allow the action and false to block it.

object CanFastTrackCraftTask(ItemCrafter itemCrafter, ItemCraftTask local2, int taskID)
Method changed — check — the game method differs from the one the hook is recorded for in Oxide. The hook is still called, but its place may have shifted — worth checking after an update.

Parameters

itemCrafter
ItemCrafter
local2
ItemCraftTask
taskID
int

Return value

objectThe returned value replaces the game result; null lets the game decide.

Example

object — you can affect the game: return a value to change or cancel the action.

private object CanFastTrackCraftTask(ItemCrafter itemCrafter, ItemCraftTask local2, int taskID)
{
    Puts("CanFastTrackCraftTask");

    // change nothing — the game continues as usual
    return null;

    // to affect the game:
    // return false; // your value instead of the game result
}

Works in both Oxide and Carbon: Carbon loads Oxide plugins as is.

Injection point

Rust.opj (Oxide)
bool ItemCrafter.FastTrackTask(int)

Passes: ItemCrafter itemCrafter, ItemCraftTask local2, int taskID

Method changed — checkReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (this, l2, a0)Assembly-CSharp.dll

Where it is called (this branch's game code)

// …
if (itemCraftTask == null)
{
	return false;
}
if (itemCraftTask == value)
{
	return false;
}
object returnvar = Interface.CallHook("CanFastTrackCraftTask", this, itemCraftTask, taskID);
if (returnvar is bool)
{
	return (bool)returnvar;
}
value.endTime = 0f;
queue.Remove(itemCraftTask);
queue.AddFirst(itemCraftTask);
owner.Command("note.craft_fasttracked", taskID);
// …

Sources: Rust.opj from OxideMod/Oxide.Rust (MIT) and hook metadata of the Carbon documentation (MIT). Method code is decompiled from this branch's server.