这是一个新人友好的MC开服脚本,基于Windows的BAT脚本。

这篇里的代码其实搬自本人B站发表的文章<=点击观看原文

核心功能

这段脚本的核心功能包括:

  • 首次运行时引导用户填写服务器启动配置并自动保存配置

  • 检查 Java 环境和服务器核心文件是否存在

  • 使用 Aikar 推荐的 JVM 参数优化服务器性能

  • 自动重启服务器,保证稳定运行

亮点

  • 第一次运行自动创建配置文件,无需每次输入繁琐命令

  • 启动前暂停并打印设置信息,确保启动无误

  • 人性化交互与防呆提示,错误提示直观易懂,便于问题排查

  • 服务端关闭后自动等待 10 秒并重启,防止服务器异常关闭造成玩家跑路

  • 性能优化的 JVM 参数启动,减少服务器占用资源

代码

@echo off
setlocal enabledelayedexpansion
if not exist startconfig.txt (
    echo 正在创建配置文件...
    echo 在开始之前,我们将会问您几个基础问题,以帮助您以后更顺利开服!
    echo (注:请不要删除目录下的startconfig.txt,否则要重新设定配置!)
    echo 没下载java环境的可以去(www.java.com)下载
    set /p line1=java版本路径(路径要加英文的""!,\bin\java.exe一般都是固定的):
    set /p line2=服务器核心文件名(要带后缀):
    set /p line3=服务器内存占用(单位G):
    echo !line1!> startconfig.txt
    echo !line2!>> startconfig.txt
    echo !line3!>> startconfig.txt
    echo 成功创建配置文件
)
:: ====检测是否有Java环境及服务器核心(防呆)====
set file="startconfig.txt"
for /f "tokens=1,* delims=:" %%a in ('findstr /n "^" %file%') do (
    if %%a==1 set useJava=%%b
    if %%a==2 set server=%%b
    if %%a==3 set useram=%%b
)
echo %useJava% | find "\bin\java.exe" >nul
if not %errorlevel% equ 0 (
    echo  =====================================
    echo [          未检测到java环境 !          ]   ╮( ̄▽ ̄")╭
    echo  =====================================
    echo 配置文件中的Java路径错误!
    echo 请检查配置文件(startconfig.txt)中第一行内容。
    echo \bin\java.exe一般都是固定的!!!
    pause
    exit
)
if not exist %useJava% (
    echo  =====================================
    echo [          未检测到java环境 !          ]   ╮( ̄▽ ̄")╭
    echo  =====================================
    echo 未找到配置中的文件!
    echo 文件可能被移动或删除,请检查文件所在位置并更改配置文件(startconfig.txt)中第一行内容。
    echo PS:如果是安装到u盘,可能是盘符改变导致的问题。
    pause
    exit
)
if not exist %server% (
    echo  =====================================
    echo [          未找到服务器核心 !          ]   ╮( ̄▽ ̄")╭
    echo  =====================================
    echo 未找到配置中的文件!
    echo 请检查配置文件(startconfig.txt)中第2行的服务器核心名字是否正确!
    pause
    exit
)
echo =====================================
echo 检测到java环境及核心,准备开启服务器!
echo =====================================
echo =====[请确认以下信息]=====
echo Java环境:%useJava%
echo 服务器核心:%server%
echo 服务器占用内存:%useram%GB
pause
:: ====启动服务器====
:startserver
title %server% >nul
echo 正在启动服务器 %server% ...
ping 127.0.0.1 -n 3 >nul
cls
echo ------------------------------------------------------------------
echo --
echo --                  正在启动%server%服务器
echo --                              请稍等...
echo --
echo ------------------------------------------------------------------
%useJava% -Xms%useram%G -Xmx%useram%G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar %server% nogui
echo -----------------------------------------------------------------
echo                           服务器已关闭
echo -----------------------------------------------------------------
echo 服务器将在10秒后重启,您也可以直接关闭程序!
ping 127.0.0.1 -n 11 >nul
goto startserver
::本脚本由B站“mcBill-唯民”制作!
::优化启动脚本来源:https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/

使用教程

  1. 打开记事本(Win+R输入notepad)

  2. 把上面的内容复制(Ctrl+C),粘贴(Ctrl+V)到记事本里

  3. 保存(Ctrl+S),后缀改为.bat,编码改为ANSI即可

  4. 放到你服务器根目录下(同服务器核心)