3
0
Mirror von https://github.com/IntellectualSites/FastAsyncWorldEdit.git synchronisiert 2024-11-16 16:10:07 +01:00
Datei suchen
Pierre Maurice Schwang 1ec87e7092
Support Sponge Schematic v3 (#2776)
* 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>
2024-07-13 14:30:34 +02:00
.github Update eps1lon/actions-label-merge-conflict action to v3.0.2 2024-06-03 03:38:21 +00:00
.idea Fix Misaligned SVG In IJ project view (#2174) 2023-04-10 11:54:46 +02:00
buildSrc feat: implement 1.21 (#2808) 2024-06-30 10:40:13 +02:00
contrib/craftscripts style: Fix spelling mistake of 'FastAsyncWorldEdit' in craftscript readme (#1431) 2021-11-20 12:02:25 +01:00
gradle Update dependency com.palmergames.bukkit.towny:towny to v0.100.3.4 (#2829) 2024-07-08 02:12:58 +00:00
worldedit-bukkit Support Sponge Schematic v3 (#2776) 2024-07-13 14:30:34 +02:00
worldedit-cli chore: address deprecations from new records (#2768) 2024-06-12 15:00:40 +02:00
worldedit-core Support Sponge Schematic v3 (#2776) 2024-07-13 14:30:34 +02:00
worldedit-fabric ref: switch from adventure NBT to LinBus (#2778) 2024-06-26 21:55:47 +02:00
worldedit-forge ref: switch from adventure NBT to LinBus (#2778) 2024-06-26 21:55:47 +02:00
worldedit-libs ref: switch from adventure NBT to LinBus (#2778) 2024-06-26 21:55:47 +02:00
worldedit-mod Update so many dependencies, merge Forge/Fabric for final jar (#1651) 2021-02-04 17:45:49 -05:00
worldedit-sponge Update dependency org.mockito:mockito-core to v5.12.0 2024-05-19 14:28:41 +00:00
.editorconfig Track paperweight-userdev versions with renovate (#2548) 2024-01-22 19:14:10 +01:00
.git-blame-ignore-revs Ensure CRLF stays out of the repo 2020-08-24 12:41:26 -04:00
.gitattributes Fix gitattributes 2021-02-22 11:08:45 +01:00
.gitconfig java based merging? 2019-11-19 15:10:36 +00:00
.gitignore Improve git ignore (#2206) 2023-05-04 18:30:10 +02:00
Annotation-Explanation.adoc docs: Document a few undocumented annotations 2022-01-04 21:15:45 +01:00
build.gradle.kts Back to snapshot for development 2024-06-30 11:27:51 +02:00
COMPILING.adoc Support for 1.20.5/6 (#2721) 2024-05-19 13:32:18 +02:00
crowdin.yml Update Crowdin configuration file 2020-01-20 11:30:00 +01:00
gradle.properties build: Closes #1365 2021-10-18 22:08:07 +02:00
gradlew Update dependency gradle to v8.4 (#2450) 2023-10-09 17:46:52 +02:00
gradlew.bat Update dependency gradle to v8.6 (#2577) 2024-02-06 15:12:17 +01:00
HEADER.txt Officially propagate GPL downwards to all files 2020-09-01 16:30:43 -04:00
Jenkinsfile Support for 1.20.5/6 (#2721) 2024-05-19 13:32:18 +02:00
LICENSE.txt Officially propagate GPL downwards to all files 2020-09-01 16:30:43 -04:00
NOTICE.txt Update build files and NOTICE.txt 2020-08-14 15:29:15 -04:00
README.md [ci skip] Rewrite README for modrinth (#1979) 2022-10-09 16:41:22 +02:00
settings.gradle.kts feat: implement 1.21 (#2808) 2024-06-30 10:40:13 +02:00

FastAsyncWorldEdit

Join us on Discord bStats Servers Crowdin

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.