* 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>
Also remove option to shorten urls for schematic upload. This option does not work with self hosted interfaces, nor is it really safe to use, as per-design.
As Fawe extends into its own Filter class, this will need a Fawe-suitable solution at some point when removing the deprecated method.
This is a compatibility-layer workaround for plugins calling the WorldEdit method `Pattern#applyBlock`.
similar to ChunkHolder, it represents an internal chunk for which operations should not be accepted by multiple threads at once.
Co-authored-by: NotMyFault <mc.cache@web.de>
This is basically the main "chunk" class for internal FAWE. Chunk operations should (and are) almost always single-threaded operations, however, under certain circumstances it is possible for the chunk to be "called" (flushed: written to the world and sent to the player) from a separate thread. This would specifically occur from SingleThreadQueueExtent when there are a lot of chunks being loaded in memory by FAWE (where the chunk would then be submitted to a multi-threaded queue). It would therefore be possible for a thread accessing the chunk to attempt to access it in the middle of the call, which can lead to a number of issues, and it is my opinion that the most frequent of these is the NPE seen during lighting operations, where new chunks can be accessed/loaded very quickly, increasing the likelihood for the aforementioned synchronisation issue to occur.
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
* Update so many dependencies, merge Forge/Fabric for final
* Clean up contrib docs for Gradle change
* Fix setting compat flags while using toolchain
* Fix deprecation in doc printer
* Restore proper forge JAR name
* Add dist classifier for mod jar
* Properly relocate new bStats
* Fix jar used from fabric
* Fix fabric bom
* Dup the shaded classes for consistency
* Sync Forge/Fabric log4j versions, de-dup
* Downgrade both log4j. This will work
* Update some plugins as well
* Drop the fabric force stuff
* Use duplicate strategy to directly merge jar
- Add a "loadPrivately" method to be used when GetChunks are called to avoid synchronocity issues with super classes being used on different threads
- Synchronise the call method so we're not attempting to call whilst also loading/updating
- Properly ensures we don't try to submit chunks that already have a monitor (prevent the FAWE-freezing)
- We can't detect if "no" threads hold the chunk's monitor, but equally that would also be kinda very bad practice.
- With enough chunks waiting to write to history, it's possible to fill the secondary fork pool up with locked threads, and thus prevent any threads from actually writing their history.
An extent's content was returned flipped when applied for negative positions, as e.g. `Math.abs(-2) % 3` returns 2 instead of 1 (as 1 + -1 * 3 = -2)
(cherry picked from commit b0cf5dd2bf1b9bcbf1c7efff0fe25de7ee9a2090)
* Get rid of FastSchematicReader/Writer and document changed JNBT classes
This commit includes changes from upstream to the schematic classes
(`com.sk89q.worldedit.extent.clipboard.io`). It also documents the JNBT
classes, specifying what has been changed in FAWE. This was done in preparation
for the upcoming move to adventure-nbt.
The PlotSquared schematic handler classes will now use SpongeSchematicReader/Writer rather than FastSchematicReader/Writer.
This is yet untested and the entire branch is a W.I.P.
* Fix JNBT mutability misuse in FAWE
FAWE previously had mutable compound and list tags. The previous commit changed that, and this commit will fix misuse of the tag API.
I've tried to identify the places where mutability was assumed, but I might have missed something. This needs quite extensive testing.
This is yet another change which increases upstream compatibility in FAWE.
* Fix FAWE_Spigot_<..>#getEntity
* Fix JNBT usage in the AsyncBlockState code
* Readd FastSchematicReader/Writer and add a new schematic format (`FAST`)
* Update dead repository
* Implement missing AsyncChunk#getTileEntities
* handle entities properly and add "brokenentity" format
* Fix fast schematic reader
lazily reading means it's read in order of appearance in the inputstream so we need to read schematic version first (skip past everything) and then reset the stream
* Fix p2 FAWE
* Go back to fast schematics in P2/CompressedSchematicTag (#819)
* Fix compile
Co-authored-by: N0tMyFaultOG <mc.cache@web.de>
Co-authored-by: Alexander Söderberg <Sauilitired@users.noreply.github.com>
Co-authored-by: dordsor21 <dordsor21@gmail.com>
Co-authored-by: Aurora <aurora@relanet.eu>
- Have both sponge and fast r/w available but default to "fast"
- Correctly "offset" entities in the schematic, and add a legacy mode for loading old FAWE schematics with entities required.
- Lazily reading means it's read in order of appearance in the inputstream so we need to read schematic version first (skip past everything) and then reset the stream. Fixes#740
- Add an FAWEVersion to the metadata
- Correctly actually return a BlockArrayClipboard when required. Fixes#454
* Perform part of the move of //fast to //perf (#1377)
This re-adds a deprecated `//fast` and moves the current logic to
`//perf`. Later `//perf` will have its syntax reworked, when Piston
finally supports sub-commands properly!
* Names via Translation (#1268)
* Deprecate BiomeRegistry, etc.
* Update some libraries, e.g. text
* Move to new translation renderer
* Revert "Deprecate BiomeRegistry, etc."
This reverts commit 59a5d6c92aec52739a8dc68ac3d23898af7593dd.
This was not a good idea for potential mod shenanigans.
* Move BiomeData#getName to BiomeRegistry, use i18n
* Use getRichName instead of getName
* Implement getRichName for NullBiomeRegistry
* Add getRichName for blocks
* Relocate net.kyori.minecraft
* Update adapters for getRichBlockName
* Add getRichName for items
* Update adapters for getRichItemName
* Update adapters JAR for merge
(cherry picked from commit cfd26253b6fb59ff6c65a0157a6780be7db4ea5a)
* Follow-up fixes for 92f8776796
* Don't send deprecation warning and improve info message
* Fix click command for perf box
(cherry picked from commit 7ee60060c31df2f8b41212b430a0875312189339)
* update R3 adapter§
Co-authored-by: Octavia Togami <octavia.togami@gmail.com>
Co-authored-by: NotMyFault <mc.cache@web.de>
Co-authored-by: Aurora <21148213+aurorasmiles@users.noreply.github.com>
Co-authored-by: Aurora <aurora@relanet.eu>
* Full support for 3D biomes
Since we're only supporting 1.15+ there's no need to try anything other than compatibility
* this is not part of the PR
* Clipboards should still always be y 0 for biomes
(this "bug" has existed for ages)
* start reimplementing regen command
* start reimplementing regen command
* Formatting and logic tweaks.
Regen will now throw exceptions but they are not caught yet.
ConversionSessions will now be closed when no longer being used instead of left open.
* fix //regen crashing server
* added //regen support for 1.16.1 and 1.15.2
* cleanup
* Update the issue template
* improve performance of regen by a factor of 40, approx 1.2 millon blocks/second
* Update the issue template
* Update the issue template & add a config (#640)
* Update the issue template
* Add a config.yml to the issue template
* improve performance of regen by a factor of 40, approx 1.2 millon blocks/second
* Fix entity rotation (#642)
* fix entity rotation
fixes#577
Co-authored-by: wea_ondara <wea_ondara@alpenblock.net>
* Fix toggle permission (#644)
* Fixes#529
* fix superperms perm toggling
Co-authored-by: @weaondara <wea_ondara@alpenblock.net>
* Fix#647
* Squash errors and debug to aid fixing #652 properly
* cleanup imports
* cleanup imports 2
* cleanup imports 3
* cleanup imports 4
* add patch by @SirYwell
* aysnc world gen with features and stuff and some minor issues
* optimizations, full chunkstatus, block populators
* optimizations, cleanup
* optimizations
* fix feature regeneration, fix temp folder deletion
* cleanup
* make chunk gen multithreaded
* fix precomputation of chunk lists for RegionLimitedWorldAccess again
* added regenerator abstraction, fix aioobe while running through chunk stati
* remove override for getChunkAt in freshnmsworld
* don't use concurrent chunk gen if custom chunk generators do not support it
* distinct between generator types
* improve regen speed for overworlds
* mix
* Add message that regen might take a while
* use a shared map for FastAreaLazy, cleanup imports
* use custom concurrency levels for chunk stati and process accordingly
* implement new regen in 1.15.2 and 1.16.1 as well
Conflicts:
worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_15_R2.java
worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_16_R1.java
* woops
* further abstraction, finalized regen impl
* Formatting
* Fix some typos, remove debug
* replace wildcard imports
* cleanup debug
* braces
* serr -> logger
* move regen impls to seperate classes
* fix world init for 1.16.1
* fix world init for 1.15.2
* fix world init for 1.15.2 #2
* use original world name for regeneration
* Update Regen_v1_15_R2.java
* Update worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_15_R2.java
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
* Update worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_15_R2.java
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
* Update worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/FAWE_Spigot_v1_16_R1.java
Co-authored-by: Matt <4009945+MattBDev@users.noreply.github.com>
* improve documentation, use parallel task count for fawe settings
* fix compile
Co-authored-by: wea_ondara <wea_ondara@alpenblock.net>
Co-authored-by: MattBDev <4009945+MattBDev@users.noreply.github.com>
Co-authored-by: dordsor21 <dordsor21@gmail.com>
* Several fixes to actual, probable and possible synchronocity issues
- Ensure that all edits are queued onto the same AsyncNotifyQueue by actually delegating to the parent player in PlayerProxy
- Ensure that the order editsessions are being remembered on the LocalSession is being respected by using a fair ReentrentLock
- Ensure a chunk cannot be called when an update is being called
* Don't add locks to GetBlocks