Skip to content

Commit

Permalink
chore: Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Steveplays28 committed Jul 16, 2024
1 parent 958e969 commit bcb9bdc
Showing 1 changed file with 29 additions and 35 deletions.
64 changes: 29 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
![Noisium icon](docs/assets/icon/icon_128x128.png)

# Noisium
# Noisium Chunk Manager

Optimises worldgen performance for a better gameplay experience.
A rewrite of Minecraft's server world chunk manager.
This mod is an addon for [Noisium](https://github.com/Steveplays28/noisium).

The improvements lie between a 20-30% speedup when generating new chunks in vanilla Minecraft (benchmarked on 1.20.1 Fabric).
Noisium Chunk Manager does NOT have 1:1 parity with vanilla worldgen (worldgen without Noisium Chunk Manager).
Keep in mind that this is separate from [Noisium](https://github.com/Steveplays28/noisium), as this is an addon.

Noisium changes some world generation functions that other mods don't touch, to fill in the gaps left by other performance optimisation
mods.
Most notably, `NoiseChunkGenerator#populateNoise` is optimised to speed up blockstate placement when generating new chunks. There are also 3
other smaller optimisations, that increase biome population speed, chunk unlocking speed, and the speed of sampling blockstates for
generation.
In `NoiseChunkGenerator#populateNoise`, setting the blockstate via abstractions/built-in functions is bypassed. Instead, the blocks are set
directly in the palette storage, thus bypassing a lot of calculations and things Minecraft does that are normally useful when blocks are
set, but when generating the world only slow it down, this is a cycle optimisation.

Noisium has full 1:1 parity with vanilla worldgen (worldgen without Noisium).
Noisium Chunk Manager replaces Minecraft's `ServerChunkManager` with a rewritten server world chunk manager. Any method calls to this class
are redirected to the rewritten server world chunk manager via Mixins.
Noisium Chunk Manager also completely removes `ThreadedAnvilChunkStorage` and `ChunkHolder`.
Any mods that interact with`ThreadedAnvilChunkStorage` will crash the game and any mods that interact with `ChunkHolder` will not function
as intended, but may not crash the game.
See the [incompatibilities](#incompatibilities) below.

## Dependencies

Expand All @@ -27,51 +25,47 @@ None.

### Compatible mods

Noisium should be compatible with most, if not all, of the popular optimisation mods currently on Modrinth/CurseForge for
Minecraft `1.20.x`, since Noisium aims to fill in the gaps in performance optimisation left by other mods.
This includes (but is not limited to) C2ME, Lithium, Nvidium, and Sodium.
Noisium Chunk Manager should be compatible with most of the popular world generation mods, as long as they do not interact with
`ThreadedAnvilChunkStorage`, see the [description](#noisium-chunk-manager) above.

- C2ME: every world generation thread runs faster. The biome population multithreading is also done in a much better/more performant way in
C2ME, so it's been removed from Noisium since `v1.0.2`. It's suggested to run C2ME alongside Noisium for even better world generation
performance.
- Distant Horizons: Noisium speeds up LOD world generation threads, since LOD generation depends on Minecraft's world generation speed.
- ReTerraForged: RTF has built-in compatibility with Noisium, to fully utilize the optimisations during RTF world generation.
- [Distant Horizons](https://modrinth.com/mod/distanthorizons): a compatibility mixin is included that adds compatibility for Distant
Horizons.

### Incompatibilities

See the [issue tracker](https://github.com/Steveplays28/noisium/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Acompatibility) for
a list of incompatibilities.
See
the [issue tracker](https://github.com/steves-underwater-paradise/noisiumchunkmanager/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Acompatibility)
for a list of incompatibilities.

- C2ME: Noisium Chunk Manager replaces C2ME

## Download

[![GitHub](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/cozy/available/github_vector.svg)](https://github.com/Steveplays28/noisium)
[![Modrinth](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/cozy/available/modrinth_vector.svg)](https://modrinth.com/mod/noisium)
[![CurseForge](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/cozy/available/curseforge_vector.svg)](https://www.curseforge.com/minecraft/mc-mods/noisium)
[![GitHub](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/cozy/available/github_vector.svg)](https://github.com/steves-underwater-paradise/noisiumchunkmanager)
[![Modrinth](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/cozy/available/modrinth_vector.svg)](https://modrinth.com/mod/noisiumchunkmanager)
[![CurseForge](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/cozy/available/curseforge_vector.svg)](https://www.curseforge.com/minecraft/mc-mods/noisiumchunkmanager)

![Fabric](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/compact/supported/fabric_vector.svg)
![Quilt](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/compact/supported/quilt_vector.svg)
![Forge](https://github.com/intergrav/devins-badges/raw/2dc967fc44dc73850eee42c133a55c8ffc5e30cb/assets/compact/supported/forge_vector.svg)
![NeoForge](docs/assets/badges/compact/supported/neoforge_vector.svg)

See the version info in the filename for the supported Minecraft versions.
Made for the Fabric, Quilt, Forge, and NeoForge modloaders. The `merged` JAR works on all aforementioned modloaders.
Server side.
Made for the Fabric, Quilt, Forge, and NeoForge modloaders.
Client-side and server-side.

## FAQ

- Q: Will you be backporting this mod to lower Minecraft versions?
A: No.

- Q: Does this mod work in multiplayer?
A: Yes, but it'll only improve performance on the server.
A: Yes.

- Q: Does only the server need this mod or does the client need it too?
A: Only the server needs this mod (but it works on the client too if you're going to host LAN or play singleplayer).

## Attribution

- Thanks to [Builderb0y](https://modrinth.com/user/Builderb0y) for giving great starting points and helping with some issues.
A: Both the client and the server need this mod.

## License

This project is licensed under LGPLv3, see [LICENSE](https://github.com/Steveplays28/noisium/blob/main/LICENSE).
This project is licensed under LGPLv3,
see [LICENSE](https://github.com/steves-underwater-paradise/noisiumchunkmanager/1.20-1.20.1/main/LICENSE).

0 comments on commit bcb9bdc

Please sign in to comment.