first commit
This commit is contained in:
130
NitroxModel/Serialization/SubnauticaServerConfig.cs
Normal file
130
NitroxModel/Serialization/SubnauticaServerConfig.cs
Normal file
@@ -0,0 +1,130 @@
|
||||
using NitroxModel.DataStructures.GameLogic;
|
||||
using NitroxModel.Helper;
|
||||
using NitroxModel.Server;
|
||||
|
||||
namespace NitroxModel.Serialization
|
||||
{
|
||||
[PropertyDescription("Server settings can be changed here")]
|
||||
public class SubnauticaServerConfig : NitroxConfig<SubnauticaServerConfig>
|
||||
{
|
||||
private int maxConnectionsSetting = 100;
|
||||
|
||||
private int initialSyncTimeoutSetting = 300000;
|
||||
|
||||
[PropertyDescription("Set to true to Cache entities for the whole map on next run. \nWARNING! Will make server load take longer on the cache run but players will gain a performance boost when entering new areas.")]
|
||||
public bool CreateFullEntityCache { get; set; } = false;
|
||||
|
||||
private int saveIntervalSetting = 120000;
|
||||
|
||||
private int maxBackupsSetting = 10;
|
||||
|
||||
private string postSaveCommandPath = string.Empty;
|
||||
|
||||
public override string FileName => "server.cfg";
|
||||
|
||||
[PropertyDescription("Leave blank for a random spawn position")]
|
||||
public string Seed { get; set; }
|
||||
|
||||
public int ServerPort { get; set; } = ServerList.DEFAULT_PORT;
|
||||
|
||||
[PropertyDescription("Prevents players from losing items on death")]
|
||||
public bool KeepInventoryOnDeath { get; set; } = false;
|
||||
|
||||
[PropertyDescription("Measured in milliseconds")]
|
||||
public int SaveInterval
|
||||
{
|
||||
get => saveIntervalSetting;
|
||||
|
||||
set
|
||||
{
|
||||
Validate.IsTrue(value >= 1000, "SaveInterval must be greater than 1000");
|
||||
saveIntervalSetting = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int MaxBackups
|
||||
{
|
||||
get => maxBackupsSetting;
|
||||
|
||||
set
|
||||
{
|
||||
Validate.IsTrue(value >= 0, "MaxBackups must be greater than or equal to 0");
|
||||
maxBackupsSetting = value;
|
||||
}
|
||||
}
|
||||
|
||||
[PropertyDescription("Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). ")]
|
||||
public string PostSaveCommandPath
|
||||
{
|
||||
get => postSaveCommandPath;
|
||||
set => postSaveCommandPath = value?.Trim('"').Trim();
|
||||
}
|
||||
|
||||
public int MaxConnections
|
||||
{
|
||||
get => maxConnectionsSetting;
|
||||
|
||||
set
|
||||
{
|
||||
Validate.IsTrue(value > 0, "MaxConnections must be greater than 0");
|
||||
maxConnectionsSetting = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int InitialSyncTimeout
|
||||
{
|
||||
get => initialSyncTimeoutSetting;
|
||||
|
||||
set
|
||||
{
|
||||
Validate.IsTrue(value > 30000, "InitialSyncTimeout must be greater than 30 seconds");
|
||||
initialSyncTimeoutSetting = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool DisableConsole { get; set; }
|
||||
|
||||
public bool DisableAutoSave { get; set; }
|
||||
|
||||
public bool DisableAutoBackup { get; set; }
|
||||
|
||||
public string ServerPassword { get; set; } = string.Empty;
|
||||
|
||||
public string AdminPassword { get; set; } = StringHelper.GenerateRandomString(12);
|
||||
|
||||
[PropertyDescription("Possible values:", typeof(NitroxGameMode))]
|
||||
public NitroxGameMode GameMode { get; set; } = NitroxGameMode.SURVIVAL;
|
||||
|
||||
[PropertyDescription("Possible values:", typeof(ServerSerializerMode))]
|
||||
public ServerSerializerMode SerializerMode { get; set; } = ServerSerializerMode.JSON;
|
||||
|
||||
[PropertyDescription("Possible values:", typeof(Perms))]
|
||||
public Perms DefaultPlayerPerm { get; set; } = Perms.PLAYER;
|
||||
|
||||
[PropertyDescription("\nDefault player stats below here")]
|
||||
public float DefaultOxygenValue { get; set; } = 45;
|
||||
|
||||
public float DefaultMaxOxygenValue { get; set; } = 45;
|
||||
public float DefaultHealthValue { get; set; } = 80;
|
||||
public float DefaultHungerValue { get; set; } = 50.5f;
|
||||
public float DefaultThirstValue { get; set; } = 90.5f;
|
||||
|
||||
[PropertyDescription("Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.")]
|
||||
public float DefaultInfectionValue { get; set; } = 0.1f;
|
||||
|
||||
public PlayerStatsData DefaultPlayerStats => new(DefaultOxygenValue, DefaultMaxOxygenValue, DefaultHealthValue, DefaultHungerValue, DefaultThirstValue, DefaultInfectionValue);
|
||||
[PropertyDescription("If set to true, the server will try to open port on your router via UPnP")]
|
||||
public bool AutoPortForward { get; set; } = true;
|
||||
[PropertyDescription("Determines whether the server will listen for and reply to LAN discovery requests.")]
|
||||
public bool LANDiscoveryEnabled { get; set; } = true;
|
||||
|
||||
[PropertyDescription("When true, will reject any build actions detected as desynced")]
|
||||
public bool SafeBuilding { get; set; } = true;
|
||||
|
||||
[PropertyDescription("When true and started in launcher, will use launcher UI as opposed to external window")]
|
||||
public bool IsEmbedded { get; set; } = true;
|
||||
|
||||
[PropertyDescription("Activates/Deactivates Player versus Player damage/interactions")]
|
||||
public bool PvPEnabled { get; set; } = true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user