Variable is not collected inside OnStructureUpgrade, but does in OnHammerHitSolved

I am creating my own Building Skin Plugin but I have ran into issue I cannot resolve. For some reason I do not know, value "skinID" is not collected in OnStructureUpgrade but is collected OnHammerHit. I use the same collection method for both events. I have removed if not checks in here:

//Used by "/bskin" command
void SetPlayerSkin(PlayerSkinData playerData, string grade)
{
    switch (grade)
    {
        case "stone":
            playerData.Stone = 0;
            break;
        case "adobe":
            playerData.Stone = 10220;
            break;
        case "brick":
            playerData.Stone = 10223;
            break;
        case "metal":
            playerData.Metal = 0;
            break;
        case "container":
            playerData.Metal = 10221;
            break;

    }
}

private void OnHammerHit(BasePlayer player, HitInfo info)
{
    var block = info.HitEntity as BuildingBlock;
    var buildingGrade = block.grade.ToString();
    PlayerSkinData playerData;
    if (playerSkinChoices.TryGetValue(player.userID.ToString(), out playerData))
    {
        var skinID = GetPlayerSkinID(playerData, buildingGrade);
        block.ClientRPC(null, "DoUpgradeEffect", (int)block.grade, skinID);
        block.skinID = skinID;
        block.ChangeGradeAndSkin(block.grade, skinID, true, true);
    }

}

private void OnStructureUpgrade(BuildingBlock block, BasePlayer player, BuildingGrade.Enum grade)
{
    var buildingGrade = block.grade.ToString();
    PlayerSkinData playerData;
    if (playerSkinChoices.TryGetValue(player.userID.ToString(), out playerData))
    {
        var skinID = GetPlayerSkinID(playerData, buildingGrade);
        block.ClientRPC(null, "DoUpgradeEffect", (int)block.grade, skinID);
        block.skinID = skinID;
        NextTick(() => { block.ChangeGradeAndSkin(block.grade, skinID, true, true); });
    }
}

private ulong GetPlayerSkinID(PlayerSkinData playerData, string grade)
{
    switch (grade.ToLower())
    {
        case "stone":
            return playerData.Stone;
        case "metal":
            return playerData.Metal;
        default:
            return 0;
    }
}

Maybe take a look at buildingskins plugin to get a example to work with.

Locked automatically