C#:
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<GrowableEntity>();
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<ConfigData>();
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<string, string>()
{
{"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
}
}