Remove the Description field from the ConfigXYZ attributes, since desc was never actually given a non-null value.

This commit is contained in:
UnknownShadow200 2017-06-29 18:45:30 +10:00
parent cf362c0361
commit 5351aef0c8
7 changed files with 257 additions and 264 deletions

View File

@ -27,9 +27,6 @@ namespace MCGalaxy.Config {
/// <summary> Section/Group in the property file this config entry is part of. </summary>
public string Section;
/// <summary> Comment shown in the property file above the key-value entry. </summary>
public string Description;
/// <summary> The default value used if validating the value read from the propery file fails. </summary>
public object DefaultValue;
@ -39,9 +36,8 @@ namespace MCGalaxy.Config {
/// <summary> Converts the given value into its serialised string form. </summary>
public virtual string Serialise(object value) { return value == null ? "" : value.ToString(); }
public ConfigAttribute(string name, string section, string desc, object defValue) {
Name = name; Description = desc;
Section = section; DefaultValue = defValue;
public ConfigAttribute(string name, string section, object defValue) {
Name = name; Section = section; DefaultValue = defValue;
}
}
}

View File

@ -27,9 +27,9 @@ namespace MCGalaxy.Config {
/// <summary> Maximum value integer allowed for a value. </summary>
public int MaxValue;
public ConfigIntAttribute(string name, string section, string desc, int defValue,
public ConfigIntAttribute(string name, string section, int defValue,
int min = int.MinValue, int max = int.MaxValue)
: base(name, section, desc, defValue) {
: base(name, section, defValue) {
MinValue = min; MaxValue = max;
}
@ -55,9 +55,9 @@ namespace MCGalaxy.Config {
public class ConfigByteAttribute : ConfigIntAttribute {
public ConfigByteAttribute(string name, string section, string desc, int defValue,
public ConfigByteAttribute(string name, string section, int defValue,
int min = byte.MinValue, int max = byte.MaxValue)
: base(name, section, desc, defValue, min, max) {
: base(name, section, defValue, min, max) {
}
public override object Parse(string value) {
@ -68,8 +68,8 @@ namespace MCGalaxy.Config {
public sealed class ConfigBoolAttribute : ConfigAttribute {
public ConfigBoolAttribute(string name, string section, string desc, bool defValue)
: base(name, section, desc, defValue) {
public ConfigBoolAttribute(string name, string section, bool defValue)
: base(name, section, defValue) {
}
public override object Parse(string value) {
@ -84,8 +84,8 @@ namespace MCGalaxy.Config {
public sealed class ConfigPermAttribute : ConfigAttribute {
public ConfigPermAttribute(string name, string section, string desc, LevelPermission defValue)
: base(name, section, desc, defValue) {
public ConfigPermAttribute(string name, string section, LevelPermission defValue)
: base(name, section, defValue) {
}
public override object Parse(string value) {
@ -122,8 +122,8 @@ namespace MCGalaxy.Config {
public sealed class ConfigDateTimeAttribute : ConfigAttribute {
public ConfigDateTimeAttribute(string name, string section, string desc)
: base(name, section, desc, DateTime.MinValue) {
public ConfigDateTimeAttribute(string name, string section)
: base(name, section, DateTime.MinValue) {
}
public override object Parse(string value) {
@ -146,9 +146,8 @@ namespace MCGalaxy.Config {
/// <summary> The type of members of this enumeration. </summary>
public Type EnumType;
public ConfigEnumAttribute(string name, string section, string desc,
object defValue, Type enumType)
: base(name, section, desc, defValue) {
public ConfigEnumAttribute(string name, string section, object defValue, Type enumType)
: base(name, section, defValue) {
EnumType = enumType;
}

View File

@ -22,8 +22,8 @@ namespace MCGalaxy.Config {
public sealed class ConfigColorAttribute : ConfigAttribute {
public ConfigColorAttribute(string name, string section, string desc, string defValue)
: base(name, section, desc, defValue) {
public ConfigColorAttribute(string name, string section, string defValue)
: base(name, section, defValue) {
}
public override object Parse(string value) {
@ -48,11 +48,11 @@ namespace MCGalaxy.Config {
public string AllowedChars;
/// <summary> Maximum number of characters allowed in the value. 0 means no limit. </summary>
public int MaxLength = 0;
public int MaxLength = int.MaxValue;
public ConfigStringAttribute(string name, string section, string desc, string defValue,
public ConfigStringAttribute(string name, string section, string defValue,
bool allowEmpty, string allowedChars, int maxLength)
: base(name, section, desc, defValue) {
: base(name, section, defValue) {
AllowEmpty = allowEmpty;
AllowedChars = allowedChars;
MaxLength = maxLength;
@ -60,21 +60,19 @@ namespace MCGalaxy.Config {
// NOTE: required to define these, some compilers error when we try using optional parameters with:
// "An attribute argument must be a constant expression, typeof expression.."
public ConfigStringAttribute(string name, string section, string desc, string defValue,
bool allowEmpty, string allowedChars)
: base(name, section, desc, defValue) {
public ConfigStringAttribute(string name, string section, string defValue, bool allowEmpty, string allowedChars)
: base(name, section, defValue) {
AllowEmpty = allowEmpty;
AllowedChars = allowedChars;
}
public ConfigStringAttribute(string name, string section, string desc, string defValue,
bool allowEmpty)
: base(name, section, desc, defValue) {
public ConfigStringAttribute(string name, string section, string defValue, bool allowEmpty)
: base(name, section, defValue) {
AllowEmpty = allowEmpty;
}
public ConfigStringAttribute(string name, string section, string desc, string defValue)
: base(name, section, desc, defValue) {
public ConfigStringAttribute(string name, string section, string defValue)
: base(name, section, defValue) {
}
public override object Parse(string value) {
@ -101,9 +99,9 @@ namespace MCGalaxy.Config {
}
string Truncate(string value) {
if (MaxLength > 0 && value.Length > MaxLength) {
if (value.Length > MaxLength) {
value = value.Substring(0, MaxLength);
Logger.Log(LogType.Warning, "Config key \"{0}\" is not a valid color, truncating to {1}", Name, value);
Logger.Log(LogType.Warning, "Config key \"{0}\" is too long, truncating to {1}", Name, value);
}
return value;
}
@ -111,8 +109,8 @@ namespace MCGalaxy.Config {
public sealed class ConfigStringListAttribute : ConfigAttribute {
public ConfigStringListAttribute(string name, string section, string desc)
: base(name, section, desc, new List<string>()) {
public ConfigStringListAttribute(string name, string section)
: base(name, section, new List<string>()) {
}
public override object Parse(string value) {

View File

@ -24,52 +24,52 @@ namespace MCGalaxy.Games {
public sealed class CTFConfig {
[ConfigInt("base.red.x", null, null, 0)]
[ConfigInt("base.red.x", null, 0)]
public int RedFlagX;
[ConfigInt("base.red.y", null, null, 0)]
[ConfigInt("base.red.y", null, 0)]
public int RedFlagY;
[ConfigInt("base.red.z", null, null, 0)]
[ConfigInt("base.red.z", null, 0)]
public int RedFlagZ;
[ConfigByte("base.red.block", null, null, 0)]
[ConfigByte("base.red.block", null, 0)]
public byte RedFlagBlock;
[ConfigInt("base.blue.x", null, null, 0)]
[ConfigInt("base.blue.x", null, 0)]
public int BlueFlagX;
[ConfigInt("base.blue.y", null, null, 0)]
[ConfigInt("base.blue.y", null, 0)]
public int BlueFlagY;
[ConfigInt("base.blue.z", null, null, 0)]
[ConfigInt("base.blue.z", null, 0)]
public int BlueFlagZ;
[ConfigByte("base.blue.block", null, null, 0)]
[ConfigByte("base.blue.block", null, 0)]
public byte BlueFlagBlock;
[ConfigInt("base.red.spawnx", null, null, 0)]
[ConfigInt("base.red.spawnx", null, 0)]
public int RedSpawnX;
[ConfigInt("base.red.spawny", null, null, 0)]
[ConfigInt("base.red.spawny", null, 0)]
public int RedSpawnY;
[ConfigInt("base.red.spawnz", null, null, 0)]
[ConfigInt("base.red.spawnz", null, 0)]
public int RedSpawnZ;
[ConfigInt("base.blue.spawnx", null, null, 0)]
[ConfigInt("base.blue.spawnx", null, 0)]
public int BlueSpawnX;
[ConfigInt("base.blue.spawny", null, null, 0)]
[ConfigInt("base.blue.spawny", null, 0)]
public int BlueSpawnY;
[ConfigInt("base.blue.spawnz", null, null, 0)]
[ConfigInt("base.blue.spawnz", null, 0)]
public int BlueSpawnZ;
[ConfigBool("auto.setup", null, null, false)]
[ConfigBool("auto.setup", null, false)]
public bool NeedSetup;
[ConfigInt("map.line.z", null, null, 0)]
[ConfigInt("map.line.z", null, 0)]
public int ZLine;
[ConfigInt("game.maxpoints", null, null, 0)]
[ConfigInt("game.maxpoints", null, 0)]
public int MaxPoints;
[ConfigInt("game.tag.points-gain", null, null, 0)]
[ConfigInt("game.tag.points-gain", null, 0)]
public int Tag_PointsGained;
[ConfigInt("game.tag.points-lose", null, null, 0)]
[ConfigInt("game.tag.points-lose", null, 0)]
public int Tag_PointsLost;
[ConfigInt("game.capture.points-gain", null, null, 0)]
[ConfigInt("game.capture.points-gain", null, 0)]
public int Capture_PointsGained;
[ConfigInt("game.capture.points-lose", null, null, 0)]
[ConfigInt("game.capture.points-lose", null, 0)]
public int Capture_PointsLost;
}
}

View File

@ -101,89 +101,89 @@ namespace MCGalaxy.Games {
public static class ZombieGameProps {
/// <summary> How precise collision detection is between alive and dead players. (Where 1 block = 32 units) </summary>
[ConfigInt("zombie-hitbox-precision", "Zombie", null, 32)]
[ConfigInt("zombie-hitbox-precision", "Zombie", 32)]
public static int HitboxPrecision = 32;
/// <summary> The maximum distance a player is allowed to move between movement packets. </summary>
[ConfigInt("zombie-maxmove-distance", "Zombie", null, 50)]
[ConfigInt("zombie-maxmove-distance", "Zombie", 50)]
public static int MaxMoveDistance = 50;
/// <summary> Whether the server's main level should be set to the current level at the end of each round. </summary>
[ConfigBool("zombie-survival-only-server", "Zombie", null, false)]
[ConfigBool("zombie-survival-only-server", "Zombie", false)]
public static bool SetMainLevel;
/// <summary> Whether zombie survival should start upon server startup. </summary>
[ConfigBool("zombie-on-server-start", "Zombie", null, false)]
[ConfigBool("zombie-on-server-start", "Zombie", false)]
public static bool StartImmediately;
/// <summary> Whether changes made during a round of zombie survival should be permanently saved. </summary>
[ConfigBool("zombie-save-blockchanges", "Zombie", null, false)]
[ConfigBool("zombie-save-blockchanges", "Zombie", false)]
public static bool SaveLevelBlockchanges;
/// <summary> Whether maps with '+' in their name are ignored when choosing levels for the next round. </summary>
[ConfigBool("zombie-ignore-personalworlds", "Zombie", null, true)]
[ConfigBool("zombie-ignore-personalworlds", "Zombie", true)]
public static bool IgnorePersonalWorlds = true;
/// <summary> Whether the current level name should be shown in the heartbeats sent. </summary>
[ConfigBool("zombie-map-inheartbeat", "Zombie", null, false)]
[ConfigBool("zombie-map-inheartbeat", "Zombie", false)]
public static bool IncludeMapInHeartbeat = false;
[ConfigBool("no-respawning-during-zombie", "Zombie", null, true)]
[ConfigBool("no-respawning-during-zombie", "Zombie", true)]
public static bool NoRespawn = true;
[ConfigBool("no-pillaring-during-zombie", "Zombie", null, true)]
[ConfigBool("no-pillaring-during-zombie", "Zombie", true)]
public static bool NoPillaring = true;
[ConfigString("zombie-name-while-infected", "Zombie", null, "", true)]
[ConfigString("zombie-name-while-infected", "Zombie", "", true)]
public static string ZombieName = "";
[ConfigString("zombie-model-while-infected", "Zombie", null, "zombie")]
[ConfigString("zombie-model-while-infected", "Zombie", "zombie")]
public static string ZombieModel = "zombie";
[ConfigInt("zombie-invisibility-duration", "Zombie", null, 7, 1)]
[ConfigInt("zombie-invisibility-duration", "Zombie", 7, 1)]
public static int InvisibilityDuration = 7;
[ConfigInt("zombie-invisibility-potions", "Zombie", null, 7, 1)]
[ConfigInt("zombie-invisibility-potions", "Zombie", 7, 1)]
public static int InvisibilityPotions = 7;
[ConfigInt("zombie-zinvisibility-duration", "Zombie", null, 5, 1)]
[ConfigInt("zombie-zinvisibility-duration", "Zombie", 5, 1)]
public static int ZombieInvisibilityDuration = 5;
[ConfigInt("zombie-zinvisibility-potions", "Zombie", null, 4, 1)]
[ConfigInt("zombie-zinvisibility-potions", "Zombie", 4, 1)]
public static int ZombieInvisibilityPotions = 4;
[ConfigBool("enable-changing-levels", "Zombie", null, true)]
[ConfigBool("enable-changing-levels", "Zombie", true)]
public static bool ChangeLevels = true;
[ConfigString("revive-notime-msg", "Revive", null,
[ConfigString("revive-notime-msg", "Revive",
"It's too late. The humans do not have enough time left to make more revive potions.")]
public static string ReviveNoTimeMessage = "It's too late. The humans do not have enough time left to produce more revive potions.";
[ConfigInt("revive-no-time", "Revive", null, 120, 0)]
[ConfigInt("revive-no-time", "Revive", 120, 0)]
public static int ReviveNoTime = 120;
[ConfigString("revive-fewzombies-msg", "Revive", null,
[ConfigString("revive-fewzombies-msg", "Revive",
"There aren't enough zombies for it to be worthwhile to produce revive potions.")]
public static string ReviveFewZombiesMessage = "There aren't enough zombies for it to be worthwhile to produce revive potions.";
[ConfigInt("revive-fewzombies", "Revive", null, 3, 0)]
[ConfigInt("revive-fewzombies", "Revive", 3, 0)]
public static int ReviveFewZombies = 3;
[ConfigInt("revive-tooslow", "Revive", null, 60, 0)]
[ConfigInt("revive-tooslow", "Revive", 60, 0)]
public static int ReviveTooSlow = 60;
[ConfigInt("revive-chance", "Revive", null, 80, 0, 100)]
[ConfigInt("revive-chance", "Revive", 80, 0, 100)]
public static int ReviveChance = 80;
[ConfigInt("revive-times", "Revive", null, 1, 0)]
[ConfigInt("revive-times", "Revive", 1, 0)]
public static int ReviveTimes = 1;
[ConfigString("revive-success", "Revive", null, "used a revive potion. &aIt was super effective!")]
[ConfigString("revive-success", "Revive", "used a revive potion. &aIt was super effective!")]
public static string ReviveSuccessMessage = "used a revive potion. &aIt was super effective!";
[ConfigString("revive-failure", "Revive", null, "tried using a revive potion. &cIt was not very effective..")]
[ConfigString("revive-failure", "Revive", "tried using a revive potion. &cIt was not very effective..")]
public static string ReviveFailureMessage = "tried using a revive potion. &cIt was not very effective..";
/// <summary> List of levels that are randomly picked for zombie survival.
/// If this left blank, then all level files are picked from instead. </summary>
[ConfigStringList("zombie-levels-list", "Zombie", null)]
[ConfigStringList("zombie-levels-list", "Zombie")]
public static List<string> LevelList = new List<string>();
/// <summary> List of levels that are never picked for zombie survival. </summary>
[ConfigStringList("zombie-ignores-list", "Zombie", null)]
[ConfigStringList("zombie-ignores-list", "Zombie")]
public static List<string> IgnoredLevelList = new List<string>();
public static void SaveSettings() {

View File

@ -24,171 +24,171 @@ using MCGalaxy.Games;
namespace MCGalaxy {
public sealed class LevelConfig {
[ConfigString("MOTD", "General", null, "ignore", true, null, 128)]
[ConfigString("MOTD", "General", "ignore", true, null, 128)]
public string MOTD = "ignore";
[ConfigBool("LoadOnGoto", "General", null, true)]
[ConfigBool("LoadOnGoto", "General", true)]
public bool LoadOnGoto = true;
[ConfigString("Theme", "General", null, "Normal", true)]
[ConfigString("Theme", "General", "Normal", true)]
public string Theme = "Normal";
[ConfigBool("Unload", "General", null, true)]
[ConfigBool("Unload", "General", true)]
public bool AutoUnload = true;
/// <summary> true if this map may see server-wide chat, false if this map has level-only/isolated chat </summary>
[ConfigBool("WorldChat", "General", null, true)]
[ConfigBool("WorldChat", "General", true)]
public bool ServerWideChat = true;
[ConfigBool("UseBlockDB", "Other", null, true)]
[ConfigBool("UseBlockDB", "Other", true)]
public bool UseBlockDB = true;
[ConfigInt("LoadDelay", "Other", null, 0, 0, 2000)]
[ConfigInt("LoadDelay", "Other", 0, 0, 2000)]
public int LoadDelay = 0;
public byte jailrotx, jailroty;
[ConfigInt("JailX", "Jail", null, 0, 0, 65535)]
[ConfigInt("JailX", "Jail", 0, 0, 65535)]
public int JailX;
[ConfigInt("JailY", "Jail", null, 0, 0, 65535)]
[ConfigInt("JailY", "Jail", 0, 0, 65535)]
public int JailY;
[ConfigInt("JailZ", "Jail", null, 0, 0, 65535)]
[ConfigInt("JailZ", "Jail", 0, 0, 65535)]
public int JailZ;
// Environment settings
[ConfigByte("Weather", "Env", null, 0, 0, 2)]
[ConfigByte("Weather", "Env", 0, 0, 2)]
public byte Weather;
[ConfigString("Texture", "Env", null, "", true, null, NetUtils.StringSize)]
[ConfigString("Texture", "Env", "", true, null, NetUtils.StringSize)]
public string Terrain = "";
[ConfigString("TexturePack", "Env", null, "", true, null, NetUtils.StringSize)]
[ConfigString("TexturePack", "Env", "", true, null, NetUtils.StringSize)]
public string TexturePack = "";
/// <summary> Color of the clouds (RGB packed into an int). Set to -1 to use client defaults. </summary>
[ConfigString("CloudColor", "Env", null, "", true)]
[ConfigString("CloudColor", "Env", "", true)]
public string CloudColor = "";
/// <summary> Color of the fog (RGB packed into an int). Set to -1 to use client defaults. </summary>
[ConfigString("FogColor", "Env", null, "", true)]
[ConfigString("FogColor", "Env", "", true)]
public string FogColor = "";
/// <summary> Color of the sky (RGB packed into an int). Set to -1 to use client defaults. </summary>
[ConfigString("SkyColor", "Env", null, "", true)]
[ConfigString("SkyColor", "Env", "", true)]
public string SkyColor = "";
/// <summary> Color of the blocks in shadows (RGB packed into an int). Set to -1 to use client defaults. </summary>
[ConfigString("ShadowColor", "Env", null, "", true)]
[ConfigString("ShadowColor", "Env", "", true)]
public string ShadowColor = "";
/// <summary> Color of the blocks in the light (RGB packed into an int). Set to -1 to use client defaults. </summary>
[ConfigString("LightColor", "Env", null, "", true)]
[ConfigString("LightColor", "Env", "", true)]
public string LightColor = "";
/// <summary> Elevation of the "ocean" that surrounds maps. Default is map height / 2. </summary>
[ConfigInt("EdgeLevel", "Env", null, -1, short.MinValue, short.MaxValue)]
[ConfigInt("EdgeLevel", "Env", -1, short.MinValue, short.MaxValue)]
public int EdgeLevel;
/// <summary> Offset of the "bedrock" that surrounds map sides from edge level. Default is -2. </summary>
[ConfigInt("SidesOffset", "Env", null, -2, short.MinValue, short.MaxValue)]
[ConfigInt("SidesOffset", "Env", -2, short.MinValue, short.MaxValue)]
public int SidesOffset = -2;
/// <summary> Elevation of the clouds. Default is map height + 2. </summary>
[ConfigInt("CloudsHeight", "Env", null, -1, short.MinValue, short.MaxValue)]
[ConfigInt("CloudsHeight", "Env", -1, short.MinValue, short.MaxValue)]
public int CloudsHeight;
/// <summary> Max fog distance the client can see. Default is 0, means use client-side defined max fog distance. </summary>
[ConfigInt("MaxFog", "Env", null, 0, short.MinValue, short.MaxValue)]
[ConfigInt("MaxFog", "Env", 0, short.MinValue, short.MaxValue)]
public int MaxFogDistance;
/// <summary> Clouds speed, in units of 256ths. Default is 256 (1 speed). </summary>
[ConfigInt("clouds-speed", "Env", null, 256, short.MinValue, short.MaxValue)]
[ConfigInt("clouds-speed", "Env", 256, short.MinValue, short.MaxValue)]
public int CloudsSpeed = 256;
/// <summary> Weather speed, in units of 256ths. Default is 256 (1 speed). </summary>
[ConfigInt("weather-speed", "Env", null, 256, short.MinValue, short.MaxValue)]
[ConfigInt("weather-speed", "Env", 256, short.MinValue, short.MaxValue)]
public int WeatherSpeed = 256;
/// <summary> Weather fade, in units of 256ths. Default is 256 (1 speed). </summary>
[ConfigInt("weather-fade", "Env", null, 128, short.MinValue, short.MaxValue)]
[ConfigInt("weather-fade", "Env", 128, short.MinValue, short.MaxValue)]
public int WeatherFade = 128;
/// <summary> The block which will be displayed on the horizon. </summary>
[ConfigByte("HorizonBlock", "Env", null, Block.water)]
[ConfigByte("HorizonBlock", "Env", Block.water)]
public byte HorizonBlock = Block.water;
/// <summary> The block which will be displayed on the edge of the map. </summary>
[ConfigByte("EdgeBlock", "Env", null, Block.blackrock)]
[ConfigByte("EdgeBlock", "Env", Block.blackrock)]
public byte EdgeBlock = Block.blackrock;
/// <summary> Whether exponential fog mode is used client-side. </summary>
[ConfigBool("ExpFog", "Env", null, false)]
[ConfigBool("ExpFog", "Env", false)]
public bool ExpFog;
// Permission settings
[ConfigString("RealmOwner", "Permissions", null, "", true)]
[ConfigString("RealmOwner", "Permissions", "", true)]
public string RealmOwner = "";
[ConfigBool("Buildable", "Permissions", null, true)]
[ConfigBool("Buildable", "Permissions", true)]
public bool Buildable = true;
[ConfigBool("Deletable", "Permissions", null, true)]
[ConfigBool("Deletable", "Permissions", true)]
public bool Deletable = true;
[ConfigPerm("PerVisit", "Permissions", null, LevelPermission.Guest)]
[ConfigPerm("PerVisit", "Permissions", LevelPermission.Guest)]
public LevelPermission VisitMin = LevelPermission.Guest;
[ConfigPerm("PerVisitMax", "Permissions", null, LevelPermission.Nobody)]
[ConfigPerm("PerVisitMax", "Permissions", LevelPermission.Nobody)]
public LevelPermission VisitMax = LevelPermission.Nobody;
[ConfigPerm("PerBuild", "Permissions", null, LevelPermission.Guest)]
[ConfigPerm("PerBuild", "Permissions", LevelPermission.Guest)]
public LevelPermission BuildMin = LevelPermission.Guest;
[ConfigPerm("PerBuildMax", "Permissions", null, LevelPermission.Nobody)]
[ConfigPerm("PerBuildMax", "Permissions", LevelPermission.Nobody)]
public LevelPermission BuildMax = LevelPermission.Nobody;
// Other blacklists/whitelists
[ConfigStringList("VisitWhitelist", "Permissions", null)]
[ConfigStringList("VisitWhitelist", "Permissions")]
public List<string> VisitWhitelist = new List<string>();
[ConfigStringList("VisitBlacklist", "Permissions", null)]
[ConfigStringList("VisitBlacklist", "Permissions")]
public List<string> VisitBlacklist = new List<string>();
[ConfigStringList("BuildWhitelist", "Permissions", null)]
[ConfigStringList("BuildWhitelist", "Permissions")]
public List<string> BuildWhitelist = new List<string>();
[ConfigStringList("BuildBlacklist", "Permissions", null)]
[ConfigStringList("BuildBlacklist", "Permissions")]
public List<string> BuildBlacklist = new List<string>();
// Physics settings
[ConfigInt("Physics", "Physics", null, 0, 0, 5)]
[ConfigInt("Physics", "Physics", 0, 0, 5)]
public int Physics;
[ConfigInt("Physics overload", "Physics", null, 250)]
[ConfigInt("Physics overload", "Physics", 250)]
public int PhysicsOverload = 1500;
[ConfigInt("Physics speed", "Physics", null, 250)]
[ConfigInt("Physics speed", "Physics", 250)]
public int PhysicsSpeed = 250;
[ConfigBool("RandomFlow", "Physics", null, true)]
[ConfigBool("RandomFlow", "Physics", true)]
public bool RandomFlow = true;
[ConfigBool("LeafDecay", "Physics", null, false)]
[ConfigBool("LeafDecay", "Physics", false)]
public bool LeafDecay;
[ConfigBool("Finite mode", "Physics", null, false)]
[ConfigBool("Finite mode", "Physics", false)]
public bool FiniteLiquids;
[ConfigBool("GrowTrees", "Physics", null, false)]
[ConfigBool("GrowTrees", "Physics", false)]
public bool GrowTrees;
[ConfigBool("Animal AI", "Physics", null, true)]
[ConfigBool("Animal AI", "Physics", true)]
public bool AnimalHuntAI = true;
[ConfigBool("GrassGrowth", "Physics", null, true)]
[ConfigBool("GrassGrowth", "Physics", true)]
public bool GrassGrow = true;
[ConfigString("TreeType", "Physics", null, "fern", false)]
[ConfigString("TreeType", "Physics", "fern", false)]
public string TreeType = "fern";
// Survival settings
[ConfigInt("Drown", "Survival", null, 70)]
[ConfigInt("Drown", "Survival", 70)]
public int DrownTime = 70;
[ConfigBool("Edge water", "Survival", null, true)]
[ConfigBool("Edge water", "Survival", true)]
public bool EdgeWater;
[ConfigInt("Fall", "Survival", null, 9)]
[ConfigInt("Fall", "Survival", 9)]
public int FallHeight = 9;
[ConfigBool("Guns", "Survival", null, false)]
[ConfigBool("Guns", "Survival", false)]
public bool Guns = false;
[ConfigBool("Survival death", "Survival", null, false)]
[ConfigBool("Survival death", "Survival", false)]
public bool SurvivalDeath;
[ConfigBool("Killer blocks", "Survival", null, true)]
[ConfigBool("Killer blocks", "Survival", true)]
public bool KillerBlocks = true;
// Games settings
[ConfigInt("Likes", "Game", null, 0)]
[ConfigInt("Likes", "Game", 0)]
public int Likes;
[ConfigInt("Dislikes", "Game", null, 0)]
[ConfigInt("Dislikes", "Game", 0)]
public int Dislikes;
[ConfigString("Authors", "Game", null, "", true)]
[ConfigString("Authors", "Game", "", true)]
public string Authors = "";
[ConfigBool("Pillaring", "Game", null, false)]
[ConfigBool("Pillaring", "Game", false)]
public bool Pillaring = !ZombieGameProps.NoPillaring;
[ConfigEnum("BuildType", "Game", null, BuildType.Normal, typeof(BuildType))]
[ConfigEnum("BuildType", "Game", BuildType.Normal, typeof(BuildType))]
public BuildType BuildType = BuildType.Normal;
[ConfigInt("MinRoundTime", "Game", null, 4)]
[ConfigInt("MinRoundTime", "Game", 4)]
public int MinRoundTime = 4;
[ConfigInt("MaxRoundTime", "Game", null, 7)]
[ConfigInt("MaxRoundTime", "Game", 7)]
public int MaxRoundTime = 7;
[ConfigBool("DrawingAllowed", "Game", null, true)]
[ConfigBool("DrawingAllowed", "Game", true)]
public bool DrawingAllowed = true;
[ConfigInt("RoundsPlayed", "Game", null, 0)]
[ConfigInt("RoundsPlayed", "Game", 0)]
public int RoundsPlayed = 0;
[ConfigInt("RoundsHumanWon", "Game", null, 0)]
[ConfigInt("RoundsHumanWon", "Game", 0)]
public int RoundsHumanWon = 0;

View File

@ -24,261 +24,261 @@ namespace MCGalaxy {
public static class ServerConfig {
const string asciiChars = " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
[ConfigString("server-name", "General", null, "[MCGalaxy] Default", false, asciiChars, 64)]
[ConfigString("server-name", "General", "[MCGalaxy] Default", false, asciiChars, 64)]
public static string Name = "[MCGalaxy] Default";
[ConfigString("motd", "General", null, "Welcome", false, asciiChars, 128)]
[ConfigString("motd", "General", "Welcome", false, asciiChars, 128)]
public static string MOTD = "Welcome!";
[ConfigInt("max-players", "Server", null, 12, 1, 128)]
[ConfigInt("max-players", "Server", 12, 1, 128)]
public static int MaxPlayers = 12;
[ConfigInt("max-guests", "Server", null, 10, 1, 128)]
[ConfigInt("max-guests", "Server", 10, 1, 128)]
public static int MaxGuests = 10;
[ConfigString("listen-ip", "Server", null, "0.0.0.0")]
[ConfigString("listen-ip", "Server", "0.0.0.0")]
public static string ListenIP = "0.0.0.0";
[ConfigInt("port", "Server", null, 25565, 0, 65535)]
[ConfigInt("port", "Server", 25565, 0, 65535)]
public static int Port = 25565;
[ConfigBool("public", "Server", null, true)]
[ConfigBool("public", "Server", true)]
public static bool Public = true;
[ConfigBool("verify-names", "Server", null, true)]
[ConfigBool("verify-names", "Server", true)]
public static bool VerifyNames = true;
[ConfigBool("autoload", "Server", null, true)]
[ConfigBool("autoload", "Server", true)]
public static bool AutoLoadMaps = true;
/// <summary> true if maps sees server-wide chat, false if maps have level-only/isolated chat </summary>
[ConfigBool("world-chat", "Server", null, true)]
[ConfigBool("world-chat", "Server", true)]
public static bool ServerWideChat = true;
[ConfigString("main-name", "General", null, "main", false, "._+")]
[ConfigString("main-name", "General", "main", false, "._+")]
public static string MainLevel = "main";
[ConfigString("xjail-map-name", "Other", null, "(main)", false, "()._+")]
[ConfigString("xjail-map-name", "Other", "(main)", false, "()._+")]
public static string XJailLevel = "(main)";
[ConfigString("default-texture-url", "General", null, "", true, null, NetUtils.StringSize)]
[ConfigString("default-texture-url", "General", "", true, null, NetUtils.StringSize)]
public static string DefaultTerrain = "";
[ConfigString("default-texture-pack-url", "General", null, "", true, null, NetUtils.StringSize)]
[ConfigString("default-texture-pack-url", "General", "", true, null, NetUtils.StringSize)]
public static string DefaultTexture = "";
[ConfigBool("report-back", "Error handling", null, true)]
[ConfigBool("report-back", "Error handling", true)]
public static bool reportBack = true;
[ConfigBool("core-secret-commands", "Other", null, true)]
[ConfigBool("core-secret-commands", "Other", true)]
public static bool CoreSecretCommands = true;
[ConfigBool("restart-on-error", "Error handling", null, true)]
[ConfigBool("restart-on-error", "Error handling", true)]
public static bool restartOnError = true;
[ConfigBool("software-staff-prefixes", "Other", null, true)]
[ConfigBool("software-staff-prefixes", "Other", true)]
public static bool SoftwareStaffPrefixes = true;
[ConfigInt("position-interval", "Server", null, 100, 20, 2000)]
[ConfigInt("position-interval", "Server", 100, 20, 2000)]
public static int PositionUpdateInterval = 100;
[ConfigBool("classicube-account-plus", "Server", null, true)]
[ConfigBool("classicube-account-plus", "Server", true)]
public static bool ClassicubeAccountPlus = true;
[ConfigBool("agree-to-rules-on-entry", "Other", null, false)]
[ConfigBool("agree-to-rules-on-entry", "Other", false)]
public static bool AgreeToRulesOnEntry = false;
[ConfigBool("admins-join-silent", "Other", null, false)]
[ConfigBool("admins-join-silent", "Other", false)]
public static bool AdminsJoinSilently = false;
[ConfigBool("check-updates", "Update", null, false)]
[ConfigBool("check-updates", "Update", false)]
public static bool CheckForUpdates = true;
[ConfigBool("auto-update", "Update", null, false)]
[ConfigBool("auto-update", "Update", false)]
public static bool AutoUpdate;
[ConfigBool("in-game-update-notify", "Server", null, false)]
[ConfigBool("in-game-update-notify", "Server", false)]
public static bool NotifyUpdating;
[ConfigInt("update-countdown", "Update", null, 10)]
[ConfigInt("update-countdown", "Update", 10)]
public static int UpdateRestartDelay = 10;
[ConfigBool("auto-restart", "Server", null, false)]
[ConfigBool("auto-restart", "Server", false)]
public static bool AutoRestart;
[ConfigDateTime("restarttime", "Server", null)]
[ConfigDateTime("restarttime", "Server")]
public static DateTime RestartTime;
[ConfigInt("rplimit", "Other", null, 500, 0, 50000)]
[ConfigInt("rplimit", "Other", 500, 0, 50000)]
public static int PhysicsRestartLimit = 500;
[ConfigInt("rplimit-norm", "Other", null, 10000, 0, 50000)]
[ConfigInt("rplimit-norm", "Other", 10000, 0, 50000)]
public static int PhysicsRestartNormLimit = 10000;
[ConfigBool("physicsrestart", "Other", null, true)]
[ConfigBool("physicsrestart", "Other", true)]
public static bool PhysicsRestart = true;
[ConfigInt("physics-undo-max", "Other", null, 20000)]
[ConfigInt("physics-undo-max", "Other", 20000)]
public static int PhysicsUndo = 20000;
[ConfigInt("backup-time", "Backup", null, 300, 1)]
[ConfigInt("backup-time", "Backup", 300, 1)]
public static int BackupInterval = 300;
public static int BlockDBSaveInterval = 60;
[ConfigString("backup-location", "Backup", null, "")]
[ConfigString("backup-location", "Backup", "")]
public static string BackupDirectory = Path.Combine(Utils.FolderPath, "levels/backups");
[ConfigInt("afk-minutes", "Other", null, 10)]
[ConfigInt("afk-minutes", "Other", 10)]
public static int AutoAfkMins = 10;
[ConfigInt("afk-kick", "Other", null, 45)]
[ConfigInt("afk-kick", "Other", 45)]
public static int AfkKickMins = 45;
[ConfigPerm("afk-kick-perm", "Other", null, LevelPermission.AdvBuilder)]
[ConfigPerm("afk-kick-perm", "Other", LevelPermission.AdvBuilder)]
public static LevelPermission AfkKickRank = LevelPermission.AdvBuilder;
[ConfigString("default-rank", "General", null, "guest")]
[ConfigString("default-rank", "General", "guest")]
public static string DefaultRankName = "guest";
[ConfigInt("map-gen-limit-admin", "Other", null, 225 * 1000 * 1000)]
[ConfigInt("map-gen-limit-admin", "Other", 225 * 1000 * 1000)]
public static int MapGenLimitAdmin = 225 * 1000 * 1000;
[ConfigInt("map-gen-limit", "Other", null, 30 * 1000 * 1000)]
[ConfigInt("map-gen-limit", "Other", 30 * 1000 * 1000)]
public static int MapGenLimit = 30 * 1000 * 1000;
[ConfigBool("deathcount", "Other", null, true)]
[ConfigBool("deathcount", "Other", true)]
public static bool AnnounceDeathCount = true;
[ConfigBool("use-whitelist", "Other", null, false)]
[ConfigBool("use-whitelist", "Other", false)]
public static bool WhitelistedOnly = false;
[ConfigBool("force-cuboid", "Other", null, false)]
[ConfigBool("force-cuboid", "Other", false)]
public static bool forceCuboid = false;
[ConfigBool("repeat-messages", "Other", null, false)]
[ConfigBool("repeat-messages", "Other", false)]
public static bool RepeatMBs = false;
public static bool unsafe_plugin = true;
[ConfigString("money-name", "Other", null, "moneys")]
[ConfigString("money-name", "Other", "moneys")]
public static string Currency = "moneys";
[ConfigBool("log-heartbeat", "Other", null, false)]
[ConfigBool("log-heartbeat", "Other", false)]
public static bool LogHeartbeat = false;
[ConfigString("server-owner", "Other", null, "Notch")]
[ConfigString("server-owner", "Other", "Notch")]
public static string OwnerName = "Notch";
[ConfigBool("guest-limit-notify", "Other", null, false)]
[ConfigBool("guest-limit-notify", "Other", false)]
public static bool GuestLimitNotify = false;
[ConfigBool("guest-join-notify", "Other", null, true)]
[ConfigBool("guest-join-notify", "Other", true)]
public static bool GuestJoinsNotify = true;
[ConfigBool("guest-leave-notify", "Other", null, true)]
[ConfigBool("guest-leave-notify", "Other", true)]
public static bool GuestLeavesNotify = true;
[ConfigBool("kick-on-hackrank", "Other", null, true)]
[ConfigBool("kick-on-hackrank", "Other", true)]
public static bool HackrankKicks = true;
[ConfigInt("hackrank-kick-time", "Other", null, 5)]
[ConfigInt("hackrank-kick-time", "Other", 5)]
public static int HackrankKickDelay = 5; // seconds
[ConfigBool("show-empty-ranks", "Other", null, false)]
[ConfigBool("show-empty-ranks", "Other", false)]
public static bool ListEmptyRanks = false;
[ConfigInt("review-cooldown", "Review", null, 600, 0, 600)]
[ConfigInt("review-cooldown", "Review", 600, 0, 600)]
public static int ReviewCooldown = 600;
[ConfigInt("draw-reload-limit", "Other", null, 10000)]
[ConfigInt("draw-reload-limit", "Other", 10000)]
public static int DrawReloadLimit = 10000;
[ConfigBool("allow-tp-to-higher-ranks", "Other", null, true)]
[ConfigBool("allow-tp-to-higher-ranks", "Other", true)]
public static bool HigherRankTP = true;
[ConfigPerm("os-perbuild-default", "Other", null, LevelPermission.Nobody)]
[ConfigPerm("os-perbuild-default", "Other", LevelPermission.Nobody)]
public static LevelPermission OSPerbuildDefault = LevelPermission.Nobody;
[ConfigBool("irc", "IRC bot", null, false)]
[ConfigBool("irc", "IRC bot", false)]
public static bool UseIRC = false;
[ConfigInt("irc-port", "IRC bot", null, 6667, 0, 65535)]
[ConfigInt("irc-port", "IRC bot", 6667, 0, 65535)]
public static int IRCPort = 6667;
[ConfigString("irc-server", "IRC bot", null, "irc.esper.net")]
[ConfigString("irc-server", "IRC bot", "irc.esper.net")]
public static string IRCServer = "irc.esper.net";
[ConfigString("irc-nick", "IRC bot", null, "ForgeBot")]
[ConfigString("irc-nick", "IRC bot", "ForgeBot")]
public static string IRCNick = "ForgeBot";
[ConfigString("irc-channel", "IRC bot", null, "#changethis", true)]
[ConfigString("irc-channel", "IRC bot", "#changethis", true)]
public static string IRCChannels = "#changethis";
[ConfigString("irc-opchannel", "IRC bot", null, "#changethistoo", true)]
[ConfigString("irc-opchannel", "IRC bot", "#changethistoo", true)]
public static string IRCOpChannels = "#changethistoo";
[ConfigBool("irc-identify", "IRC bot", null, false)]
[ConfigBool("irc-identify", "IRC bot", false)]
public static bool IRCIdentify = false;
[ConfigString("irc-password", "IRC bot", null, "", true)]
[ConfigString("irc-password", "IRC bot", "", true)]
public static string IRCPassword = "";
[ConfigBool("UseMySQL", "Database", null, false)]
[ConfigBool("UseMySQL", "Database", false)]
public static bool UseMySQL = false;
[ConfigString("host", "Database", null, "127.0.0.1")]
[ConfigString("host", "Database", "127.0.0.1")]
public static string MySQLHost = "127.0.0.1";
[ConfigString("SQLPort", "Database", null, "3306", false, "0123456789")]
[ConfigString("SQLPort", "Database", "3306", false, "0123456789")]
public static string MySQLPort = "3306";
[ConfigString("Username", "Database", null, "root", true)]
[ConfigString("Username", "Database", "root", true)]
public static string MySQLUsername = "root";
[ConfigString("Password", "Database", null, "password", true)]
[ConfigString("Password", "Database", "password", true)]
public static string MySQLPassword = "password";
[ConfigString("DatabaseName", "Database", null, "MCZallDB")]
[ConfigString("DatabaseName", "Database", "MCZallDB")]
public static string MySQLDatabaseName = "MCZallDB";
[ConfigBool("Pooling", "Database", null, true)]
[ConfigBool("Pooling", "Database", true)]
public static bool DatabasePooling = true;
[ConfigBool("irc-player-titles", "IRC bot", null, true)]
[ConfigBool("irc-player-titles", "IRC bot", true)]
public static bool IRCShowPlayerTitles = true;
[ConfigBool("irc-show-world-changes", "IRC bot", null, false)]
[ConfigBool("irc-show-world-changes", "IRC bot", false)]
public static bool IRCShowWorldChanges = false;
[ConfigBool("irc-show-afk", "IRC bot", null, false)]
[ConfigBool("irc-show-afk", "IRC bot", false)]
public static bool IRCShowAFK = false;
[ConfigString("irc-command-prefix", "IRC bot", null, ".x", true)]
[ConfigString("irc-command-prefix", "IRC bot", ".x", true)]
public static string IRCCommandPrefix = ".x";
[ConfigEnum("irc-controller-verify", "IRC bot", null, IRCControllerVerify.HalfOp, typeof(IRCControllerVerify))]
[ConfigEnum("irc-controller-verify", "IRC bot", IRCControllerVerify.HalfOp, typeof(IRCControllerVerify))]
public static IRCControllerVerify IRCVerify = IRCControllerVerify.HalfOp;
[ConfigPerm("irc-controller-rank", "IRC bot", null, LevelPermission.Nobody)]
[ConfigPerm("irc-controller-rank", "IRC bot", LevelPermission.Nobody)]
public static LevelPermission IRCControllerRank = LevelPermission.Nobody;
[ConfigBool("tablist-rank-sorted", "Tablist", null, true)]
[ConfigBool("tablist-rank-sorted", "Tablist", true)]
public static bool TablistRankSorted = true;
[ConfigBool("tablist-global", "Tablist", null, false)]
[ConfigBool("tablist-global", "Tablist", false)]
public static bool TablistGlobal = true;
[ConfigBool("tablist-bots", "Tablist", null, false)]
[ConfigBool("tablist-bots", "Tablist", false)]
public static bool TablistBots = false;
[ConfigBool("parse-emotes", "Other", null, true)]
[ConfigBool("parse-emotes", "Other", true)]
public static bool ParseEmotes = true;
[ConfigBool("dollar-before-dollar", "Other", null, true)]
[ConfigBool("dollar-before-dollar", "Other", true)]
public static bool DollarBeforeNamesToken = true;
[ConfigStringList("disabledstandardtokens", "Other", null)]
[ConfigStringList("disabledstandardtokens", "Other")]
internal static List<string> DisabledChatTokens = new List<string>();
[ConfigBool("profanity-filter", "Other", null, false)]
[ConfigBool("profanity-filter", "Other", false)]
public static bool ProfanityFiltering = false;
[ConfigString("host-state", "Other", null, "Alive")]
[ConfigString("host-state", "Other", "Alive")]
public static string ConsoleName = "Alive";
[ConfigColor("defaultColor", "Colors", null, "&e")]
[ConfigColor("defaultColor", "Colors", "&e")]
public static string DefaultColor = "&e";
[ConfigColor("irc-color", "Colors", null, "&5")]
[ConfigColor("irc-color", "Colors", "&5")]
public static string IRCColour = "&5";
[ConfigColor("global-chat-color", "Colors", null, "&6")]
[ConfigColor("global-chat-color", "Colors", "&6")]
public static string GlobalChatColor = "&6";
[ConfigColor("help-syntax-color", "Colors", null, "&a")]
[ConfigColor("help-syntax-color", "Colors", "&a")]
public static string HelpSyntaxColor = "&a";
[ConfigColor("help-desc-color", "Colors", null, "&e")]
[ConfigColor("help-desc-color", "Colors", "&e")]
public static string HelpDescriptionColor = "&e";
[ConfigBool("cheapmessage", "Other", null, true)]
[ConfigBool("cheapmessage", "Other", true)]
public static bool ShowInvincibleMessage = true;
[ConfigString("cheap-message-given", "Messages", null, " is now invincible")]
[ConfigString("cheap-message-given", "Messages", " is now invincible")]
public static string InvincibleMessage = " is now invincible";
[ConfigString("custom-ban-message", "Messages", null, "You're banned!")]
[ConfigString("custom-ban-message", "Messages", "You're banned!")]
public static string DefaultBanMessage = "You're banned!";
[ConfigString("custom-shutdown-message", "Messages", null, "Server shutdown. Rejoin in 10 seconds.")]
[ConfigString("custom-shutdown-message", "Messages", "Server shutdown. Rejoin in 10 seconds.")]
public static string DefaultShutdownMessage = "Server shutdown. Rejoin in 10 seconds.";
[ConfigString("custom-promote-message", "Messages", null, "&6Congratulations for working hard and getting &2PROMOTED!")]
[ConfigString("custom-promote-message", "Messages", "&6Congratulations for working hard and getting &2PROMOTED!")]
public static string DefaultPromoteMessage = "&6Congratulations for working hard and getting &2PROMOTED!";
[ConfigString("custom-demote-message", "Messages", null, "&4DEMOTED! &6We're sorry for your loss. Good luck on your future endeavors! &1:'(")]
[ConfigString("custom-demote-message", "Messages", "&4DEMOTED! &6We're sorry for your loss. Good luck on your future endeavors! &1:'(")]
public static string DefaultDemoteMessage = "&4DEMOTED! &6We're sorry for your loss. Good luck on your future endeavors! &1:'(";
[ConfigBool("log-notes", "Other", null, true)]
[ConfigBool("log-notes", "Other", true)]
public static bool LogNotes = true;
[ConfigBool("admin-verification", "Admin", null, true)]
[ConfigBool("admin-verification", "Admin", true)]
public static bool verifyadmins = true;
[ConfigPerm("verify-admin-perm", "Admin", null, LevelPermission.Operator)]
[ConfigPerm("verify-admin-perm", "Admin", LevelPermission.Operator)]
public static LevelPermission VerifyAdminsRank = LevelPermission.Operator;
[ConfigBool("mute-on-spam", "Spam control", null, false)]
[ConfigBool("mute-on-spam", "Spam control", false)]
public static bool ChatSpamCheck = false;
[ConfigInt("spam-messages", "Spam control", null, 8, 0, 1000)]
[ConfigInt("spam-messages", "Spam control", 8, 0, 1000)]
public static int ChatSpamCount = 8;
[ConfigInt("spam-mute-time", "Spam control", null, 60, 0, 1000)]
[ConfigInt("spam-mute-time", "Spam control", 60, 0, 1000)]
public static int ChatSpamMuteTime = 60;
[ConfigInt("spam-counter-reset-time", "Spam control", null, 5, 0, 1000)]
[ConfigInt("spam-counter-reset-time", "Spam control", 5, 0, 1000)]
public static int ChatSpamInterval = 5;
[ConfigBool("cmd-spam-check", "Spam control", null, true)]
[ConfigBool("cmd-spam-check", "Spam control", true)]
public static bool CmdSpamCheck = true;
[ConfigInt("cmd-spam-count", "Spam control", null, 25, 0, 1000)]
[ConfigInt("cmd-spam-count", "Spam control", 25, 0, 1000)]
public static int CmdSpamCount = 25;
[ConfigInt("cmd-spam-block-time", "Spam control", null, 30, 0, 1000)]
[ConfigInt("cmd-spam-block-time", "Spam control", 30, 0, 1000)]
public static int CmdSpamBlockTime = 30;
[ConfigInt("cmd-spam-interval", "Spam control", null, 1, 0, 1000)]
[ConfigInt("cmd-spam-interval", "Spam control", 1, 0, 1000)]
public static int CmdSpamInterval = 1;
[ConfigBool("block-spam-check", "Spam control", null, true)]
[ConfigBool("block-spam-check", "Spam control", true)]
public static bool BlockSpamCheck = true;
[ConfigInt("block-spam-count", "Spam control", null, 200, 0, 1000)]
[ConfigInt("block-spam-count", "Spam control", 200, 0, 1000)]
public static int BlockSpamCount = 200;
[ConfigInt("block-spam-interval", "Spam control", null, 5, 0, 1000)]
[ConfigInt("block-spam-interval", "Spam control", 5, 0, 1000)]
public static int BlockSpamInterval = 5;
[ConfigBool("ip-spam-check", "Spam control", null, true)]
[ConfigBool("ip-spam-check", "Spam control", true)]
public static bool IPSpamCheck = true;
[ConfigInt("ip-spam-count", "Spam control", null, 25, 0, 1000)]
[ConfigInt("ip-spam-count", "Spam control", 25, 0, 1000)]
public static int IPSpamCount = 10;
[ConfigInt("ip-spam-block-time", "Spam control", null, 30, 0, 1000)]
[ConfigInt("ip-spam-block-time", "Spam control", 30, 0, 1000)]
public static int IPSpamBlockTime = 180;
[ConfigInt("ip-spam-interval", "Spam control", null, 1, 0, 1000)]
[ConfigInt("ip-spam-interval", "Spam control", 1, 0, 1000)]
public static int IPSpamInterval = 60;
}
}