This is an attempt to fix CPU spikes which do not reduce and continue mounting until the server reaches ~300%-500% usage. This override should allow prompt equality checks for regions based on the world, the minimum point, the maximum point, and area covered by the region.
Issues found regarding this change should be quickly reported so this can be reverted and replaced with another appropriate solution.
This commit fixes the PlotSquared issue where running a PlotSquared command could result in intense lag on the main thread. This was mainly seen with running the /p info command on an extremely large plot.
Since #world can be null, the uniqueness of this hashCode is not the best, but since it's essentially just a collection of BlockVector3's, I don't believe this change will break anything. If it does, please let me know! Feedback on the uniqueness of this is welcomed.
- Re-read chunksections the first time they're "loaded" for an operation
- Reset the chunksection if there are block changes when setting blocks via reflection
- These are maybe gonna affect performance a bit? Idk. Seems to be alright for me
- These are maybe gonna make more issues? Yeah maybe, but I couldn't find any
* Add compatibility handlers for beds and banners
* IntTag#getValue does not return null so do not check that
(cherry picked from commit 53ac21aa8723d71040d580902cfeae551a9cabf6)
- EditSessionBuilder always assigns the history processors before the limit extents, meaning the limit did not get properly flushed to history, but because spigot is notified of the changes after the processes have taken place, the correct edit was displayed to the player and placed into the world.
- This might break other stuff...
- Fix CharFilterBlock not being properly created (the chunk X and Z were never set)
- Replace BlockVector3#divide with bitshift because you can't divide down and then bitshift back up with the correct results for negative values
This fixes the issue where masks other than SimpleBlock masks (like Offset mask or negate mask) would not work.
The issue was caused by parseFromListInput() who would throw SuggestInputParseException if the input was not a valid block definition.
But as the parser was catching NoMatchException only, this was causing an error and the MaskFactory was broken.
* Use custom radix sort for ordering blocks
* Licenses :P
* Fix ordering, add test for it
* Grant Gradle more memory (thx Fabric)
* Increase (?) / Specify memory for core tests
* Many attempts at fixing OOM
(cherry picked from commit bb013aa89b8457c4649e2546eef0aa94b9fc4020)
* Properly close all files when dealing with archives
* Move file utils to SafeFiles class
* Licenses
(cherry picked from commit a600266d41151eec4f2239cf90e202bb99fa3a8b)
Turns out the FilterBlock's getOrdinal value is from the "get", and does not share the same reference as setOrdinal, whose value is from the "set", would modify.
Because of this, even if #getOrdinal returns 0, we still must update the set with 0 by #setOrdinal.