Jump to content

NullReferenceException

Closed 1.1.0 1.2.0

Rob Vary
Rob Vary

Posted

Getting a NullReferenceException with the new version. Fixed by deleting config then updating.

 

Failed to initialize plugin 'ReskinnableHorses v1.1.0' (NullReferenceException: Object reference not set to an instance of an object)
  at Oxide.Plugins.ReskinnableHorses.Init () [0x00040] in <20acad24ca9343c6a51235461ae5fb49>:0
  at Oxide.Plugins.ReskinnableHorses.DirectCallHook (System.String name, System.Object& ret, System.Object[] args) [0x000e2] in <20acad24ca9343c6a51235461ae5fb49>:0
  at Oxide.Plugins.CSharpPlugin.InvokeMethod (Oxide.Core.Plugins.HookMethod method, System.Object[] args) [0x00079] in <60c318df79ed41688ea59335e48d61ad>:0                                                                 0b/s in, 0b/s out
  at Oxide.Core.Plugins.CSPlugin.OnCallHook (System.String name, System.Object[] args) [0x000d8] in <dfcb48ea05694263bbc08e62a39c274c>:0

 

A simple fix is to have some method(s) to check if the config is up-to-date and update it if it isn't. Example:

private class Configuration
        {
            [JsonProperty("Future Config Options Here")]
            public bool TempBool = true;

            public string ToJson() => JsonConvert.SerializeObject(this);

            public Dictionary<string, object> ToDictionary() => JsonConvert.DeserializeObject<Dictionary<string, object>>(ToJson());
        }

        protected override void LoadDefaultConfig() => config = new Configuration();

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                if (config == null)
                {
                    throw new JsonException();
                }

                if (!config.ToDictionary().Keys.SequenceEqual(Config.ToDictionary(x => x.Key, x => x.Value).Keys))
                {
                    Puts("Configuration appears to be outdated; updating and saving");
                    SaveConfig();
                }
            }
            catch
            {
                Puts($"Configuration file {Name}.json is invalid; using defaults");
                LoadDefaultConfig();
            }
        }

        protected override void SaveConfig()
        {
            Puts($"Configuration changes saved to {Name}.json");
            Config.WriteObject(config, true);
        }

 

_senyaa

Posted

Thanks for the suggestion! I implemented it in v1.2.0

_senyaa

Posted

Changed Status from Pending to Closed

Changed Fixed In to 1.2.0

About Us

Codefling is the largest marketplace for plugins, maps, tools, and more, making it easy for customers to discover new content and for creators to monetize their work.

Downloads
2.4m
Total downloads
Customers
10.8k
Customers served
Files Sold
155.8k
Marketplace sales
Payments
3.3m
Processed total
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.