FastAsyncWorldEdit icon indicating copy to clipboard operation
FastAsyncWorldEdit copied to clipboard

Support Sponge Schematic v3

Open PierreSchwang opened this issue 1 year ago • 8 comments

Overview

WorldEdit's new default schematic is v3 of sponge - the rise of named schematics requires FAWE to follow up.

Description

  • Adds upstream classes and schematic reader/writer.
  • Adds FAWE-specific optimized writers / (readers?)
    • Writer is faster, especially on larger regions
      • For 300mil blocks WorldEdit's implementation takes about 41s whereas the fast implementation takes about 15s
### Submitter Checklist
- [x] Make sure you are opening from a topic branch (**/feature/fix/docs/ branch** (right side)) and not your main branch.
- [x] Ensure that the pull request title represents the desired changelog entry.
- [x] New public fields and methods are annotated with `@since TODO`.
- [x] I read and followed the [contribution guidelines](https://github.com/IntellectualSites/.github/blob/main/CONTRIBUTING.md).

PierreSchwang avatar Jun 11 '24 17:06 PierreSchwang

Please take a moment and address the merge conflicts of your pull request. Thanks!

github-actions[bot] avatar Jun 12 '24 13:06 github-actions[bot]

The reset itself seems to work quite nicely with the FileInputStream - but //schem load supports url (using SchematicWeb iirc?) which passes the Response as the InputStream. That would require the BufferedInputStream to hold all bytes for the reset instead of utilizing FileChannels.

Either these schematics are stored temporary on disks (meh) or the FastReader should just delegate to the "normal" SpongeSchematicReaderV3?

PierreSchwang avatar Jun 20 '24 22:06 PierreSchwang

I figure it's probably okay to handle web schematics like we do V2 with a compressed cache for what we can't read yet. It'll be no more memory intense than WE, but allows us to make us of correctly ordered schematics still if it's present

dordsor21 avatar Jun 21 '24 06:06 dordsor21

(Tile-)Entities are working (now?) for me and schematics seem to be cross-compatible between fast + WE implementation (which guarantees conformity with the spec I'd say lol)

Fast Implementations are a tad faster than it's WE counterparts - especially for larger schematics - but don't consume near as much memory while saving / reading. The garbage collector isn't doing much either while the fast implementation does it's job.

PierreSchwang avatar Jun 23 '24 16:06 PierreSchwang

Worth noting: Passenger entities are not working - Well, they are, but metadata (e.g. sheep wool color) is not applied. The data is available in the schematic but is not applied on paste. Though same applies for the WE implementation so it's rather an issue with one of the FAWE extents.

PierreSchwang avatar Jun 23 '24 16:06 PierreSchwang

Please take a moment and address the merge conflicts of your pull request. Thanks!

github-actions[bot] avatar Jun 26 '24 19:06 github-actions[bot]

Please take a moment and address the merge conflicts of your pull request. Thanks!

github-actions[bot] avatar Jun 27 '24 13:06 github-actions[bot]

Please take a moment and address the merge conflicts of your pull request. Thanks!

github-actions[bot] avatar Jun 27 '24 13:06 github-actions[bot]

Hey it's make error in loading a lot of schematic, It's don't support well schematic made in v2.

https://paste.itsme.to/toxitefuga.sql

itsme-to avatar Aug 21 '24 18:08 itsme-to