NullReferenceException: Object reference not set to an instance of an object
at Oxide.Plugins.RemoverTool.GetRefund (BaseEntity TargetEntity) [0x000a0] in <96e97dd5dbe74bdfbc8dae5de180fe13>:0
at Oxide.Plugins.RemoverTool.GUIRefundUpdate (BasePlayer player, System.Boolean useRefund, BaseEntity TargetEntity) [0x00027] in <96e97dd5dbe74bdfbc8dae5de180fe13>:0
at Oxide.Plugins.RemoverTool+ToolRemover.RemoveUpdate () [0x000da] in <96e97dd5dbe74bdfbc8dae5de180fe13>:0 I was battling this random NRE when removing buildingblocks for a long time and finally tracked it down. Somehow buildingblock.blockDefinition can be null sometimes. Here is a snippet of my fix:
Dictionary<string, object> GetRefund(BaseEntity TargetEntity)
{
var refund = new Dictionary<string, object>();
var buildingblock = TargetEntity.GetComponent<BuildingBlock>();
if (buildingblock != null)
{
var grade = buildingblock.grade.ToString();
if (Refund.ContainsKey(grade))
{
if (Refund[grade] is Dictionary<string, object>)
refund = Refund[grade] as Dictionary<string, object>;
else if (Refund[grade] is int)
{
var p = (int)Refund[grade] / 100f;
var @enum = buildingblock.grade;
if (buildingblock.blockDefinition != null) //added
{
var c = buildingblock.blockDefinition.grades[(int)@enum];
foreach (var ia in c.costToBuild)
{
var a = ia.amount * p;
if (Mathf.Floor(a) < 1) continue;
refund.Add(ia.itemDef.displayName.english.ToLower(), (int)a);
}
}
}
}
}