From 7241c62480ac41f05283ba3fe012f4b36782e9d6 Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Wed, 21 Jun 2023 13:51:56 +1000 Subject: [PATCH] Add Staxel (#394) --- staxel.kvp | 98 ++++++++++++++++++++++++ staxelconfig.json | 169 ++++++++++++++++++++++++++++++++++++++++++ staxelmetaconfig.json | 1 + staxelupdates.json | 17 +++++ 4 files changed, 285 insertions(+) create mode 100644 staxel.kvp create mode 100644 staxelconfig.json create mode 100644 staxelmetaconfig.json create mode 100644 staxelupdates.json diff --git a/staxel.kvp b/staxel.kvp new file mode 100644 index 0000000..c7cea4a --- /dev/null +++ b/staxel.kvp @@ -0,0 +1,98 @@ +Meta.DisplayName=Staxel +Meta.Description=Staxel Dedicated Server +Meta.OS=Windows, Linux +Meta.AarchSupport=Unknown +Meta.Arch=x86_64 +Meta.Author=Greelan +Meta.URL=https://playstaxel.com +Meta.DisplayImageSource=steam:405710 +Meta.EndpointURIFormat= +Meta.ConfigManifest=staxelconfig.json +Meta.MetaConfigManifest=staxelmetaconfig.json +Meta.ConfigRoot=staxel.kvp +Meta.MinAMPVersion=2.4.4.0 +Meta.SpecificDockerImage=cubecoders/ampbase:mono +Meta.DockerRequired=False +Meta.ContainerPolicy=SupportedOnWindows, RecommendedOnLinux +Meta.ContainerPolicyReason=Staxel requires Mono on Linux. Installing Mono on the host may interfere with AMP's operation, which using a container avoids. +Meta.ExtraSetupStepsURI= +Meta.Prerequsites=[] +Meta.ExtraContainerPackages=[] +Meta.ConfigReleaseState=NotSpecified +Meta.NoCommercialUsage=False +Meta.ConfigVersion=0.0.0.0 +Meta.ReleaseNotes= +Meta.BreakingReleaseNotes= +App.DisplayName=Staxel +App.RootDir=./staxel/ +App.BaseDirectory=./staxel/405710/ +App.SteamWorkshopDownloadLocation={{$FullBaseDir}}content/mods +App.ExecutableWin=405710\bin\Staxel.Server.exe +App.ExecutableLinux=/usr/bin/mono +App.WorkingDir=405710/bin +App.LinuxCommandLineArgs=./Staxel.Server.exe +App.WindowsCommandLineArgs= +App.CommandLineArgs={{$PlatformArgs}} --port={{$ServerPort}} --interface={{$ApplicationIPBinding}} {{$FormattedArgs}} +App.UseLinuxIOREDIR=False +App.AppSettings={} +App.EnvironmentVariables={"LD_LIBRARY_PATH":"{{$FullBaseDir}}bin/lib64:%LD_LIBRARY_PATH%","SteamAppId":"405710"} +App.CommandLineParameterFormat=--{0}={1} +App.CommandLineParameterDelimiter= +App.ExitMethod=OS_CLOSE +App.ExitTimeout=30 +App.ExitString=stop +App.ExitFile=lock +App.HasWriteableConsole=False +App.HasReadableConsole=True +App.SupportsLiveSettingsChanges=False +App.LiveSettingChangeCommandFormat=set {0} "{1}" +App.ApplicationIPBinding=0.0.0.0 +App.Ports=[{"Protocol":"TCP","Port":38465,"Ref":"ServerPort","Name":"Server Port","Description":"Port for game traffic"}] +App.AdminPortRef=0 +App.PrimaryApplicationPortRef=ServerPort +App.UniversalSleepApplicationUDPPortRef=ServerPort +App.UniversalSleepSteamQueryPortRef=0 +App.MaxUsers=4 +App.UseRandomAdminPassword=False +App.PersistRandomPassword=True +App.RemoteAdminPassword= +App.AdminMethod=STDIO +App.AdminLoginTransform=None +App.LoginTransformPrefix= +App.RCONConnectDelaySeconds=5 +App.RCONConnectRetrySeconds=5 +App.RCONHeartbeatMinutes=0 +App.RCONHeartbeatCommand=ping +App.TelnetLoginFormat={0} +App.UpdateSources=@IncludeJson[staxelupdates.json] +App.PreStartStages=[] +App.Compatibility=None +App.SteamUpdateAnonymousLogin=False +App.SteamForceLoginPrompt=True +App.RapidStartup=False +App.MonitorChildProcess=True +App.DumpFullChildProcessTree=False +App.MonitorChildProcessWaitMs=100 +App.MonitorChildProcessName=Staxel.Server.exe +App.SupportsUniversalSleep=False +App.WakeupMode=Any +App.ApplicationReadyMode=RegexMatch +App.TemplateMatchRegex={{(\$?[\w]+)}} +Console.FilterMatchRegex= +Console.FilterMatchReplacement= +Console.ThrowawayMessageRegex=^(WARNING|ERROR): Shader.+|System\.ComponentModel\.Win32Exception.*: Seek|at (.*System\.Diagnostics\.Process\.set_PriorityClass|Plukit\.Base\.ThreadExtensions\.Prioritize).*$ +Console.AppReadyRegex=^Server ready\.$ +Console.UserJoinRegex=^Assigning client '(?.+?)' new entity id (?\d+?)$ +Console.UserLeaveRegex=^Removing disconnected client entity id (?\d+?)$ +Console.UserChatRegex=^\([\d:]+\)\<(?.+?)\>: (?.*)$ +Console.UpdateAvailableRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] A new server update is available! v[\d\.]+.$ +Console.MetricsRegex= +Console.SuppressLogAtStart=False +Console.ActivateLogRegex= +Console.UserActions={} +Limits.SleepMode=True +Limits.SleepOnStart=False +Limits.SleepDelayMinutes=5 +Limits.DozeDelay=2 +Limits.AutoRetryCount=5 +Limits.SleepStartThresholdSeconds=25 diff --git a/staxelconfig.json b/staxelconfig.json new file mode 100644 index 0000000..80eba8d --- /dev/null +++ b/staxelconfig.json @@ -0,0 +1,169 @@ +[ + { + "DisplayName":"World Save Name", + "Category":"Staxel Server Settings", + "Description":"Sets the name of the world as saved locally in LocalContent. Defaults to \"server\" if not set", + "Keywords":"world,name,save,storage", + "FieldName":"storage", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"storage", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"World Seed", + "Category":"Staxel Server Settings", + "Description":"Sets the world seed when creating a new world (optional)", + "Keywords":"world,seed", + "FieldName":"seed", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"seed", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"World Size", + "Category":"Staxel Server Settings", + "Description":"Sets the world size when creating a new world", + "Keywords":"world,size,worldsize", + "FieldName":"worldSize", + "InputType":"number", + "MinValue":"1", + "MaxValue":"10", + "IsFlagArgument":false, + "ParamFieldName":"worldSize", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"1.00", + "Placeholder":"1.00", + "EnumValues":{} + }, + { + "DisplayName":"Farm Count", + "Category":"Staxel Server Settings", + "Description":"Sets the farm count when creating a new world", + "Keywords":"farm,count,farmcount", + "FieldName":"farmCount", + "InputType":"number", + "MinValue":"1", + "MaxValue":"4", + "IsFlagArgument":false, + "ParamFieldName":"farmCount", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"1", + "Placeholder":"1", + "Suffix":"farms", + "EnumValues":{} + }, + { + "DisplayName":"Server Name", + "Category":"Staxel Server Settings", + "Description":"Sets the server name. Must be within 3 to 16 characters, no spaces", + "Keywords":"server,name", + "FieldName":"name", + "InputType":"text", + "IsFlagArgument":false, + "ParamFieldName":"name", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"AMPStaxelServer", + "EnumValues":{} + }, + { + "DisplayName":"Server Password", + "Category":"Staxel Server Settings", + "Description":"Sets the password for players to join the server. Default is no password", + "Keywords":"password", + "FieldName":"password", + "InputType":"password", + "IsFlagArgument":false, + "ParamFieldName":"password", + "IncludeInCommandLine":true, + "SkipIfEmpty":true, + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Player Limit", + "Category":"Staxel Server Settings", + "Description":"Sets the maximum number of players that may connect to the server", + "Keywords":"players,limit,maximum,playerlimit", + "FieldName":"$MaxUsers", + "InputType":"number", + "MinValue":"1", + "IsFlagArgument":false, + "ParamFieldName":"playerLimit", + "IncludeInCommandLine":true, + "DefaultValue":"4", + "Placeholder":"4", + "Suffix":"players", + "EnumValues":{} + }, + { + "DisplayName":"Enable Creative Mode", + "Category":"Staxel Server Settings", + "Description":"If set, creative mode will be enabled on the server", + "Keywords":"creative,mode", + "FieldName":"creative", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"creative", + "IncludeInCommandLine":true, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Disable Pause", + "Category":"Staxel Server Settings", + "Description":"If set, pausing of the server will be disabled, so that time will pass even when no players are online", + "Keywords":"disable,pausing,pause,nopause", + "FieldName":"noPause", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"noPause", + "IncludeInCommandLine":true, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Server IP Binding", + "Category":"Staxel Server Settings", + "Description":"If required, you can change the IP binding of the server by editing App.ApplicationIPBinding in GenericModule.kvp for the instance. Stop the instance (not just the server) first. NOTE: The IP must be reachable by AMP, otherwise AMP's console won't work", + "Keywords":"ip,binding,interface", + "FieldName":"interface", + "InputType":"hidden", + "IsFlagArgument":false, + "ParamFieldName":"interface", + "IncludeInCommandLine":false, + "EnumValues":{} + }, + { + "DisplayName":"Enable UPnP", + "Category":"Staxel Server Settings", + "Description":"If enabled, the server will attempt to configure automatic port forwarding on a compatible router", + "Keywords":"upnp", + "FieldName":"upnp", + "InputType":"checkbox", + "IsFlagArgument":false, + "ParamFieldName":"upnp", + "IncludeInCommandLine":true, + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + } +] \ No newline at end of file diff --git a/staxelmetaconfig.json b/staxelmetaconfig.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/staxelmetaconfig.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/staxelupdates.json b/staxelupdates.json new file mode 100644 index 0000000..29c5198 --- /dev/null +++ b/staxelupdates.json @@ -0,0 +1,17 @@ +[ + { + "UpdateStageName":"SteamCMD Server Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"SteamCMD", + "UpdateSourceData":"405710", + "UpdateSourceArgs":"405710", + "ForceDownloadPlatform":"Windows" + }, + { + "UpdateStageName":"FNA Native Libraries Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"-c 'wget -N https://fna.flibitijibibo.com/archive/fnalibs.tar.bz2 && tar -xf fnalibs.tar.bz2 -C ./staxel/405710/bin/ lib64/ && rm -f fnalibs.tar.bz2'" + } +] \ No newline at end of file