{"meta":{"slug":"canvas-mc","name":"Canvas Mc","category":"minecraft","source":"pterodactyl","owner":"pterodactyl","repo":"game-eggs","branch":"main","path":"minecraft/java/canvas-mc/egg-canvas-mc.json","rawUrl":"https://raw.githubusercontent.com/pterodactyl/game-eggs/main/minecraft/java/canvas-mc/egg-canvas-mc.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":"2026-07-09T13:06:53+02:00","name":"CanvasMC","author":"ptero@redbananaofficial.com","description":"Supercharge your Minecraft server with multithreaded dimension ticking, improved chunk generation, optimized entity handling and many more powerful optimizations.","features":["eula","java_version","pid_limit"],"docker_images":{"Java 25":"ghcr.io/pterodactyl/yolks:java_25","Java 22":"ghcr.io/pterodactyl/yolks:java_22"},"file_denylist":[],"startup":"java -Xms128M -XX:MaxRAMPercentage=95.0 --add-modules=jdk.incubator.vector -jar server.jar --nogui","config":{"files":"{\r\n    \"server.properties\": {\r\n        \"parser\": \"properties\",\r\n        \"find\": {\r\n            \"server-ip\": \"0.0.0.0\",\r\n            \"server-port\": \"{{server.build.default.port}}\",\r\n            \"query.port\": \"{{server.build.default.port}}\"\r\n        }\r\n    }\r\n}","startup":"{\r\n    \"done\": \")! For help, type \"\r\n}","logs":"{}","stop":"stop"},"scripts":{"installation":{"script":"#!/bin/bash\r\ncd /mnt/server\r\n\r\napt-get update\r\napt-get install -y curl jq openjdk-17-jdk\r\n\r\n# Clean old install\r\nrm -f server.jar\r\n\r\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\r\nCANVAS_BUILD=\"$(echo \"$CANVAS_BUILD\" | tr -d ' ')\"\r\n\r\n# Get version/build\r\nif [[ \"$CANVAS_BUILD\" == \"latest\" ]]; then\r\n    if [[ \"$MC_VERSION\" == \"latest\" ]]; then\r\n        echo \"[CanvasMC] Fetching latest Minecraft version and build...\"\r\n        BUILD_INFO=$(curl -fsSL \"https://canvasmc.io/api/v2/builds/latest?project=canvas\")\r\n    else\r\n        echo \"[CanvasMC] Fetching latest build for Minecraft $MC_VERSION...\"\r\n        BUILD_INFO=$(curl -fsSL \"https://canvasmc.io/api/v2/builds/latest?project=canvas&channel=$MC_VERSION\")\r\n    fi\r\n\r\n    if [[ -z \"$BUILD_INFO\" ]]; then\r\n        echo \"[CanvasMC] Failed to query Canvas API.\"\r\n        exit 1\r\n    fi\r\n\r\n    RESULT=$(echo \"$BUILD_INFO\" | jq -r '.result')\r\n    if [[ \"$RESULT\" != \"SUCCESS\" ]]; then\r\n        echo \"[CanvasMC] Canvas API returned an error.\"\r\n        echo \"$BUILD_INFO\"\r\n        exit 1\r\n    fi\r\n\r\n    MC_VERSION=$(echo \"$BUILD_INFO\" | jq -r '.channelVersion')\r\n    BUILD_NUMBER=$(echo \"$BUILD_INFO\" | jq -r '.buildNumber')\r\n    JAR_URL=$(echo \"$BUILD_INFO\" | jq -r '.downloadUrl')\r\n\r\nelse\r\n    # Specified build number\r\n    BUILD_NUMBER=\"$CANVAS_BUILD\"\r\n\r\n    if [[ \"$MC_VERSION\" == \"latest\" ]]; then\r\n        echo \"[CanvasMC] Fetching latest Minecraft version...\"\r\n        BUILD_INFO=$(curl -fsSL \"https://canvasmc.io/api/v2/builds/latest?project=canvas\")\r\n\r\n        if [[ -z \"$BUILD_INFO\" ]]; then\r\n            echo \"[CanvasMC] Failed to query Canvas API.\"\r\n            exit 1\r\n        fi\r\n\r\n        RESULT=$(echo \"$BUILD_INFO\" | jq -r '.result')\r\n        if [[ \"$RESULT\" != \"SUCCESS\" ]]; then\r\n            echo \"[CanvasMC] Canvas API returned an error.\"\r\n            echo \"$BUILD_INFO\"\r\n            exit 1\r\n        fi\r\n\r\n        MC_VERSION=$(echo \"$BUILD_INFO\" | jq -r '.channelVersion')\r\n    fi\r\n\r\n    JAR_URL=\"https://jenkins.canvasmc.io/job/Canvas/${BUILD_NUMBER}/artifact/canvas-server/build/libs/canvas-build.${BUILD_NUMBER}.jar\"\r\nfi\r\n\r\n# Check values\r\nif [[ -z \"$MC_VERSION\" || \"$MC_VERSION\" == \"null\" ]]; then\r\n    echo \"[CanvasMC] Failed to resolve a valid Minecraft version.\"\r\n    exit 1\r\nfi\r\n\r\nif [[ -z \"$BUILD_NUMBER\" || \"$BUILD_NUMBER\" == \"null\" ]]; then\r\n    echo \"[CanvasMC] Failed to resolve a valid build number.\"\r\n    exit 1\r\nfi\r\n\r\nif [[ -z \"$JAR_URL\" || \"$JAR_URL\" == \"null\" ]]; then\r\n    echo \"[CanvasMC] Failed to resolve a valid download URL.\"\r\n    exit 1\r\nfi\r\n\r\necho \"[CanvasMC] Using Minecraft version: $MC_VERSION\"\r\necho \"[CanvasMC] Using build number: $BUILD_NUMBER\"\r\n\r\necho \"[CanvasMC] Downloading server.jar from:\"\r\necho \"$JAR_URL\"\r\n\r\ncurl -fsSL -o server.jar \"$JAR_URL\"\r\n\r\nif [[ $? -ne 0 ]]; then\r\n    echo \"[CanvasMC] Download failed.\"\r\n    exit 1\r\nfi\r\n\r\nif [[ ! -f server.jar || ! -s server.jar ]]; then\r\n    echo \"[CanvasMC] Downloaded server.jar is invalid.\"\r\n    exit 1\r\nfi\r\n\r\necho \"Installation complete.\"","container":"ghcr.io/pterodactyl/installers:debian","entrypoint":"bash"}},"variables":[{"name":"Canvas MC Version","description":"CanvasMC-Minecraft version (example: 1.21.4). Set to 'latest' to use latest version","env_variable":"MC_VERSION","default_value":"latest","user_viewable":true,"user_editable":true,"rules":"required|string|max:15","field_type":"text"},{"name":"CanvasMC Build Number","description":"Build number from https://jenkins.canvasmc.io/job/Canvas/. Set to 'latest' to get the newest build","env_variable":"CANVAS_BUILD","default_value":"latest","user_viewable":true,"user_editable":true,"rules":"required|string|max:10","field_type":"text"}]},"readme":"# CanvasMC\n\nCanvasMC is a high-performance Minecraft server software focused on maximizing server performance while maintaining plugin compatibility. Built on top of Purpur, it implements various experimental optimizations to achieve significant performance improvements.\n\n[CanvasMC Website](https://docs.canvasmc.io/)\n\n[CanvasMC Plugin documentation](https://docs.canvasmc.io/getting-started/plugins)\n\n## Server Ports\n\nThe minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.\n\n| Port     | default |\n|----------|---------|\n| Game     | 25565   |\n\n\n## Requirements\n\nTo run CanvasMC, you'll need:\n- Java 22 or newer\n- At least 4GB of RAM (recommended)\n- A stable internet connection\n"}