Add Terraria module (#91)

* Add Terraria module

* Remove duplicate envvars line

* Update description, add seed as formattedarg

* lowercase

* use kvp merging

* Add adminmethod to KVP

* Fix case typo, clean up ports
This commit is contained in:
Jasper Borsboom 2022-03-20 21:15:13 +01:00 committed by GitHub
parent 528b431f12
commit 5f7c8a7954
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 655 additions and 0 deletions

61
terraria.kvp Normal file
View File

@ -0,0 +1,61 @@
Meta.DisplayName=Terraria
Meta.Description=Terraria generic module with support for various options.
Meta.Author=JasperFirecai2, EnderWolf, IceOfWraith
Meta.MetaConfigManifest=terrariametaconfig.json
Meta.ConfigRoot=terraria.kvp
Meta.ConfigManifest=terrariaconfig.json
Meta.DisplayImageSource=steam:105600
Meta.EndpointURIFormat=steam://connect/{0}
Meta.OS=3
Meta.URL=https://store.steampowered.com/app/105600/Terraria/
Meta.MinAMPVersion=
App.DisplayName=Terraria
App.RootDir=./Terraria/
App.BaseDirectory=./Terraria/serverfiles
App.ExecutableWin=serverfiles/TerrariaServer.exe
App.ExecutableLinux=serverfiles/TerrariaServer
App.WorkingDir=serverfiles
App.EnvironmentVariables={"LD_LIBRARY_PATH": "./linux64:%LD_LIBRARY_PATH%", "SteamAppId": "105600"}
App.LinuxCommandLineArgs=
App.WindowsCommandLineArgs=
App.CommandLineArgs=-server {{$FormattedArgs}} -players {{$MaxUsers}} -port {{$ApplicationPort1}} -config {{Config}}
App.CommandLineParameterFormat=-{0} {1}
App.AppSettings={"Config":"terrariaserverconfig.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/terrariaserverconfig.txt","UpdateSourceTarget": "serverfiles","OverwriteExistingFiles": false},{"UpdateStageName": "SteamCMD Terraria","UpdateSourcePlatform": "All","UpdateSource": "SteamCMD","UpdateSourceData": "105600","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=^(?<username>.+?) has joined\.$
Console.UserLeaveRegex=^(?<username>.+?) has left\.$
Console.UserChatRegex=^<(?<username>.+?)> (?<message>.+)$
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

488
terrariaconfig.json Normal file
View File

@ -0,0 +1,488 @@
[
{
"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",
"2": "Master",
"3": "Journey"
},
"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": "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": "Worlds",
"suffix": "",
"InputType": "text",
"IncludeInCommandLine": false,
"DefaultValue": "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": "Worlds/world.wld",
"suffix": "",
"InputType": "text",
"IncludeInCommandLine": true,
"DefaultValue": "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"
},
{
"DisplayName": "Freeze time",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power freeze time stop clock",
"Description": "Journey mode power permissions for every individual power. 'Host' is only relevant when using steam integration, which is not supported by AMP by default.",
"FieldName": "time_setfrozen",
"ParamFieldName": "journeypermission_time_setfrozen",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Set to Dawn",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power dawn time clock",
"FieldName": "time_setdawn",
"ParamFieldName": "journeypermission_time_setdawn",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Set to Noon",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power noon time clock",
"FieldName": "time_setnoon",
"ParamFieldName": "journeypermission_time_setnoon",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Set to Dusk",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power dusk time clock",
"FieldName": "time_setdusk",
"ParamFieldName": "journeypermission_time_setdusk",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Set to Midnight",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power midnight time clock",
"FieldName": "time_setmidnight",
"ParamFieldName": "journeypermission_time_setmidnight",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "God Mode",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power god godmode",
"FieldName": "godmode",
"ParamFieldName": "journeypermission_godmode",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Set wind intensity",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power wind set strength",
"FieldName": "wind_setstrength",
"ParamFieldName": "journeypermission_wind_setstrength",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Set rain intensity",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power rain set strength",
"FieldName": "rain_setstrength",
"ParamFieldName": "journeypermission_rain_setstrength",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Change game speed",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power speed time speedup",
"FieldName": "time_setspeed",
"ParamFieldName": "journeypermission_time_setspeed",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Lock rain conditions",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power rain lock freeze",
"FieldName": "rain_setfrozen",
"ParamFieldName": "journeypermission_rain_setfrozen",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Lock Wind conditions",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power wind lock freeze",
"FieldName": "wind_setfrozen",
"ParamFieldName": "journeypermission_wind_setfrozen",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Placement Range",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power placement range reach tile",
"FieldName": "increaseplacementrange",
"ParamFieldName": "journeypermission_increaseplacementrange",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Difficulty changing",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power difficulty",
"FieldName": "setdifficulty",
"ParamFieldName": "journeypermission_setdifficulty",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Biome/Evil Spreading",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power evil spread biome crimson hallow corrupted",
"FieldName": "biomespread_setfrozen",
"ParamFieldName": "journeypermission_biomespread_setfrozen",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
},
{
"DisplayName": "Spawn Rate",
"Category": "Terraria Journey Permissions",
"Keywords": "journey mode permissions power spawn rate",
"FieldName": "setspawnrate",
"ParamFieldName": "journeypermission_setspawnrate",
"InputType": "enum",
"EnumValues": {
"0": "Locked for everyone",
"1": "Can only be changed by host",
"2": "Can be changed by everyone"
},
"IncludeInCommandLine": false,
"DefaultValue": "2"
}
]

8
terrariametaconfig.json Normal file
View File

@ -0,0 +1,8 @@
[
{
"ConfigFile": "terrariaserverconfig.txt",
"AutoMap": true,
"ConfigType": "kvp",
"ConfigFormat": "{0}={1}"
}
]

98
terrariaserverconfig.txt Normal file
View File

@ -0,0 +1,98 @@
#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 <config file> Specifies the configuration file to use.
#-port <port number> Specifies the port to listen on.
#-players <number> / -maxplayers <number> Sets the max number of players
#-pass <password> / -password <password> Sets the server password
#-world <world file> 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 <path> Specifies the location of the banlist. Defaults to "banlist.txt" in the working directory.
#-worldname <world name> 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 <friends> or <private> Allows friends to join the server or sets it to private if Steam is enabled
#-ip <ip address> Sets the IP address for the server to listen on
#-forcepriority <priority> 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 <number> Sets the announcement box text messaging range in pixels, -1 for serverwide announcements.
#-seed <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}}
#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}}
#Journey mode power permissions for every individual power. 0: Locked for everyone, 1: Can only be changed by host, 2: Can be changed by everyone
journeypermission_time_setfrozen={{time_setfrozen}}
journeypermission_time_setdawn={{time_setdawn}}
journeypermission_time_setnoon={{time_setnoon}}
journeypermission_time_setdusk={{time_setdusk}}
journeypermission_time_setmidnight={{time_setmidnight}}
journeypermission_godmode={{godmode}}
journeypermission_wind_setstrength={{wind_setstrength}}
journeypermission_rain_setstrength={{rain_setstrength}}
journeypermission_time_setspeed={{time_setspeed}}
journeypermission_rain_setfrozen={{rain_setfrozen}}
journeypermission_wind_setfrozen={{wind_setfrozen}}
journeypermission_increaseplacementrange={{increaseplacementrange}}
journeypermission_setdifficulty={{setdifficulty}}
journeypermission_biomespread_setfrozen={{biomespread_setfrozen}}
journeypermission_setspawnrate={{setspawnrate}}