Minecraft 服务器快捷方式

Minecraft 服务器快捷方式

我是新来的,在其他地方找不到这个。我想编写一个快速的 bash 脚本,这样我就不必将以下代码复制/粘贴到我的 linux 服务器中了。

screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar

我希望能够输入一个简单的命令来运行上述命令,例如:Minecraft 或类似的东西。

答案1

这是我为我的 Minecraft 服务器编写的 shell 脚本。

将其保存为start.sh并调用./start.sh start

您还可以调用备份,这会在服务器仍可运行时创建备份。此备份可在稍后恢复。

记住将其更改craftbukkit.jar为您的 JAR 文件。

    #!/bin/bash

    # Made by bytecode77
    ##############################################################
    DIRECTORY='/home/minecraft'
    SESSIONNAME='minecraftserverscreen'
    JARFILE='craftbukkit.jar'
    WORLDNAME='world'
    NETHERNAME='world_nether'
    SKYNAME='world_skylands'
    ENDNAME='world_the_end'
    ##############################################################

start()
{
    SCREENID=$(screen -ls | grep -w $SESSIONNAME | cut -f 2)
    if [ $SCREENID ]; then
        echo "Minecraft is already running."
    else
        echo "Starting Minecraft server..."
        screen -dmS $SESSIONNAME java -Xms768M -Xmx768M -jar $JARFILE nogui
    fi
}

stop()
{
    SCREENID=$(screen -ls | grep -w $SESSIONNAME | cut -f 2)
    if [ $SCREENID ]; then
        echo "Stopping Minecraft server..."
        screen -S $SESSIONNAME -p 0 -X stuff "`printf "stop\r"`"
        while screen -ls | grep $SESSIONNAME > /dev/null
        do
            sleep 0.1
        done
    else
        echo "Minecraft is not running."
    fi
}

restart()
{
    echo "Restarting Minecraft server..."
    stop > /dev/null && start > /dev/null
}

saveoff()
{
    screen -S $SESSIONNAME -p 0 -X eval 'stuff "say Starting backup..."\015'
    screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-off"\015'
    screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-all"\015'
    sync
}

saveon()
{
    screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-on"\015'
    screen -S $SESSIONNAME -p 0 -X eval 'stuff "say Backup complete."\015'
}

backup()
{
    echo "Creating backup of '$WORLDNAME', '$NETHERNAME', '$SKYNAME' and '$ENDNAME'..."
    saveoff
    sleep 5
    mkdir -p backups
    tar cfv "backups/NEW.tar" $WORLDNAME $NETHERNAME $SKYNAME $ENDNAME > /dev/null
    mv "backups/NEW.tar" "backups/$(date +"%m-%d-%Y_%H.%M.%S").tar"
    saveon
}

restore()
{
    echo "Restoring '$WORLDNAME', '$NETHERNAME', '$SKYNAME' and '$ENDNAME'..."
    stop > /dev/null
    rm -r $WORLDNAME
    rm -r $NETHERNAME
    rm -r $SKYNAME
    rm -r $ENDNAME
    tar xfv "backups/$(ls backups -t | head -1 | grep ".tar")" > /dev/null
    start > /dev/null
}

cd $DIRECTORY

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    backup)
        backup
    ;; 
    restore)
        restore
    ;;
    *)
        echo "Usage: ${0} {start|stop|restart|backup|restore}"
        exit 2
esac
exit 0

答案2

第一的:

$ nano runMinecraft

输入以下内容:

#!/bin/bash
screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar`

保存并输入:

$ chmod +X runMinecraft

然后,要运行 Minecraft,只需输入:

$ ./runMinecraft

您还可以复制runMinecraft到,/usr/bin/这样就不必./每次运行时都输入。

答案3

假设您有~/.profile~/.bash_aliases文件,请添加一个别名~/.bash_aliasesman alias了解更多信息)

或者(也依赖于)使用正确的shebang( )~/.profile添加一个可执行的bash脚本,它也应该运行。~/bin#!/bin/bash

如果缺少文件,请从/etc/skel

cd /etc/skel
cp .profile .bash_aliases ~
echo 'alias minecraft="screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar"' | tee -a ~/.bash_aliases

重新登录就可以了

相关内容