PaperFixes
No reviews yet
A collection of bug and performance fixes from CraftBukkit, Spigot, and Paper in a Forge mod.
Does not follow a specific thematic focus apart from vanilla Minecraft.
Used for mods with little to no gameplay elements.
Addresses and fixes known bugs and issues.
Enhances game performance and optimizes resource usage.
Forge is a popular mod loader for versions 1.1+ of Minecraft.
Community voices
Reviews
Click once to include, again to exclude, again to clear
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
Works on the client or the server alone, but does more when on both.
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
PaperFixes
A collection of bug and performance fixes from CraftBukkit, Spigot, and Paper in a Forge mod.
This is a performance mod, and bugs and incompatibilities could occur. Please open a GitHub issue if you find any.
Current Fixes and Features
Bugfixes
avoidItemMergeForFullStacks- Skips merging checks for full item stacks before bounding box check.clearPacketQueue- Clears player packet queue on disconnect to prevent memory leaks.explosionsIgnoreDeadEntities- Excludes dead entities and untargetable players from explosions.fixMc54738(MC-54738) - Limits biome weight variable to fix terrain spikes.fixMc80966(MC-80966) - Ensures empty subchunks send data to clients.fixMc98153(MC-98153) - Prevents rubber-banding and suffocation in nether portals.fixMc133373(MC-133373) - Resets NaN attribute values.fixShulkerDispenseCrash- Prevents crash when placing non-empty shulker box via dispenser at height limit.fixShulkerDupe- Fixes duplication from shulker box tile entity not being removed.fixWaterMobSpawnCheck- Ensures water mobs spawn inside water with space.dontOffloadBeaconColorUpdate- Avoids unnecessary thread hopping for beacon updates.handleNullTileCrashes- Logs null tile entities instead of causing more problems.removeInvalidMobSpawners- Removes broken mob spawners that don't exist.sortEnchantments- Sorts enchantments by ID to ensure identical items are treated the same.
Client
-
cacheLastChunk- Because Minecraft accesses the same chunk from the chunk provider multiple times in one frame, we can cache the last one accessed. This doesn’t usually have a big effect on the client, but flying around and loading chunks can be a little faster when many operations are done per chunk. -
fastWorldBorder- Disabled on the client (including the internal server) by default because animations for border movement don’t work correctly, causing the border to snap to the end position when the countdown ends. If you don’t care about this, you can enable world border caching for the client and internal server.
Features
-
spawnChunkGamerule- Enables thespawnChunkRadiusgamerule. Lets you define a spawn chunk radius for your world or server, similar to modern Minecraft, but with a few differences. In Minecraft 1.12, chunk tickets didn’t exist, so spawn chunks are a fixed 16×16 section always loaded and ticked. Entities inside are only processed in a smaller 12×12 area, because entity AI requires a 5×5 loaded area. PaperFixes uses a consistent diameter by centering on the chunk containing spawn, unlike vanilla which can make it 17×17 if spawn is centered in a chunk. Setting this gamerule to0completely disables spawn chunks. -
spawnChunkRadius- Sets the default spawn chunk radius for the above feature. Applies only to new worlds or worlds not yet run with PaperFixes 2.0.0-beta.1 or newer. Values can range from 0 to 32, where 0 disables spawn chunks entirely and 32 gives a 64-chunk diameter. -
improvedTickLoop- Measures time in nanoseconds instead of milliseconds for better accuracy, usesLockSupport.parkNanosfor precise sleeps, and adapts sleep time depending on tick length. Runs ticks as fast as possible when the server is more than 2.5 seconds behind, spinning instead of sleeping near the start of the next tick to avoid oversleeping. -
tickLoopSpinTime- Controls how long (in nanoseconds) the server tick loop will spin instead of sleeping. Also affects when the loop stops running scheduled tasks during what would normally be sleep time. -
runTasksDuringSleep- Allows the tick loop to run scheduled tasks instead of idling during sleep periods. -
fastWorldBorder- Caches the corners of the world border to make calculations faster instead of recomputing them each time.
Performance
-
ioThreadSleep- Controls how long the world save thread sleeps. By default in PaperFixes, it doesn’t sleep at all to avoid rare memory and saving issues. If enabled, it sleeps for 2 ms instead of the usual 10 ms. Best left disabled unless you have a specific reason. -
cacheBlockDensities- Caches block density values so explosions don’t need to re-check the same block data repeatedly. -
cacheLastChunk- Caches the last chunk accessed from the chunk provider within a tick, avoiding repeated lookups. -
compactLut- Uses a smaller, faster lookup table for sine and cosine calculations. Thanks to jellysquid3 and ruViolence. -
fastChests- Runs chest open/close animations only when needed, instead of every tick. -
smartRegionRead- Reads the entire region file header at once for faster world loading and fewer potential issues. -
fastEntityDataMap- Stores and looks up entity data with a faster hash map. -
optimizePathfinding- Improves pathfinding by skipping repeated or impossible paths. -
optimizedTaskQueue- Uses a faster queue implementation for scheduled tasks. -
pathingChunkCache- Tracks the chunk an entity is moving through with a quick 1D cache. Thanks to jellysquid3 and ruViolence. -
pathNodeCache- Saves pathing data so the same blocks aren’t recalculated repeatedly. Thanks to jellysquid3 and ruViolence. -
queueChunkSaving- Saves chunks gradually over time instead of all at once, reducing server pause time during saves. -
trimRegionCache- Unloads only the least-used regions instead of all at once, preventing immediate reloading of active regions. -
sharedRandomForEntities- Uses a shared random number generator for all entities rather than creating a new one for each.
Known Incompatibilities
- The improved tick loop is not compatible with the
mixin.bugfix.slow_tps_catchupoption from VintageFix (removed as of commit ecbc3e1 and no longer in the latest release) and the tick loop changes from Forged Carpet and likely from any other mod. - Bad core mods can cause re-entry errors and crash the game as soon as it starts. This is not PaperFixes' fault and is
unavoidable because these mods are loading game classes too early. The only solution is to replace them with a fork
that fixes the problems.\
An incomplete list of problematic core mods and solutions:
- Quark: Replace with Quark: RoTN Edition (Thanks to sahih_international for finding this)
PaperFixes
A collection of bug and performance fixes from CraftBukkit, Spigot, and Paper in a Forge mod.
This is a performance mod, and bugs and incompatibilities could occur. Please open a GitHub issue if you find any.
Current Fixes and Features
Bugfixes
avoidItemMergeForFullStacks- Skips merging checks for full item stacks before bounding box check.clearPacketQueue- Clears player packet queue on disconnect to prevent memory leaks.explosionsIgnoreDeadEntities- Excludes dead entities and untargetable players from explosions.fixMc54738(MC-54738) - Limits biome weight variable to fix terrain spikes.fixMc80966(MC-80966) - Ensures empty subchunks send data to clients.fixMc98153(MC-98153) - Prevents rubber-banding and suffocation in nether portals.fixMc133373(MC-133373) - Resets NaN attribute values.fixShulkerDispenseCrash- Prevents crash when placing non-empty shulker box via dispenser at height limit.fixShulkerDupe- Fixes duplication from shulker box tile entity not being removed.fixWaterMobSpawnCheck- Ensures water mobs spawn inside water with space.dontOffloadBeaconColorUpdate- Avoids unnecessary thread hopping for beacon updates.handleNullTileCrashes- Logs null tile entities instead of causing more problems.removeInvalidMobSpawners- Removes broken mob spawners that don't exist.sortEnchantments- Sorts enchantments by ID to ensure identical items are treated the same.
Client
-
cacheLastChunk- Because Minecraft accesses the same chunk from the chunk provider multiple times in one frame, we can cache the last one accessed. This doesn’t usually have a big effect on the client, but flying around and loading chunks can be a little faster when many operations are done per chunk. -
fastWorldBorder- Disabled on the client (including the internal server) by default because animations for border movement don’t work correctly, causing the border to snap to the end position when the countdown ends. If you don’t care about this, you can enable world border caching for the client and internal server.
Features
-
spawnChunkGamerule- Enables thespawnChunkRadiusgamerule. Lets you define a spawn chunk radius for your world or server, similar to modern Minecraft, but with a few differences. In Minecraft 1.12, chunk tickets didn’t exist, so spawn chunks are a fixed 16×16 section always loaded and ticked. Entities inside are only processed in a smaller 12×12 area, because entity AI requires a 5×5 loaded area. PaperFixes uses a consistent diameter by centering on the chunk containing spawn, unlike vanilla which can make it 17×17 if spawn is centered in a chunk. Setting this gamerule to0completely disables spawn chunks. -
spawnChunkRadius- Sets the default spawn chunk radius for the above feature. Applies only to new worlds or worlds not yet run with PaperFixes 2.0.0-beta.1 or newer. Values can range from 0 to 32, where 0 disables spawn chunks entirely and 32 gives a 64-chunk diameter. -
improvedTickLoop- Measures time in nanoseconds instead of milliseconds for better accuracy, usesLockSupport.parkNanosfor precise sleeps, and adapts sleep time depending on tick length. Runs ticks as fast as possible when the server is more than 2.5 seconds behind, spinning instead of sleeping near the start of the next tick to avoid oversleeping. -
tickLoopSpinTime- Controls how long (in nanoseconds) the server tick loop will spin instead of sleeping. Also affects when the loop stops running scheduled tasks during what would normally be sleep time. -
runTasksDuringSleep- Allows the tick loop to run scheduled tasks instead of idling during sleep periods. -
fastWorldBorder- Caches the corners of the world border to make calculations faster instead of recomputing them each time.
Performance
-
ioThreadSleep- Controls how long the world save thread sleeps. By default in PaperFixes, it doesn’t sleep at all to avoid rare memory and saving issues. If enabled, it sleeps for 2 ms instead of the usual 10 ms. Best left disabled unless you have a specific reason. -
cacheBlockDensities- Caches block density values so explosions don’t need to re-check the same block data repeatedly. -
cacheLastChunk- Caches the last chunk accessed from the chunk provider within a tick, avoiding repeated lookups. -
compactLut- Uses a smaller, faster lookup table for sine and cosine calculations. Thanks to jellysquid3 and ruViolence. -
fastChests- Runs chest open/close animations only when needed, instead of every tick. -
smartRegionRead- Reads the entire region file header at once for faster world loading and fewer potential issues. -
fastEntityDataMap- Stores and looks up entity data with a faster hash map. -
optimizePathfinding- Improves pathfinding by skipping repeated or impossible paths. -
optimizedTaskQueue- Uses a faster queue implementation for scheduled tasks. -
pathingChunkCache- Tracks the chunk an entity is moving through with a quick 1D cache. Thanks to jellysquid3 and ruViolence. -
pathNodeCache- Saves pathing data so the same blocks aren’t recalculated repeatedly. Thanks to jellysquid3 and ruViolence. -
queueChunkSaving- Saves chunks gradually over time instead of all at once, reducing server pause time during saves. -
trimRegionCache- Unloads only the least-used regions instead of all at once, preventing immediate reloading of active regions. -
sharedRandomForEntities- Uses a shared random number generator for all entities rather than creating a new one for each.
Known Incompatibilities
- The improved tick loop is not compatible with the
mixin.bugfix.slow_tps_catchupoption from VintageFix (removed as of commit ecbc3e1 and no longer in the latest release) and the tick loop changes from Forged Carpet and likely from any other mod. - Bad core mods can cause re-entry errors and crash the game as soon as it starts. This is not PaperFixes' fault and is
unavoidable because these mods are loading game classes too early. The only solution is to replace them with a fork
that fixes the problems.
An incomplete list of problematic core mods and solutions:- Quark: Replace with Quark: RoTN Edition (Thanks to sahih_international for finding this)
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers
