* Don't do the unbelievable bad use of a MutableBlockVector2 in the creation of a set
- FixesIntellectualSites/PlotSquared#3683
* Clean up remnants of the use of MutableBlockVector2
* Only synchronise tree generation at the very lowest level
- Fixes#1681
* Perform the generate inside try-finally and actually use the resultant copied map to place blocks to the editsession
* Check result of generateTree and return null if failed
* feat: Add support for 1.19
* build: Update paperweight version
* fix: obfuscated names, invalid method signatures
* avoid NPE on config access
* build: Update paperweight
* implement no-op light engine to avoid stalled tasks that never complete
* Apply DelegateSemaphore fixes to 1.19 (#1782)
* Apply DelegateSemaphore fixes to 1.19
* Fixes
* Avoid using PalettedContainerRO#recreate as much as possible. Show an error or warning when we're forced to use it to help fix (#1784)
Co-authored-by: Pierre Maurice Schwang <mail@pschwang.eu>
Co-authored-by: SirYwell <hannesgreule@outlook.de>
Co-authored-by: Jordan <dordsor21@gmail.com>
* Fix DelegateSemaphore synchronisation issues on Spigot
- Also effectively nullify it on paper - the synchronisation on the object is enough
* Remove unneeded imports
* 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>