From 38ec53b7b7a71112c3ca44cfce289914ed875576 Mon Sep 17 00:00:00 2001 From: Greelan <53196309+Greelan@users.noreply.github.com> Date: Sat, 16 Sep 2023 07:23:11 +1000 Subject: [PATCH] Add Open World (#459) --- open-world.kvp | 101 +++++++ open-worldconfig.json | 474 ++++++++++++++++++++++++++++++++ open-worldmetaconfig.json | 17 ++ open-worldserverconfig.json | 14 + open-worldserverdeepconfig.json | 4 + open-worldservervalues.json | 22 ++ open-worldupdates.json | 140 ++++++++++ 7 files changed, 772 insertions(+) create mode 100644 open-world.kvp create mode 100644 open-worldconfig.json create mode 100644 open-worldmetaconfig.json create mode 100644 open-worldserverconfig.json create mode 100644 open-worldserverdeepconfig.json create mode 100644 open-worldservervalues.json create mode 100644 open-worldupdates.json diff --git a/open-world.kvp b/open-world.kvp new file mode 100644 index 0000000..e0dc69a --- /dev/null +++ b/open-world.kvp @@ -0,0 +1,101 @@ +Meta.DisplayName=Open World - RimWorld Server +Meta.Description=Open World - a free multiplayer mod for RimWorld +Meta.OS=Windows, Linux +Meta.AarchSupport=Native +Meta.Arch=All +Meta.Author=Greelan +Meta.URL=https://github.com/D12-Dev/OpenWorld +Meta.DisplayImageSource=steam:294100 +Meta.EndpointURIFormat= +Meta.ConfigManifest=open-worldconfig.json +Meta.MetaConfigManifest=open-worldmetaconfig.json +Meta.ConfigRoot=open-world.kvp +Meta.MinAMPVersion=2.4.6.4 +Meta.SpecificDockerImage= +Meta.DockerRequired=False +Meta.DockerBaseReadOnly=False +Meta.ContainerPolicy=Supported +Meta.ContainerPolicyReason= +Meta.ExtraSetupStepsURI= +Meta.Prerequsites=[] +Meta.ExtraContainerPackages=[] +Meta.ConfigReleaseState=NotSpecified +Meta.NoCommercialUsage=False +Meta.ConfigVersion=0.0.0.0 +Meta.ReleaseNotes= +Meta.BreakingReleaseNotes= +App.DisplayName=Open World - RimWorld Server +App.RootDir=./open-world/ +App.BaseDirectory=./open-world/server/ +App.SteamWorkshopDownloadLocation= +App.ExecutableWin=server\OpenWorldServer.exe +App.ExecutableLinux=server/OpenWorldServer +App.WorkingDir=server +App.LinuxCommandLineArgs= +App.WindowsCommandLineArgs= +App.CommandLineArgs={{$PlatformArgs}} {{$FormattedArgs}} +App.UseLinuxIOREDIR=False +App.AppSettings={} +App.EnvironmentVariables={"SteamAppId":"294100","DOTNET_ROOT":"{{$FullBaseDir}}dotnet","DOTNET_SYSTEM_GLOBALIZATION_INVARIANT":"1"} +App.CommandLineParameterFormat={0}={1} +App.CommandLineParameterDelimiter= +App.ExitMethod=String +App.ExitTimeout=30 +App.ExitString=shutdown +App.ExitFile=app_exit.lck +App.HasWriteableConsole=True +App.HasReadableConsole=True +App.SupportsLiveSettingsChanges=False +App.LiveSettingChangeCommandFormat=set {0} "{1}" +App.ApplicationIPBinding=0.0.0.0 +App.Ports=[{"Protocol":"TCP","Port":25555,"Ref":"ServerPort","Name":"Server Port","Description":"Port for game traffic"}] +App.AdminPortRef=0 +App.PrimaryApplicationPortRef=ServerPort +App.UniversalSleepApplicationUDPPortRef=0 +App.UniversalSleepSteamQueryPortRef=0 +App.MaxUsers=10 +App.UseRandomAdminPassword=False +App.PersistRandomPassword=True +App.RemoteAdminPassword= +App.AdminMethod=STDIO +App.AdminLoginTransform=None +App.LoginTransformPrefix= +App.RCONConnectDelaySeconds=30 +App.RCONConnectRetrySeconds=15 +App.RCONHeartbeatMinutes=0 +App.RCONHeartbeatCommand=ping +App.TelnetLoginFormat={0} +App.UpdateSources=@IncludeJson[open-worldupdates.json] +App.PreStartStages=[] +App.ForceUpdate=False +App.ForceUpdateReason= +App.Compatibility=None +App.SteamUpdateAnonymousLogin=False +App.SteamForceLoginPrompt=True +App.RapidStartup=False +App.MonitorChildProcess=False +App.DumpFullChildProcessTree=False +App.MonitorChildProcessWaitMs=1000 +App.MonitorChildProcessName= +App.SupportsUniversalSleep=False +App.WakeupMode=Any +App.ApplicationReadyMode=RegexMatch +App.TemplateMatchRegex={{(\$?[\w]+)}} +Console.FilterMatchRegex= +Console.FilterMatchReplacement= +Console.ThrowawayMessageRegex=(WARNING|ERROR): Shader.+ +Console.AppReadyRegex=^\[[\d:]+\] \| Server Launched$ +Console.UserJoinRegex=^$ +Console.UserLeaveRegex=^$ +Console.UserChatRegex=^$ +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/open-worldconfig.json b/open-worldconfig.json new file mode 100644 index 0000000..ceed990 --- /dev/null +++ b/open-worldconfig.json @@ -0,0 +1,474 @@ +[ + { + "DisplayName":"Server Port", + "Category":"Open World Server Settings", + "Description":"", + "Keywords":"", + "FieldName":"$ServerPort", + "InputType":"number", + "Hidden":true, + "ParamFieldName":"$.ServerPort", + "EnumValues":{} + }, + { + "DisplayName":"World Generation", + "Category":"Open World Server Settings", + "Description":"Follow [these instructions](https://openworldhelp.fandom.com/wiki/Creating_a_server#Generating_the_world) to generate a world for the server after it is first run", + "Keywords":"world,generate,generation", + "FieldName":"World", + "InputType":"hidden", + "ParamFieldName":"World", + "EnumValues":{} + }, + { + "DisplayName":"Server Password", + "Category":"Open World Server Settings", + "Description":"Sets the password for players to join the server. Default is no password", + "Keywords":"server,password,ServerPassword", + "FieldName":"ServerPassword", + "InputType":"password", + "ParamFieldName":"$.ServerPassword", + "DefaultValue":"", + "EnumValues":{} + }, + { + "DisplayName":"Player Version", + "Category":"Open World Server Settings", + "Description":"Sets the mod version players will use. Find this in the Open World [discord channel](https://discord.com/channels/992806266109964319/992881103071354890)", + "Keywords":"player,version,mod,PlayerVersion", + "FieldName":"PlayerVersion", + "InputType":"number", + "ParamFieldName":"$.PlayerVersion", + "DefaultValue":"1.3", + "Placeholder":"1.3", + "EnumValues":{} + }, + { + "DisplayName":"Player Limit", + "Category":"Open World Server Settings", + "Description":"Sets the maximum number of players that may connect to the server at one time", + "Keywords":"maximum,max,players,limit,MaxPlayers", + "FieldName":"MaxPlayers", + "InputType":"number", + "ParamFieldName":"$.MaxPlayers", + "DefaultValue":"10", + "Placeholder":"10", + "Suffix":"players", + "EnumValues":{} + }, + { + "DisplayName":"Enable Whitelist", + "Category":"Open World Server Settings", + "Description":"If enabled, allows only the usernames listed in Data/Whitelist.json to join the server", + "Keywords":"whitelist,players,UseWhitelist", + "FieldName":"UseWhitelist", + "InputType":"checkbox", + "ParamFieldName":"$.UseWhitelist", + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Enforce Mods", + "Category":"Open World Server Settings", + "Description":"If enabled, players will be forced to use the mods that have their DLLs in the \"Mods enforced\" directory. Otherwise, players can join with any mods they like", + "Keywords":"enforce,mods,EnforceMods", + "FieldName":"EnforceMods", + "InputType":"checkbox", + "ParamFieldName":"$.EnforceMods", + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Use Mod Blacklist", + "Category":"Open World Server Settings", + "Description":"If enabled, mods that have their DLLs in the \"Mods blacklisted\" directory cannot be used. This setting is usually used when Enforce Mods is disabled", + "Keywords":"mods,blacklist,UseModBlacklist", + "FieldName":"UseModBlacklist", + "InputType":"checkbox", + "ParamFieldName":"$.UseModBlacklist", + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Use Custom Difficulty", + "Category":"Open World Server Settings", + "Description":"If enabled, all players will be forced to use the difficulty settings set in Data/Difficulty.json. Make sure you give a value to every setting, or it will be at 0%", + "Keywords":"custom,difficulty,UseCustomDifficulty", + "FieldName":"UseCustomDifficulty", + "InputType":"checkbox", + "ParamFieldName":"$.UseCustomDifficulty", + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Allow Custom Scenarios", + "Category":"Open World Server Settings", + "Description":"If enabled, players will be allowed to create custom scenarios when creating their save on the server", + "Keywords":"custom,scenarios,AllowCustomScenarios", + "FieldName":"AllowCustomScenarios", + "InputType":"checkbox", + "ParamFieldName":"$.AllowCustomScenarios", + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Backup Interval", + "Category":"Open World Server Settings", + "Description":"Sets the time period between automatic backups", + "Keywords":"backup,interval,BackUpIntervalInHours", + "FieldName":"BackUpIntervalInHours", + "InputType":"number", + "ParamFieldName":"$.BackUpIntervalInHours", + "DefaultValue":"6.0", + "Placeholder":"6.0", + "Suffix":"hours", + "EnumValues":{} + }, + { + "DisplayName":"Server IP Binding", + "Category":"Open World Server Settings", + "Description":"If required, you can change the IP binding of the server by editing App.ApplicationIPBinding in GenericModule.kvp for the instance. Default is 0.0.0.0 (all IPs). Stop the instance (not just the server) first", + "Keywords":"ip,binding,local,address,localaddress", + "FieldName":"$ApplicationIPBinding", + "InputType":"hidden", + "ParamFieldName":"$.LocalAddress", + "IncludeInCommandLine":false, + "EnumValues":{} + }, + { + "DisplayName":"Enable Extra Console Logging", + "Category":"Open World Server Settings", + "Description":"If enabled, the server console will include additional logging output for developer or debugging purposes. Not recommended for normal use", + "Keywords":"dev,console,DevConsole", + "FieldName":"DevConsole", + "InputType":"checkbox", + "ParamFieldName":"$.DevConsole", + "DefaultValue":"false", + "EnumValues":{ + "False":"false", + "True":"true" + } + }, + { + "DisplayName":"Server Release Version", + "Category":"Open World Server Settings", + "Description":"Sets the [server release version] (https://github.com/D12-Dev/OpenWorld/releases) to install. Blank = latest. Back up configuration and update the server!", + "Keywords":"server,release,version", + "FieldName":"ReleaseVersion", + "InputType":"text", + "ParamFieldName":"ReleaseVersion", + "DefaultValue":"", + "Placeholder":"v1.0.4", + "EnumValues":{} + }, + { + "DisplayName":"Dotnet Version", + "Category":"Open World Server Settings", + "Description":"Sets the [ASP.NET Core 3.1 version](https://dotnet.microsoft.com/en-us/download/dotnet/3.1) to install. Back up configuration and update the server!", + "Keywords":"dotnet,version", + "FieldName":"DotnetVersion", + "InputType":"text", + "ParamFieldName":"DotnetVersion", + "DefaultValue":"3.1.32", + "Placeholder":"3.1.32", + "EnumValues":{} + }, + { + "DisplayName":"Bank Cash Per Tick", + "Category":"Open World Gameplay Settings", + "Description":"Sets how much banks make every tick (banks tick every 10 minutes)", + "Keywords":"bank,cash,tick,BankCashPerTick", + "FieldName":"BankCashPerTick", + "InputType":"number", + "ParamFieldName":"$.BankCashPerTick", + "DefaultValue":"50", + "Placeholder":"50", + "EnumValues":{} + }, + { + "DisplayName":"Maximum Cash In Bank For Tick", + "Category":"Open World Gameplay Settings", + "Description":"Sets the maximum amount of money that can be in the bank", + "Keywords":"maximum,cash,bank,tick,MaximumCashInBankForTick", + "FieldName":"MaximumCashInBankForTick", + "InputType":"number", + "ParamFieldName":"$.MaximumCashInBankForTick", + "DefaultValue":"10000", + "Placeholder":"10000", + "EnumValues":{} + }, + { + "DisplayName":"Raid Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of initiating a raid event", + "Keywords":"raid,cost,raidcost", + "FieldName":"RaidCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.RaidCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Infestation Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of triggering an infestation event", + "Keywords":"infestation,cost,infestationcost", + "FieldName":"InfestationCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.InfestationCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Mech Cluster Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of spawning a mech cluster", + "Keywords":"mech,cluster,cost,mechclustercost", + "FieldName":"MechClusterCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.MechClusterCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Toxic Fallout Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of initiating a toxic fallout event", + "Keywords":"toxic,fallout,cost,toxicfalloutcost", + "FieldName":"ToxicFalloutCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"ToxicFalloutCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Manhunter Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of triggering a manhunter pack event", + "Keywords":"manhunter,cost,manhuntercost", + "FieldName":"ManhunterCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.ManhunterCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Wanderer Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of welcoming a wanderer", + "Keywords":"wanderer,cost,wanderercost", + "FieldName":"WandererCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.WandererCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Farm Animals Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of receiving farm animals", + "Keywords":"farm,animals,cost,farmanimalscost", + "FieldName":"FarmAnimalsCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.FarmAnimalsCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Ship Chunk Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of sending a ship chunk", + "Keywords":"ship,chunk,cost,shipchunkcost", + "FieldName":"ShipChunkCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.ShipChunkCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Give Quest Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of giving a quest", + "Keywords":"give,quest,cost,givequestcost", + "FieldName":"GiveQuestCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.GiveQuestCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Trader Caravan Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of sending a trader caravan", + "Keywords":"trader,caravan,cost,tradercaravancost", + "FieldName":"TraderCaravanCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.TraderCaravanCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Silo Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of building a silo", + "Keywords":"silo,cost,silocost", + "FieldName":"SiloCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.SiloCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Marketplace Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of establishing a marketplace", + "Keywords":"market,place,marketplace,cost,marketplacecost", + "FieldName":"MarketplaceCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.MarketplaceCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Production Site Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of setting up a production site", + "Keywords":"production,site,cost,productionsitecost", + "FieldName":"ProductionSiteCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.ProductionSiteCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Wonder Structure Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of constructing a wonder", + "Keywords":"wonder,structure,cost,wondercost", + "FieldName":"WonderCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.WonderCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Bank Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of building a bank", + "Keywords":"bank,cost,bankcost", + "FieldName":"BankCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.BankCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Airport Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of constructing an airport", + "Keywords":"aeroport,airport,cost,aeroportcost", + "FieldName":"AeroportCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.AeroportCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Airport Usage Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of using an airport", + "Keywords":"aeroport,airport,usage,cost,aeroportusagecost", + "FieldName":"AeroportUsageCost", + "InputType":"number", + "ParamFieldName":"$.AeroportUsageCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Courier Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of establishing a courier station", + "Keywords":"courier,cost,couriercost", + "FieldName":"CourierCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.CourierCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Courier Usage Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of using a courier service", + "Keywords":"courier,usage,cost,courierusagecost", + "FieldName":"CourierUsageCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.CourierUsageCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + }, + { + "DisplayName":"Aid Usage Cost", + "Category":"Open World Gameplay Settings", + "Description":"Sets the cost of using aid", + "Keywords":"aid,usage,cost,aidusagecost", + "FieldName":"AidUsageCost", + "InputType":"number", + "MinValue":"0", + "ParamFieldName":"$.AidUsageCost", + "DefaultValue":"0", + "Placeholder":"0", + "Suffix":"silver" + } +] diff --git a/open-worldmetaconfig.json b/open-worldmetaconfig.json new file mode 100644 index 0000000..685c799 --- /dev/null +++ b/open-worldmetaconfig.json @@ -0,0 +1,17 @@ +[ + { + "ConfigFile":"Data/Config.json", + "AutoMap":true, + "ConfigType":"json" + }, + { + "ConfigFile":"Data/Deep Config.json", + "AutoMap":true, + "ConfigType":"json" + }, + { + "ConfigFile":"Data/Values.json", + "AutoMap":true, + "ConfigType":"json" + } +] diff --git a/open-worldserverconfig.json b/open-worldserverconfig.json new file mode 100644 index 0000000..c354adb --- /dev/null +++ b/open-worldserverconfig.json @@ -0,0 +1,14 @@ +{ + "LocalAddress": "0.0.0.0", + "ServerPort": 25555, + "ServerPassword": "", + "MaxPlayers": 10, + "PlayerVersion": "1.3", + "BackUpIntervalInHours": 6.0, + "EnforceMods": false, + "DevConsole": false, + "UseModBlacklist": false, + "UseCustomDifficulty": false, + "UseWhitelist": false, + "AllowCustomScenarios": false +} \ No newline at end of file diff --git a/open-worldserverdeepconfig.json b/open-worldserverdeepconfig.json new file mode 100644 index 0000000..0596daf --- /dev/null +++ b/open-worldserverdeepconfig.json @@ -0,0 +1,4 @@ +{ + "BankCashPerTick": 50, + "MaximumCashInBankForTick": 10000 +} \ No newline at end of file diff --git a/open-worldservervalues.json b/open-worldservervalues.json new file mode 100644 index 0000000..084b202 --- /dev/null +++ b/open-worldservervalues.json @@ -0,0 +1,22 @@ +{ + "RaidCost": 0, + "InfestationCost": 0, + "MechClusterCost": 0, + "ToxicFalloutCost": 0, + "ManhunterCost": 0, + "WandererCost": 0, + "FarmAnimalsCost": 0, + "ShipChunkCost": 0, + "GiveQuestCost": 0, + "TraderCaravanCost": 0, + "SiloCost": 0, + "MarketplaceCost": 0, + "ProductionSiteCost": 0, + "WonderCost": 0, + "BankCost": 0, + "AeroportCost": 0, + "CourierCost": 0, + "AeroportUsageCost": 0, + "CourierUsageCost": 0, + "AidUsageCost": 0 +} \ No newline at end of file diff --git a/open-worldupdates.json b/open-worldupdates.json new file mode 100644 index 0000000..2f3935a --- /dev/null +++ b/open-worldupdates.json @@ -0,0 +1,140 @@ +[ + { + "UpdateStageName":"Create Dotnet Directory", + "UpdateSourcePlatform":"All", + "UpdateSource":"CreateDirectory", + "UpdateSourceArgs":"{{$FullBaseDir}}dotnet" + }, + { + "UpdateStageName":"Create Data Directory", + "UpdateSourcePlatform":"All", + "UpdateSource":"CreateDirectory", + "UpdateSourceArgs":"{{$FullBaseDir}}Data" + }, + { + "UpdateStageName":"ASP.NET Core Runtime Download", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/{{DotnetVersion}}/aspnetcore-runtime-{{DotnetVersion}}-win-x64.zip", + "UpdateSourceTarget":"{{$FullBaseDir}}dotnet", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true + }, + { + "UpdateStageName":"ASP.NET Core Runtime Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/{{DotnetVersion}}/aspnetcore-runtime-{{DotnetVersion}}-linux-x64.tar.gz", + "UpdateSourceArch":"x86_64", + "UpdateSourceTarget":"{{$FullBaseDir}}dotnet", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true + }, + { + "UpdateStageName":"ASP.NET Core Runtime Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/{{DotnetVersion}}/aspnetcore-runtime-{{DotnetVersion}}-linux-arm64.tar.gz", + "UpdateSourceArch":"aarch64", + "UpdateSourceTarget":"{{$FullBaseDir}}dotnet", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true + }, + { + "UpdateStageName":"Open World Download", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"GithubRelease", + "UpdateSourceData":"win-x64.zip", + "UpdateSourceArgs":"D12-Dev/OpenWorld", + "UpdateSourceTarget":"{{$FullRootDir}}", + "UpdateSourceVersion":"{{ReleaseVersion}}", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true + }, + { + "UpdateStageName":"Open World Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"GithubRelease", + "UpdateSourceData":"linux-x64.zip", + "UpdateSourceArgs":"D12-Dev/OpenWorld", + "UpdateSourceTarget":"{{$FullRootDir}}", + "UpdateSourceVersion":"{{ReleaseVersion}}", + "UpdateSourceArch":"x86_64", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true + }, + { + "UpdateStageName":"Open World Download", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"GithubRelease", + "UpdateSourceData":"linux-arm64.zip", + "UpdateSourceArgs":"D12-Dev/OpenWorld", + "UpdateSourceTarget":"{{$FullRootDir}}", + "UpdateSourceVersion":"{{ReleaseVersion}}", + "UpdateSourceArch":"aarch64", + "UnzipUpdateSource":true, + "OverwriteExistingFiles":true, + "DeleteAfterExtract":true + }, + { + "UpdateStageName":"Pause Update Stages", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Pause", + "UpdateSourceArgs":"2" + }, + { + "UpdateStageName":"Move Server Files", + "UpdateSourcePlatform":"Windows", + "UpdateSource":"Executable", + "UpdateSourceData":"cmd.exe", + "UpdateSourceArgs":"/C xcopy /E /Y /I open-world\\win-x64\\* open-world\\server\\ && rmdir /Q /S open-world\\win-x64\\" + }, + { + "UpdateStageName":"Move Server Files", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"-c '\\cp -rf ./open-world/linux-x64/* ./open-world/server/ && chmod +x ./open-world/server/OpenWorldServer ; rm -rf ./open-world/linux-x64/'", + "UpdateSourceArch":"x86_64" + }, + { + "UpdateStageName":"Move Server Files", + "UpdateSourcePlatform":"Linux", + "UpdateSource":"Executable", + "UpdateSourceData":"/bin/bash", + "UpdateSourceArgs":"-c '\\cp -rf ./open-world/linux-arm64/* ./open-world/server/ && chmod +x ./open-world/server/OpenWorldServer ; rm -rf ./open-world/linux-arm64/'", + "UpdateSourceArch":"aarch64" + }, + { + "UpdateStageName":"Config.json File Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/open-worldserverconfig.json", + "UpdateSourceArgs":"Config.json", + "UpdateSourceTarget":"{{$FullBaseDir}}Data", + "OverwriteExistingFiles":false + }, + { + "UpdateStageName":"Deep Config.json File Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/open-worldserverdeepconfig.json", + "UpdateSourceArgs":"Deep Config.json", + "UpdateSourceTarget":"{{$FullBaseDir}}Data", + "OverwriteExistingFiles":false + }, + { + "UpdateStageName":"Values.json File Download", + "UpdateSourcePlatform":"All", + "UpdateSource":"FetchURL", + "UpdateSourceData":"https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/open-worldservervalues.json", + "UpdateSourceArgs":"Values.json", + "UpdateSourceTarget":"{{$FullBaseDir}}Data", + "OverwriteExistingFiles":false + } +]