Описание
# Chunksmith
**Pre-generate your world -- and see it.**
Chunksmith generates chunks ahead of time so players never wait on worldgen. What makes it different
is that the *same pass* also builds the distant-horizon data for Distant Horizons or voxy. One run,
two results: a world that loads instantly, and a world you can see to the edge of.
Originally derived from [Chunky](https://github.com/pop4959/Chunky) by pop4959; developed
independently since. Everything Chunky did, Chunksmith still does.
**[Full documentation is on the wiki](https://github.com/Kishku7/Chunksmith/wiki)** -- every
setting, every command, and walkthroughs for pregenerating, trimming, and getting multiplayer LOD
working.
**[Report a bug or ask a question](https://github.com/Kishku7/mod_support/issues)**
---
## What Chunksmith adds
### It builds your LOD data while it pregenerates
No second pass. No re-reading region files. No separate LOD pregen afterwards. Install Distant
Horizons or voxy, run a pregen, and the distant terrain is simply there.
**It turns itself on.** If a renderer is installed, LOD generation is on. There is no config key to
hunt for.
**Already pregenerated?** Run the same pregen again. Chunksmith builds LODs from the chunks it
already has -- it does not regenerate them, and it skips everything already done. Pregenerate today,
install a renderer next month, lose nothing.
**Multiplayer LOD, with no companion mod.** Players joining your server download the pregenerated LOD
data and see the whole world at distance without ever having walked it. The same jar is both halves --
server and client. The Paper/Spigot plugin serves it too, so a modded client against a plugin server
works.
### It keeps generating while people are playing
Most pregenerators make you choose between speed and a playable server. Chunksmith measures what it
*adds* to tick time rather than steering on absolute tick time -- so a server already running hot for
its own reasons doesn't throttle Chunksmith to nothing for load it didn't cause.
Every online player shrinks the allowance further, so an empty server runs flat out and a busy one
actively gives ground. If the server still can't sustain it, the run **pauses itself with a stated
reason and resumes when things recover**. Your `/cs pause` always outranks it.
### It is measurably faster
`dispatchMaxConcurrent` controls how many chunk requests stay in flight, and it scales to your CPU
instead of a fixed cap. On an 8-core dedicated server, raising it from the old fixed 50 to 200
measured **+39% -- 31.6 to 43.9 chunks/sec**. Settable live.
### Other mods' structures actually get built
A pregenerator that drops each chunk the instant it's generated breaks every mod that reacts to "a
new chunk appeared" and then builds on a later tick -- the ground is already gone by the time it
looks. Measured with Millenaire on a 1.21.1 pregen: **309 placement attempts, 309 deferrals, zero
villages.**
Chunksmith holds each chunk until all eight neighbours exist, then releases it. Nothing here is
mod-specific -- the rule is about chunks, so anything that builds on new land benefits.
### It tells you when worldgen misbehaves
Overreach detection and structure-fault attribution, so a broken worldgen mod is something you can
identify rather than something you merely suffer.
### Everything is live
Every setting is readable and settable live -- no restart, no editing files, no server downtime.
Server settings are `/cs set`; the ones that belong to your own client are `/csclient set`. That's a
rule the project holds itself to, with a test that fails if a setting is added without a command for
it.
---
## Everything Chunky did
Flexible shapes (square, circle, diamond, triangle, star, and more), centred on coordinates, world
spawn, or the world border. Multi-world. Live progress, rate, ETA and an optional boss bar. Pause,
continue, cancel, and continue-on-restart. World trimming. A developer API for progress and
completion events.
---
## Installing
**Required on the server** -- or in single-player, where your own game *is* the server. The client
install is **optional**.
You only need it on the client for **multiplayer LOD**: to see pregenerated distant terrain on a
server you haven't walked. Pre-generation alone needs nothing on the client.
Ships as a **Fabric, Forge, and NeoForge mod** and a **Paper / Spigot plugin**. (Folia is not
supported. From 4.0.0 the plugin will not load on Folia at all -- it no longer declares
`folia-supported`, so Folia refuses it rather than running a platform nothing tests. An unverifiable
claim is worse than an absent one.)
**Server and client must run the same major version.** 4.0.0 changed the LOD wire protocol, and a
mixed 3.x/4.x pair turns LOD off in both directions: the client will not fetch and the server will
not serve. Everything else keeps working -- it is the distant terrain that stops arriving, and both
sides say so plainly rather than failing strangely.
Worth knowing before you update: **a launcher will offer 4.0.0 to anyone on 3.x**, so a client can be
updated into that mismatch without the server being touched. Move both together.
**Put the renderer on the client, and only on the client.** Distant Horizons and Voxy draw distant
terrain, and only a client draws anything -- the server just ships the data. A renderer installed on
a server is strongly discouraged and, from 3.18.1, **the server tells you so in red at startup**. It
competes for the same CPU Chunksmith is pre-generating on and duplicates the LOD your players are
already being sent; a server-side Distant Horizons also fills the console with
`[SharedApi] No DH level provided ...` warnings. Nothing is gained. If LOD is misbehaving on your
server, this is the first thing to check.
Renderer support, per loader and Minecraft version, is on the
**[Supported renderers](https://github.com/Kishku7/Chunksmith/wiki/Supported-Renderers)** page --
including the voxy forks, and which mods Chunksmith refuses to load beside.
## Quick start
```
/cs world # pick the world
/cs spawn # centre on spawn
/cs radius 5000 # how far out
/cs start # go
```
`/cs progress` to watch it, `/cs pause` and `/cs continue` as needed. The
[wiki](https://github.com/Kishku7/Chunksmith/wiki) has the rest.
## Source
[`CSv3-Current`](https://github.com/Kishku7/Chunksmith/tree/CSv3-Current) -- the 3.x and 4.x lines,
where current development happens. The 2.x line is frozen on
[`CSv2_archive`](https://github.com/Kishku7/Chunksmith/tree/CSv2_archive).
## License
GPL-3.0-only. Original Chunky (c) pop4959. Chunksmith modifications (c) Kishku7.