F
描述
我的世界Forge服务器。我的世界Forge是一个模组API(应用程序编程接口),它让创建模组变得更加容易,同时确保模组之间能够相互兼容。
70 浏览
11 下载
2026-06-30
更新于 1 天前
预设配置详情
Forge 通用
这是一个用于 Forge 独立服务器的通用模板
此模板将下载指定 Forge 版本的最新 jar 文件。
该模板已修复 Forge 在 1.7.10 和 1.8.9 版本中存在的问题。
服务器端口
Minecraft 服务器需要一个端口用于访问(默认 25565),但插件可能需要额外启用端口。
| 端口 | 默认值 |
|---|---|
| 游戏 | 25565 |
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_21
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_17
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_16
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_11
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_8
java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s "-jar {{SERVER_JARFILE}}" || printf %s "@unix_args.txt" )
| 变量名 | 变量 | 描述 | 默认值 | 规则 | 可查看 | 可编辑 |
|---|---|---|---|---|---|---|
| 构建类型 | BUILD_TYPE |
从forge下载的服务端jar包类型。 有效类型为"recommended"和"latest"。 | recommended |
required|string|in:recommended,latest
必填 字符串 选项: recommended,latest
|
||
| Forge 版本 | FORGE_VERSION |
完整精确版本。 例如:1.15.2-31.2.4 覆盖 MC_VERSION 和 BUILD_TYPE。如果无法下载服务器文件,安装将会失败。 | |
nullable|regex:/^[0-9\.\-]+$/
可选 匹配: /^[0-9\.\-]+$/
|
||
| 我的世界版本 | MC_VERSION |
你想要安装的Minecraft版本。 保留为latest将安装最新推荐版本。 | latest |
required|string|max:9
必填 字符串 最大 9
|
||
| 服务器Jar文件 | SERVER_JARFILE |
运行低于1.17版本的Forge时使用的Jar文件名。 | server.jar |
required|regex:/^([\w\d._-]+)(\.jar)$/
必填 匹配: /^([\w\d._-]+)(\.jar)$/
|
镜像
registry.cn-shanghai.aliyuncs.com/pterodactyl-images/installers:java_8
入口
bash
#!/bin/bash
# Forge Installation Script
#
# Server Files: /mnt/server
apt update
apt install -y curl jq
if [[ ! -d /mnt/server ]]; then
mkdir /mnt/server
fi
cd /mnt/server
# Remove spaces from the version number to avoid issues with curl
FORGE_VERSION="$(echo "$FORGE_VERSION" | tr -d ' ')"
MC_VERSION="$(echo "$MC_VERSION" | tr -d ' ')"
if [[ ! -z ${FORGE_VERSION} ]]; then
DOWNLOAD_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}/forge-${FORGE_VERSION}
FORGE_JAR=forge-${FORGE_VERSION}*.jar
else
JSON_DATA=$(curl -sSL https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json)
if [[ "${MC_VERSION}" == "latest" ]] || [[ "${MC_VERSION}" == "" ]]; then
echo -e "getting latest version of forge."
MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(."latest-1.7.10") | del(."1.7.10-latest-1.7.10") | to_entries[] | .key | select(contains("latest")) | split("-")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)
BUILD_TYPE=latest
fi
if [[ "${BUILD_TYPE}" != "recommended" ]] && [[ "${BUILD_TYPE}" != "latest" ]]; then
BUILD_TYPE=recommended
fi
echo -e "minecraft version: ${MC_VERSION}"
echo -e "build type: ${BUILD_TYPE}"
## some variables for getting versions and things
FILE_SITE=https://maven.minecraftforge.net/net/minecraftforge/forge/
VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION "${MC_VERSION}" --arg BUILD_TYPE "${BUILD_TYPE}" '.promos | del(."latest-1.7.10") | del(."1.7.10-latest-1.7.10") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')
## locating the forge version
if [[ "${VERSION_KEY}" == "" ]] && [[ "${BUILD_TYPE}" == "recommended" ]]; then
echo -e "dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested."
VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION "${MC_VERSION}" '.promos | del(."latest-1.7.10") | del(."1.7.10-latest-1.7.10") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains("latest"))')
fi
## Error if the mc version set wasn't valid.
if [ "${VERSION_KEY}" == "" ] || [ "${VERSION_KEY}" == "null" ]; then
echo -e "The install failed because there is no valid version of forge for the version of minecraft selected."
exit 1
fi
FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY "$VERSION_KEY" '.promos | .[$VERSION_KEY]')
if [[ "${MC_VERSION}" == "1.7.10" ]] || [[ "${MC_VERSION}" == "1.8.9" ]]; then
DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}
FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar
if [[ "${MC_VERSION}" == "1.7.10" ]]; then
FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar
fi
else
DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}
FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar
fi
fi
#Adding .jar when not eding by SERVER_JARFILE
if [[ ! $SERVER_JARFILE = *\.jar ]]; then
SERVER_JARFILE="$SERVER_JARFILE.jar"
fi
#Downloading jars
echo -e "Downloading forge version ${FORGE_VERSION}"
echo -e "Download link is ${DOWNLOAD_LINK}"
if [[ ! -z "${DOWNLOAD_LINK}" ]]; then
if curl --output /dev/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then
echo -e "installer jar download link is valid."
else
echo -e "link is invalid. Exiting now"
exit 2
fi
else
echo -e "no download link provided. Exiting now"
exit 3
fi
curl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar
#Checking if downloaded jars exist
if [[ ! -f ./installer.jar ]]; then
echo "!!! Error downloading forge version ${FORGE_VERSION} !!!"
exit
fi
function unix_args {
echo -e "Detected Forge 1.17 or newer version. Setting up forge unix args."
ln -sf libraries/net/minecraftforge/forge/*/unix_args.txt unix_args.txt
}
# Delete args to support downgrading/upgrading
rm -rf libraries/net/minecraftforge/forge
rm unix_args.txt
#Installing server
echo -e "Installing forge server.
"
java -jar installer.jar --installServer || { echo -e "
Install failed using Forge version ${FORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}.
Should you be using unlimited memory value of 0, make sure to increase the default install resource limits in the Daemon config or specify exact allocated memory in the server Build Configuration instead of 0!
Otherwise, the Forge installer will not have enough memory."; exit 4; }
# Check if we need a symlink for 1.17+ Forge JPMS args
if [[ $MC_VERSION =~ ^1\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\.(17|18|19|20|21|22|23) ]]; then
unix_args
# Check if someone has set MC to latest but overwrote it with older Forge version, otherwise we would have false positives
elif [[ $MC_VERSION == "latest" && $FORGE_VERSION =~ ^1\.(17|18|19|20|21|22|23) ]]; then
unix_args
else
# For versions below 1.17 that ship with jar
mv $FORGE_JAR $SERVER_JARFILE
fi
echo -e "Deleting installer.jar file.
"
rm -rf installer.jar
echo -e "Installation process is completed"
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": "https://eggs.pterodactyl.top/eggs/155/download/egg-forge-minecraft.json"
},
"exported_at": "2025-12-31T13:05:02+00:00",
"name": "Forge Minecraft",
"author": "panel@example.com",
"description": "我的世界Forge服务器。我的世界Forge是一个模组API(应用程序编程接口),它让创建模组变得更加容易,同时确保模组之间能够相互兼容。",
"features": [
"eula",
"java_version",
"pid_limit"
],
"docker_images": {
"Java 21": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_21",
"Java 17": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_17",
"Java 16": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_16",
"Java 11": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_11",
"Java 8": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/yolks:java_8"
},
"file_denylist": [],
"startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar {{SERVER_JARFILE}}\" || printf %s \"@unix_args.txt\" )",
"config": {
"files": "{\n \"server.properties\": {\n \"parser\": \"properties\",\n \"find\": {\n \"server-ip\": \"\",\n \"server-port\": \"{{server.build.default.port}}\",\n \"query.port\": \"{{server.build.default.port}}\"\n }\n }\n}",
"startup": "{\n \"done\": \")! For help, type \"\n}",
"logs": "[]",
"stop": "stop"
},
"scripts": {
"installation": {
"script": "#!/bin/bash\n# Forge Installation Script\n#\n# Server Files: /mnt/server\napt update\napt install -y curl jq\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\nFORGE_VERSION=\"$(echo \"$FORGE_VERSION\" | tr -d ' ')\"\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\n\nif [[ ! -z ${FORGE_VERSION} ]]; then\n DOWNLOAD_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}/forge-${FORGE_VERSION}\n FORGE_JAR=forge-${FORGE_VERSION}*.jar\nelse\n JSON_DATA=$(curl -sSL https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json)\n\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\n echo -e \"getting latest version of forge.\"\n MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains(\"latest\")) | split(\"-\")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)\n BUILD_TYPE=latest\n fi\n\n if [[ \"${BUILD_TYPE}\" != \"recommended\" ]] && [[ \"${BUILD_TYPE}\" != \"latest\" ]]; then\n BUILD_TYPE=recommended\n fi\n\n echo -e \"minecraft version: ${MC_VERSION}\"\n echo -e \"build type: ${BUILD_TYPE}\"\n\n ## some variables for getting versions and things\n FILE_SITE=https://maven.minecraftforge.net/net/minecraftforge/forge/\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" --arg BUILD_TYPE \"${BUILD_TYPE}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')\n\n ## locating the forge version\n if [[ \"${VERSION_KEY}\" == \"\" ]] && [[ \"${BUILD_TYPE}\" == \"recommended\" ]]; then\n echo -e \"dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested.\"\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains(\"latest\"))')\n fi\n\n ## Error if the mc version set wasn't valid.\n if [ \"${VERSION_KEY}\" == \"\" ] || [ \"${VERSION_KEY}\" == \"null\" ]; then\n echo -e \"The install failed because there is no valid version of forge for the version of minecraft selected.\"\n exit 1\n fi\n\n FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY \"$VERSION_KEY\" '.promos | .[$VERSION_KEY]')\n\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]] || [[ \"${MC_VERSION}\" == \"1.8.9\" ]]; then\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar\n fi\n else\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar\n fi\nfi\n\n#Adding .jar when not eding by SERVER_JARFILE\nif [[ ! $SERVER_JARFILE = *\\.jar ]]; then\n SERVER_JARFILE=\"$SERVER_JARFILE.jar\"\nfi\n\n#Downloading jars\necho -e \"Downloading forge version ${FORGE_VERSION}\"\necho -e \"Download link is ${DOWNLOAD_LINK}\"\n\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\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\n\n#Checking if downloaded jars exist\nif [[ ! -f ./installer.jar ]]; then\n echo \"!!! Error downloading forge version ${FORGE_VERSION} !!!\"\n exit\nfi\n\nfunction unix_args {\n echo -e \"Detected Forge 1.17 or newer version. Setting up forge unix args.\"\n ln -sf libraries/net/minecraftforge/forge/*/unix_args.txt unix_args.txt\n}\n\n# Delete args to support downgrading/upgrading\nrm -rf libraries/net/minecraftforge/forge\nrm unix_args.txt\n\n#Installing server\necho -e \"Installing forge server.\n\"\njava -jar installer.jar --installServer || { echo -e \"\nInstall failed using Forge version ${FORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}.\nShould you be using unlimited memory value of 0, make sure to increase the default install resource limits in the Daemon config or specify exact allocated memory in the server Build Configuration instead of 0! \nOtherwise, the Forge installer will not have enough memory.\"; exit 4; }\n\n# Check if we need a symlink for 1.17+ Forge JPMS args\nif [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\n unix_args\n\n# Check if someone has set MC to latest but overwrote it with older Forge version, otherwise we would have false positives\nelif [[ $MC_VERSION == \"latest\" && $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\n unix_args\nelse\n # For versions below 1.17 that ship with jar\n mv $FORGE_JAR $SERVER_JARFILE\nfi\n\necho -e \"Deleting installer.jar file.\n\"\nrm -rf installer.jar\necho -e \"Installation process is completed\"",
"container": "registry.cn-shanghai.aliyuncs.com/pterodactyl-images/installers:java_8",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "构建类型",
"description": "从forge下载的服务端jar包类型。\n\n有效类型为\"recommended\"和\"latest\"。",
"env_variable": "BUILD_TYPE",
"default_value": "recommended",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:recommended,latest",
"field_type": "text"
},
{
"name": "Forge 版本",
"description": "完整精确版本。\n\n例如:1.15.2-31.2.4\n\n覆盖 MC_VERSION 和 BUILD_TYPE。如果无法下载服务器文件,安装将会失败。",
"env_variable": "FORGE_VERSION",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|regex:/^[0-9\\.\\-]+$/",
"field_type": "text"
},
{
"name": "我的世界版本",
"description": "你想要安装的Minecraft版本。\n\n保留为latest将安装最新推荐版本。",
"env_variable": "MC_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:9",
"field_type": "text"
},
{
"name": "服务器Jar文件",
"description": "运行低于1.17版本的Forge时使用的Jar文件名。",
"env_variable": "SERVER_JARFILE",
"default_value": "server.jar",
"user_viewable": true,
"user_editable": true,
"rules": "required|regex:/^([\\w\\d._-]+)(\\.jar)$/",
"field_type": "text"
}
]
}附属文件
暂无附属文件
提交历史
Fork 关系
查看关系图暂无 Fork,成为第一个 Fork 的人吧!
统计
70
浏览
11
下载
0
星标
0
复刻
作者
飒
飒爽师叔
UID: 1
279 预设
·
2026-06