IntellectualSites / IntellectualSites/FastAsyncWorldEdit
FAWE does not write into extent of edit session, but into world of extent
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 806
- Forks
- 394
- Avg merge
- 22h 19m
- Merged PRs (30d)
- 14
Description
Server Implementation
Paper
Server Version
1.19.3
Describe the bug
First: This bug does not occur when using WorldEdit. It only occurs when using FAWE
When creating an ImmutableWorld Extent which blocks setting of a block and modifying the world in general, FAWE still writes into the world itself instead of the extend provided for the edit session.
None of the setBlock methods of the extent is called. I suspect that FAWE directly writes into the chunks which would makes sense considering how fawe works, but this causes that the extent is used to retrieve the chunks but not to write the changes.
Since the original extent is wrapped into an SingleThreadQueueExtent and this implements how the chunk setters are retrieved, there is no real way to prevent writing into the chunks from api side.
Case 1
EditSession with normal world.
PasteOperation into EditSession as Extent
Result: Schematic gets pasted into the world (Expected)
Case 2
EditSession with ImmutableWorld.
PasteOperation with ImmutableWorld as Extent
Result: Schematic does NOT get paste into the world (Expected)
Case 3
EditSession with ImmutableWorld.
PasteOperation with EditSession as Extent
Result: Schematic gets pasted into the world (Unexpected)
To Reproduce
I created a minimal working example:
https://github.com/eldoriarpg/we-playground
- Install the plugin
- Execute
/wetest <case>to execute one of the cases described above.
Expected behaviour
That FAWE writes into the provided extent and not into the chunks of the extent as it seems.
Screenshots / Videos
No response
Error log (if applicable)
No response
Fawe Debugpaste
https://athion.net/ISPaster/paste/view/973182bf68674dfc91006cc50d54d6c4
Fawe Version
FastAsyncWorldEdit-Bukkit-2.5.3-SNAPSHOT-370
Checklist
- I have included a Fawe debugpaste.
- I am using the newest build from https://ci.athion.net/job/FastAsyncWorldEdit/ and the issue still persists.
Anything else?
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the minimal example in eldoriarpg/we-playground and reproduce cases 1–3 using /wetest <case>. Then trace how an EditSession wraps an ImmutableWorld through SingleThreadQueueExtent, especially chunk retrieval and setters. Done means the provided extent receives writes in case 3 instead of the underlying world, without breaking cases 1 and 2.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- game-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100