From ed007d55122ea86c066e9f8ca1521535935aa030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerber=20L=C3=B3r=C3=A1nt=20Viktor?= <17655680+glorantq@users.noreply.github.com> Date: Wed, 6 Mar 2024 20:43:50 +0100 Subject: [PATCH] Add NeoForge egg for Minecraft Java This commit adds an egg for the new Minecraft Forge fork called NeoForge. --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/minecraft/README.md | 1 + game_eggs/minecraft/java/README.md | 5 ++ game_eggs/minecraft/java/neoforge/README.md | 18 ++++++ .../java/neoforge/egg-neo-forge.json | 59 +++++++++++++++++++ 6 files changed, 85 insertions(+) create mode 100644 game_eggs/minecraft/java/neoforge/README.md create mode 100644 game_eggs/minecraft/java/neoforge/egg-neo-forge.json diff --git a/README.md b/README.md index 45723d11..319fe49f 100644 --- a/README.md +++ b/README.md @@ -190,6 +190,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Modrinth](game_eggs/minecraft/java/modrinth) * [Mohist](game_eggs/minecraft/java/mohist) * [NanoLimbo](game_eggs/minecraft/java/nanolimbo) + * [NeoForge](game_eggs/minecraft/java/neoforge) * [Paper](game_eggs/minecraft/java/paper) * [Folia](game_eggs/minecraft/java/folia) * [Purpur](game_eggs/minecraft/java/purpur) diff --git a/game_eggs/README.md b/game_eggs/README.md index a8b0e543..be88a292 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -84,6 +84,7 @@ * [Magma](minecraft/java/magma) * [Mohist](minecraft/java/mohist) * [NanoLimbo](minecraft/java/nanolimbo) + * [NeoForge](minecraft/java/neoforge) * [Paper](minecraft/java/paper) * [Folia](minecraft/java/folia) * [Purpur](minecraft/java/purpur) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index 9e374b05..2b289c78 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -28,6 +28,7 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, * [Modrinth](java/modrinth) * [Mohist](java/mohist) * [NanoLimbo](java/nanolimbo) +* [NeoForge](java/neoforge) * [Paper](java/paper) * [Folia](java/folia) * [Purpur](java/purpur) diff --git a/game_eggs/minecraft/java/README.md b/game_eggs/minecraft/java/README.md index 11f583f3..f0865dc2 100644 --- a/game_eggs/minecraft/java/README.md +++ b/game_eggs/minecraft/java/README.md @@ -37,6 +37,11 @@ This is a direct fork of the default forge service [CurseForge Generic Website](https://www.curseforge.com) A generic service to pull forge mod packs from the curseforge site. +### [NeoForge](neoforge) + +[NeoForge Website](https://neoforged.net) +A fork of Minecraft Forge that supports Minecraft versions 1.20.1 and newer. + ## Glowstone [Glowstone](https://glowstone.net/) Glowstone is an open-source replacement for CraftBukkit, Spigot, and Paper. diff --git a/game_eggs/minecraft/java/neoforge/README.md b/game_eggs/minecraft/java/neoforge/README.md new file mode 100644 index 00000000..461536f0 --- /dev/null +++ b/game_eggs/minecraft/java/neoforge/README.md @@ -0,0 +1,18 @@ +# NeoForge 🦊 + +## This is a generic egg for the NeoForge standalone server. + +NeoForge is a fork of Minecraft Forge for versions 1.20.1 or newer. The install +script is based on the official Forge install script. + +The egg supports downloading NeoForge for the latest or a specified Minecraft version, +as well as downloading a specific NeoForge version. + +## Server Ports + +The Minecraft server requires a single port for access (default 25565), +but plugins may require extra ports to enabled for the server. + +| Port | Default | +|------------|---------| +| Minecraft | 25565 | diff --git a/game_eggs/minecraft/java/neoforge/egg-neo-forge.json b/game_eggs/minecraft/java/neoforge/egg-neo-forge.json new file mode 100644 index 00000000..70fc8eb4 --- /dev/null +++ b/game_eggs/minecraft/java/neoforge/egg-neo-forge.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-03-06T20:31:01+01:00", + "name": "NeoForge", + "author": "glorantv@icloud.com", + "description": "NeoForge Server. NeoForge is a modding API (Application Programming Interface), which makes it easier to create mods, and also make sure mods are compatible with each other. NeoForge is a fork of Minecraft Forge.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true @unix_args.txt", + "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\n# NeoForge Installation Script\n#\n# Server Files: \/mnt\/server\n\napt-get update\napt-get install -y curl xq\n\nif [[ ! -d \/mnt\/server ]]; then\n mkdir \/mnt\/server\nfi\n\ncd \/mnt\/server\n\n# Remove spaces from the version number to avoid issues with curl\nNEOFORGE_VERSION=\"$(echo \"$NEOFORGE_VERSION\" | tr -d ' ')\"\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\n\n# If we have a specific NeoForge version set, use that\nif [[ ! -z ${NEOFORGE_VERSION} ]]; then\n # The 1.20.1 release lives in a different repository and is called \"forge\" instead of \"neoforge\"\n if [[ \"${NEOFORGE_VERSION}\" =~ \"1.20.1-\" ]]; then\n DOWNLOAD_LINK=https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/forge\/${NEOFORGE_VERSION}\/forge-${NEOFORGE_VERSION}\n ARTIFACT_NAME=\"forge\"\n else\n DOWNLOAD_LINK=https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/neoforge\/${NEOFORGE_VERSION}\/neoforge-${NEOFORGE_VERSION}\n ARTIFACT_NAME=\"neoforge\"\n fi\nelse\n # For NeoForge, downloading based on a Minecraft version is done by using the Maven metadata.\n # 1.20.1 is also handled differently here, because it's in a different repository and is called\n # \"forge\" instead of \"neoforge\".\n if [[ \"${MC_VERSION}\" == \"1.20.1\" ]]; then\n XML_DATA=$(curl -sSL https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/forge\/maven-metadata.xml)\n ARTIFACT_NAME=\"forge\"\n NEOFORGE_OLD=1\n else\n XML_DATA=$(curl -sSL https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/neoforge\/maven-metadata.xml)\n ARTIFACT_NAME=\"neoforge\"\n fi\n\n REPO_URL=\"https:\/\/maven.neoforged.net\/releases\/net\/neoforged\/${ARTIFACT_NAME}\/\"\n\n # Get the latest version of Minecraft NeoForge supports. Here XML_DATA contains the metadata for\n # the new, \"neoforge\" repository, which is good since 1.20.1 will never be the latest anymore.\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\n echo \"Getting latest version of NeoForge.\"\n MC_VERSION=\"1.$(echo -e ${XML_DATA} | xq -x '\/metadata\/versioning\/release' | cut -d'.' -f1-2)\"\n fi\n\n echo \"Minecraft version: ${MC_VERSION}\"\n\n if [[ -z \"${NEOFORGE_OLD}\" ]]; then\n # For modern artifacts we cut the \"1.\" from the Minecraft version, and search for that\n VERSION_KEY=$(echo -n ${MC_VERSION} | cut -d'.' -f2-)\n else\n # For 1.20.1, it uses the same naming scheme as Forge, so we just append a dash\n VERSION_KEY=\"${MC_VERSION}-\"\n fi\n\n # Then we extract the latest the latest NeoForge version available based on the Maven metadata\n NEOFORGE_VERSION=$(echo -e ${XML_DATA} | xq -x \"(\/metadata\/versioning\/versions\/*[starts-with(text(), '${VERSION_KEY}')])\" | tail -n1)\n if [[ -z \"${NEOFORGE_VERSION}\" ]]; then\n echo \"The install failed, because there is no valid version of NeoForge for the version of Minecraft selected.\"\n exit 1\n fi\n\n echo \"NeoForge version: ${NEOFORGE_VERSION}\"\n\n DOWNLOAD_LINK=\"${REPO_URL}${NEOFORGE_VERSION}\/${ARTIFACT_NAME}-${NEOFORGE_VERSION}\"\nfi\n\necho \"Downloading NeoForge version ${NEOFORGE_VERSION}\"\necho \"Download link is ${DOWNLOAD_LINK}\"\n\n# Check if the download link we generated is valid\nif [[ ! -z \"${DOWNLOAD_LINK}\" ]]; then\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\n echo -e \"Installer jar download link is valid.\"\n else\n echo -e \"Link is invalid. Exiting now\"\n exit 2\n fi\nelse\n echo -e \"No download link provided. Exiting now\"\n exit 3\nfi\n\n# If so, go ahead and download the installer\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\n\nif [[ ! -f .\/installer.jar ]]; then\n echo \"!!! Error downloading NeoForge version ${NEOFORGE_VERSION} !!!\"\n exit 4\nfi\n\n# Delete args to support downgrading\/upgrading\nrm -rf libraries\/net\/neoforged\/${ARTIFACT_NAME}\nrm unix_args.txt\n\n# Installing server\necho -e \"Installing NeoForge server.\\n\"\njava -jar installer.jar --installServer || {\n echo -e \"\\nInstall failed using NeoForge version ${NEOFORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}.\"\n echo -n \"Should you be using unlimited memory value of 0, make sure to increase the default install resource limits in the Wings\"\n echo \"config or specify exact allocated memory in the server Build Configuration instead of 0!\"\n echo \"Otherwise, the NeoForge installer will not have enough memory.\";\n exit 5;\n}\n\n# Symlink the startup arguments to the server directory\nln -sf libraries\/net\/neoforged\/${ARTIFACT_NAME}\/*\/unix_args.txt unix_args.txt\n\n# And finally clean up\necho -e \"Deleting installer.jar file.\\n\"\nrm -rf installer.jar\n\necho \"Installation process is completed!\"", + "container": "openjdk:23-ea-8-jdk-slim-bookworm", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of Minecraft you want to install for.\r\n\r\nLeaving latest will install the latest version.", + "env_variable": "MC_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:9", + "field_type": "text" + }, + { + "name": "NeoForge Version", + "description": "The full exact version.\r\n\r\nEx. 20.4.194 or 1.20.1-47.1.95\r\n\r\nOverrides MC_VERSION. If it fails to download the server files it will fail to install.", + "env_variable": "NEOFORGE_VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|regex:\/^[0-9\\.\\-]+$\/", + "field_type": "text" + } + ] +} \ No newline at end of file