{"meta":{"slug":"t-modloader","name":"T Modloader","category":"terraria","source":"pterodactyl","owner":"pterodactyl","repo":"game-eggs","branch":"main","path":"terraria/tmodloader/egg-t-modloader.json","rawUrl":"https://raw.githubusercontent.com/pterodactyl/game-eggs/main/terraria/tmodloader/egg-t-modloader.json","indexedAt":1792246788483},"egg":{"_comment":"DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO","meta":{"version":"PTDL_v2","update_url":null},"exported_at":"2024-04-24T17:27:29+02:00","name":"tModloader","author":"parker@parkervcp.com","description":"tModLoader is essentially a mod that provides a way to load your own mods without having to work directly with Terraria's source code itself. This means you can easily make mods that are compatible with other people's mods, save yourself the trouble of having to decompile and recompile Terraria.exe, and escape from having to understand all of the obscure \"intricacies\" of Terraria's source code. It is made to work for Terraria 1.3+.","features":null,"docker_images":{"Dotnet 8":"ghcr.io/ptero-eggs/yolks:dotnet_8","Dotnet 6":"ghcr.io/ptero-eggs/yolks:dotnet_6"},"file_denylist":[],"startup":"./tModLoaderServer -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -password \"{{SERVER_PASSWORD}}\" -motd \"{{MOTD}}\" -lang {{LANGUAGE}} -world ~/saves/Worlds/{{WORLD_NAME}}.wld -worldname {{WORLD_NAME}} -autocreate {{WORLD_SIZE}} -config serverconfig.txt -savedirectory ~/ -tmlsavedirectory ~/saves -modpath ~/mods","config":{"files":"{\r\n    \"serverconfig.txt\": {\r\n        \"parser\": \"file\",\r\n        \"find\": {\r\n            \"difficulty\": \"difficulty={{server.build.env.DIFFICULTY}}\"\r\n        }\r\n    }\r\n}","startup":"{\r\n    \"done\": \"Type 'help' for a list of commands\"\r\n}","logs":"{}","stop":"exit"},"scripts":{"installation":{"script":"#!/bin/bash\r\n# Vanilla tModloader Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y file \r\n\r\nif [ -z \"$GITHUB_USER\" ] && [ -z \"$GITHUB_OAUTH_TOKEN\" ] ; then\r\n    echo -e \"using anon api call\"\r\nelse\r\n    echo -e \"user and oauth token set\"\r\n    alias curl='curl -u $GITHUB_USER:$GITHUB_OAUTH_TOKEN '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/tmodloader/tmodloader/releases\" | jq -c '.[]' | head -1)\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/tmodloader/tmodloader/releases\" | jq '.[]')\r\n\r\n\r\nif [ -z \"$VERSION\" ] || [ \"$VERSION\" == \"latest\" ]; then\r\n    echo -e \"defaulting to latest release\"\r\n    DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i tmodloader.zip)\r\nelse\r\n    VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '. | select(.tag_name==$VERSION) | .tag_name')\r\n    if [ \"$VERSION\" == \"$VERSION_CHECK\" ]; then\r\n        if [[ \"$VERSION\" == v0* ]]; then\r\n            DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '. | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i linux | grep -i zip)\r\n        else\r\n            DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$VERSION\" '. | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i tmodloader.zip)\r\n        fi\r\n    else\r\n        echo -e \"defaulting to latest release\"\r\n        DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i tmodloader.zip)\r\n    fi\r\nfi\r\n\r\n## mkdir and cd to /mnt/server/\r\nmkdir -p /mnt/server\r\n\r\ncd /mnt/server || exit 5\r\n\r\n## download release\r\necho -e \"running: curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\"\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n    tar xzvf ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n    unzip -o ${DOWNLOAD_LINK##*/}\r\nelse\r\n    echo -e \"unknown filetype. Exiting\"\r\n    exit 2\r\nfi\r\n\r\nif [[ \"$VERSION\" == v0* ]]; then\r\n    chmod +x tModLoaderServer.bin.x86_64\r\n    chmod +x tModLoaderServer\r\nelse\r\n    #tiny startup script for backward compatibility\r\n    echo 'dotnet tModLoader.dll -server \"$@\"' > tModLoaderServer\r\n    chmod +x tModLoaderServer\r\nfi\r\n\r\necho -e \"Cleaning up extra files.\"\r\nrm -rf terraria-server-*.zip rm ${DOWNLOAD_LINK##*/}\r\nif [[ \"$VERSION\" != v0* ]]; then\r\n    rm -rf DedicatedServerUtils LaunchUtils PlatformVariantLibs tModPorter RecentGitHubCommits.txt *.bat *.sh\r\nfi\r\n\r\n## using config for difficulty as the startup parameter does not work -> config parser\r\nmv /mnt/server/serverconfig.txt /mnt/server/config.txt\r\nsed 's/#difficulty/difficulty/' /mnt/server/config.txt > /mnt/server/serverconfig.txt\r\nrm /mnt/server/config.txt\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"","container":"ghcr.io/ptero-eggs/installers:debian","entrypoint":"bash"}},"variables":[{"name":"World Name","description":"The name for the world file.","env_variable":"WORLD_NAME","default_value":"world","user_viewable":true,"user_editable":true,"rules":"required|string|max:20","field_type":"text"},{"name":"Max Players","description":"The maximum number of players a server will hold.","env_variable":"MAX_PLAYERS","default_value":"8","user_viewable":true,"user_editable":false,"rules":"required|numeric|digits_between:1,3","field_type":"text"},{"name":"World Size","description":"Defines the worlds size. 3 sizes 1 (small), 2 (medium), 3 (large).","env_variable":"WORLD_SIZE","default_value":"1","user_viewable":true,"user_editable":true,"rules":"required|string|in:1,2,3","field_type":"text"},{"name":"tModloader Version","description":"The version of tModloader that is to be used.","env_variable":"VERSION","default_value":"latest","user_viewable":true,"user_editable":true,"rules":"required|string|max:20","field_type":"text"},{"name":"GitHub User","description":"GitHub user to use for api calls.\r\n\r\nThis only needs to be set if you hit the GitHub API too often across multiple servers.","env_variable":"GITHUB_USER","default_value":"","user_viewable":false,"user_editable":false,"rules":"string|nullable","field_type":"text"},{"name":"GitHub OAuth Token","description":"This can be either an OAuth or a Personal Access Token.\r\n\r\nThis is required for the install is you set a user.","env_variable":"GITHUB_OAUTH_TOKEN","default_value":"","user_viewable":false,"user_editable":false,"rules":"string|nullable","field_type":"text"},{"name":"Difficulty","description":"Sets the difficulty of the world when using auto-create. Options: 0(normal), 1(expert), 2(master), 3(journey)","env_variable":"DIFFICULTY","default_value":"0","user_viewable":true,"user_editable":true,"rules":"required|string|in:0,1,2,3","field_type":"text"},{"name":"Server Password","description":"Server password for users to connect to your server.\r\nCan be empty for no password.","env_variable":"SERVER_PASSWORD","default_value":"","user_viewable":true,"user_editable":true,"rules":"nullable|string|max:20","field_type":"text"},{"name":"MOTD","description":"Message of the Day for the server","env_variable":"MOTD","default_value":"Please don’t cut the purple trees!","user_viewable":true,"user_editable":true,"rules":"required|string|max:40","field_type":"text"},{"name":"Language","description":"Sets the server language \r\n1:English, \r\n2:German, \r\n3:Italian, \r\n4:French, \r\n5:Spanish","env_variable":"LANGUAGE","default_value":"1","user_viewable":true,"user_editable":true,"rules":"required|string|in:1,2,3,4,5","field_type":"text"}]},"readme":"# tModLoader\n\n## From their [GitHub](https://github.com/tModLoader/tModLoader)\n\ntModLoader is essentially a mod that provides a way to load your own mods without having to work directly with Terraria's source code itself. This means you can easily make mods that are compatible with other people's mods, save yourself the trouble of having to decompile and recompile Terraria.exe, and escape from having to understand all of the obscure \"intricacies\" of Terraria's source code. It is made to work for Terraria 1.3+.\n\n## Install notes\n\nDue to rate limiting the console on the panel cannot keep up with the game console and the build will complete before the panel console may show it. Reloading the console will load it to the latest part of the log.\n\n## Minimum RAM warning\n\nYou may want to assign a minimum of 768 mb of RAM to a server as it will use around 650 mb to generate the world on the first start.\n\n## Server Ports\n\ntModloader, like Terraria, only requires a single port to run. The default is 7777\n\n| Port    | default |\n|---------|---------|\n| Game    | 7777    |\n\n### Plugins may require ports to be added to the server.\n\n## Extra Information\n\nIf you want to download mods in the console, the startup command has to be changed.\n\nNew startup:\n`./tModLoaderServer -ip 0.0.0.0 -port ${SERVER_PORT} -maxplayers ${MAX_PLAYERS} -savedirectory ~/ -tmlsavedirectory ~/saves -modpath ~/mods`\n\nThis will remove the autocreate function, and will thus allow you to download mods and generate world.\nAfterwards, you can change it back with the correct world name to start automatic. Word name is set in the configuration panel."}