using UnityEngine; using System.Collections.Generic; namespace Oxide.Plugins { [Info("Agriblock", "Death", "1.0.9")] [Description("Forces configured plant types to only be planted in planters")] class Agriblock : RustPlugin { #region Hooks private void OnEntityBuilt(Planner plan, GameObject entity) { var player = plan.GetOwnerPlayer(); var seed = entity.GetComponent(); if (player == null || seed == null) { return; } var held = player.GetActiveItem(); if (held == null) { return; } NextTick(() => { var parentEntity = seed.GetParentEntity(); if (parentEntity != null && parentEntity is not PlanterBox) { switch (held.info.shortname) { case "seed.corn": if (!configData.Types.CornEnabled) return; break; case "clone.corn": if (!configData.Types.CornCloneEnabled) return; break; case "seed.pumpkin": if (!configData.Types.PumpkinEnabled) return; break; case "clone.pumpkin": if (!configData.Types.PumpkinCloneEnabled) return; break; case "seed.hemp": if (!configData.Types.HempEnabled) return; break; case "clone.hemp": if (!configData.Types.HempCloneEnabled) return; break; case "seed.black.berry": if (!configData.Types.BlackBerryEnabled) return; break; case "seed.blue.berry": if (!configData.Types.BlueBerryEnabled) return; break; case "seed.green.berry": if (!configData.Types.GreenBerryEnabled) return; break; case "seed.orchid": if (!configData.Types.OrchidEnabled) return; break; case "seed.yellow.berry": if (!configData.Types.YellowBerryEnabled) return; break; case "seed.sunflower": if (!configData.Types.SunflowerEnabled) return; break; case "seed.wheat": if (!configData.Types.WheatEnabled) return; break; case "seed.potato": if (!configData.Types.PotatoEnabled) return; break; case "seed.red.berry": if (!configData.Types.RedBerryEnabled) return; break; case "seed.rose": if (!configData.Types.RoseEnabled) return; break; default: return; } SendReply(player, lang.GetMessage("errmsg", this, player.UserIDString).Replace("{seed}", held.info.displayName.english)); seed.Kill(BaseNetworkable.DestroyMode.None); if (configData.Options.Refund) { var refund = ItemManager.CreateByName(held.info.shortname, 1); if (refund != null) { player.inventory.GiveItem(refund); } } } }); } #endregion #region Config void Init() { LoadConfigVariables(); } private ConfigData configData; class ConfigData { public Options Options = new Options(); public Types Types = new Types(); } class Options { public bool Refund = true; } class Types { public bool CornEnabled = true; public bool CornCloneEnabled = true; public bool PumpkinEnabled = true; public bool PumpkinCloneEnabled = true; public bool HempEnabled = true; public bool HempCloneEnabled = true; public bool BlackBerryEnabled = true; public bool BlueBerryEnabled = true; public bool GreenBerryEnabled = true; public bool YellowBerryEnabled = true; public bool RedBerryEnabled = true; public bool OrchidEnabled = true; public bool SunflowerEnabled = true; public bool WheatEnabled = true; public bool PotatoEnabled = true; public bool RoseEnabled = true; } private void LoadConfigVariables() { configData = Config.ReadObject(); SaveConfig(configData); } protected override void LoadDefaultConfig() { var config = new ConfigData(); SaveConfig(config); } void SaveConfig(ConfigData config) { Config.WriteObject(config, true); } #endregion #region Localization protected override void LoadDefaultMessages() { lang.RegisterMessages(new Dictionary() { {"errmsg", "You may not plant {seed} outside of a planter!" } }, this, "en"); } private string msg(string key, string id = null) { return lang.GetMessage(key, this, id); } #endregion } }