1ec87e7092
* Update to Sponge Schematic 3 Includes a major refactoring of how schematics are read. (cherry picked from commit bd475b1d4acbcf2a95e5a8f3aee50d2fb2100ae8) * Licenses lol (cherry picked from commit a5ce8a47657aa987da8ca625cd658856d2eb3477) * Fix imports (cherry picked from commit e1892b7bd4ff0ca4592f8cb4e1b2d9363c4cd6ff) * Update for final changes (cherry picked from commit 2f6b50a4276b33b615d9dbc52e73e958308735f9) * chore: ensure flushed clipboard in spongev2 writer * feat: initial work on FastSchematicWriterV2 * fix: only write into palette once, write into data as varint * chore: more work on FastSchematicWriterV3 * fix: make FastSchematicWriterV3 work * fix/chore: write pos as doubles * chore: start on reader (class exists at least) * chore: replace while loop with simple if as char can be max 2 bytes * chore/feat: more work on the fast v3 reader * fix: offset must be inverted for origin * chore: use the actual FileChannel for mark / reset (if present) * chore: add null check again * chore: buffer streams in isFormat check * chore/feat: read schematic fully * chore: don't hold a lazyreference (seems harder to gc with already computed value?) * chore: remove debugs * chore: optimize FastSchematicReaderV3 * chore: remove logger warn for now * chore: constant not required anymore * chore/feat: support non-file based inputstreams (using in memory LZ4 cache) * chore: don't wrap streams unnecessary * chore: cleanup * chore: since comment for reader + writer * chore: FAST_V3 not for testing anymore * chore: update schematic and clipboard logic for linbus changes * chore: undo format check on load * fix: remove usages of old nbt types * fix: use LinBus in FaweDelegateSchematicHandler * fix: use ReaderUtil again * chore: update supported schematic types for Arkitektonika * chore: check for magic bytes in schematic (not tested yet) * revert: magic bytes check * fix: fix paletteAlreadyInitialized + biome placement on linear clipboards * Update worldedit-core/src/main/java/com/fastasyncworldedit/core/extent/clipboard/io/FastSchematicWriterV3.java --------- Co-authored-by: Octavia Togami <octavia.togami@gmail.com> Co-authored-by: Hannes Greule <SirYwell@users.noreply.github.com> |
||
---|---|---|
.github | ||
.idea | ||
buildSrc | ||
contrib/craftscripts | ||
gradle | ||
worldedit-bukkit | ||
worldedit-cli | ||
worldedit-core | ||
worldedit-fabric | ||
worldedit-forge | ||
worldedit-libs | ||
worldedit-mod | ||
worldedit-sponge | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitconfig | ||
.gitignore | ||
Annotation-Explanation.adoc | ||
build.gradle.kts | ||
COMPILING.adoc | ||
crowdin.yml | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
HEADER.txt | ||
Jenkinsfile | ||
LICENSE.txt | ||
NOTICE.txt | ||
README.md | ||
settings.gradle.kts |
FastAsyncWorldEdit
What is FAWE and why should I use it?
FAWE is designed for efficient world editing.
- Simple to set up and use
- Extremely configurable
- Uses minimal CPU/Memory
- Safe for many players to use
- Insanely fast, when using the slowest mode
FastAsyncWorldEdit is a fork of WorldEdit that has huge speed and memory improvements and considerably more features.
If you use other plugins which depend on WorldEdit, simply having FAWE installed will boost their performance.
Downloads
Downloads are available either on SpigotMC, Modrinth or on CurseForge.
Snapshots are available on Jenkins.
Features
- Over 200 Commands
- Style and translate messages and commands
- (No setup required) Clipboard web integration (Clipboard)
- Unlimited //undo, per world history, instant lookups/rollback and cross server clipboards
- Advanced per player limits (entity, tiles, memory, changes, iterations, regions, inventory)
- Visualization, targeting modes/masks and scroll actions
- Adds lots of powerful new //brushes and //tools.
- Adds a lot more mask functionality. (new mask syntax, patterns, expressions, source masks)
- Adds a lot more pattern functionality. (a lot of new pattern syntax and patterns)
- Adds edit transforms (apply transforms to a source, e.g. on //paste)
- Adds support for new formats (e.g. Structure Blocks)
- Instant copying of arbitrary size with
//lazycopy
- Auto repair partially corrupt schematic files
- Biome mixing, in-game world painting, dynamic view distance, vanilla cui, off axis rotation, image importing, cave generation, multi-clipboards, interactive messages, schematic visualization, lag prevention, persistent brushes + A LOT MORE
Performance
There are several placement modes, each supporting higher throughput than the previous. All editing is processed asynchronously, with certain tasks being broken up on the main thread. The default mode is chunk placement.
- Blocks (Bukkit-API) - Only used if chunk placement isn't supported. Still faster than any other plugin on spigot.
- Chunks (NMS) - Places entire chunk sections
- World (CFI) - Used to generate new worlds / regions
Protection Plugins
The following plugins are supported with Bukkit:
Logging and Rollback
By default you can use //inspect
and //history rollback
to search and restore changes. To reduce disk usage, increase the
compression level and buffer size. To bypass logging use //fast
.
Developer API
FAWE maintains API compatibility with WorldEdit, so you can use the normal WorldEdit API asynchronously. FAWE also has some asynchronously wrappers for the Bukkit API. The wiki has examples for various things like reading NBT, modifying world files, pasting schematics, splitting up tasks, lighting etc. If you need help with anything, hop on discord (link on the left bar).
Documentation
Contributing
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, read the compiling documentation.
Special thanks
JetBrains, creators of the IntelliJ IDEA, supports us with their Open Source Licenses.
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.