Minecraft. Játékos körökben nincs az a személy, aki ne találkozott volna még a Minecraft-al. Van aki érti, van aki nem. Van aki imádja, van aki nem. Egyesek szerint fantasztikus játék, mások szerint csupán egy halom kocka. Egy biztos, a Minecraft egy új stílust hozott a számítógépes játékok világába. Egy pár szóval most én is megemlékeznék a játékról, mert engem is elkapott a láz vele kapcsolatban.
Miről szól?
A Minecraftnak nincs igazán története. Persze meg lehet találni a fő gonoszt, legyőzni, és megtekinteni a stáblistát, de a játék maga túlmutat ezen. Kezdjük azzal, hogy nincs „a pálya”, amit követve a történetet eljuthatunk A-ból B pontba, majd C-be. Saját gépünk fog véletlenszerűen generálni egy világot, és odadob minket az egyik pontjára. Legyen az puszta, hegy, erdő, dzsungel.
Innentől mi vagyunk. Mehetünk akárhova. Csinálhatunk akármit. A pályán nincs dekoráció, mindent kibányászhatunk, elmozdíthatunk, illetve a felhalmozott nyersanyagokból építkezhetünk. Fontos tudni, hogy a Minecraft világában minden block-okból (négyzetekből) áll. A föld, a víz, fa, kő, stb ugyan akkora négyzet csak a színük más. Szokás a Minecraft-ot LEGOzásnak is nevezni. Gyakorlatilag egy interaktív LEGO világ. Tehát van egy véletlenszerű világunk, amibe bepottyanunk, és azt tehetünk, amit akarunk.
A kreativitás pedig hamar elragadja az ember gyermekded lelkét.

Bányászás
A Minecraft alapvetően két részből áll. A bányászás az első fontos része. Minden block-ot ki tudunk bányászni. Ezzel tetszőleges alakzatokat, házakat, kialakítva. Természetesen a földön és az egyszerű kövön túl találhatunk speciális ásványokat, amiket speciális módon tudunk felhasználni. A bányászás viszont egy fontos eleme a Minecraft-nak. Nyersanyagból lesz minden.
Barkácsolás
Az egyedi világunk kibányászása és építésébe persze viszonylag gyorsan rá lehetne unni. Az egészet feldobja a barkácsolás. A LEGO-val játsza nincs lehetőségünk elemeket összepárosítva új tulajdonsággal és funkcióval felruházni a block-okat. A Minecraft-ban a karakterünk alapból rendelkezik „crafting” képességgel. Adott egy 2×2 es négyzet, amibe ha megfelelő nyersanyagot teszünk a megfelelő négyzetbe, akkor kapunk egy új elemet, vagy épp eszközt. Készíthetünk csákányt, baltát, kardot, stb. Persze lehetőségünk van barkácsasztal, sütő, és egyéb eszköz megalkotására, ami által még újabb eszközöket tudunk létrehozni. A list szinte végtelen.
A friss verzióban készíthetünk elektromos, és automatikus eszközöket, és környezetünket minden féle alap elektromosságból ismert szabályok szerint turbózhatjuk fel.

A szörnyek
A játék ismeri a napszakokat és az időjárást is. Van, hogy esik az eső, a hegyekben a hó. Ennék viszont fontosabb, hogy időről időre váltakoznak a nappalok és éjszakák. Éjszaka persze rosszabbul látunk, de ami ennél is fontosabb Survival módban, este jönnek a szörnyek. Különféle szörnyek vannak. Van amik nyilaznak, vannak amik felrobbannak mellettünk, mások varázslatokat dobnak ránk, de egy közös, mind meg akar minket ölni.
Tehát este be kell menekülnünk valami elzárt helyre. Saját házunkba, egy barlangba, vagy akárhova. A lényeg, hogy kivilágított és elzárt hely legyen. A kivilágított helyeken nem tűnnek elő szörnyek, de utánunk utánunk jönnek. Amint feljön a nap a legtöbb felgyullad és magától elég.
Amennyiben megöl minket egy szörny, úgy normál Survival esetében újraszületünk, elvesztjük azokat a cuccainkat, amik nálunk voltak, de persze minden, amit a világban tettünk az megmarad.
Creative
Creative módban gyakorlatilag Istenek vagyunk. Nem árthat nekünk senki, alapból MINDEN blokk és eszköz a rendelkezésünkre áll. Ilyenkor általában építeni szoktak az emberek, nem a tradicionális Minecraft-ot játszani. Ki ne rakott már ki LEGO-ból egy nagyobb alakzatot. A Minecraftban is tetszés szerint alkothatunk, akár egy nagy alakzatot, akár bonyolult elektronikus rendszereket, amiket normál esetben nem tudnánk alapanyag hiánya miatt.
Multiplayer
A játékot meg kell vásárolni, nincs mese. Alapból egy játékos üzemmódban fut, és a világokat, amiket játszunk lokálisan tárolja a program. Lehetőségünk van viszont egy szerverhez kapcsolódni, és barátainkkal együtt kalandozni egy világban. Együtt bányászni, és építeni. A Minecraft akkora közösséggel rendelkezik, hogy a rengeteg speciális pálya és játékot változtató MOD megunhatatlanná teszi a társas élményt.

Minecraft Server létrehozása
A továbbiakban szeretném bemutatni, hogy lehet egy Minecraft szervert létrehozni. Én Ubuntu 12.04 LTS alatt fogom bemutatni a szükséges lépéseket.
Először is hozzunk létre egy helyi felhasználót, aki nevében fog futni a játék.
# useradd -md /home/minecraft minecraft # passwd minecraft
Bizonyosodjunk meg, hogy van JAVA futtató környezet installálva a gépünkre.
# java -version
Ha nincs telepísük:
# apt-get install openjdk-7-jre
Lépjünk át minecraft user-ré.
# su - minecraft
Töltsük le a server-t és másoljuk a minecraft home könyvtárába azt.
https://minecraft.net/download
Majd indítsuk el a játékot.
$ java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Ennyi. A probléma, az, hogy a program nem fog a háttérben futni. Amennyiben a szerverrel megszakad a kapcsolat, a program is véget fog érni. Plusz rengeteg hasznos funkciót sem tudunk használni. Server frissítése az új verzióra, világok napi mentése, vagy a program háttérben való futtatása.
Ennek megoldására okos emberek egész összetett scripteket írtak. Én a következőt használom, ami screen-en alapszik. Tehát győződjünk meg arról, hogy van-e screen installálva, ha nincs, akkor installáljuk.
# apt-get install screen
Majd hozzuk létre a következő verzérlő scriptet.
# vi /etc/init.d/minecraft
#!/bin/bash
# /etc/init.d/minecraft
# version 0.3.9 2012-08-13 (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'
OPTIONS='nogui'
USERNAME='minecraft'
WORLD='world'
MCPATH='/home/minecraft'
BACKUPPATH='/home/minecraft/backup'
MAXHEAP=1024
MINHEAP=512
HISTORY=512
CPU_COUNT=1
INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \
-XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \
-jar $SERVICE $OPTIONS"
ME=`whoami`
as_user() {
if [ $ME == $USERNAME ] ; then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}
mc_start() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is already running!"
else
echo "Starting $SERVICE..."
cd $MCPATH
as_user "cd $MCPATH && screen -h $HISTORY -dmS minecraft $INVOCATION"
sleep 7
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Error! Could not start $SERVICE!"
fi
fi
}
mc_saveoff() {
if pgrep -u $USERNAME -f $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 is not running. Not suspending saves."
fi
}
mc_saveon() {
if pgrep -u $USERNAME -f $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 is not running. Not resuming saves."
fi
}
mc_stop() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "Stopping $SERVICE"
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 pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "Error! $SERVICE could not be stopped."
else
echo "$SERVICE is stopped."
fi
}
mc_update() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is running! Will not start update."
else
as_user "cd $MCPATH && wget -q -O $MCPATH/versions http://s3.amazonaws.com/Minecraft.Download/versions/versions.json"
snap=`awk -v linenum=3 'NR == linenum {print; exit}' "$MCPATH/versions"`
snapVersion=`echo $snap | awk -F'\"' '{print $4}'`
re=`awk -v linenum=4 'NR == linenum {print; exit}' "$MCPATH/versions"`
reVersion=`echo $re | awk -F'\"' '{print $4}'`
as_user "rm $MCPATH/versions"
if [ "$1" == "snapshot" ]; then
MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$snapVersion/minecraft_server.$snapVersion.jar
else
MC_SERVER_URL=http://s3.amazonaws.com/Minecraft.Download/versions/$reVersion/minecraft_server.$reVersion.jar
fi
as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
if [ -f $MCPATH/minecraft_server.jar.update ]
then
if `diff $MCPATH/$SERVICE $MCPATH/minecraft_server.jar.update >/dev/null`
then
echo "You are already running the latest version of $SERVICE."
else
as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/$SERVICE"
echo "Minecraft successfully updated."
fi
else
echo "Minecraft update could not be downloaded."
fi
fi
}
mc_backup() {
mc_saveoff
NOW=`date "+%Y-%m-%d_%Hh%M"`
BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tar"
echo "Backing up minecraft world..."
#as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`"
as_user "tar -C \"$MCPATH\" -cf \"$BACKUP_FILE\" $WORLD"
echo "Backing up $SERVICE"
as_user "tar -C \"$MCPATH\" -rf \"$BACKUP_FILE\" $SERVICE"
#as_user "cp \"$MCPATH/$SERVICE\" \"$BACKUPPATH/minecraft_server_${NOW}.jar\""
mc_saveon
echo "Compressing backup..."
as_user "gzip -f \"$BACKUP_FILE\""
echo "Done."
}
mc_command() {
command="$1";
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
pre_log_len=`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`
echo "$SERVICE is running... executing command"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'"
sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
# print output
tail -n $[`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/logs/latest.log"
fi
}
#Start-Stop here
case "$1" in
start)
mc_start
;;
stop)
mc_stop
;;
restart)
mc_stop
mc_start
;;
update)
mc_stop
mc_backup
mc_update $2
mc_start
;;
backup)
mc_backup
;;
status)
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is running."
else
echo "$SERVICE is not running."
fi
;;
command)
if [ $# -gt 1 ]; then
shift
mc_command "$*"
else
echo "Must specify server command (try 'help'?)"
fi
;;
*)
echo "Usage: $0 {start|stop|update|backup|status|restart|command \"server command\"}"
exit 1
;;
esac
exit 0
A script elején lévő #Settings részt természetesen testre szabhatjuk. Ezek után:
Játék letöltése és frissítése a legfrissebb elérhető verzióra (nálam ez CRON-ban is benne van):
# /etc/init.d/minecraft update
Játék világának mentése (szintén szerepel CRON-ban is):
# /etc/init.d/minecraft backup
Játék szerver indítása:
# /etc/init.d/minecraft start
Játék szerver leállítása:
# /etc/init.d/minecraft stop
Játék szerver újraindítása:
# /etc/init.d/minecraft restart
Jéték szerver státuszának lekérése:
# /etc/init.d/minecraft status
Jétékszervernek direkt parancs küldés a screen-be:
# /etc/init.d/minecraft command A_PARANCS
Server config file
A szerverünk egyedi beállításait a /home/minecraft könyvtár alatt egy server.properties file-ban tehetjük meg.
# vi server.properties #Minecraft server properties #Mon Apr 28 05:36:06 CEST 2014 generator-settings= op-permission-level=4 allow-nether=true level-name=world enable-query=false allow-flight=false announce-player-achievements=true server-port=25565 level-type=DEFAULT enable-rcon=false force-gamemode=false level-seed= server-ip=192.168.1.1 max-build-height=256 spawn-npcs=true white-list=false spawn-animals=true hardcore=false snooper-enabled=true online-mode=true resource-pack= pvp=true difficulty=1 enable-command-block=false gamemode=0 player-idle-timeout=0 max-players=20 spawn-monsters=true generate-structures=true view-distance=10 spawn-protection=16 motd=XORP Minecraft Server
A részletekért mindenki nézze át a részletes leírást, itt.
Összegzés
A Minecraft egy nagyszerű játék kicsiknek és nagyoknak is. Egy olyan álomvilágot teremt számunkra, amiben bármit megtehetünk, ha elég türelmesek vagyunk, és nem félünk felfedezni minél több dolgot. Érdemes a youtube-n megnézni pár videót, hogy kedvet kapjon az ember hozzá. Megtanulni az alapvető craftolási szabályokat, és egy picit megérteni a játék lényegét.
Aki pedig kedvet kapott, az csatlakozzon a Xorp Minecraft szerveréhez. A részletes leírás megtalálható itt a Xorp Minecraft szerverről.
