File size: 1,574 Bytes
d7f1cb3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env bash
set -Eeuo pipefail
mkdir -p /app/minecraft /app/logs
exec > >(tee -a /app/logs/startup.log) 2>&1
PORT="${MC_PORT:-25565}"; VERSION="${MC_VERSION:-1.21.8}"
cd /app/minecraft
if [ ! -f paper.jar ]; then build="$(curl -fsSL "https://api.papermc.io/v2/projects/paper/versions/${VERSION}" | jq -r '.builds[-1]')"; curl -fL --retry 3 -o paper.jar "https://api.papermc.io/v2/projects/paper/versions/${VERSION}/builds/${build}/downloads/paper-${VERSION}-${build}.jar"; fi
echo 'eula=true' > eula.txt
python3 - <<'PY' &
from http.server import BaseHTTPRequestHandler,HTTPServer
from pathlib import Path
class H(BaseHTTPRequestHandler):
 def do_GET(self):
  t=Path('/app/logs/startup.log').read_text(errors='replace')[-12000:]; b=('<html><meta http-equiv="refresh" content="5"><body><h1>Minecraft Server</h1><pre>'+t.replace('&','&amp;').replace('<','&lt;')+'</pre></body></html>').encode(); self.send_response(200); self.send_header('Content-Type','text/html'); self.send_header('Content-Length',str(len(b))); self.end_headers(); self.wfile.write(b)
 def log_message(self,*a): pass
HTTPServer(('0.0.0.0',7860),H).serve_forever()
PY
if [ ! -x /usr/local/bin/playit ]; then curl -fL --retry 3 -o /usr/local/bin/playit https://github.com/playit-cloud/playit-agent/releases/latest/download/playit-linux-amd64; chmod +x /usr/local/bin/playit; fi
if [ -n "${PLAYIT_SECRET:-}" ]; then playit --secret "$PLAYIT_SECRET" >> /app/logs/startup.log 2>&1 & else playit >> /app/logs/startup.log 2>&1 & fi
java -Xms512M -Xmx${MC_MEMORY:-2G} -jar paper.jar --nogui --port "$PORT"