[1.13.2 - 1.17.1] Chunky Pregenerator

Chunky
Pre-generates chunks, quickly, efficiently, and safely
A better alternative to WorldBorder fill and similar features in other plugins

Features
- Start one or several chunk generation tasks at the same time (if you want to leverage your CPU more)
- Pause chunk generation tasks, saving them for later
- Shows detailed information such as chunks processed, percent to completion, ETA, chunk processing rate, etc

Permissions
chunky.chunky Gives permission to all chunky commands

Commands
chunky start Starts a new chunk generation task
chunky pause Pauses the current chunk generation tasks, and saves progress
chunky continue Continues running current or saved chunk generation tasks
chunky cancel Stops the current chunk generation tasks, and cancels progress
chunky world <world> Sets the currently selected world
chunky worldborder Automatically sets the center and radius based on the currently selected world
chunky center <x> <z> Sets the current center block location
chunky spawn Set the center to the spawn point
chunky radius <radius> Sets the current radius
chunky corners <x1> <z1> <x2> <z2> - Set by corner coordinates
chunky shape <shape> Set the shape to generate
chunky pattern <pattern> Set the generation pattern
chunky silent Toggle displaying update messages
chunky quiet <interval> Set the quiet interval in seconds for update messages

Examples
Generate chunks centered on 0,0 with a 1000 block radius in the overworld

chunky radius 1000
chunky start

Generate chunks centered on 100,-100 with a 5000 block radius in the nether

chunky center 100 -100
chunky radius 5000
chunky world world_nether
chunky start

Set a world border at 0, 0 with a 10000 block radius and generate chunks inside

worldborder center 0 0
worldborder set 20000
chunky worldborder
chunky start


Download
You can download the plugin through Spigot or from CodeMC below.

Additional Links
Github View the source code or report an issue
Wiki Find up-to-date information about plugin features
Discord Visit the #chunky channel and ask questions
Donate Support the project if you’ve found it useful
bStats Check out some cool stats about the plugin
CodeMC Download the latest builds from this mirror

7 Likes

Glad to see Chunky being shared here! :heart:

2 Likes

Great plugin, big fan. Chonker!

1 Like

It works with spawning mobs and enemy mobs while i’m not on the server?
And how can i set this for only one chunk to loaded?

I think you misunderstood what this plugin does. It’s not a chunk loader. It just pre-generates your world so no players can cause generation to occur in the future.

1 Like

Yeah I think you have pre-generation confused with force loaded chunks :smile:

This command may be useful to you: https://minecraft.gamepedia.com/Commands/forceload

Ohh… and /forceload works for spawning mobs and enemy mobs, while im not on the server?

Do I need to pregenerate chunks every time I close and reopen a server? (assuming it’s the same map)

Nope. Once chunks are generated they should be saved (in the region folder of the world). It would kind of defeat the purpose if you had to do it again every time you started your server. :stuck_out_tongue:

1 Like

Understood. Thank you so much!

Coming from someone with pre-gen plugins, I can definitely confirm that Chunky is outstanding :slight_smile:

1 Like

Thanks, appreciate it! I don’t even consider it even close to finished yet either, so I hope to have some more neat updates coming up as soon as I have time for them. :grin:

2 Likes

So, ah, I’m a 46 year old person who’s trying to set up a minecraft server for my kids. I’m running PaperMC on a DietPi installed on an Odroid C2. The server’s working, but of course lags badly when we go exploring because a microcomputer isn’t very beefy.

I’m not entirely sure I’ve understood the purpose correctly, but installed Chunky to try and pre-generate some landscape around the spawnpoint for us/them to explore without them lagging.

I’ve op’ed myself on the server and I can do the admin things I’d expect.
I can also call Chunky and have done this:

chunky spawn
chunky radius 500
chunky start

I receive a confirmation that it’s starting and I leave the server, but at some point within the next few minutes the server seems to crash. Do you have any suggestions on how I might troubleshooting and fix whats wrong? As you might guess, I have some tech background but I’m rather new to this corner of nerdery :slight_smile:

So,
Odroid C2, 8GB eMMC
DietPi (6.34.3)
PaperMC (1.16.5)
Chunky (bukkit/build/libs/Chunky-1.2.16.jar from CodeMC)

If you can share the error you are seeing that would be helpful.

The plugin itself has little/no memory or cpu overhead to the process of generating the chunks, but the task of doing so is itself demanding.

A Pi might not be best suited to the task. If you intend to attempt hosting it on that hardware, you may want to consider pre-generating the world on another more powerful system first, and then move it over.

Thank you for your reply :slight_smile:
Hmmmm, yes, latest.log does occasionally state that the server might be overloaded (see below).

[10:56:22] [Server thread/INFO]: [Chunky] Task running for world. Processed: 2414 chunks (57.14%), ETA: 0:11:21, Rate: $

[10:56:25] [Server thread/INFO]: [Chunky] Task running for world. Processed: 2415 chunks (57.16%), ETA: 0:15:43, Rate: $

[10:56:25] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 26799ms or 535 ticks behind

[10:56:28] [Server thread/INFO]: [Chunky] Task running for world. Processed: 2421 chunks (57.30%), ETA: 0:14:10, Rate: $

[10:56:32] [Server thread/INFO]: [Chunky] Task running for world. Processed: 2427 chunks (57.44%), ETA: 0:17:16, Rate: $

[10:56:36] [Server thread/INFO]: [Chunky] Task running for world. Processed: 2435 chunks (57.63%), ETA: 0:15:24, Rate: $

The Odroid C2 certainly isn’t beefy, no, but it’s what I had lying around from another project…

So you think I could somehow pregenerate a world on my beefy Macbook pro and simply use those files on my Odroid server? As in copying the entire “Forest Village” folder to my PaperMC server folder?

Yes, usually you can just copy the files from your other server.

1 Like

Hey There,

thx for this awesome plugin!! tried Worldborder on 1.16 and its always crashing. Yours working smooth in the back and is doing great.
Maybe one new Feature:
a command to see the actual status of progess. With a % of the hohle render progress. Didn’t look in some planned features so maybe duplicated.

Great Work!!!

Kindly
Simon

Glad to hear it’s working well for you! I’ll keep your suggestion in mind, as a status command is already something I was considering. Right now you can still see quite a bit of information in the console though, such as the percent for each task.

Getting a ton of errors and a crash at the end. This is a low resource server (AWS lightsail 2gb, 1vcpu), but is ok for 2 or so players. I ran Chunky last night to increase radius from 2000 to 2500. It took seconds to get up to 67%, and then was stuck for the next 8 hours. No one was on until about 15 mins ago. Looks like when they logged on the server crashed. Not sure what they were doing, but the server was at 100% cpu capacity so it looks like it just tipped over.

Here are examples of the errors - I have about 8 hours of these in the logs and would be happy to share if you want:
[03:04:43] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[03:04:43] [Paper Watchdog Thread/ERROR]: Chunk wait task info below:
[03:04:43] [Paper Watchdog Thread/ERROR]: 126,56 in 'world:
[03:04:43] [Paper Watchdog Thread/ERROR]: Load Task - none
[03:04:43] [Paper Watchdog Thread/ERROR]: Save Task - none
[03:04:43] [Paper Watchdog Thread/ERROR]: Chunk Holder - non-null
[03:04:43] [Paper Watchdog Thread/ERROR]: Chunk Status - minecraft:light
[03:04:43] [Paper Watchdog Thread/ERROR]: Chunk Ticket Status - minecraft:full
[03:04:43] [Paper Watchdog Thread/ERROR]: Chunk Holder Status - minecraft:features
[03:04:43] [Paper Watchdog Thread/ERROR]: Chunk Holder Priority - 2
[03:04:44] [Paper Watchdog Thread/ERROR]: ------------------------------
[03:04:44] [Paper Watchdog Thread/ERROR]: Current Thread: Server thread
[03:04:44] [Paper Watchdog Thread/ERROR]: PID: 17 | Suspended: false | Native: false | State: TIMED_WAITING
[03:04:44] [Paper Watchdog Thread/ERROR]: Stack:
[03:04:44] [Paper Watchdog Thread/ERROR]: [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
[03:04:44] [Paper Watchdog Thread/ERROR]: [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.IAsyncTaskHandler.bm(IAsyncTaskHandler.java:131)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:1
20)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.ChunkProviderServer.getChunkAt(ChunkProviderServer.ja
va:536)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//org.bukkit.craftbukkit.v1_16_R3.CraftWorld.loadChunk(CraftWorld.java:625)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.ChunkProviderServer.getChunkAtAsynchronously(ChunkPro
viderServer.java:364)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//org.bukkit.craftbukkit.v1_16_R3.CraftWorld.getChunkAtAsync(CraftWorld.java:2588)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//org.bukkit.craftbukkit.v1_16_R3.CraftWorld.lambda$getChunkAtAsync$10(CraftWorld.jav
a:2573)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//org.bukkit.craftbukkit.v1_16_R3.CraftWorld$$Lambda$3979/0x0000000840d79440.run(Unkn
own Source)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:
136)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:
109)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1252)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1245
)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeAll(IAsyncTaskHandler.java:9
5)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1381)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1116)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:289)
[03:04:44] [Paper Watchdog Thread/ERROR]: app//net.minecraft.server.v1_16_R3.MinecraftServer$$Lambda$3128/0x0000000840855840.run(U
nknown Source)
[03:04:44] [Paper Watchdog Thread/ERROR]: [email protected]/java.lang.Thread.run(Thread.java:834)

and…

[03:07:04] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk wait task info below:
[03:07:04] [Paper Watchdog Thread/ERROR]: -126,-84 in 'world:
[03:07:04] [Paper Watchdog Thread/ERROR]: Load Task - none
[03:07:04] [Paper Watchdog Thread/ERROR]: Save Task - none
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder - non-null
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Status - minecraft:features
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Ticket Status - minecraft:full
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Status - minecraft:features
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Priority - 2
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Neighbors:
[03:07:04] [Paper Watchdog Thread/ERROR]: -127,-83 in world:
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder - non-null
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Status - minecraft:liquid_carvers
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Ticket Status - minecraft:features
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Status - minecraft:liquid_carvers
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Priority - 3
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Neighbors:
[03:07:04] [Paper Watchdog Thread/ERROR]: -128,-82 in world:
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder - non-null
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Status - minecraft:structure_starts
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Ticket Status - minecraft:liquid_carvers
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Status - minecraft:structure_starts
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Priority - 4
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Neighbors:
[03:07:04] [Paper Watchdog Thread/ERROR]: -128,-74 in world:
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder - non-null
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Status - null chunk
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Ticket Status - minecraft:structure_starts
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Status - null
[03:07:04] [Paper Watchdog Thread/ERROR]: Chunk Holder Priority - 5

your server stalled on generation, likely the lighting system, not a plugin issue