f6af9925e8
**Add a null-check to CharBlocks FULL section layer-retrieval.** - It is possible to trim CharBlocks whilst it is attempting to read data due to the batching of chunks to help reduce memory - This is done when the number of chunks sitting loaded in memory with having been "submitted" to the queue for writing to disk becomes high - Seconday operations such as heightmap processing and lighting will quickly load chunks, meaning many chunks are submitted early - This leads to much higher chances of the chunk being submitted and subsequently trimmed given heightmap and light processing is done layer-by-layer over many chunks, rather than chunk-by-chunk - thus leading to NPEs. - By adding synchronisation to and around only the specific sections when loading/updating, and not blocking the whole chunk, many access can still be thread-safe without causing deadlocks - This allows removal of lots of the needless and very-slowing synchronisation on get**Block** methods **Remove much of the synchronisation from ChunkHolder** - We shouldn't be synchronising with call() and safety should be added elsewhere. (plus it's making edits very very slow when queue target size is hit) - Also remove much of synchronisation because we've added the null-check and section-specific synchronisation to CharBlocks **Some QOL/thread-safe data access changes** - Replaces the Array#clone seen in the get blocks classes with System#arraycopy as deep cloning is not required, and is also slower than arraycopy - Add System#arraycopy when accessing chunk section data via history to ensure it is not altered whilst being written - Renaming EMPTY to empty means it is not implied to be a static variable Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1028 Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1025 Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1089 Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1091 Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1097 |
||
---|---|---|
.github | ||
buildSrc | ||
config/checkstyle | ||
contrib/craftscripts | ||
gradle/wrapper | ||
worldedit-bukkit | ||
worldedit-cli | ||
worldedit-core | ||
worldedit-fabric | ||
worldedit-forge | ||
worldedit-libs | ||
worldedit-mod | ||
worldedit-sponge | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitconfig | ||
.gitignore | ||
build.gradle.kts | ||
COMPILING.md | ||
CONTRIBUTING.md | ||
crowdin.yml | ||
fawe-logo.png | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
HEADER.txt | ||
LICENSE.txt | ||
NOTICE.txt | ||
README.md | ||
renovate.json | ||
settings.gradle.kts |
FastAsyncWorldEdit is a fork of WorldEdit that has huge speed and memory improvements and considerably more features
A Minecraft Map Editor... that runs in-game!
- With selections, schematics, copy and paste, brushes, and scripting!
- Use it in creative, survival in single player or on your server.
- Use it on your Minecraft server to fix grieving and mistakes.
Java Edition required. FastAsyncWorldEdit is compatible with Bukkit, Spigot, Paper, and Tuinity.
Download FastAsyncWorldEdit
- Spigot: https://www.spigotmc.org/resources/fast-async-worldedit.13932/
- Older, unsupported, versions: https://intellectualsites.github.io/download/fawe.html
Links
Edit The Code
Want to add new features to FastAsyncWorldEdit or fix bugs yourself? You can get the game running, with FastAsyncWorldEdit, from the code here:
For additional information about compiling FastAsyncWorldEdit, see COMPILING.md.
Submitting Your Changes
FastAsyncWorldEdit is open source (specifically licensed under GPL v3), so note that your contributions will also be open source. The best way to submit a change is to create a fork on GitHub, put your changes there, and then create a "pull request" on our FastAsyncWorldEdit repository.
Please read CONTRIBUTING.md for important guidelines to follow.
YourKit
Thank you to YourKit for supporting our product by providing us with their innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler, YourKit .NET Profiler, and YourKit YouMonitor