33 votes

Comment pré-générer un monde Minecraft ?

Je veux créer un nouveau monde sur notre serveur Minecraft, mais l'exploration d'une nouvelle carte et la génération de terrain provoquent un décalage massif.

Y a-t-il un moyen de pré-générer les morceaux (avec le générateur de cartes par défaut) dans un rayon spécifique autour du spawn ?

Je suis à la recherche d'un plugin ou d'un outil Bukkit que je puisse utiliser sur notre machine Linux. Un outil hors ligne que je peux exécuter sur ma machine locale est également acceptable.

29voto

Xetius Points 10445

Sur ce fil de discussion sur Reddit J'ai trouvé un script de ligne de commande qui génère du terrain en redémarrant de manière répétée un serveur avec des points d'ancrage variables jusqu'à ce que la zone que vous spécifiez soit remplie. Cela semble être exactement ce que vous recherchez.

Il y a aussi un plugin Bukkit nommé WorldGenerationControl qui peut le faire sur un serveur en direct.

13voto

John Hopkins Points 131

C'est lent, mais vous pouvez vous téléporter automatiquement à travers tous les chunks d'une zone spécifique de la carte pour les faire générer en utilisant Python et le module pexpect (que j'ai utilisé pour envoyer les commandes de téléportation).

Tout d'abord, faites une copie de vos données de jeu à des fins de test, puis ouvrez une invite de commande dans ce répertoire et faites ce qui suit :

$ virtualenv venv

$ source venv/bin/activate

$ pip install pexpect

Collez ce code dans teleport-expect.py (ajustez le nom du joueur et les plages xcoord et zcoord) :

#!/usr/bin/python

import sys
import pexpect
import time

# set this to your minecraft username
playername='yourplayername'

child = pexpect.spawn('java -Xms2048M -Xmx2048M -jar minecraft_server.jar nogui')
child.logfile = sys.stdout
child.expect('%s joined the game' % playername)
child.sendline('gamemode 1 %s' % playername)

for xcoord in range(1000000, 1005000, 16):
    for zcoord in range(1000000, 1005000, 16):
        child.sendline('tp %s %i 255 %i' % (playername, xcoord, zcoord))
        child.expect('Teleported %s' % playername)
        # Time between teleports. Smaller value means more stress for the server.
        time.sleep(0.5)
child.sendline('say all done!')

$ python teleport-expect.py

Une fois le serveur démarré, connectez-vous au jeu. Vous devriez voir votre joueur être automatiquement téléporté, un morceau à la fois, à travers la zone d'intérêt. La visite d'une zone de 5000x5000 prendra plusieurs heures.

Ce n'est pas un moyen rapide de générer une carte, mais c'est chouette de voir le paysage défiler. Je voulais principalement tester l'exécution du serveur Minecraft dans une session pexpect. Il y a beaucoup de potentiel pour d'autres automatisations (par exemple, surveiller les commandes créées par l'utilisateur sur un serveur vanille) !

5voto

Morlok8k Points 51

Générateur de terrain Minecraft :

étend votre monde actuel vanilla (ou modded si vous avez les mods de serveur).

http://www.minecraftforum.net/topic/187737-Minecraft-land-generator/

3voto

Zsub Points 1737

Une méthode totalement classique consisterait à générer un monde en mode solo et à l'explorer manuellement. Cela représenterait beaucoup de travail, bien sûr :)

Je ne connais pas d'autres méthodes.

2voto

Saiboogu Points 156

Le site WorldBorder pour Bukkit vous permet de définir une taille de carte prédéfinie (mesurée en rayon à partir du spawn) et, en option, une taille de carte plus petite. auto-générer le terrain à l'intérieur de vos frontières.

Il génère automatiquement du terrain en arrière-plan pendant que le serveur fonctionne. Il a fallu environ 24 heures pour générer mon monde rond de 3000 blocs de rayon sur un serveur quadricœur avec 4 Go alloués à Minecraft. Il semble que la mémoire soit le facteur limitant - le processus est plus rapide que les routines GC de Java et doit s'arrêter périodiquement pour attendre que la mémoire se libère à nouveau. Forcer un redémarrage du serveur lorsque l'utilisation de la mémoire est élevée l'a accéléré, mais à la fin, je l'ai simplement ignoré et il a réussi à se terminer tout seul.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X