Spottedleaf 40a9f1cfcd Do not allow ticket level decreases to be processed asynchronously
Note: This cannot happen on the Fabric/NeoForge versions since
async ticket level processing is not allowed, but can happen on
Paper. This change is made here so that Paper can
remain in sync.

Ticket level decreases may be handled asynchronously when the
off-thread invokes processTicketUpdates() when the main thread
is running ChunkHolderManager#tick(). This is because the ticket
update is queued during tick(), but not executed (invoking
processTicketUpdates) until after releasing the ticket lock.
This creates a small window for an off-thread to invoke
processTicketUpdates() and steal the update.

When the update is stolen, the full chunk status update (if any)
will be eventually queued to execute via the chunk task queue.
If the chunk queue is processed during the server tick at any
point other than the ChunkHolderManager tick, then any ticket
level decrease will violate an important invariant in the
Moonrise chunk system: ticket level decreases only occur during
ChunkHolderManager tick. This invariant exists to make interfacing
with the chunk system easier, especially working with off-thread
contexts.

This change is specifically made to work towards fixing
https://github.com/PaperMC/Folia/issues/363
2025-06-20 18:41:53 -07:00
2024-05-22 16:51:49 -07:00
2023-08-11 00:22:07 -07:00

Moonrise

Modrinth CurseForge Release License

Fabric/NeoForge mod for optimising performance of the integrated (singleplayer/LAN) and dedicated server.

Purpose

Moonrise aims to optimise the game without changing Vanilla behavior. If you find that there are changes to Vanilla behavior, please open an issue.

Moonrise is an official port of several important Paper patches. Listed below are notable patches:

  • Starlight
  • Chunk system rewrite
  • Collision optimisations
  • Entity tracker optimisations
  • Random ticking optimisations

Known Compatibility Issues

Mod Status
Lithium
compatibleLithium optimises many of the same parts of the game as Moonrise, for example the chunk system. Moonrise will automatically disable conflicting parts of Lithium. This mechanism needs to be manually validated for each Moonrise and Lithium release.
FerriteCore
compatibleFerriteCore optimises some of the same parts of the game as Moonrise. Moonrise will automatically disable conflicting parts of FerriteCore. This mechanism needs to be manually validated for each Moonrise and FerriteCore release.
C2ME
incompatibleC2ME is based around modifications to the chunk system, which Moonrise replaces wholesale. This makes them fundamentally incompatible.

Configuration

Moonrise provides documented configuration options for tuning the chunk system and enabling bugfixes in the config file $mcdir$/config/moonrise.yml. Important configuration options may be configured from the mods menu as well.

Contact

Discord

Description
Languages
Java 100%