RustTip

OnItemSkinChange

OxideCarbonItem

Called when an item skin is changed.

object OnItemSkinChange(object inventoryId, bool boolean, RepairBench repairBench, BasePlayer basePlayer)
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

inventoryId
object
boolean
bool
repairBench
RepairBench
basePlayer
BasePlayer

Return value

objectReturn non-null to cancel the game action.

Example

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

private object OnItemSkinChange(object inventoryId, bool boolean, RepairBench repairBench, BasePlayer basePlayer)
{
    Puts("OnItemSkinChange");

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

    // to affect the game:
    // return false; // non-null cancels the game action
}

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

Injection point

Rust.opj (Oxide)
void RepairBench.ChangeSkin(BaseEntity.RPCMessage)

Passes: object inventoryId, bool boolean, RepairBench repairBench, BasePlayer basePlayer

Method changed — checkReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString ( l0.inventoryId, l5, this, l1)Assembly-CSharp.dll

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

// …
ItemId itemId = ((msg.read.Unread > 0) ? new ItemId(msg.read.UInt64()) : default(ItemId));
bool isValid = itemId.IsValid;
bool flag = !isValid || Time.realtimeSinceStartup > nextSkinChangeAudioTime;
Item slot = inventory.GetSlot(0);
if (slot == null || (isValid && slot.uid != itemId))
{
	return;
}
if (Interface.CallHook("OnItemSkinChange", local0.inventoryId, flag, this, player) != null)
{
	return;
}
if (num != 0 && !player.blueprints.CheckSkinOwnership(num, player))
{
	debugprint("RepairBench.ChangeSkin player does not have item :" + num + ":");
	return;
}
// …

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.