Иконка ресурса

FREE FastOvens : 1.0.1 1.0.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using Newtonsoft.Json;

namespace Oxide.Plugins
{
    [Info("Fast Ovens", "Orange", "1.0.1")]
    [Description("https://rustworkshop.space/resources/fast-ovens.159/")]
    public class FastOvens : RustPlugin
    {
        #region Oxide Hooks
        
        private void OnConsumeFuel(BaseOven oven, Item item, ItemModBurnable burnable) {
            SmeltItems(oven);
        }

        #endregion

        #region Core

        private void SmeltItems(BaseOven oven)
        {
            if (oven.inventory.capacity != 6 && oven.inventory.capacity != 18)
            {
                return;
            }
            
            foreach (var item in oven.inventory.itemList.ToArray())
            {
                var rate = 0;
                if (config.rates.TryGetValue(item.info.shortname, out rate) == false)
                {
                    continue;
                }
                
                var result = item.info.GetComponent<ItemModCookable>()?.becomeOnCooked;
                if (result == null)
                {
                    result = item.info.GetComponent<ItemModBurnable>()?.byproductItem;
                }
                
                Smelt(oven, item, rate, result);
            }
        }

        private static void Smelt(BaseOven oven, Item item, int rate, ItemDefinition result)
        {
            if (result == null)
            {
                return;
            }

            var amount = 0;
            if (item.amount > rate)
            {
                item.amount -= rate;
                item.MarkDirty();
                amount = rate;
            }
            else
            {
                item.GetHeldEntity()?.Kill();
                item.DoRemove();
                amount = item.amount;
            }
                
            var obj = ItemManager.Create(result, amount);
            if (obj.MoveToContainer(oven.inventory) == false)
            {
                obj.Drop(oven.inventory.dropPosition, oven.inventory.dropVelocity);
            }
        }

        #endregion
        
        #region Configuration | 2.0.0

        private static ConfigData config = new ConfigData();

        private class ConfigData
        {
            [JsonProperty(PropertyName = "Rates")]
            public Dictionary<string, int> rates = new Dictionary<string, int>();
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();

            try
            {
                config = Config.ReadObject<ConfigData>();

                if (config == null)
                {
                    LoadDefaultConfig();
                }
            }
            catch
            {
                PrintError("Configuration file is corrupt! Check your config file at https://jsonlint.com/");

                timer.Every(10f,
                    () =>
                    {
                        PrintError("Configuration file is corrupt! Check your config file at https://jsonlint.com/");
                    });
                LoadDefaultConfig();
                return;
            }

            ValidateConfig();
            SaveConfig();
        }

        private static void ValidateConfig()
        {
            if (config.rates.Count == 0)
            {
                config.rates = new Dictionary<string, int>
                {
                    {"sulfur.ore", 10},
                    {"hq.metal.ore", 10},
                    {"metal.ore", 10},
                    {"wood", 10}
                };
            }
        }

        protected override void LoadDefaultConfig()
        {
            config = new ConfigData();
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(config);
        }

        #endregion
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху