Skip to content

Conversation

@08Robfin
Copy link

This is my first template submission, so apologies if anything is slightly off or could be improved.

After several hours of testing and troubleshooting, this setup is now fully working on my end and reliably installs and runs a Hytale dedicated server in PufferPanel, including proper authentication flow.

The template is designed to be as simple as possible, fill in the variables, install, authenticate, and the server is ready for players.

Feedback and improvements are very welcome!

Added a README file with setup instructions for Hytale server template.
@Zephira58
Copy link

Zephira58 commented Jan 13, 2026

Just a heads up you're using python to extract the file and not every device has python3 installed by default, i suggest replacing it with "unzip" as its built into all major Linux distros by default. And avoids unnecessary installations of python while ensuring compatibility.

Copy link

@Zephira58 Zephira58 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix: Updated extraction method
Migrated from python to unzip to ensure ease of compatibility and minimal installs.

@08Robfin
Copy link
Author

Fix: Updated extraction method
Migrated from python to unzip to ensure ease of compatibility and minimal installs.

Did you get it to work? I tried using unzip, and I'm not sure why, but I did not get it to work.

@Zephira58
Copy link

Fix: Updated extraction method
Migrated from python to unzip to ensure ease of compatibility and minimal installs.

Did you get it to work? I tried using unzip, and I'm not sure why, but I did not get it to work.

Me and 2 other people tested it and it worked perfectly fine. Its why i made the comment.
Maybe its something to do with your environment?

Copy link

@Zephira58 Zephira58 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested, working change. Nice work :>

Added requirements for binaries and OS.
@Toon2400
Copy link

instead of booting with ./start.sh you should replace it with ../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30 so the statistics tab is accurate, assuming it was installed with your installer, java would've installed

Copy link

@Zephira58 Zephira58 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-snip-

(posting as a code suggestion for easy acceptance)

@Zephira58
Copy link

instead of booting with ./start.sh you should replace it with ../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30 so the statistics tab is accurate, assuming it was installed with your installer, java would've installed

I didn't actually catch that one, nice call out :>

Copy link

@Zephira58 Zephira58 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-Snip-

(i'm still learning sorry, see next comment)

Copy link

@Zephira58 Zephira58 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here you go, a request to change as per @Toon2400 and their suggestion.

I'm still a bit new when it comes to requesting changes as i normally make my own PRs, not help with others. Sorry for the extra bit of spam on the pr still trying to figure out the specifics. Just trying to help :> and make your day easier.

@08Robfin 08Robfin requested a review from Zephira58 January 14, 2026 19:46
Copy link

@Zephira58 Zephira58 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-snip-

Copy link

@Zephira58 Zephira58 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think i got the review feature working now. sorry about that.

"type": "command"
},
{
"target": "start.sh",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"target": "start.sh",

},
{
"target": "start.sh",
"text": "#!/bin/bash\n\nJAVA_BIN=\"./local_java/bin/java\"\n\necho \"--- LAUNCHING WITH LOCAL JAVA ---\"\n\nif [ ! -f \"$JAVA_BIN\" ]; then\n echo \"CRITICAL ERROR: local Java missing!\"\n exit 1\nfi\n\n$JAVA_BIN -version\n\ncd Server\n\n../$JAVA_BIN -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"text": "#!/bin/bash\n\nJAVA_BIN=\"./local_java/bin/java\"\n\necho \"--- LAUNCHING WITH LOCAL JAVA ---\"\n\nif [ ! -f \"$JAVA_BIN\" ]; then\n echo \"CRITICAL ERROR: local Java missing!\"\n exit 1\nfi\n\n$JAVA_BIN -version\n\ncd Server\n\n../$JAVA_BIN -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",

"target": "start.sh",
"text": "#!/bin/bash\n\nJAVA_BIN=\"./local_java/bin/java\"\n\necho \"--- LAUNCHING WITH LOCAL JAVA ---\"\n\nif [ ! -f \"$JAVA_BIN\" ]; then\n echo \"CRITICAL ERROR: local Java missing!\"\n exit 1\nfi\n\n$JAVA_BIN -version\n\ncd Server\n\n../$JAVA_BIN -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",
"type": "writefile"
},

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
},

},
{
"commands": [
"chmod +x start.sh"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"chmod +x start.sh"

{
"commands": [
"chmod +x start.sh"
],

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
],

"chmod +x start.sh"
],
"type": "command"
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
}

],
"run": {
"stop": "/stop",
"command": "./start.sh",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"command": "./start.sh",
"command": "../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",

08Robfin and others added 2 commits January 14, 2026 21:13
Co-authored-by: Zephira <zephira58@protonmail.com>
Co-authored-by: Zephira <zephira58@protonmail.com>
@08Robfin
Copy link
Author

I think i got the review feature working now. sorry about that.

i have tried applying, i dont know why, but it wont. Im not very used to github.

@Zephira58
Copy link

Zephira58 commented Jan 14, 2026

I think i got the review feature working now. sorry about that.

i have tried applying, i dont know why, but it wont. Im not very used to github.

Here i'll just send you the josn to copy and paste :>

I haven't tested it yet so make sure you do when you can before accepting.

{
  "name": "Hytale",
  "display": "Hytale Server",
  "type": "none",
  "install": [
    {
      "commands": [
        "echo '--- MANUAL INSTALL START ---'",
        "echo '1. Downloading Hytale Downloader...'",
        "curl -L -o hytale-downloader.zip https://downloader.hytale.com/hytale-downloader.zip",
        "unzip -o hytale-downloader.zip",
        "chmod +x hytale-downloader-linux-amd64",
        "mv hytale-downloader-linux-amd64 hytale-downloader",
        "rm hytale-downloader.zip",
        "echo '2. Downloading Game Files...'",
        "./hytale-downloader -skip-update-check -download-path game.zip",
        "unzip -o game.zip",
        "echo '3. Downloading Java 25...'",
        "curl -L -o java25.tar.gz https://api.adoptium.net/v3/binary/latest/25/ga/linux/x64/jdk/hotspot/normal/eclipse",
        "mkdir -p local_java",
        "tar -xzf java25.tar.gz -C local_java --strip-components=1",
        "chmod +x local_java/bin/java",
        "rm java25.tar.gz",
        "echo '--- INSTALL COMPLETE ---'"
      ],
      "type": "command"
    }
  ],
  "run": {
    "stop": "/stop",
    "command": "../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",
    "workingDirectory": "",
    "pre": [],
    "post": [],
    "environmentVars": {
      "port": "${port}",
      "ram": "${ram}"
    }
  },
  "data": {
    "port": {
      "type": "integer",
      "display": "Port",
      "value": 5520
    },
    "ram": {
      "type": "integer",
      "display": "RAM (GB)",
      "value": 4
    }
  },
  "environment": {
    "type": "standard"
  },
  "supportedEnvironments": [
    {
      "type": "standard"
    }
  ],
  "requirements": {
    "binaries": [
      "curl",
      "tar",
      "unzip"
    ],
    "os": "linux",
    "arch": "amd64"
  }
}

@08Robfin
Copy link
Author

I think i got the review feature working now. sorry about that.

i have tried applying, i dont know why, but it wont. Im not very used to github.

Here i'll just send you the josn to copy and paste :>

{
  "name": "Hytale",

Dont know if its just me, but this json does not work for me

@Toon2400
Copy link

Toon2400 commented Jan 14, 2026

{
  "name": "Hytale",
  "display": "Hytale Server",
  "type": "none",
  "install": [
    {
      "commands": [
        "echo '--- MANUAL INSTALL START ---'",
        "echo '1. Downloading Hytale Downloader...'",
        "curl -L -o hytale-downloader.zip https://downloader.hytale.com/hytale-downloader.zip",
        "unzip -o hytale-downloader.zip",
        "chmod +x hytale-downloader-linux-amd64",
        "mv hytale-downloader-linux-amd64 hytale-downloader",
        "rm hytale-downloader.zip",
        "echo '2. Downloading Game Files...'",
        "./hytale-downloader -skip-update-check -download-path game.zip",
        "unzip -o game.zip",
        "echo '3. Downloading Java 25...'",
        "curl -L -o java25.tar.gz https://api.adoptium.net/v3/binary/latest/25/ga/linux/x64/jdk/hotspot/normal/eclipse",
        "mkdir -p local_java",
        "tar -xzf java25.tar.gz -C local_java --strip-components=1",
        "chmod +x local_java/bin/java",
        "rm java25.tar.gz",
        "echo '--- INSTALL COMPLETE ---'"
      ],
      "type": "command"
    }
  ],
  "run": {
    "stop": "/stop",
    "command": "../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",
    "workingDirectory": "Server",
    "pre": [],
    "post": [],
    "environmentVars": {
      "port": "${port}",
      "ram": "${ram}"
    }
  },
  "data": {
    "port": {
      "type": "integer",
      "display": "Port",
      "value": 5520
    },
    "ram": {
      "type": "integer",
      "display": "RAM (GB)",
      "value": 4
    }
  },
  "environment": {
    "type": "standard"
  },
  "supportedEnvironments": [
    {
      "type": "standard"
    }
  ],
  "requirements": {
    "binaries": [
      "curl",
      "tar",
      "unzip"
    ],
    "os": "linux",
    "arch": "amd64"
  }
} 

this is what i used, not too familiar with github either 😅

@08Robfin
Copy link
Author

{
  "name": "Hytale",

this is what i used, not too familiar with github either 😅

Not really sure why, but i get this?

DAEMON
 Starting process: ../local_java/bin/java -Xms1G -Xmx4G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:5520 --backup --backup-dir ../Backups --backup-frequency 30
DAEMON
  Failed to start server

@Toon2400
Copy link

Toon2400 commented Jan 14, 2026

ahh thats my bad, forgot to update the template from my server after testing, updated my comment with the right working directory Server

Updated installation commands and modified working directory.
@08Robfin
Copy link
Author

ahh thats my bad, forgot to update the template from my server after testing, updated my comment with the right working directory Server

It works!

@thojo0
Copy link

thojo0 commented Jan 14, 2026

I also looked into this and created one inspired by the minecraft template.
I find it a lot cleaner.
I didn't test it, so if someone could test, this would be nice.

Template Json
{
  "type": "hytale",
  "name": "hytale",
  "display": "Hytale",
  "data": {
    "ip": {
      "type": "string",
      "value": "0.0.0.0",
      "display": "IP",
      "desc": "What IP to bind the server to",
      "required": true,
      "userEdit": false
    },
    "javaversion": {
      "type": "string",
      "value": "25",
      "display": "Java Version",
      "desc": "Version of Java to use",
      "required": true,
      "userEdit": true
    },
    "jvmArgs": {
      "type": "string",
      "value": "",
      "display": "JVM Arguments",
      "desc": "Extra JVM arguments to pass",
      "required": false,
      "userEdit": false
    },
    "serverArgs": {
      "type": "string",
      "value": "",
      "display": "Server Arguments",
      "desc": "Extra server arguments to pass",
      "required": false,
      "userEdit": false
    },
    "memory": {
      "type": "integer",
      "value": 4096,
      "display": "Memory (MB)",
      "desc": "How much memory in MB to allocate to the Java Heap",
      "required": true,
      "userEdit": false
    },
    "port": {
      "type": "integer",
      "value": 5520,
      "display": "Port",
      "desc": "What port to bind the server to",
      "required": true,
      "userEdit": false
    },
    "patchline": {
      "type": "string",
      "value": "release",
      "display": "Patchline",
      "desc": "Patchline you wish to install.",
      "required": true,
      "userEdit": true
    }
  },
  "groups": [
    {
      "display": "General",
      "description": "General settings for all servers",
      "variables": [
        "memory",
        "ip",
        "port",
        "patchline",
        "javaversion",
        "jvmArgs",
        "serverArgs"
      ],
      "order": 1
    }
  ],
    "install": [
    {
      "if": "javaversion != ''",
      "type": "javadl",
      "version": "${javaversion}"
    },
    {
      "type": "download",
      "files": [
        "https://downloader.hytale.com/hytale-downloader.zip"
      ]
    },
    {
      "type": "command",
      "commands": [
        "unzip -o hytale-downloader.zip hytale-downloader-linux-amd64",
        "rm hytale-downloader.zip",
        "chmod +x hytale-downloader-linux-amd64",
        "./hytale-downloader-linux-amd64 -skip-update-check -patchline ${patchline} -download-path game.zip",
        "unzip -o game.zip",
        "rm game.zip"
      ]
    }
  ],
  "run": {
    "command": "java${javaversion} -Xmx${memory}M ${jvmArgs} -jar HytaleServer.jar --assets Assets.zip --bind ${ip}:${port} ${serverArgs}",
    "stop": "/stop",
    "stdin": {
      "type": "stdin"
    },
    "autostart": false,
    "autorecover": false,
    "autorestart": false
  },
  "environment": {
    "type": "host"
  },
  "supportedEnvironments": [
    {
      "type": "host"
    }
  ],
  "requirements": {
    "binaries": [
      "unzip"
    ],
    "os": "linux",
    "arch": "amd64"
  }
}

@Krripe
Copy link

Krripe commented Jan 15, 2026

I don't know if this will help but i wanted to post my Hytale Template, i use it for my server and i have no problems with it, and it meets the requirements of the Hytale Manual.

{
  "name": "Hytale",
  "display": "Hytale Server",
  "type": "none",
  "install": [
    {
      "target": "install.sh",
      "text": "#!/bin/sh\nset -eu\n\nlog(){ printf '%s\\n' \"[Hytale] $*\"; }\nneed(){ command -v \"$1\" >/dev/null 2>&1 || { log \"ERROR: missing dependency '$1' on host. Install it and retry.\"; exit 1; }; }\n\nneed curl\nneed tar\nneed uname\n\nARCH=\"$(uname -m)\"\ncase \"$ARCH\" in\n  x86_64|amd64)\n    ADOPTIUM_ARCH=\"x64\"\n    DL_BIN=\"hytale-downloader-linux-amd64\"\n    ;;\n  aarch64|arm64)\n    ADOPTIUM_ARCH=\"aarch64\"\n    DL_BIN=\"hytale-downloader-linux-arm64\"\n    ;;\n  *)\n    log \"ERROR: unsupported CPU architecture: $ARCH\"\n    exit 1\n    ;;\nesac\n\nlog \"1) Downloading Java 25 (Temurin) for linux/$ADOPTIUM_ARCH ...\"\ncurl -fL --retry 5 --retry-delay 2 --retry-connrefused -o java25.tar.gz \"https://api.adoptium.net/v3/binary/latest/25/ga/linux/${ADOPTIUM_ARCH}/jdk/hotspot/normal/eclipse\"\nmkdir -p local_java\ntar -xzf java25.tar.gz -C local_java --strip-components=1\nrm -f java25.tar.gz\n\nJAVA_BIN=\"./local_java/bin/java\"\nJAR_BIN=\"./local_java/bin/jar\"\n\nchmod +x \"$JAVA_BIN\" \"$JAR_BIN\" 2>/dev/null || true\nlog \"Java installed:\" \n\"$JAVA_BIN\" -version || true\n\nlog \"2) Downloading Hytale Downloader...\"\ncurl -fL --retry 5 --retry-delay 2 --retry-connrefused -o hytale-downloader.zip \"https://downloader.hytale.com/hytale-downloader.zip\"\n\n# Validate zip using jar (no unzip needed)\n\"$JAR_BIN\" tf hytale-downloader.zip >/dev/null 2>&1 || {\n  log \"ERROR: hytale-downloader.zip is not a valid zip (download blocked/HTML/403/etc).\"\n  log \"Tip: check if the URL is reachable from the server host.\"\n  exit 1\n}\n\nlog \"Extracting downloader...\"\n\"$JAR_BIN\" xf hytale-downloader.zip\nrm -f hytale-downloader.zip\n\n# Pick correct binary name\nif [ -f \"$DL_BIN\" ]; then\n  mv -f \"$DL_BIN\" hytale-downloader\nfi\n\n# Fallback: if archive already contains 'hytale-downloader'\nif [ ! -f \"hytale-downloader\" ]; then\n  CANDIDATE=\"$(ls -1 hytale-downloader* 2>/dev/null | head -n 1 || true)\"\n  if [ -n \"$CANDIDATE\" ] && [ -f \"$CANDIDATE\" ]; then\n    mv -f \"$CANDIDATE\" hytale-downloader\n  fi\nfi\n\nif [ ! -f \"hytale-downloader\" ]; then\n  log \"ERROR: Could not find downloader binary after extraction. Directory listing:\"\n  ls -la || true\n  exit 1\nfi\n\nchmod +x hytale-downloader\n\nlog \"3) Downloading server/game files... (may take a while)\"\n# According to manual: --download-path game.zip\n./hytale-downloader --skip-update-check --download-path game.zip\n\n\"$JAR_BIN\" tf game.zip >/dev/null 2>&1 || {\n  log \"ERROR: game.zip is not a valid zip.\"\n  ls -lh game.zip || true\n  exit 1\n}\n\nlog \"Extracting game.zip...\"\n\"$JAR_BIN\" xf game.zip\nrm -f game.zip\n\n# Validate expected structure\n[ -f \"Assets.zip\" ] || { log \"ERROR: Assets.zip not found after extraction\"; ls -la || true; exit 1; }\n[ -f \"Server/HytaleServer.jar\" ] || { log \"ERROR: Server/HytaleServer.jar not found after extraction\"; ls -la Server || true; exit 1; }\n\nlog \"--- INSTALL COMPLETE ---\"",
      "type": "writefile"
    },
    {
      "commands": [
        "chmod +x install.sh",
        "./install.sh"
      ],
      "type": "command"
    },
    {
      "target": "start.sh",
      "text": "#!/bin/sh\nset -eu\n\nROOT_DIR=$(cd \"$(dirname \"$0\")\" && pwd)\nJAVA_BIN=\"$ROOT_DIR/local_java/bin/java\"\n\nPORT=\"${port:-5520}\"\nRAM=\"${ram:-4}\"\nAUTH_MODE=\"${auth_mode:-authenticated}\"\n\necho \"--- LAUNCHING HYTALE ---\"\n\nif [ ! -x \"$JAVA_BIN\" ]; then\n  echo \"CRITICAL: Java not found at $JAVA_BIN\"\n  echo \"Install failed or local_java is missing.\"\n  exit 1\nfi\n\n\"$JAVA_BIN\" -version || true\n\nASSETS=\"$ROOT_DIR/Assets.zip\"\nSERVER_DIR=\"$ROOT_DIR/Server\"\n\nif [ ! -f \"$ASSETS\" ]; then\n  echo \"CRITICAL: Missing $ASSETS\"\n  exit 1\nfi\n\nif [ ! -f \"$SERVER_DIR/HytaleServer.jar\" ]; then\n  echo \"CRITICAL: Missing $SERVER_DIR/HytaleServer.jar\"\n  exit 1\nfi\n\ncd \"$SERVER_DIR\"\n\n# Hytale uses QUIC over UDP. Make sure UDP port is forwarded/open.\nexec \"$JAVA_BIN\" -Xms1G -Xmx\"${RAM}G\" -jar \"HytaleServer.jar\" \\\n  --assets \"$ASSETS\" \\\n  --disable-sentry \\\n  --auth-mode \"$AUTH_MODE\" \\\n  --bind \"0.0.0.0:${PORT}\"\n",
      "type": "writefile"
    },
    {
      "commands": [
        "chmod +x start.sh"
      ],
      "type": "command"
    }
  ],
  "run": {
    "stop": "/stop",
    "command": "./start.sh",
    "workingDirectory": "",
    "pre": [],
    "post": [],
    "environmentVars": {
      "port": "${port}",
      "ram": "${ram}",
      "auth_mode": "${auth_mode}"
    }
  },
  "data": {
    "port": {
      "type": "integer",
      "display": "Port (UDP / QUIC)",
      "value": 5520
    },
    "ram": {
      "type": "integer",
      "display": "RAM (GB)",
      "value": 4
    },
    "auth_mode": {
      "type": "string",
      "display": "Auth Mode (authenticated/offline)",
      "value": "authenticated"
    }
  },
  "environment": {
    "type": "standard"
  },
  "supportedEnvironments": [
    {
      "type": "standard"
    }
  ],
  "requirements": {}
}

"commands": [
"echo '--- INSTALL START ---'",
"echo '1. Downloading Hytale Downloader...'",
"curl -L -o hytale-downloader.zip https://downloader.hytale.com/hytale-downloader.zip",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Scripting" like this is generally frown upon, because it's very intensive.
A lot of these operations are also covered in some other tool, which is agnostic.

curl for example has a "download" operation
unzip is "extract"
mv is "move"

"echo '2. Downloading Game Files...'",
"./hytale-downloader -skip-update-check -download-path game.zip",
"unzip -o game.zip",
"echo '3. Downloading Java 25...'",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

javadl should be used, and "optional" if the environment is host

(when using environment as host, the "java" command is "java25"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

],
"run": {
"stop": "/stop",
"command": "../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simply is "java25" when environment is host

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"run": {
"stop": "/stop",
"command": "../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",
"workingDirectory": "Server",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we can't use the "root" folder?

"workingDirectory": "Server",
"pre": [],
"post": [],
"environmentVars": {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should not be needed it seems, variable replacement does the command-line

],
"run": {
"stop": "/stop",
"command": "../local_java/bin/java -Xms1G -Xmx${ram}G -jar HytaleServer.jar --assets ../Assets.zip --disable-sentry --auth-mode authenticated --bind 0.0.0.0:${port} --backup --backup-dir ../Backups --backup-frequency 30",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, the IP should be a variable for "consistency"

"type": "standard"
},
"supportedEnvironments": [
{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker would be supported in this case, as it'd just need the eclipse image.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See

{
"type": "host"
},
{
"type": "docker",
"image": "eclipse-temurin:17",
"portBindings": [
"0.0.0.0:${port}:${port}/tcp"
]
}

}
},
"environment": {
"type": "standard"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, "host" instead of standard.

@08Robfin
Copy link
Author

im not a pro at all 😭 and when i try to fix all these Pufferpanel just spits out "unknown error", i dont know where to go now tbh.

@thojo0
Copy link

thojo0 commented Jan 17, 2026

My template already had almost everything @LordRalex requested, except for the extract, because in 3.0.0-rc.16 (16c77dd5df0d6edec9ef29f576e89e32978c3671) there is no ui selector for this.

New Template Json with `extract`
{
  "type": "hytale",
  "name": "hytale",
  "display": "Hytale",
  "data": {
    "ip": {
      "type": "string",
      "value": "0.0.0.0",
      "display": "IP",
      "desc": "What IP to bind the server to",
      "required": true,
      "userEdit": false
    },
    "javaversion": {
      "type": "string",
      "value": "25",
      "display": "Java Version",
      "desc": "Version of Java to use",
      "required": true,
      "userEdit": true
    },
    "jvmArgs": {
      "type": "string",
      "value": "",
      "display": "JVM Arguments",
      "desc": "Extra JVM arguments to pass",
      "required": false,
      "userEdit": false
    },
    "serverArgs": {
      "type": "string",
      "value": "",
      "display": "Server Arguments",
      "desc": "Extra server arguments to pass",
      "required": false,
      "userEdit": false
    },
    "memory": {
      "type": "integer",
      "value": 4096,
      "display": "Memory (MB)",
      "desc": "How much memory in MB to allocate to the Java Heap",
      "required": true,
      "userEdit": false
    },
    "port": {
      "type": "integer",
      "value": 5520,
      "display": "Port",
      "desc": "What port to bind the server to",
      "required": true,
      "userEdit": false
    },
    "patchline": {
      "type": "string",
      "value": "release",
      "display": "Patchline",
      "desc": "Patchline you wish to install.",
      "required": true,
      "userEdit": true
    }
  },
  "groups": [
    {
      "display": "General",
      "description": "General settings for all servers",
      "variables": [
        "memory",
        "ip",
        "port",
        "patchline",
        "javaversion",
        "jvmArgs",
        "serverArgs"
      ],
      "order": 1
    }
  ],
  "install": [
    {
      "if": "javaversion != '' && env == 'host'",
      "type": "javadl",
      "version": "${javaversion}"
    },
    {
      "type": "download",
      "files": [
        "https://downloader.hytale.com/hytale-downloader.zip"
      ]
    },
    {
      "type": "extract",
      "source": "hytale-downloader.zip",
      "destination": "."
    },
    {
      "type": "command",
      "commands": [
        "unzip -o hytale-downloader.zip hytale-downloader-linux-amd64",
        "rm -f hytale-downloader.zip hytale-downloader-windows-amd64.exe QUICKSTART.md",
        "chmod +x hytale-downloader-linux-amd64",
        "./hytale-downloader-linux-amd64 -skip-update-check -patchline ${patchline} -download-path game.zip"
      ]
    },
    {
      "type": "extract",
      "source": "game.zip",
      "destination": "."
    },
    {
      "type": "command",
      "commands": [
        "rm -f game.zip"
      ]
    }
  ],
  "run": {
    "command": [
      {
        "command": "java${javaversion} -Xmx${memory}M ${jvmArgs} -jar Server/HytaleServer.jar --assets Assets.zip --bind ${ip}:${port} ${serverArgs}",
        "if": "env == 'host'"
      },
      {
        "command": "java -Xmx${memory}M ${jvmArgs} -jar Server/HytaleServer.jar --assets Assets.zip --bind ${ip}:${port} ${serverArgs}"
      }
    ],
    "stop": "/stop",
    "stdin": {
      "type": "stdin"
    },
    "autostart": false,
    "autorecover": false,
    "autorestart": false
  },
  "environment": {
    "type": "host"
  },
  "supportedEnvironments": [
    {
      "type": "host"
    },
    {
      "type": "docker",
      "image": "eclipse-temurin:${javaversion}",
      "portBindings": [
        "0.0.0.0:${port}:${port}/tcp"
      ]
    }
  ],
  "requirements": {
    "os": "linux",
    "arch": "amd64"
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants