FROM debian:12-slim ENV DEBIAN_FRONTEND=noninteractive ENV LANG=C.UTF-8 RUN mkdir -p /usr/share/binfmts && \ apt-get update && \ apt-get install -y --no-install-recommends \ openjdk-17-jdk-headless \ wget \ curl \ netcat-openbsd \ procps \ python3 \ python3-pip \ python3-setuptools \ python3-wheel \ ca-certificates && \ dpkg --configure -a || true && \ rm -rf /var/lib/apt/lists/* && \ apt-get clean RUN pip3 install --no-cache-dir --break-system-packages "huggingface_hub[cli]>=1.5.0" # RCON client RUN printf '#!/usr/bin/env python3\n\ import socket, struct, sys, argparse\n\ \n\ def rcon(host, port, password, command):\n\ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n\ s.settimeout(5)\n\ s.connect((host, int(port)))\n\ payload = struct.pack("= 12:\n\ return resp[12:].decode("utf-8", errors="ignore").rstrip("\\x00")\n\ return ""\n\ \n\ if __name__ == "__main__":\n\ p = argparse.ArgumentParser()\n\ p.add_argument("-H", "--host", default="127.0.0.1")\n\ p.add_argument("-P", "--port", default="25575")\n\ p.add_argument("-p", "--password", default="")\n\ p.add_argument("commands", nargs="*")\n\ args = p.parse_args()\n\ for cmd in args.commands:\n\ try:\n\ result = rcon(args.host, int(args.port), args.password, cmd)\n\ if result:\n\ print(result)\n\ except Exception as e:\n\ print("RCON error: " + str(e), file=sys.stderr)\n' > /usr/local/bin/mcrcon && chmod +x /usr/local/bin/mcrcon WORKDIR /opt/server RUN mkdir -p /opt/server/bungee/plugins /opt/server/backend/plugins RUN wget -O /opt/server/bungee/BungeeCord.jar \ "https://ci.md-5.net/job/BungeeCord/1892/artifact/bootstrap/target/BungeeCord.jar" RUN wget -O /opt/server/bungee/sqlite-jdbc.jar \ "https://github.com/xerial/sqlite-jdbc/releases/download/3.45.3.0/sqlite-jdbc-3.45.3.0.jar" RUN mkdir -p /opt/server/bungee/modules && \ wget -O /opt/server/bungee/modules/cmd_alert.jar \ "https://ci.md-5.net/job/BungeeCord/1892/artifact/module/cmd-alert/target/cmd_alert.jar" && \ wget -O /opt/server/bungee/modules/cmd_find.jar \ "https://ci.md-5.net/job/BungeeCord/1892/artifact/module/cmd-find/target/cmd_find.jar" && \ wget -O /opt/server/bungee/modules/cmd_list.jar \ "https://ci.md-5.net/job/BungeeCord/1892/artifact/module/cmd-list/target/cmd_list.jar" && \ wget -O /opt/server/bungee/modules/cmd_send.jar \ "https://ci.md-5.net/job/BungeeCord/1892/artifact/module/cmd-send/target/cmd_send.jar" && \ wget -O /opt/server/bungee/modules/cmd_server.jar \ "https://ci.md-5.net/job/BungeeCord/1892/artifact/module/cmd-server/target/cmd_server.jar" && \ wget -O /opt/server/bungee/modules/reconnect_yaml.jar \ "https://ci.md-5.net/job/BungeeCord/1892/artifact/module/reconnect-yaml/target/reconnect_yaml.jar" # WindSpigot RUN wget -O /opt/server/backend/server.jar \ "https://github.com/Wind-Development/WindSpigot/releases/download/v2.1.2-hotfix/WindSpigot-2.1.2.jar" RUN mkdir -p /opt/server/backend/cache && \ wget -O /opt/server/backend/cache/mojang_1.8.8.jar \ "https://launcher.mojang.com/v1/objects/5fafba3f58c40dc51b5c3ca72a98f62dfdae1db7/server.jar" || true COPY config/bungee/EaglerXBungee.jar /opt/server/bungee/plugins/EaglerXBungee.jar RUN printf 'server_connect_timeout: 5000\n\ online_mode: false\n\ listeners:\n\ - host: 127.0.0.1:25577\n\ max_players: 10\n\ servers:\n\ lobby:\n\ address: 127.0.0.1:25565\n\ motd: Server\n\ restricted: false\n' > /opt/server/bungee/config.yml RUN echo "eula=true" > /opt/server/backend/eula.txt COPY start.sh /opt/server/start.sh RUN chmod +x /opt/server/start.sh RUN chmod -R 755 /opt/server EXPOSE 7860 CMD ["/opt/server/start.sh"]