33 votos

¿Cómo puedo pregenerar un mundo de Minecraft?

Quiero crear un nuevo mundo en nuestro servidor de Minecraft, pero la exploración de un nuevo mapa y la generación de terreno provoca un lag masivo.

¿Hay alguna manera de pregenerar los trozos (con el generador de mapas por defecto) en un radio específico alrededor del spawn?

Estoy buscando un plugin o herramienta de Bukkit que pueda utilizar en nuestra máquina Linux. Una herramienta offline que pueda ejecutar en mi máquina local también está bien.

29voto

Xetius Puntos 10445

En este hilo en Reddit Encontré una línea de comandos script que generará el terreno reiniciando repetidamente un servidor con diferentes puntos de aparición hasta que se llene el área que especifiques. Esto parece ser justo lo que estás buscando.

También hay un plugin de Bukkit llamado WorldGenerationControl que puede hacerlo en un servidor en vivo.

1 votos

para los futuros lectores, la línea de comandos script (gist) no existe y el WGC está obsoleto

0 votos

Boo. Eso es decepcionante.

1 votos

la línea de comandos script está en github.com/DMBuce/mcexplore

13voto

George Kyriakou Puntos 31

Es lento, pero puedes teletransportarte automáticamente por todos los trozos de una zona concreta del mapa para que se generen utilizando Python y el módulo pexpect (que he utilizado para enviar los comandos de teletransporte).

En primer lugar, haz una copia de los datos de tu juego para probarlo, luego abre una línea de comandos en ese directorio y haz lo siguiente:

$ virtualenv venv

$ source venv/bin/activate

$ pip install pexpect

Pega este código en teleport-expect.py (ajusta el nombre de juego y los rangos xcoord y 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

Una vez que se inicie el servidor, inicia sesión en el juego. Deberías ver que tu jugador es teletransportado automáticamente un trozo cada vez a través del área de interés. Visitar un área de 5000x5000 tomará varias horas de ejecución.

No es una forma rápida de generar un mapa, pero es bonito ver cómo pasa el paisaje. Principalmente quería probar la ejecución del servidor de Minecraft dentro de una sesión de pexpect. Hay mucho potencial para otras automatizaciones (por ejemplo, ver los comandos creados por el usuario en un servidor de vainilla).

2 votos

esto funcionó muy bien, incluso ahora en 2020. y porque no hay dependencia de las versiones del mundo / etc, esta solución probablemente seguirá funcionando durante mucho tiempo. He descubierto que un tiempo de 0,08 en lugar de 0,5 está perfectamente bien incluso para máquinas no muy potentes, porque el servidor va a generar trozos circundantes de todos modos, así que la MAYORÍA de las veces, el trozo que estás visitando ya está generado.

1 votos

Tenga en cuenta que este código es específico de Python 2.7, y tendría que ser ajustado si necesita usar Python 3.

5voto

Thirler Puntos 108

Generador de terrenos de Minecraft:

expande tu mundo actual vainilla (o modded si tienes los mods del servidor).

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

0 votos

3voto

Pankaj Kumar Puntos 150

Una forma totalmente vainilla sería generar un mundo en singleplayer y explorarlo manualmente. Esto supondría mucho trabajo, por supuesto :)

No conozco ningún otro método.

8 votos

Si lo haces, es mucho más rápido hacerlo en el modo Creativo, en el que puedes volar y hacer mapas en cualquier punto para controlar tu progreso. Rellenar un mapa lleva unos 10 minutos en vuelo para ~25 MB de trozos.

1 votos

Esto puede combinarse con Comandos para un solo jugador". comandos de teletransporte para reducir drásticamente el tiempo necesario.

2 votos

No estoy seguro de que esto sea una respuesta. Obviamente, el usuario está buscando un método para pregenerar su mundo de forma automática. Explorarlo manualmente, incluso con el modo creativo, es esencialmente lo opuesto a esto.

2voto

Sharad Gautam Puntos 155

El WorldBorder para Bukkit te permite establecer un tamaño de mapa predefinido (medido en radio desde el spawn), y opcionalmente autogenerar el terreno dentro de sus fronteras.

Genera automáticamente el terreno en segundo plano mientras el servidor está funcionando. Tomó alrededor de 24 horas para generar mi mundo redondo de 3000 bloques en un servidor de cuatro núcleos con 4GB asignados a Minecraft. Parecía que la memoria era el factor limitante - que sería chug a lo largo de más rápido que las rutinas de Java GC y tienen que hacer una pausa periódicamente para esperar a que la memoria para liberar de nuevo. Forzar un reinicio del servidor cuando el uso de la memoria es alto lo acelera, pero al final lo ignoro y se las arregla para terminar por sí mismo.

1 votos

Recomiendo utilizar WorldGenerationControl, es mucho más rápido. Combinamos plugins de booth en nuestro servidor, WorldGenerationControl para generar el mundo y WorldBorder para mantenerlo en tamaño.

0 votos

@Fox32 Tendré que comprobarlo, gracias.

0 votos

El plugin WorldBorder ha quedado obsoleto

JugonesTop.com

Jugonestop es una comunidad para amantes del gaming. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X