C#:
using Newtonsoft.Json;
using Oxide.Core;
using System.Collections.Generic;
namespace Oxide.Plugins;
[Info("SimpleWhitelist", "Bubbafett", "1.0.0")]
[Description("Plugin to create simple whitelist of who can join your server.")]
public class SimpleWhitelist : RustPlugin
{
#region Config
public required Configuration PluginConfig;
private static string _permAllow = "SimpleWhitelist.Allow";
public class Configuration
{
[JsonProperty(PropertyName = "Version (DO NOT CHANGE)", Order = int.MaxValue)]
public VersionNumber Version = new(1, 0, 0);
[JsonProperty(PropertyName = "Whitelist Enabled")]
public bool Enabled = true;
[JsonProperty(PropertyName = "Use Permission")]
public bool PermEnabled = false;
[JsonProperty(PropertyName = "Kick Message")]
public string KickMessage = "You are not whitelisted to join this server.";
[JsonProperty(PropertyName = "Whitelisted Steam IDs", ObjectCreationHandling = ObjectCreationHandling.Replace)]
public List<ulong> SteamIDs = [0, 1];
}
protected override void LoadConfig()
{
base.LoadConfig();
PluginConfig = Config.ReadObject<Configuration>();
if (PluginConfig == null)
{
PluginConfig = new Configuration();
SaveConfig();
return;
}
if (PluginConfig.Version >= Version) return;
PrintWarning("Outdated configuration file detected. Updating...");
UpdateConfig();
SaveConfig();
}
private void UpdateConfig()
{
if (PluginConfig.Version >= Version) return;
if (PluginConfig.Version <= new VersionNumber(1, 0, 0))
{
// Updates go here
}
PluginConfig.Version = Version;
SaveConfig();
}
protected override void LoadDefaultConfig() => new Configuration();
protected override void SaveConfig() => Config.WriteObject(PluginConfig, true);
#endregion
private object? CanUserLogin(string name, string id, string ipAddress)
{
if (!PluginConfig.Enabled) return null;
if (PluginConfig.PermEnabled & permission.UserHasPermission(id, _permAllow)) return null;
if (ulong.TryParse(id, out ulong steamId) && PluginConfig.SteamIDs.Contains(steamId)) return null;
return PluginConfig.KickMessage;
}
}