Plugin Hook Times

"Disable Temperature Functions" (1.1.0) by The Friendly Chap (58.04s / 9 MB)!!!! - DisableTemperatureFunctions.cs

started consuming a lot of server resources

try it:

using System.Linq;
using Newtonsoft.Json;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Disable Temperature Functions", "The Friendly Chap/zhuhlia", "1.0.3")]
    [Description("Prevents cold/heat damage/overlay for players")]
    public class DisableTemperatureFunctions : RustPlugin
    {
        #region ConfigFileStuff
        private ConfigData configData;
        class ConfigData
        {
            [JsonProperty(PropertyName = "Debug Mode")]
            public bool debug = false;
            [JsonProperty(PropertyName = "Set Temprature to (�C)")]
            public float usertemp = 30.0f;
            [JsonProperty(PropertyName = "Use permission : ")]
            public bool usePerm = false;
        }

        private bool LoadConfigVariables()
        {
            try
            {
                configData = Config.ReadObject<ConfigData>();
            }
            catch
            {
                return false;
            }
            SaveConfig(configData);
            return true;
        }

        void Init()
        {
            if (!LoadConfigVariables())
            {
                Puts("Config file issue detected. Please delete file, or check syntax and fix.");
                return;
            }
            permission.RegisterPermission(permDisable, this);
        }
           

        protected override void LoadDefaultConfig()
        {
            Puts("Creating new config file.");
            configData = new ConfigData();
            SaveConfig(configData);
        }
        void SaveConfig(ConfigData config)
        {
            Config.WriteObject(config, true);
        }
        #endregion

        private const string permDisable = "disabletemperaturefunctions.use";
       
        private void OnServerInitialized()
        {
            foreach (var player in BasePlayer.activePlayerList.ToList())
            {
                OnPlayerSleepEnded(player);
            }
           
            foreach (var player in BasePlayer.sleepingPlayerList.ToList())
            {
                OnPlayerSleep(player);
            }
        }
       
        private void OnPlayerSleep(BasePlayer player)
        {
            Check(player);
        }
       
        private void OnPlayerSleepEnded(BasePlayer player)
        {
            Check(player);
        }

        private void FixTemp(BasePlayer player)
        {
            if (configData.debug) Puts($"Initial Values : {player.metabolism.temperature.max}, {player.metabolism.temperature.min}, {player.metabolism.temperature.value}");
            if (configData.debug) Puts($" Adjusting Tolerance for {player.displayName}");
            player.metabolism.temperature.max = configData.usertemp;
            player.metabolism.temperature.min = configData.usertemp;
            player.metabolism.temperature.value = configData.usertemp;
            player.metabolism.SendChanges();
            player.SendNetworkUpdate();
            if (configData.debug) Puts($"Changed Values : {player.metabolism.temperature.max}, {player.metabolism.temperature.min}, {player.metabolism.temperature.value}");
            return;
        }

        private void Check(BasePlayer player)
        {
            if (permission.UserHasPermission(player.UserIDString, permDisable))
            {
                FixTemp(player);
                return;
            }
            else if (!configData.usePerm)
            {
                FixTemp(player);
                return;
            }
        }
    }
}