nivex

Untitled

May 16th, 2021
688
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using Newtonsoft.Json;
  2. using Oxide.Core.Libraries.Covalence;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace Oxide.Plugins
  7. {
  8.     [Info("SaveFix", "nivex", "0.1.0")]
  9.     [Description("SaveFix")]
  10.     public class SaveFix : RustPlugin
  11.     {
  12.         private void Init()
  13.         {
  14.             Unsubscribe(nameof(OnEntitySpawned));
  15.         }
  16.  
  17.         private void OnServerInitialized()
  18.         {
  19.             foreach (var entity in UnityEngine.Object.FindObjectsOfType<BaseEntity>())
  20.             {
  21.                 OnEntitySpawned(entity);
  22.             }
  23.  
  24.             Subscribe(nameof(OnEntitySpawned));
  25.             AddCovalenceCommand("savefix", nameof(CommandFix));
  26.         }
  27.  
  28.         private void CommandFix(IPlayer player, string command, string[] args)
  29.         {
  30.             if (player.IsAdmin)
  31.             {
  32.                 SaveRestore.IsSaving = false;
  33.                 player.Reply("Save loop fixed. Please save your server by typing server.save");
  34.             }
  35.         }
  36.  
  37.         private void OnEntitySpawned(BaseEntity entity)
  38.         {
  39.             entity.Invoke(() =>
  40.             {
  41.                 if (!entity.IsDestroyed && entity.GetComponent<SavePause>())
  42.                 {
  43.                     entity.enableSaving = false;
  44.                     BaseEntity.saveList.Remove(entity);
  45.                     UnityEngine.Object.Destroy(entity.GetComponent<SavePause>());
  46.                     if (config.Logging) Puts("Destroyed pause component for {0}", entity.ShortPrefabName);
  47.                 }
  48.             }, 0.1f);
  49.         }
  50.  
  51.         #region Configuration
  52.  
  53.         private Configuration config;
  54.  
  55.         public class Configuration
  56.         {
  57.             [JsonProperty(PropertyName = "Log To Server Console")]
  58.             public bool Logging { get; set; }
  59.         }
  60.  
  61.         protected override void LoadConfig()
  62.         {
  63.             base.LoadConfig();
  64.  
  65.             try
  66.             {
  67.                 config = Config.ReadObject<Configuration>();
  68.             }
  69.             catch
  70.             {
  71.  
  72.             }
  73.  
  74.             if (config == null)
  75.             {
  76.                 LoadDefaultConfig();
  77.             }
  78.  
  79.             SaveConfig();
  80.         }
  81.  
  82.         protected override void SaveConfig() => Config.WriteObject(config);
  83.  
  84.         protected override void LoadDefaultConfig() => config = new Configuration();
  85.  
  86.         #endregion
  87.     }
  88. }
RAW Paste Data