Для исправления ошибки NullReferenceException, которая возникает при вызове хука OnItemAddedToContainer в плагине AutoSortFurnace, мы должны убедиться, что объекты не являются нулевыми перед их использованием. Вот исправленный код с добавленной проверкой на нулевые объекты:
C#:
using System.Collections.Generic;
using Oxide.Core;
using UnityEngine;
using System.Linq;
namespace Oxide.Plugins
{
[Info("AutoSortFurnace", "YourName", "1.0.0")]
class AutoSortFurnace : RustPlugin
{
private void OnServerInitialized()
{
List<BaseOven> furnaces = BaseEntity.saveList.OfType<BaseOven>().ToList();
foreach (BaseOven furnace in furnaces)
{
SortFurnaceInventory(furnace);
}
}
private void OnEntityDeath(BaseCombatEntity entity, HitInfo info)
{
if (entity is BaseOven)
{
BaseOven furnace = entity as BaseOven;
SortFurnaceInventory(furnace);
}
}
private void OnItemAddedToContainer(ItemContainer container, Item item)
{
if (container != null && item != null && container.entityOwner is BaseOven && item.GetHeldEntity() == null)
{
BaseOven furnace = container.entityOwner as BaseOven;
SortFurnaceInventory(furnace);
}
}
private void SortFurnaceInventory(BaseOven furnace)
{
List<Item> resourcesToSort = new List<Item>();
List<string> resourceNames = new List<string> { "Wood", "Sulfur", "Metal Fragments", "Metal Ore" };
foreach (Item item in furnace.inventory.itemList.ToList())
{
if (resourceNames.Contains(item.info.displayName.english))
{
resourcesToSort.Add(item);
item.RemoveFromContainer();
}
}
List<Item> sortedItems = resourcesToSort.OrderBy(x => x.info.displayName.english).ToList();
foreach (Item sortedItem in sortedItems)
{
sortedItem.MoveToContainer(furnace.inventory);
}
}
private void Unload()
{
List<BaseOven> furnaces = BaseEntity.saveList.OfType<BaseOven>().ToList();
foreach (BaseOven furnace in furnaces)
{
SortFurnaceInventory(furnace);
}
}
}
}
Этот код проверяет, что объекты container и item не являются нулевыми перед их использованием в методе OnItemAddedToContainer, что должно помочь избежать NullReferenceException. Пожалуйста, примените этот исправленный код на вашем сервере Rust и проверьте его работоспособность.