new dupe suggestion#5780
Closed
ghost wants to merge 91 commits into
Closed
Conversation
Modifying of permissions was only half protected, enabling concurrency issues to occur if permissions were modified async. While no plugin really should be doing that, modifying operations are not heavily called, so they are safe to add synchronization to. Now, all modification API's will be synchronized ensuring safety. Additionally, hasPermission was victim to a common java newbie mistake of calling if (containsKey(k)) return get(k), resulting in 2 map lookups. Optimized it to simply be a single get call cutting permission map lookups in half.
CraftBukkit added synchronization to read and write methods. This adds much more contention on this object for accessing region files, as the entire read and write of NBT data is now a blocking operation. This causes issues when something then simply needs to check if a chunk exists on the main thread, causing a block... However, this synchronization was unnecessary, because there is already enough synchronization done to keep things safe 1) Obtaining a Region File: Those methods are still static synchronized. Meaning we can safely obtain a Region File concurrently. 2) RegionFile data access: Methods reading and manipulating data from a region file are also marked synchronized, ensuring that no 2 processes are reading or writing data at the same time. 3) Checking a region file for chunkExists: getOffset is also synchronized ensuring that even if a chunk is currently being written, it will be safe. By removing these synchronizations, we reduce the locking to only when data is being write or read. GZIP compression and NBT Buffer creation will no longer be part of the synchronized context, reducing lock times. Ultimately: This brings us back to Vanilla, which has had no indication of region file loss.
Player Positions could become desynced with their vehicle resulting in chunk conflicts about which chunk the entity should really be in.
Fixes PaperMCGH-1473 If a ping is responded to prior to the server sample being populated (pre-tick as an example) it can result in an NPE.
Apparently a zero max health attribute is perfectly fine in vanilla and our own revive handling code appears to handle the case fine, even when EntityDeathEvent is cancelled. So we should allow it to avoid issues when these mobs are killed.
there is apparently bugs with relighting, so turning toggle back on also bumped the max time threshold to reduce risk of starving the queue allows it to violate TPS some, but at cost of better light data also fixed some chunk neighbor checks
Vanilla has risk of losing entities by causing them to be removed from all chunks if they try to move into an unloaded chunk. This pretty much means high chance this entity will be lost in this scenario. There is another case that adding an enttiy to the world can fail if the chunk isn't loaded. Lots of the server is designed around addEntity never expecting to fail for these reasons, nor is it really logical. This change ensures the chunks are always loaded when entities are added to the world, or a valid entity moves between chunks. Hopefully will fix issues PaperMC#1496 and PaperMC#1434
Adds Entity Activation Range for water mobs and no longer gives immunity to mobs (squid) that know how to pathfind in water.
Improves doors to better handle unloaded state so they need 1200 LOADED ticks in order to not be dismissed. Also improves the villages to not even tick when the center of the village + 1 is not loaded, improving server performance (and helping door issue) This should keep Iron Titans back working
If the server attempts to load a chunk generated by a newer version of the game, immediately stop the server to prevent data corruption. You can override this functionality at your own peril.
The base64 encoding method for server favicons in 1.12 puts newlines in the encoded string. The 1.13 client and server pair fixed this issue and no longer consider it valid. Luckily the 1.12.2 client will parse the correct encoding just fine as well. This fixes the encoding so that the server icon will display properly on both 1.12.2 clients as well as newer clients. Shout out to ViaVersion whose contributors noticed this some time ago.
Queue log events when log buffer is full
Member
|
Couple problems here
|
Contributor
|
In the future please create an issue rather than a pull request. However either way in this instance, paper does not plan to provide more configurable exploits. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
this server has been known as the "dupe server" where there is always an easy and profitable dupe.
the lead dupe is so tedious and for the past day or two, I have been trying it for hours at a time. I even followed tutorials online to the T, yet no results.
The most notorious dupe in this server's history is the chunk dupe. I highly recommend enabling it. But, since the books were used to ban people, I feel like making a custom chunk dupe plugin, and making it work with normal, English letters, that take up little to no space, in comparison to complex Unicode characters that take up junk data, and could be used to ban people, is much better.
that way, there can be no bans, and an easy dupe, which for sure will make the old, and new players happy, and maybe drive older people, back to the server, who quit due to lack of dupes.
Anyway, I run a group that relies heavily on kits, and it has over 100 people in it. so a new dupe would make everyone happy.
But who am I? I am just some random Chinese person who likes 0b0t!