Minecraft World Pre-Generálás


Nem titkolt dolog, hogy üzemeltetek egy Forge Minecraft szervert a család, és barátok számára. A vas nem dedikált, fut rajta több dolog is, de elég erős ahhoz hogy elboldoguljon jó pár játékossal. i7 proci, 12 giga ram, 9TB HDD, 128GB SSD.

Van viszont egy dolog a minecraft-tal kapcsolatban, amit még ez a gép sem bír el. Nevezetesen ha valaki nekiáll “felfedezni”, és pl. elindul kifele a térképen sokezer kocka távolságba. A chunk generálás rendsen meg tudja fektetni a gépet, hiába az i7, hiába az SSD. A problémára megoldás a térkép előre legenerálása. Ez bődületes mértékben tehermentesíti a szervert, és mivel “bányászatra” külön világot használunk, nem jelentene problémát az esetlegesen később hozzáadott modok miatt bekerülő új worldgen hiánya sem. Bukkit szerverekhez van direkt ilyen plugin, forge-hoz viszont semmi. Az egyetlen amit találtam, az a Minecraft Land Generator nevű java progi. Elméletben ez azt csinálja amire nekem szükségem lenne, de sajnos a kivitelezés szerintem több sebből vérzik. A progi úgy szeretné elérni a célját, hogy a világ level.dat-jának szerkesztésével mindig arrébb rakja a spawn pontot, elindítja a szervert, hagyja hogy generálódjanak a chunkok, lekapcsolja a szervert, és kezdi előlről. Gondolták ha nem lenne elég az a marha nagy számítási teljesítmény ami a chunkok generálásához kell, még fejeljük meg azzal a dolgot, hogy ki-be kapcsoljuk a szervert. Valahogy úgy akartam megcsinálni a dolgot, hogy a szerver bekapcsolva maradjon, és közben generálódjanak a chunkok… és ekkor jött az ötlet: elég csak egy játékost mindig arrébb teleportálni, mondjuk 120-as Y koordinátán, kreatív módban, repülve, és az szépen le fogja nekem generálni az egészet.

Mivel a szerver futtatásához a mark2 nevű keretrendszert használom, a szerver simán tud fogadni parancsokat kívülről is (pl cron), így a játékosok mozgatása nem jelent problémát, akármilyen nyelven is írom meg a vezérlést. Természetesen maradtam kedvenc nyelvemnél, a Python-nál, és megszületett a WorldPreGen scriptem. Használat előtt szerkeszteni kell/érdemes, a maxCoord változót (mekkora X/Z koordinátáig menjen), esetleg a delay-t (várakozási idő teleport után), meg mondjuk a stepSize (hány kockát ugorjon egyszerre a karakter) értékét. Ha minden megvan, azon a gépen kell futtatni ahol a minecraft szerver fut, de előtte természetesen az adott karakterrel be kell jelentkezni a szerverre, különben nincs kit teleportálgatni.

Ahogy korábban is, ez egy összetaknyozott szkript forma, saját használatra, minden garancia nélkül. Ha tudod valamire használni, és megy, örülök, de ha megöli a hörcsögöd, azért nem tudok felelősséget vállalni :).