RustTip

CanUseFuel

OxideCarbonFuel

Called to determine whether to use fuel.

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

object CanUseFuel(EntityFuelSystem entityFuelSystem, StorageContainer local0, float seconds, float fuelUsedPerSecond)
Works — the game method in this build is the one the hook was written for.

Parameters

entityFuelSystem
EntityFuelSystem
local0
StorageContainer
seconds
float
fuelUsedPerSecond
float

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 CanUseFuel(EntityFuelSystem entityFuelSystem, StorageContainer local0, float seconds, float fuelUsedPerSecond)
{
    Puts("CanUseFuel");

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

    // to affect the game:
    // return default(int); // 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 EntityFuelSystem.TryUseFuel(float, float)

Passes: EntityFuelSystem entityFuelSystem, StorageContainer local0, float seconds, float fuelUsedPerSecond

WorksReturnBehavior: ExitWhenNonNullArgumentBehavior: UseArgumentString (this, l0, a0, a1)Assembly-CSharp.dll

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

public int TryUseFuel(float seconds, float fuelUsedPerSecond)
{
	StorageContainer fuelContainer = GetFuelContainer();
	object returnvar = Interface.CallHook("CanUseFuel", this, fuelContainer, seconds, fuelUsedPerSecond);
	if (returnvar is int)
	{
		return (int)returnvar;
	}
	if (fuelContainer.IsRealNull())
	{
		return 0;
	}
// …

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.