Minecraft

Ressources

Catégorie voyageCréation Serveur

Installation de Java

Entrer la commande suivante :

sudo apt-get install openjdk-6-jre

Installation du Serveur Minecraft

Télécharger la dernière version de CraftBukkit et le mettre dans le dossier désiré du serveur

Lancer le serveur pour vérifier qu'il fonctionne en tapant la commande suivante :

java -Xmx1024M -Xms1024M -jar craftbukkit.jar nogui

Si le serveur fonctionne, la map doit se générer :

[INFO] Starting minecraft server version Beta 1.2_01
[INFO] Loading properties
[WARNING] server.properties does not exist
[INFO] Generating new properties file
[INFO] Starting Minecraft server on *:25565
[WARNING] Failed to load ban list: java.io.FileNotFoundException: banned-players.txt (Le fichier spécifié est introuvable)
[WARNING] Failed to load ip ban list: java.io.FileNotFoundException: banned-ips.txt (Le fichier spécifié est introuvable)
[WARNING] Failed to load ip ban list: java.io.FileNotFoundException: ops.txt (Le fichier spécifié est introuvable)
[INFO] Preparing level "world"
[INFO] Preparing start region
[INFO] Preparing spawn area: 4%
[INFO] Preparing spawn area: 12%
[INFO] Preparing spawn area: 20%
[INFO] Preparing spawn area: 32%
...

Le serveur fonctionne bien
Une fois la fenetre Putty fermée, le serveur se ferme aussi.
C'est normal, en fermant la console serveur, on ferme également le serveur qui tourne dedans.
Il faut faire tourner le serveur en tant que service ou en tâche de fond.(Voir la suite)

Arrêter le serveur Minecraft :

stop

Un chose très importante à savoir : Ne jamais rebooter electriquement votre serveur dédié sans avoir stoppé votre serveur Minecraft au préalable, sinon vous aurez surement la chance de découvrir un map complètement corrompue !

Exécuter le serveur en tant que service

Créer un script pour lancer le serveur en tant que service :

sudo nano /etc/init.d/minecraft ou répertoiresouhaité/minecraft.sh

Copier / coller le script ci-dessous dans Putty avec le clic-droit :

#!/bin/bash
# /etc/init.d/minecraft
# version 0.3.2 2011-01-27 (YYYY-MM-DD)

### BEGIN INIT INFO
# Provides: minecraft
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Minecraft server
# Description: Starts the minecraft server
### END INIT INFO

#Settings
SERVICE='minecraft_server.jar'
USERNAME="root"
MCPATH='/home/minecraft/'
BACKUPPATH='/home/minecraft/minecraft.backup/'

ME=`whoami`
as_user() {
if [ "$ME" == "$USERNAME" ] ; then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}

mc_start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Tried to start but $SERVICE was already running!"
else
echo "$SERVICE was not running... starting."
cd $MCPATH
as_user "cd $MCPATH && screen -dmS minecraft java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui"
sleep 7
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Could not start $SERVICE."
fi
fi
}

mc_saveoff() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... suspending saves"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
sync
sleep 10
else
echo "$SERVICE was not running. Not suspending saves."
fi
}

mc_saveon() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... re-enabling saves"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
else
echo "$SERVICE was not running. Not resuming saves."
fi
}

mc_stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... stopping."
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
sleep 10
as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
sleep 7
else
echo "$SERVICE was not running."
fi
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE could not be shut down... still running."
else
echo "$SERVICE is shut down."
fi
}

mc_update() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running! Will not start update."
else
MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\ | cut -d \" -f 2`
as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
if [ -f $MCPATH/minecraft_server.jar.update ]
then
as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
echo "Minecraft successfully updated."
else
echo "Minecraft update could not be downloaded."
fi
fi
}

mc_backup() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
# echo "$SERVICE is running! Will not start backup."
# else
echo "Backing up minecraft data"
if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"` ]
then
for i in 1 2 3 4 5 6
do
if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i ]
then
continue
else
as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i"
break
fi
done
else
as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`"
fi
echo "Backing up the minecraft server executable"
if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar" ]
then
for i in 1 2 3 4 5 6
do
if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar" ]
then
continue
else
as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar\""
break
fi
done
else
as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar\""
fi
fi
echo "Backup complete"
}


#Start-Stop here
case "$1" in
start)
mc_start
;;
stop)
mc_stop
;;
restart)
mc_stop
mc_start
;;
update)
mc_stop
mc_backup
mc_update
mc_start
;;
backup)
mc_saveoff
mc_backup
mc_saveon
;;
status)
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running."
else
echo "$SERVICE is not running."
fi
;;

*)
echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart}"
exit 1
;;
esac

exit 0

Faire CTRL+X pour sauvegarder et quitter, indiquer O pour confirmer
On accorde les permissions :

sudo chmod 755 /etc/init.d/minecraft

Créer le lien symbolique pour lancer le serveur automatiquement :

sudo update-rc.d minecraft defaults

Le serveur se lancera maintenant automatiquement en tant que service à chaque reboot du serveur dédié.

Pour lancer le serveur MC, entrer :

sudo /etc/init.d/minecraft start ou avec minecraft.sh

Utiliser screen

Le serveur étant lancé dans screen, on peut y accéder en tapant les comamndes suivantes :

Connaitre le numéro de screen du serveur Minecraft

screen -ls

Rattacher le screen existant

screen -r "numéro de screen"

Pour quitter screen faire

[CTRL]+[a] suivi de [d]

Les alias

Aller soit dans le répertoire root soit dans votre répertoire utilisateur (à préférer)
Puis éditer le fichier .bashrc ou bash_aliases (à préferer, à créer si pas créé)

sudo nano .bashrc

Puis dans le fichier rentrer les alias comme suit :

# Minecraft aliases

alias mcstart="sudo /etc/init.d/minecraft start"
alias mcstop="sudo /etc/init.d/minecraft stop"
alias mcupdate="sudo /etc/init.d/minecraft update"
alias mcbackup="sudo /etc/init.d/minecraft backup"
alias mcstatus="sudo /etc/init.d/minecraft status"
alias mcrestart="sudo /etc/init.d/minecraft restart"

ou si ca ne fonctionne pas :

alias mcstart='sh /home/gobee/Minecraft/svrcommands/minecraft.sh start'

Faire CTRL+X, puis O puis Entrée pour sauvergarder et quitter
Une fois la console redémarrée les alias peuvent être utilisés en tapant la commande