View last successful build
Branch#StatusChangesFinished
version/7.0.x#2398Tests passed: 177
  • Cancel blocked natural spawns before the entity is created (#2300) (7c280a13 by rasmus kjær damgaard)
    • Cancel blocked natural spawns before the entity is created The mob-spawning and deny-spawn checks in WorldGuardEntityListener fire on CreatureSpawnEvent, at the very end of the spawn pipeline. By that point the server has picked a spawn position, run the placement checks, constructed the mob and run finalizeSpawn, and the cancelled mob is thrown away. Since a cancelled spawn never counts toward the mob cap, the natural spawner keeps retrying the same area at full rate, so regions that deny mob spawning become permanent spawn attempt hotspots that pay entity construction over and over for nothing. On Paper servers the same checks can run in PreCreatureSpawnEvent, before the entity exists. Cancelling there also ends the remaining attempts for the chunk in that spawn cycle, so the wasted work is gone almost entirely. Measured on a flat test world with a region denying mob-spawning over the whole spawn range and the mob cap kept empty, the attempt rate around a single player collapsed from roughly 75000 attempts per second to roughly 60 per second, with no entities constructed at all. The new listener mirrors the natural spawn conditions from onCreatureSpawn exactly: activity halt, block-creature-spawn, mob-spawning and deny-spawn region flags, and block-ground-slimes. All other spawn reasons keep going through the existing CreatureSpawnEvent checks unchanged, and the listener is only registered when the Paper event class is present.
    • Move the pre spawn handler into the existing Paper inner listener Review feedback: platform specific code lives in the Paper inner classes of the main listeners, and WorldGuardEntityListener already has one for EntityZapEvent, so the handler moves in there and the separate listener class is gone.
    • Match the HIGH priority of the other protection handlers
    • Extract the shared spawn checks into a method used by both handlers The pre spawn handler duplicated the...
21 hours ago
version/7.0.x#2397Tests passed: 177
  • Add Cause tracking for SulfurCube (#2295) (c90c4838 by vladimir turov)
10 days ago
version/7.0.x#2395Tests passed: 17711 days ago
version/7.0.x#2394Tests passed: 17711 days ago
version/7.0.x#2393Tests passed: 17712 days ago
version/7.0.x#2392Tests passed: 17712 days ago
version/7.0.x#2391Tests passed: 177
  • Synchronize YamlRegionFile#saveAll (#2014) (048bd2ad by tomylobo)
    • Synchronize YamlRegionFile#saveAll This prevents multiple invocations of the method from intersecting, which could potentially cause the .tmp file to be overwritten before being renamed, thus corrupting the region storage
    • Synchronize on the class instead of the instance I didn't realize it before, but it looks like there is at least one instance of YamlRegionFile per world, so synchronizing on the instance wouldn't necessarily help.
13 days ago
version/7.0.x#2390Tests passed: 17714 days ago
version/7.0.x#2389Tests passed: 177
  • Filter "standing in" regions list by permission access. Fixes #2262 (#2293) (a156c07a by Maddy Miller)
    • Filter "standing in" regions list by permission access. Fixes #2262
    • Don't filter the actual result, just the output
15 days ago
version/7.0.x#2388Tests passed: 17725 days ago