A simple python script to pregenerate minecraft worlds.

Overview

mcloady

mcloady is a lightweight python script used to pre-generate Minecraft terrain using MCRcon and carpet mod (optional). Inspired by Pre-Generating A Minecraft World (Hermitcraft Season Seven) by Xisumavoid.

Has this ever happened to you? You are about to open your Minecraft server to the public but you need to pre-generate the terrain to avoid any lag issues when 20 people connect all at the same time to the server and start travelling in different direction. You would love to use pre-generating mods such as Chunky but they're not available for the version of Minecraft you want to play yet!

Fear no more, you don't need a dedicated Minecraft mod for it, just a player in a world, flying and looking around.

Usage

Download the python file (you will need to have python 3 installed on your machine) or the compiled exe file. Fill in the config.ini file. If you have carpet installed on your server you do not need to spawn a player. If you don't have carpet in your server, you need to spawn a player and leave it logged on in the world.

Make sure RCON is enabled in your server.properties file by setting these parameters:

rcon.port=25575
enable-rcon=true
rcon.password=setyourownpassword

Once that is done you can execute the script and leave it running until it finishes. You can stop it at any time and continue afterwards, the script will remember where it stopped and continue from there.

How does it work

The script uses a player for loading areas in the world. It puts the player into spectator mode and it moves it around in increments, drawing a grid. You can use carpet mod if you don't want to have a Minecraft client open.

If stopped at any time and started again, it will start from the last saved position (which it does automatically).

Depending on the area you want to load and the time increments you're using, it can take a long time to pregenerate it. An area of 10000x10000 will take around 17 hours with the default parameters in the configuration file. If you want to reduce the time and your server can handle loading the terrain in less time than specified in the configuration file, you can lower the 'first_wait' and 'second_wait' parameters to make it shorter.

Configuration parameters

Parameter Description
server_ip This is yoru server IP
password The password you've set in rcon.password in your server.properties file
name The player name you want to use. If you're not using carpet, that has to be your player and it must be logged on and have op permissions
use_carpet In case carpet is available and you don't want to spawn your player into the world, you can use carpet to spawn a bot for you so you don't need to have the Minecraft client open.
last_tp This is the name of the file where the last teleport will be saved in case the program is interrupted. If it is interrupted it will start again from where it last stopped.
radius This is the radius from the spawn of the world that you would like to generate.
altitude You can change this parameter if you want. You don't need to.
increments The increments in which the teleports will occur. For a render distance of 12 chunks (196 blocks), an increment of 200 is good. For render distance of 10 chunks, you can set it to increments of 150.
first_wait When the first teleport to a new part of the world occurs, the program will wait this time until starting to turn the player around.
second_wait After the first turn of the player has occurred, the program will wait this time to turn the player around.

Dependencies

Python dependencies:

  • mcrcon (required), a python library that implements the rcon communication protocol
  • configparser (required), a python library that implements a basic configuration language

Minecraft dependencies:

  • carpet mod (optional), used in this context to spawn a bot into a world

Improving execution time and resource usage

If carpet mod is available for the version you want to pregenerate, I strongly suggest you use it. This way you don't need to have a minecraft client open and a player logged on. Using carpet is also good to prevent connection issues, if your Minecraft player disconnects the program will fail.

The script uses next to none resources of your computer. I suggest running it on a raspberry pi if you have one available. I ran this script for a server with a raspberry pi 0w with no problems.

Future improvements

  • Error Handing: Right now the program does not do any error handling. If an error occurs the user will not know why and the program may not stop.
  • Spiraling moving algorithm: An algorithm that pregenerates the terrain in a spiral instead of just iterating rows and columns in a grid is a priority improvement. This would mean that the program would start from the middle and start moving outwards. If the program has not reached the radius border, the world is still playable.
  • Singleplayer pregenerating: Whether it's for a singleplayer or to later upload to a server, the program should have an option to run it in singleplayer without using rcon.
  • Graphical Interface: This would help less experienced server admins to use the program.

Contributing

Pull requests are welcome.

License

MIT

You might also like...
PyCraft - A Minecraft launcher made in python

A Minecraft launcher made in python. The main objective of this launcher is to enable players to enjoy minecraft (especially those without a mojang/microsoft account). This launcher is not illegal as all files are downloaded from libraries.minecraft.net

 A Minecraft clone written in python and pyglet.
A Minecraft clone written in python and pyglet.

PyCraft A Minecraft clone written in python and pyglet. Running PyCraft To run PyCraft, run the following code: git clone https://github.com/TheWebCra

A 16x16 clone of Minecraft Classic, written in Python with the Ursina Engine

VoxelCraft A 16x16 clone of Minecraft Classic, written in Python with the Ursina Engine Features:Trees, Water(But there's no gravity, so if you break

A minecraft bedrock server software written in python (3.X)
A minecraft bedrock server software written in python (3.X)

Podrum README also available in: English 🇺🇸 Français 🇫🇷 Deutsch 🇩🇪 Español 🇪🇸 Tiếng Việt 🇻🇳 Italiana 🇮🇹 Русский 🇷🇺 中文 🇨🇳 Is a Minecraf

Multi minecraft server helper for python
Multi minecraft server helper for python

呐 Yuki 您的群组服操作小助手。 使用Python3编写。使用 .yaml 配置文件记录子服,配合Screen管理Linux系统上的Minecraft子服,支持MCDR子服与非MCDR子服。 功能: 开启所有子服 关闭所有子服 重载所有子服MCDR 重载所有子服ChatBridge 使用方法:

2D Minecraft Clone made with Python & Pygame & OpenGL
2D Minecraft Clone made with Python & Pygame & OpenGL

2D Minecraft Clone This is a 2D clone of the well-known game Minecraft made in Python using Pygame and ModernGL I started this mostly as a self-improv

A Python based program that displays Your Minecraft Server's Status Infos.

Minecraft-server-Status This (very) small python script allows you to view any Minecraft server's status Information Usage Download the file, install

Open-source project written in the ursina engine, simulating the popular game Minecraft.
Open-source project written in the ursina engine, simulating the popular game Minecraft.

Voxelcraft is an open-source project written in the ursina engine, simulating the popular game Minecraft.

Setup minecraft server (Tuinity) to your directory
Setup minecraft server (Tuinity) to your directory

hapeshiva server-setup Setup minecraft server (Tuinity) for you. Support for optimization Create optimized yml Customazible server port and view dista

Comments
  • Include an estimated time remaining in the console output?

    Include an estimated time remaining in the console output?

    Loving this but I was wondering how long it would take to finish running this script when I was (still am!) using it. Should be easy to calculate the remaining time using the time values given from the .ini file.

    I had to do the math myself and ended up with about 31 hours total but it'd be nice to see the progress remaining and maybe a % complete!

    Just a suggestion 😊

    opened by maxheyn 1
  • Utilize Spiral Algorithm for mcloady

    Utilize Spiral Algorithm for mcloady

    mcloady now starts from 0,0 in the world and spirals outward. Modified the saving feature to accommodate this change. Utilizes a spiral algorithm I found on StackOverflow. Linked in the code in a comment.

    I also did a bit of refactoring.

    opened by anthonymendez 0
  • Set game rules during world generation

    Set game rules during world generation

    In Xisuma's video (timestamp), he mentions that there are some game rules that should be set to particular values. I looked through the code, and it doesn't seem like that's happening. I think it would be useful to set these rules when generation begins or resumes. These could be toggled on or off with command-line arguments, possibly.

    The game rules Xisuma mentions in particular include:

    • Turning off the daylight cycle gamerule doDaylightCycle false
    • Turning off weather gamerule doWeatherCycle false
    • Turning off mob spawning gamerule doMobSpawning false

    I would also recommend turning off fire ticking (gamerule doFireTick false).

    When generation completes, the gamerules should be reset to their default values (true in each case).

    This will help reduce the overhead of a user trying to do this/following along.

    opened by greenstack 0
Releases(v0.2)
You can play TicTacToe with the engine running UI.py with python3

TicTacToe An "Engine" for TicTacToe You can play TicTacToe with the engine running UI.py with python3. The file engine.py is designed so you can make

Ahnaf Syndeed 3 Feb 20, 2022
An automation bot to play Myuu Discord game

Auto selfbot Myuu is a self Discordbot, meaning it will use your TOKEN to logged as your account and take commands from yourself to play the game.

6 Dec 15, 2022
🐍 Conway's Game of Life cellular automaton implemented in PyGame

Conway's Game of Life My PyGame implementation of Conway's Game of Life. This implementation involves treating all edges of the grid as stitched toget

Mateusz Żebrak 1 May 29, 2022
🥕Try and keep da carrot alive or else . . .

Carrot 🥕 Warning 💥 : I am not a botanist. I do not study carrots or plant life. I am a noob programmer :P. So don't belive anything you see in this

1 Jan 03, 2022
This is a simple rock paper scissor game created with python.

This is a simple rock paper scissor game created with python.

Fayas Noushad 3 Feb 04, 2022
Useful tools for Minecraft worlds such as remove unused chunks, find blocks or entities.

Useful tools for Minecraft worlds such as removing unused chunks and finding blocks, command blocks or entities.

Rapha149 1 Feb 17, 2022
Useful guides, tutorials, and FAQs related to LEGO Universe and Darkflame Universe.

Awesome Lego Universe A curated list of awesome things related to LEGO Universe. LEGO Universe was a kid-friendly massively-multiplayer online role pl

Eric Myllyoja 33 Dec 12, 2022
Lucky Balls is gambling game where user try to guess 6 numbers from 1 to 48 that computer has picked.

LUCKY BALLS Lucky Balls is gambling game where user try to guess 6 numbers from 1 to 48 that computer has picked. INSTRUCTIONS User input his bet, tha

rile037 2 Dec 28, 2021
Mastermind-Game - A game to test programming and logical skills

Bem vindo ao jogo Mastermind! O jogo consiste em adivinhar uma senha que será ge

Marcelo Daros 0 Jan 27, 2022
A python script to solve Wordle puzzles

Wordle solver A python script to solve Wordle puzzles.

Felix Weinberger 1 Feb 12, 2022
Chess turnament organizer (short construct concept)

Turnament Organizer Chess turnament organizer (short construct concept). It is my hobby app I want to write to support lightweight tool for smart roun

kkuba91 3 Dec 16, 2022
Dueling Platform for Competitive Programming. Learn through Games.

CP-Dueling Dueling Platform for Competitive Programming. Learn through Games. Setting Up Minimum Python version needed = 3.9.9 Install Virtualenv and

Bhavesh 3 Feb 07, 2022
Pratice Project - Tic tac toe game

Hello! This tic-tac-toe game project and its notes are result from a course pratice milestone. The project itself is written in Python using the Jupyt

Rafael Nascimento 1 Jan 07, 2022
View your VALORANT performance in different areas of every map in the game!

Valorant-Zone-Stats Inspired by Leetify's awesome Map Zones Tool for CS:GO A simple desktop program to view your VALORANT performance in different are

Louis 76 Jan 01, 2023
Utility for generating randomizer datapacks for minecraft.

Minecraft Rando Utility for generating randomizer datapacks for minecraft. At the moment, it randomizes the following: Loot tables (including block dr

2 Dec 02, 2021
Generates and prints proxies for the card game Magic: the Gathering

MTG-Proxy-Generator This program generates proxies for the card game Magic: the Gathering. These proxies can then be printed off and used. These copie

Carl L. 1 Jan 31, 2022
Made by Ashish and Avinash-sord12k. Powered by pygame

Spook_alle About -Made by Ashish (Github: Ashish-Github193) and Avinash-sord12k Version - BETA v_1.0 /1-11-2021/ (game is at its base version more ite

Ashish Kumar Jha 1 Nov 01, 2021
Graphical impimetaion of Conway's Game of Life in Python using pyglet

Conway's Game of Life in Python Konstantin Opora Conway's Game of Life: graphical implementation in python using pyglet. developed in Python 3.10.0 Re

Konstantin Opora 1 Nov 30, 2021
BritishTrainsDepartureBoard - A pygame program that immitates the dot matrix departure screens found at National Rail stations

BritishTrainsDepartureBoard - A pygame program that immitates the dot matrix departure screens found at National Rail stations

Finn O'Neill 3 Aug 10, 2022
A DDQN that learned to play tic tac toe by playing against itself

TicTacToeAI A DDQN that learned to play tic tac toe by playing against itself Cu

Anik Patel 3 Apr 09, 2022