From e318c423f6a7655034e439843070dbd50074e5ef Mon Sep 17 00:00:00 2001 From: Jasper Borsboom Date: Wed, 23 Mar 2022 18:26:43 +0100 Subject: [PATCH] Add tModLoader module (#90) * Add tModLoader module * Remove diplicate envvars line * Add seed as formattedarg * lowercase names * lowercase fetch * use kvp merging * fix capitalisation * add adminmethod to kvp * fix case typo, remove unused ports * include world in commandline --- tmodloader.kvp | 61 ++++++++ tmodloaderconfig.json | 300 +++++++++++++++++++++++++++++++++++++ tmodloadermetaconfig.json | 8 + tmodloaderserverconfig.txt | 85 +++++++++++ 4 files changed, 454 insertions(+) create mode 100644 tmodloader.kvp create mode 100644 tmodloaderconfig.json create mode 100644 tmodloadermetaconfig.json create mode 100644 tmodloaderserverconfig.txt diff --git a/tmodloader.kvp b/tmodloader.kvp new file mode 100644 index 0000000..bbc9298 --- /dev/null +++ b/tmodloader.kvp @@ -0,0 +1,61 @@ +Meta.DisplayName=tModLoader +Meta.Description=tModLoader server using Steam or GitHub +Meta.Author=JasperFirecai2, EnderWolf, IceOfWraith +Meta.MetaConfigManifest=tmodloadermetaconfig.json +Meta.ConfigRoot=tmodloader.kvp +Meta.ConfigManifest=tmodloaderconfig.json +Meta.DisplayImageSource=steam:1281930 +Meta.EndpointURIFormat=steam://connect/{0} +Meta.OS=3 +Meta.URL=https://store.steampowered.com/app/1281930/tModLoader/ +Meta.MinAMPVersion= +App.DisplayName=tModLoader +App.RootDir=./tModLoader/ +App.BaseDirectory=./tModLoader/serverfiles +App.ExecutableWin=serverfiles/tModLoaderServer.exe +App.ExecutableLinux=serverfiles/tModLoaderServer +App.WorkingDir=serverfiles +App.EnvironmentVariables={"LD_LIBRARY_PATH": "./linux64:%LD_LIBRARY_PATH%", "SteamAppId": "1281930"} +App.LinuxCommandLineArgs= +App.WindowsCommandLineArgs= +App.CommandLineArgs=-server {{$FormattedArgs}} -players {{$MaxUsers}} -port {{$ApplicationPort1}} -config {{Config}} +App.CommandLineParameterFormat=-{0} {1} +App.AppSettings={"Config":"tmodloaderserverconfig.txt"} +App.CommandLineVars={} +App.ExitMethod=String +App.ExitTimeout=30 +App.ExitString=exit +App.ExitFile=app_exit.lck +App.HasWriteableConsole=True +App.HasReadableConsole=True +App.AdminMethod=STDIO +App.SupportsLiveSettingsChanges=False +App.LiveSettingChangeCommandFormat=set {0} "{1}" +App.ApplicationIPBinding=0.0.0.0 +App.ApplicationPort1=7777 +App.ApplicationPort2=0 +App.ApplicationPort3=0 +App.RemoteAdminPort=0 +App.MaxUsers=8 +App.UpdateSources=[{"UpdateStageName": "Config Template Download","UpdateSourcePlatform": "All","UpdateSource": "FetchURL","UpdateSourceData": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/tmodloaderserverconfig.txt","UpdateSourceTarget": "serverfiles","OverwriteExistingFiles": false},{"UpdateStageName": "SteamCMD tModLoader","UpdateSourcePlatform": "All","UpdateSource": "SteamCMD","UpdateSourceData": "1281930","UpdateSourceTarget": "serverfiles","UpdateSourceConditionSetting":"Source","UpdateSourceConditionValue":"Steam"},{"UpdateStageName": "GitHub tModLoader Windows","UpdateSourcePlatform": "Windows","UpdateSource": "FetchURLfromJQ","UpdateSourceData": "https://api.github.com/repos/tModLoader/tModLoader/releases/latest","UpdateSourceArgs": "$.assets[?(@.name =~ /tModLoader\\.Windows\\..+\\.zip/g)].browser_download_url","UnzipUpdateSource": true,"OverwriteExistingFiles": true,"UpdateSourceConditionSetting": "Source","UpdateSourceConditionValue": "GitHub","UpdateSourceTarget": "serverfiles"},{"UpdateStageName": "GitHub tModLoader Linux","UpdateSourcePlatform": "Linux","UpdateSource": "FetchURLfromJQ","UpdateSourceData": "https://api.github.com/repos/tModLoader/tModLoader/releases/latest","UpdateSourceArgs": "$.assets[?(@.name =~ /tModLoader\\.Linux\\..+\\.zip/g)].browser_download_url","UnzipUpdateSource": true,"OverwriteExistingFiles": true,"UpdateSourceConditionSetting": "Source","UpdateSourceConditionValue": "GitHub","UpdateSourceTarget": "serverfiles"}] +App.Compatibility=None +App.SteamUpdateAnonymousLogin=False +App.SteamForceLoginPrompt=False +App.RapidStartup=False +App.SupportsUniversalSleep=False +App.WakeupMode=Any +App.ApplicationReadyMode=RegexMatch +App.TemplateMatchRegex={{(\$?[\w]+)}} +Console.AppReadyRegex=^Listening on port (\d+)$ +Console.UserJoinRegex=^(?.+?) has joined\.$ +Console.UserLeaveRegex=^(?.+?) has left\.$ +Console.UserChatRegex=^<(?.+?)> (?.+)$ +Console.UpdateAvailableRegex=^\[\d\d:\d\d:\d\d\] \[INFO\] A new server update is available! v[\d\.]+.$ +Console.ThrowawayMessageRegex=^??Error Logging Enabled.$ +Console.SuppressLogAtStart=False +Console.UserActions={} +Limits.SleepMode=True +Limits.SleepOnStart=False +Limits.SleepDelayMinutes=5 +Limits.DozeDelay=2 +Limits.AutoRetryCount=5 \ No newline at end of file diff --git a/tmodloaderconfig.json b/tmodloaderconfig.json new file mode 100644 index 0000000..79ccd2f --- /dev/null +++ b/tmodloaderconfig.json @@ -0,0 +1,300 @@ +[ + { + "DisplayName": "World Seed", + "Category": "Terraria Generator settings", + "Keywords": "seed new world", + "Description": "Which world seed to use when generating a new world", + "FieldName": "Seed", + "ParamFieldName": "seed", + "placeholder": "PoweredByAMP", + "suffix": "", + "InputType": "text", + "IncludeInCommandLine": true, + "DefaultValue": "" + }, + { + "DisplayName": "World Size", + "Category": "Terraria Generator settings", + "Keywords": "size new world", + "Description": "Set the Size of the World", + "FieldName": "WorldSize", + "ParamFieldName": "autocreate", + "IncludeInCommandLine": true, + "InputType": "enum", + "EnumValues": { + "1": "1 - Small World", + "2": "2 - Medium World", + "3": "3 - Large World" + }, + "DefaultValue": "3" + }, + { + "DisplayName": "Difficulty", + "Category": "Terraria Generator settings", + "Keywords": "difficulty new world journey expert master", + "Description": "The difficulty of a newly generated world", + "FieldName": "Difficulty", + "ParamFieldName": "difficulty", + "InputType": "enum", + "EnumValues": { + "0": "Classic", + "1": "Expert" + }, + "IncludeInCommandLine": false, + "DefaultValue": "0" + }, + { + "DisplayName": "Created World Name", + "Category": "Terraria Generator settings", + "Keywords": "name new world", + "Description": "How to name the new world if one is generated. Make sure the World name under Terraria Server Settings matches this name if you want to load it in subsequent starts.", + "FieldName": "WorldName", + "ParamFieldName": "worldname", + "placeholder": "World", + "suffix": "", + "InputType": "text", + "IncludeInCommandLine": true, + "DefaultValue": "world" + }, + { + "DisplayName": "Backup count", + "Category": "Terraria Generator settings", + "Keywords": "backup backups count world rollback", + "Description": "Sets the number of rolling world backups to keep", + "FieldName": "Backups", + "ParamFieldName": "worldrollbackstokeep", + "placeholder": "some integer", + "suffix": "Backups", + "InputType": "number", + "IncludeInCommandLine": false, + "DefaultValue": 2 + }, + { + "DisplayName": "Mod Path", + "Category": "Terraria ModLoader settings", + "Keywords": "folder path mod mods tmodloader", + "Description": "Where tModLoader will read mods from. [instructions](https://github.com/jasperfirecai2/amp-templates/wiki/Managing-mods-with-tmodloader)", + "FieldName": "ModPath", + "ParamFieldName": "modpath", + "placeholder": "ModLoader/Mods", + "suffix": "", + "InputType": "text", + "IncludeInCommandLine": false, + "DefaultValue": "ModLoader/Mods" + }, + { + "DisplayName": "Mod Pack", + "Category": "Terraria ModLoader settings", + "Keywords": "pack mod mods modpack tmodloader", + "Description": "Which modpack to load (does not install mods for you!)", + "FieldName": "ModPack", + "ParamFieldName": "modpack", + "placeholder": "modpack", + "suffix": ".json", + "InputType": "text", + "IncludeInCommandLine": false, + "DefaultValue": "" + }, + { + "DisplayName": "Update Source", + "Category": "Terraria ModLoader settings", + "Keywords": "download source steam github tmodloader", + "Description": "Select where to obtain tModLoader. Steam requires you to own [Terraria](https://store.steampowered.com/app/105600/Terraria/) & [tModLoader](https://store.steampowered.com/app/1281930/tModLoader/) on your account and accept tModLoader's ToS by installing it as a game to a device you can login from.", + "FieldName": "Source", + "IncludeInCommandLine": false, + "InputType": "enum", + "EnumValues": { + "GitHub": "GitHub", + "Steam": "Steam" + }, + "DefaultValue": "GitHub" + }, + { + "DisplayName": "World Path", + "Category": "Terraria Server settings", + "Keywords": "folder path world saves savegame worlds", + "Description": "The relative path to save worlds in", + "FieldName": "WorldPath", + "ParamFieldName": "worldpath", + "placeholder": "ModLoader/Worlds", + "suffix": "", + "InputType": "text", + "IncludeInCommandLine": false, + "DefaultValue": "ModLoader/Worlds" + }, + { + "DisplayName": "World Name", + "Category": "Terraria Server settings", + "Keywords": "name world worldname load boot", + "Description": "Which world to load on boot", + "FieldName": "World", + "ParamFieldName": "world", + "placeholder": "ModLoader/Worlds/world.wld", + "suffix": "", + "InputType": "text", + "IncludeInCommandLine": true, + "DefaultValue": "ModLoader/Worlds/world.wld" + }, + { + "DisplayName": "Max Players", + "Category": "Terraria Server settings", + "Keywords": "players max maximum", + "Description": "The maximum players in the server", + "FieldName": "$MaxUsers", + "ParamFieldName": "maxplayers", + "placeholder": "8", + "suffix": "Users", + "InputType": "number", + "IncludeInCommandLine": false, + "DefaultValue": 8 + }, + { + "DisplayName": "Password", + "Category": "Terraria Server settings", + "Keywords": "password pw security", + "Description": "The password players must enter to join", + "FieldName": "Password", + "ParamFieldName": "password", + "placeholder": "Password123", + "suffix": "", + "InputType": "password", + "IncludeInCommandLine": false, + "DefaultValue": "" + }, + { + "DisplayName": "Ban List", + "Category": "Terraria Server settings", + "Keywords": "ban banlist bans security", + "Description": "Where to store the ban list", + "FieldName": "BanList", + "ParamFieldName": "banlist", + "placeholder": "somefilename.txt", + "suffix": "", + "InputType": "text", + "IncludeInCommandLine": false, + "DefaultValue": "banlist.txt" + }, + { + "DisplayName": "Motd", + "Category": "Terraria Server settings", + "Keywords": "motd motto message welcome", + "Description": "The motto/message of the day", + "FieldName": "Motd", + "ParamFieldName": "motd", + "placeholder": "Welcome!", + "suffix": "", + "InputType": "text", + "IncludeInCommandLine": false, + "DefaultValue": "Welcome!" + }, + { + "DisplayName": "Language", + "Category": "Terraria Server settings", + "Keywords": "language lang", + "Description": "The language of your server", + "FieldName": "Language", + "ParamFieldName": "language", + "InputType": "enum", + "EnumValues": { + "en-US": "English", + "de-DE": "German", + "it-IT": "Italian", + "fr-FR": "French", + "es-ES": "Spanish", + "ru-RU": "Russian", + "zh-Hans": "Chinese", + "pt-PT": "Portuguese", + "pt-BR": "Portuguese (Brazil)", + "pl-PL": "Polish" + }, + "IncludeInCommandLine": false, + "DefaultValue": "en-US" + }, + { + "DisplayName": "Priority", + "Category": "Terraria Server settings", + "Keywords": "priority process prio performance", + "Description": "The process priority", + "FieldName": "Priority", + "ParamFieldName": "priority", + "InputType": "enum", + "EnumValues": { + "0": "Realtime", + "1": "High", + "2": "AboveNormal", + "3": "Normal", + "4": "BelowNormal", + "5": "Idle" + }, + "IncludeInCommandLine": false, + "DefaultValue": "1" + }, + { + "DisplayName": "NPC Stream", + "Category": "Terraria Server settings", + "Keywords": "npc stream skipping lag bandwidth performance", + "Description": "Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off.", + "FieldName": "NPCStream", + "ParamFieldName": "npcstream", + "placeholder": "60", + "suffix": "", + "InputType": "number", + "IncludeInCommandLine": false, + "DefaultValue": 60 + }, + { + "DisplayName": "Slower Liquids", + "Category": "Terraria Server settings", + "Keywords": "slow liquid liquids slower lag performance", + "Description": "Reduces maximum liquids moving at the same time. If enabled may reduce lag but liquids may take longer to settle.", + "FieldName": "Slowliquids", + "ParamFieldName": "slowliquids", + "InputType": "checkbox", + "IncludeInCommandLine": false, + "EnumValues": { + "False": "0", + "True": "1" + }, + "DefaultValue": "1" + }, + { + "DisplayName": "Cheat Protection", + "Category": "Terraria Server settings", + "Keywords": "security cheat cheats auto kick spam", + "Description": "Enable/Disable additional cheat protection. This may cause unwanted automatic kicks", + "FieldName": "Secure", + "ParamFieldName": "secure", + "InputType": "checkbox", + "IncludeInCommandLine": false, + "EnumValues": { + "False": "0", + "True": "1" + }, + "DefaultValue": "0" + }, + { + "DisplayName": "Disable Announcement Box", + "Category": "Terraria Server settings", + "Keywords": "announcement box disable griefing", + "Description": "Enable/Disable the text announcements Announcement Box makes when pulsed from wire.", + "FieldName": "DisableAnnouncementBox", + "InputType": "checkbox", + "IncludeInCommandLine": true, + "ParamFieldName": "disableannouncementbox", + "IsFlagArgument": true, + "DefaultValue": "-disableannouncementbox" + }, + { + "DisplayName": "Announcement Box Range", + "Category": "Terraria Server settings", + "Keywords": "announcement box range griefing", + "Description": "Sets the announcement box text messaging range in pixels, -1 for serverwide announcements.", + "FieldName": "AnnouncementBoxRange", + "placeholder": "-1", + "suffix": "Pixels", + "InputType": "number", + "IncludeInCommandLine": true, + "ParamFieldName": "announcementboxrange", + "DefaultValue": "-1" + } +] \ No newline at end of file diff --git a/tmodloadermetaconfig.json b/tmodloadermetaconfig.json new file mode 100644 index 0000000..b858851 --- /dev/null +++ b/tmodloadermetaconfig.json @@ -0,0 +1,8 @@ +[ + { + "ConfigFile": "tmodloaderserverconfig.txt", + "AutoMap": true, + "ConfigType": "kvp", + "ConfigFormat": "{0}={1}" + } +] \ No newline at end of file diff --git a/tmodloaderserverconfig.txt b/tmodloaderserverconfig.txt new file mode 100644 index 0000000..1357eb7 --- /dev/null +++ b/tmodloaderserverconfig.txt @@ -0,0 +1,85 @@ +#serverconfig.txt + +#This file is automatically generated by AMP. All uncommented settings are controlled by AMP. +#Any changes to uncommented settings will be lost when starting or updating the application +#Please use the AMP control panel to change these +#If you wish to configure other settings (those that are commented), you can do so manually +#But any future updates may overwrite these changes + +#the following is a list of available command line parameters: + +#-config Specifies the configuration file to use. +#-port Specifies the port to listen on. +#-players / -maxplayers Sets the max number of players +#-pass / -password Sets the server password +#-world Load a world and automatically start the server. +#-autocreate <#> Creates a world if none is found in the path specified by -world. World size is specified by: 1(small), 2(medium), and 3(large). +#-banlist Specifies the location of the banlist. Defaults to "banlist.txt" in the working directory. +#-worldname Sets the name of the world when using -autocreate. +#-secure Adds addition cheat protection to the server. +#-noupnp Disables automatic port forwarding +#-steam Enables Steam Support +#-lobby or Allows friends to join the server or sets it to private if Steam is enabled +#-ip Sets the IP address for the server to listen on +#-forcepriority Sets the process priority for this task. If this is used the "priority" setting below will be ignored. +#-disableannouncementbox Disables the text announcements Announcement Box makes when pulsed from wire. +#-announcementboxrange Sets the announcement box text messaging range in pixels, -1 for serverwide announcements. +#-seed Specifies the world seed when using -autocreate + +#remove the # in front of commands to enable them. + +#Load a world and automatically start the server. +world={{world}} + +#Creates a new world if none is found. World size is specified by: 1(small), 2(medium), and 3(large). +autocreate={{autocreate}} + +#Sets the world seed when using autocreate +seed={{seed}} + +#Sets the name of the world when using autocreate +worldname={{worldname}} + +#Sets the difficulty of the world when using autocreate 0(classic), 1(expert), 2(master), 3(journey) +difficulty={{Difficulty}} + +#Sets the max number of players allowed on a server. Value must be between 1 and 255 +maxplayers={{$MaxUsers}} + +#Set the server password +password={{Password}} + +#Set the message of the day +motd={{Motd}} + +#Sets the folder where world files will be stored +worldpath={{WorldPath}} + +#Path for mods +modpath={{ModPath}} +modpack={{ModPack}} + +#Sets the number of rolling world backups to keep +worldrollbackstokeep={{Backups}} + +#The location of the banlist. Defaults to "banlist.txt" in the working directory. +banlist={{BanList}} + +#Adds addition cheat protection. +secure={{Secure}} + +#Sets the server language from its language code. +#English = en-US, German = de-DE, Italian = it-IT, French = fr-FR, Spanish = es-ES, Russian = ru-RU, Chinese = zh-Hans, Portuguese = pt-BR, Polish = pl-PL, +language={{Language}} + +#Automatically forward ports with uPNP +#upnp=1 + +#Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off. +npcstream={{NpcStream}} + +#Default system priority 0:Realtime, 1:High, 2:AboveNormal, 3:Normal, 4:BelowNormal, 5:Idle +priority={{Priority}} + +#Reduces maximum liquids moving at the same time. If enabled may reduce lags but liquids may take longer to settle. +slowliquids={{Slowliquids}} \ No newline at end of file