- Similar to previous commit. If the chunksection was empty, then __reserved__ was parsed to the clipboard, and then not correctly identified as air
- Now assume all __reserved__ is air when writing to clipboards
- ChunkSections containing only air are technically null according to NMS Chunks
- Therefore if we're replacing air, we should ignore the result of get.hasSection(layer) by using "full = true" as it returns false if the chunksection is only air
- We also then need to ensure that the masks correctly identify that the block is "air"
- Revert back to default FAWE behaviour where placed blocks do not tick by default (until a restart, or another edit is done in the same chunksection without changing the block)
* Increase performance slightly when trimming.
If the chunk section is all one blocks (common in plotworlds) it'll be a nice little boost.
* Cache whether blocks are ticking or not. Greatly reduces the time required to create a palette
* collapse 5 lines to 2.
* Also apply to 14 and 15 for the numpties
* Cleanup
Actually ignore the exception - remove my debug print.
Remove double semi-colon
* Apparently 1.14/15 matter too still.
This commit aims to fix existing issues regarding the "0/-1 blocks affected" bug. Introducing the new LinkedFilter class allows us to use multiple filters for single-filter operations, e.g. applying a pattern to blocks while also counting the amount of blocks applied to. SetFilter.java was also removed due to not being used.
- You had to specifically use //schem load <schematic>.schematic mcedit to load legacy schematics, now if you're loading .schematic it assumes you're wanting mcedit format
- If you end up attempting to load an mcedit schematic with the sponge reader it now throws an exception.
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.