* the set array given in NMSAdapter should have get data written to it
- Fixes#1664
- May fix#1700
* Having target size >= 2* parallel threads allows for adjacent chunks to be loaded with issues
* "empty" chunk section doesn't need to be localised to the chunk and may be static
* Switch to slightly more performant stream method for testing for non-empty sections
* Implement lock into ChunkHolder preventing any modification to occur whilst the edit is being applied to the world
(when ChunkHolder is called)
* Add config note about target-size
* set ordinal equal to air if both set and get are `__reserved__`
* Add note to checkAndWaitOnCalledLock method of its use
* Don't print exception and throw
* Switch to a wrapped StampedLock allowing reentrant behaviour
- StampedLock is not reentrent
- Allow unlock from a different thread only if it provides the correct stamp
- This stamp can only be retrieved by the thread owning the lock
* Avoid some "doubling-up" of using checkAndWaitOnCalledLock
* Unbloat `checkAndWaitOnCalledLock`
* Add since tags
* Check cached bukkit player is the same as the current player online
- If plugins do silly things like teleport, deop (anything that requires a perm-recheck) (anything that ultimately requires a BukkitPlayer at some point) then the retention of metadata by the server (as it's stored based on a string value indescriminate of player a player relogging) means that a BukkitPlayer caching an old player object will be kept, cached and retrieved by FAWE. Adding a simple memory-based equality check when the player rejoins, and then "invaliding" (redoing) the cache if the players are not equal, fixes this.
- Fixes#1730
* Address comments
* Add comment explaining reference equality check to code
* Implement getNameUnsafe method to allow an unloaded world's name to be accessed
- Fixes#1671 and #504
* Add javadoc since tag
Co-authored-by: Alexander Brandes <mc.cache@web.de>
Co-authored-by: Alexander Brandes <mc.cache@web.de>
* fix: ignore uuid v2 for BukkitPermissionAttachmentManager
Fixes a memory leak that attaches and caches PermissionAttachments to NPCs. Citiziens uses version 2 UUIDs, which are not used for regular player uuids. Those v2 uuids are now excluded.
* fix: create Permission when required
* fix: use citizens documented way to check for NPCs
* Make postProcessSet a default method and change to void
* Throwable#getMessage is nullable
* Move (re-)ticking to a post-processor per "platform"
- Add fluid ticking
* chore: Ignore (for us) irrelevant rules
* chore: Fix correct toml syntax?
* Re-add removed method for API-compliance and refactor it to have a use
* Switch to javax annotations
* Switch to recalcBlockCounts for ticking blocks.
* No need to set air count anymore either
* We can still "not tick" in fast mode in 1.17.2
* update adapters
* Let paper create the chunk section if biomes are null
* Adjust notes to settings
* 1.17.2 didn't exist
* Add 1.18.2
* Don't attempt to cache plains biome ID
* Use correct annotation
Co-authored-by: NotMyFault <mc.cache@web.de>
* Re-add "//snap" and "//snapshot"
* Place code in correct method
* Use CompoundBinaryTags in AnvilChunk18 and implement biome/entity restoration
* Address comments
* Fix biome reading
* Fix retrieval of entities from zipped snapshot world
Co-authored-by: Alex <mc.cache@web.de>
* Add back statically-set reserved IDs for air blocks only, make it clear they're "reserved"
Also:
- Ensure that reserved is never returned in GET block operations
- "empty" thus doesn't exist in the GET update methods; remove the needless checks
- Allow GET/SET chunks to determine their own default values for non-present blocks/sections
* Add comments
* Update swathes of easy-to-update-sort-of-code.
- Untested
- Should compile but NMF broken something
- Several todos:
- biome history//better support (move to biome sections in core)
- regen (haha lol no thanks, someone else can do that)
- probably actually do the palette stuff that probably won't work in PaperweightPlatformAdapter
* ci: Provide basic Jenkinsfile for ghprb pipeline
* build: Update paperweight
* upstream: Update Upstream
de6fa17 Add getBrush helper for use with instanceof pattern matching (1926)
* FAWE will now load on startup
* it....works?
* Begin to allow biome edits (and fix biomes reverting to plains upon editing blocks)
* Add new blocks/block properties
* Only create biome palette if supplies is null
* Fix biome operations
* Finally get removing BlockID done (major version change allows it)
* refactor!: Drop PlotSquared v4
Fawe 2.0.0 and newer requires Java 17, PlotSquared v4 supports 1.13 and 1.14, Fawe wont work on these versions nevertheless and refuses to load due Java version incompatiblities with older versions. Newer versions can use PlotSquared v6.
* docs: Update readme
* Added and removed some comments
* Added and removed some comments
* refactor: Rename worldedit configuration
* build: Re-add 1.17 module
This the a very nasty commit
* chore: Implement missing methods
* build: Update paperweight
* upstream: Update upstream
6df194e Remove finalize, use a Cleaner instead (1943)
9843a4f Fix snapshots in 1.18 (1959)
* ci: Escape workflows
* build: Update paperweight to 1.18.1
* build: Update Paster
* Fix compilation
* Bump to 1.18.1
* Do both 1.18 and 1.18.1
Co-authored-by: Alex <mc.cache@web.de>
* Fix single-block lookups
* Reserve ordinals 0 through 3 for air/"reserved"
* Create block palette data with values
* Fix classpath for testing for starlight
* Correctly use block rather than sky light layer [not used in paper]
Co-authored-by: NotMyFault <mc.cache@web.de>
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
* Use WE PaperweightAdapter for seed replacement
also, only replace when necessary
* fix comments
* ci: Provide basic Jenkinsfile for ghprb pipeline (#1451)
Co-authored-by: Alex <mc.cache@web.de>
* upstream: Update upstream
c407471 Re-add class shutter with tweaks. (1947)
* upstream: Update Upstream
29f1c66 If a trace hits the world limit, cancel it (1942)
* upstream: Update upstream
511daa5 Update paperweight dev bundle
- Add list of "exclusive" managers to config to aid users in having some sort of prioritisation.
- Fixes#960 if PlotSquared is added to exclusive managers, otherwise, there's no particularly sane way of adding prioritisation without requiring a treemap be added to YAML config, or for us to decide upon it ourselves
- Synchronising on full sections synchronises on the global FULL instance (bad)
- Synchronising on empty sections synchronises on the local empty instance (bad)
- Leads to needless thread locking, and raises the possibility of cyclic locks considerably
* Remove hardcoding of world limits
- seems to be working fine without the datapack for world height changing
- particular attention should be given to LocalBlockVectorSet and MathMan changes
* update adapters
* Override getMinY in various classes and ensure selections have a world attached to them
* no message
* Address comments
- Fix for lighting mode 1
* A few more changes
* Fix LocalBlockVectorSet
* Fix range statement
* Various fixes/comment-addressing
- There's not much point in having a different file name now for history. We've broken it before...
- Fix history read/write
- Fix range on for loops in CharBlocks
* undo bad CharBlocks change
* Fix history y level
* Fix biome history
* Fix lighting
* Fix /up
* Make regen fail not because of these changes
* Fixes for y < 0
* Fix isEmpty where only the uppermost chunksection is edited
* Fix javadocs/FAWE annotations
* Better explain why BiomeMath is removed
* If history task throws an error, it should only be caught and printed if not completing now.
* Min|max world heights for new patterns
* Load biomes from NMS instead of bukkit (#1200)
* Update adapters
* Update adapters
* Don't initialise BlockTypes when biomes aren't set up yet so all BiomeTypes.BIOME are no longer null thanks.
* Address some comments.
* rename layer -> sectionIndex to imply inclusivity
* Javadoctored.
Co-authored-by: NotMyFault <mc.cache@web.de>
Co-authored-by: Hannes Greule <SirYwell@users.noreply.github.com>
- Even if we access (cache) the entities synchronously, we'd then be doing stuff asynchronously so adapters can override this and either use the world#getEntities normally (pre 1.17) or get entities async anyway.
* Fixed Unit Tests (BlockVector3.isLongPackable)
* Re-enable tests for ci
* Address gh action dependency complaints
* Fix "invalid usage of tag &" for MinecraftVersion.java
* Simple StubServer for BukkitWorldTest.java
* Add parallelgzip to test runtime, fixed javadoc encoding, make gradlew executable and patch StubServer for latest spigot / paper release
* Move Javadoc UTF-8 to PlatformConfig.kt
* Revert "make gradlew executable"
Was required for act to run, but not required for GH actions - Weird behavior
* Mark upstream changes, move class + apply editorconfig
Co-authored-by: NotMyFault <mc.cache@web.de>
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
* Fix major security bugs (3 brushes + superpickaxe)!
- Due to some recent changes, FAWE could edit everything in the world, no matter other plugin protections such as PS or WG.
- Fix superpickaxe allow to bypass protections => Fix SurvivalModeExtent not taking into account protections plugins due to breaking blocks naturally to get drops.
* Adress requests
- Revert some unsuitabe changes
- Add FAWE diff comments
* Clean imports
* Adress requests
Co-authored-by: NotMyFault <mc.cache@web.de>
* Consistenty use javax annotations.
- Unfortunately jetbrains annotations seem to be exposed transitively via core somewhere, but with the correct IDE settings, annotations can be defaulted to javax
- Cleaning up of import order in #1195
- Must be merged before #1195
* Add and apply .editorconfig from P2
- Does not rearrange entries
* Address some comments
* add back some javadoc comments
* Address final comments
Co-authored-by: NotMyFault <mc.cache@web.de>
- Unfortunately jetbrains annotations seem to be exposed transitively via core somewhere, but with the correct IDE settings, annotations can be defaulted to javax
- Cleaning up of import order in #1195
- Must be merged before #1195
Co-authored-by: NotMyFault <mc.cache@web.de>
* Feature/main/propagate diff annotations (#1187)
* 25% done
* More work
* More work
* 50%
* More work
* 75%
* 100% & cleanup
* Update adapters
* Squish squash, applesauce
commit 275ba9bd84
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat Jul 17 01:10:20 2021 +0200
Update dependency com.comphenix.protocol:ProtocolLib to v4.7.0 (#1173)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
commit 9fd8984804
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat Jul 17 01:09:29 2021 +0200
Update dependency org.checkerframework:checker-qual to v3.16.0 (#1184)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
commit 861fb45e5c
Author: dordsor21 <dordsor21@gmail.com>
Date: Fri Jul 16 19:07:02 2021 +0100
Fix#1075
commit 420c45a29a
Author: dordsor21 <dordsor21@gmail.com>
Date: Fri Jul 16 18:48:21 2021 +0100
Entity removal should be on the main thread as we're just passing through rather than doing chunk operations
- Fixes#1164
- Not working: butcher/remove history
commit 4d4db7dcd0
Author: SirYwell <hannesgreule@outlook.de>
Date: Fri Jul 16 17:52:44 2021 +0200
Make sure leaves category is loaded for heightmaps (fixes#1176)
commit c98f6e4f37
Author: dordsor21 <dordsor21@gmail.com>
Date: Fri Jul 16 10:44:52 2021 +0100
Do not allow generation commands to generate outside selection
commit 2485f5eccc
Author: dordsor21 <dordsor21@gmail.com>
Date: Fri Jul 16 10:43:15 2021 +0100
EditSession needs to override some Extent methods to ensure block changes are correctly set through the various extents
Fixes#1152
commit d9418ec8ae
Author: dordsor21 <dordsor21@gmail.com>
Date: Fri Jul 16 09:52:44 2021 +0100
Undo part of 41073bb1a0Fixes#1178
* Update Upstream
fb1fb84 Fixed typo and grammar
* We don't support custom heights yet
* Casing inconsistency
* Address a few comments
* Address comments
* Don't refactor to AP classpath
* Document annotation style
* Refactoring & shade cleanup
* Address a few comments
* More work
* Resolve comments not being resolved yet
* Feature/main/propagate diff annotations (#1187) (#1194)
* Remove beta package, fix history packages, move classes out of object package
* Resolve comments not being resolved yet
* Remove beta package, fix history packages, move classes out of object package
Co-authored-by: NotMyFault <mc.cache@web.de>
* brushes should be under brush
* More refactoring
- Filters/processors should be in the same place and are related to extents
- Transforms are in `extent.transform` in upstream
* Move history classes under history
* Update adapters
Co-authored-by: dordsor21 <dordsor21@gmail.com>
* start v6
* Update classes to v6 method signatures
* change rootVersion to signify p2v6 compat
* Use 16 as toolchain version but target 11 for build output
* add minimessage as api
* Require v6 and don't attempt to "setup" hook from FAWE
* Address comments
* *address /all/ comments
* FAWE classes should only act as a delegate
* Uppercase logger
* Settings for v6-hook have moved to P2-v6, remove unneeded if statements
* Rename classes to Delegate
* add whenDone task to setCuboids
* Remove bad spaces
* Fix plot swap
* Initial work on 1.17 support
* Remove data versions from the Bukkit adapters (#1507)
* Remove data versions from the Bukkit adapters
* Don't allow saving schematics without an adapter in place on Bukkit.
* Removed confusing line
(cherry picked from commit 2056218b4a8644836b1d127105dfa289e9cdbc1c)
* More progress
* Fix chunk sending
* Repackage from com.boydti to com.fastasyncworldedit.<module> (#1119)
* Preliminary work on repackaging
* Rename build artifacts matching our pattern
* Finish up repackaging
* Fix a few field accesses and old imports
* Dirty fix for chunks container ChunkSections outside of 0-15
* Correctly read from NibbleArrays for lighting
* Fix getSections and BlockMaterial for 1.17
* Fix writing blocks to the world.
- The issue isn't the presence of a "-1" chunk, it's the constructor for ChunkSection requiring the layer (0 to 15) rather than the y chord
* Fix more field accesses
* More work towards 1.17
* Update Upstream
a57f66f Fix watchdog, add negative y support. (1782)
* Add azalea tree to `/tool tree`
* Don't define toolchain twice
* Repackage GriefDefender
* Relocate under new namespace
* Bye bye ecma left overs
* Add 1.17 to issue templates and instructions
* Move to adventure-nbt (#918)
* Initial work for adventure-nbt
* Some more FAWE specific stuff
* Fix erroneous deprecation check
* Workflow change
* Continued merging all adventure NBT related changes
* Continued merging all adventure NBT related changes
* Made a constructor public again
This needs to be public for BlockTransformExtent.java
* Finished converting all NBT data to adventure.
* Make this compile
* Fix conflicts
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
* Update adapters to 1.17
* Change build prefix to 1.17
* Move more nms classes to adapters
* Move left over nms classes
* Move Spigot 1.17 class
* Remove unneeded adapter loader code
The loader will find the appropriate class now itself
* Update adapters
* Update adapters
* Lazy fix tests
* Update adapters
* Update Upstream
43da91a Remove method reflection for getMinHeight in BukkitWorld. (1796)
* Relocate adventure-nbt under proper namespace
* Add LazyCompoundTag as a non-version-specific class to be used by adapters
* Better integration between old NBT and Adventure NBT - begin fixing the issues seen recently
* Correctly NBT conversion method
* LazyCompoundTags should actually be overriding and correctly returning a CompoundBinaryTag.
* Update worldedit-adapters
Fixes#1141
* Remove unnecessary massive lag machine
* Refactor apply to applyBlock in subclasses
* applyBlock should be overriden by all subclasses.
Default apply to applyBlock
* Closes#1130Closes#1132
* Squashed commit of the following:
commit a9bfa1a07c77083c844a0c3ba62f4bd94bed107c
Author: NotMyFault <mc.cache@web.de>
Date: Sun Jun 27 21:53:21 2021 +0200
[ci skip] Update gradle wrapper validation
commit aa7471f95317d28a16f62e4b200de8d0fea2fa95
Author: Matthew Miller <mnmiller1@me.com>
Date: Sat Oct 10 15:49:13 2020 +1000
Add ^x,y,z relative offset support to the offset parser (#1545)
* Add ^x,y,z relative offset support to the offset parser
* Wrap in a try-catch
(cherry picked from commit 28bdf7ff9254bbc85bb4f5f792b303943a3930a8)
* Add `fawe.error.schematic.not.found` translation key
* Update Upstream
728a152 Skip notify if chunk section doesn't exist (1794)
* Fixed#1157
* Add a null check to prevent NPE in nbt code
* Update adapters
* Update Upstream
fbb047a Optimize legacy schematic loading (1808)
* Hurr durr I don't want to update Java
* Update Upstream
0790e6e Fix CLI Mess (1811)
* Fixes#1160
* Expose minimessage transitively thru PlotSquared
Touches #32
* [ci skip] Remove unneeded maven repository
* Steal tab completion from PlotSquared for P2 related commands
* Don't error on startup when building locally
Co-Authored-By: goldfishapp <8278196+goldfishapp@users.noreply.github.com>
* [ci skip] Update gh actions to Java 16
* Update textures to grab 1.17 jar
Co-authored-by: NotMyFault <mc.cache@web.de>
Co-authored-by: SirYwell <hannesgreule@outlook.de>
Co-authored-by: Matthew Miller <mnmiller1@me.com>
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
Co-authored-by: goldfishapp <8278196+goldfishapp@users.noreply.github.com>
**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
* Use Unsafe to replace Lock
* Start cleaning up everything that has to do with CleanableThreadLocal
* Make cancellation work
Co-authored-by: NotMyFault <mc.cache@web.de>
* Relight using starlight engine on Tuinity
* Make use of invokeExact
* Cache MethodHandle
* Address some requested changes
* Remove random *
Co-authored-by: NotMyFault <mc.cache@web.de>
* Simplify and clean up sendChunk
Hopefully, that doesn't cause any issues
* Add naive HeightmapProcessor
* Make HeightmapProcessor more efficient
* Remove heightmap code from NMSRelighter
* Recognize fluid for waterlogged blocks
* Remove config option for heightmaps as they should always be updated
* Batch relighting for Starlight
* Dirty workaround for CharBlocks blocks NPE
* Revert "Dirty workaround for CharBlocks blocks NPE"
This reverts commit 737606a7
It only caused the heightmap to be wrong again and didn't help much with the original issue
* Adapt better chunk sending on older versions
* Adapt requested changes for HeightMapType
* Relight all changed chunks, batched
Also, address some requested changes
* Avoid deadlocks
* Clean up tuinity relighter and add some comments
* Minor changes to HeightmapProcessor
Co-authored-by: BuildTools <unconfigured@null.spigotmc.org>
Co-authored-by: NotMyFault <mc.cache@web.de>
Co-authored-by: Aurora <21148213+aurorasmiles@users.noreply.github.com>