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.
--- work/CraftBukkit
Submodule work/CraftBukkit 708be695..d171d7eb:
> SPIGOT-5572: Fix console/API completion of Vanilla commands
> SPIGOT-5571: Beehive MaxEntities cannot be set back to 3
--- work/Bukkit
Submodule work/Bukkit 6a4242cb..337955e3:
> SPIGOT-5468: Improve Beehive TileEntity API
> #473: Add an API for passing the heightmap to getHighestBlockAt* method
--- work/CraftBukkit
Submodule work/CraftBukkit 807a677e..708be695:
> SPIGOT-5468: Improve Beehive TileEntity API
> #624: Add an API for passing the heightmap to getHighestBlockAt* method
> MC-135989, SPIGOT-5564: Don't kick players for flight while riptiding
This deprecates the Paper getHighestBlockAt HeightMap APIs now that
Bukkit has added their own. These methods will stick around long enough
for people to migrate. Their API is pretty much the same as ours,
migration should be quick and easy.
--- work/CraftBukkit
Submodule work/CraftBukkit b98e2def..99cf10e4:
> SPIGOT-5504: cancelling InventoryMoveItemEvent on composter doesn't properly cancel
> SPIGOT-5506: CustomChunkGenerator is processing Phantoms in the Nether and The End
--- work/CraftBukkit
Submodule work/CraftBukkit 297ff400..83af86db:
> SPIGOT-5457: Downgrade 'Mismatch in destroy block pos' message to debug
> SPIGOT-5481: PlayerBedLeaveEvent returns wrong bed location
> SPIGOT-5482: Structure Block setUsageMode encounters NullpointerException
> SPIGOT-5426: isSimilar for player heads fails
> SPIGOT-5478: XP not dropping when a player dies
--- work/Spigot
Submodule work/Spigot 05bb8bcf..492a7792:
> Rebuild patches
This option does not set the absolute speed of the entity as the name
implies. It sets a modifier. The default (vanilla) value of `0.5` sets
the baby zombie to move at 50% faster than the base speed.
A negative value like `-0.4` would set them to move at 40% slower.
There should be no functional changes as a result of this change, it's
just clarifying the config name.
Makes it easier to figure out which custom generator plugin hasn't been
updated to a specific version and is spamming you with
UnsupportedOperationExceptions
--- work/CraftBukkit
Submodule work/CraftBukkit 1ec1b05e..368f4e99:
> Increase outdated build delay to 3 weeks
> SPIGOT-5249: Do not add data to empty loot table
> SPIGOT-5257: Call EntityBreedEvent for foxes and set the child's spawn reason to BREEDING
--- work/Spigot
Submodule work/Spigot e5b1b5db..ea7e48b3:
> Add string default for view distance, and API to retrieve per world
--- work/Bukkit
Submodule work/Bukkit aba2aaaf..949124e0:
> SPIGOT-5121: Method to set PierceLevel of arrows
--- work/CraftBukkit
Submodule work/CraftBukkit c6997924..bf329334:
> SPIGOT-5133: Throwing items into secondary end world portal causes crash
> SPIGOT-5121: Method to set PierceLevel of arrows
> SPIGOT-5122: Skip world#notify if sign has no world.
> SPIGOT-5105: The EntityTag nbt tag disappears from preset armor_stand items.
> SPIGOT-5106: Config option to prevent plugins with incompatible API's from loading
--- work/Spigot
Submodule work/Spigot 595711b0..935adb34:
> SPIGOT-5088: Additional growth modifiers
--- work/Bukkit
Submodule work/Bukkit 6eac6d70..1ef8b9d9:
> Add Player#openBook(ItemStack) method
--- work/CraftBukkit
Submodule work/CraftBukkit 17543ecf..649921e5:
> Add Player#openBook(ItemStack) method
> SPIGOT-2000: Picking up items to shield slot working inconsistently when inventory is full
> SPIGOT-5037: Player.openMerchant does not show merchant level
> SPIGOT-5038: Inventory.getHolder returns null for wandering traders
--- work/Spigot
Submodule work/Spigot baafee91..df0eb250:
> SPIGOT-5043: Desync if world is changed in PlayerSpawnLocationEvent
> Rebuild patches
Implementation developer note:
This patch adds a "pre-source" patch system for fixing malformed patches
from upstream directly. This seems to keep happening so it's best we
have some way to deal with them. This system brings those issues into
our domain rather than needing to wait for upstream to fix their
malformed files.
Should've been null checked since I made it nullable. String concat
saved us any real damage and so all we saw was "null" shown to users.
Quick check and now we don't.
This makes it easier for downstream projects (forks) to replace the
version fetching system with their own. It is as simple as implementing
an interface and overriding the default implementation of
org.bukkit.UnsafeValues#getVersionFetcher()
It also makes it easier for us to organize things like the version
history feature.
Lastly I have updated the paper implementation to check against the site
API rather than against jenkins.
There is an artificial delay added to chest close sounds (of 10 ticks)
to make them "feel" more true to vanilla. The problem is that because of
this delay it is possible for the block to be removed by the time the
sound plays.
With 1.14 in the state it is the timing necessary to encounter this
issue has increased.
The correct fix is to just return early if the property checked for in
the TileEntityChest sound method does not exist for the block at the
current location.
Fixes GH-2074
- Re-removes Bukkit#getServerName - This was (hopefully?) only added back
for Timings v2. It should be kept in that scope.
- Intend to let PlayerViewDistance API slip. Given the scope of the
changes in this area it seems best to let this slip past initial
release. It can be re-added when there is additional time to focus on it
and the changed systems it relies on. If it is fixed prior to release
this is implemented as a single shim patch that can be dropped.
It is possible for a container to be brought into the world pre-filled
in place event (thanks NBT!). When the blockplacevent(s) are cancelled
their blockstate is updated in OBC. This triggers them to drop their
inventories.
Rather than screwing with the update method which is used elsewhere, we
can simply clear any inventories once we are told that a plugin intends
to cancel the interaction.
Fixes GH-1831
Fixes GH-1887
Prior to this change, the lastTick value for zombies would be set to
their initial spawn tick. This caused the drowned conversion process to
immediately occur rather than observing the vanilla delay.
Easy fix, just make sure its set again when the process actually starts.
And no, this change has absolutely nothing to do with the other thing.
That's been fixed and remains fixed.
Also fixes build as a result of an upstream force push
--- work/Bukkit
Submodule work/Bukkit 217dc08d..d13fdf8c:
> SPIGOT-4637: Add source block to BlockPhysicsEvent.
--- work/CraftBukkit
Submodule work/CraftBukkit acbba8ba..cb98c6ea:
> Fix line endings in CraftDefaultPermissions
> SPIGOT-4637: Add source block to BlockPhysicsEvent.
--- work/Spigot
Submodule work/Spigot 75ee78a0c...4165cd8f4 (commits not present)
> (Manually Added) - Appears to be a result of an upstream force push
> (Manually Added) - Changed: SPIGOT-4636: Add creative mode NBT permissions
This doesn't result in the same behavior as other entities and causes
several problems. Anyone ever complain about the "Cannot send chat
message" thing? That's one of the issues this causes, among others.
If a plugin developer can come up with a valid reason to call this on a
Player we will look at limiting the scope of this change. It appears to
be unintentional in the few cases we've seen so far.
There is an explicit check in the handling code for empty pistons that
prevents sticky pistons from firing the event. However when we look back
at the history we see that this check was originally added so that ONLY
sticky pistons would fire the retract event. I'm not sure why.
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/commits/1092acbddf07edfa4100bc6824504ac75088e913
Over the course of several updates, the meaning of that field appears to
have changed from "is NOT sticky" to "is sticky". So now its having the
opposite effect. Only normal pistons fire the retraction event. And like
all things in CB, it's just been carried around since.
If we are to believe the history, the correct fix for this issue is to
flip it so it only fires for sticky pistons, but that puts us in a
bind. It's already firing for non-sticky pistons, changing it now would
likely result in breakage. Furthermore, there is little documentation as
to WHY that was ever intended to be the case.
Instead we opt to remove the check entirely so that the event fires for
all piston types.
Fixes GH-1829
Fixes GH-1749
Setting the new default to load chunk edge neighbors may have unintended
side-effects so feedback will be important. Specifically, if you're not
using the asynchronous chunk loader, you should probably switch to mode
2 (WAIT)
Old users will be migrated automatically if: You're using engine mode 1
(HIDE) and you're using chunk-edge-mode 1 (DEFAULT). Other users will
not be migrated.
Thanks @stonar96
Currently OfflinePlayer#getLastPlayed could more accurately be described
as "OfflinePlayer#getLastTimeTheirDataWasSaved".
The API doc says it should return the last time the server "witnessed"
the player, whilst also saying it should return the last time they
logged in. The current implementation does neither.
Given this interesting contradiction in the API documentation and the
current defacto implementation, I've elected to deprecate (with no
intent to remove) and replace it with two new methods, clearly named and
documented as to their purpose.
Portion of diff was dropped in the mappings update commit.
Also remove the option to remove invalid statistics. The server will
automatically do this now as of... 1.13?, our option wasn't even doing anything.
Allows access to some offline player properties even when there
are no worlds loaded. This is typically a rare occurrence but
probably one that should be covered as best we can.
Fixes GH-1701
Note to other developers: This commit may require you to wipe your
workspace as a result of the changes to BD.
--- work/BuildData
Submodule work/BuildData f527a8ff..d56672db:
> Mappings Update
--- work/Bukkit
Submodule work/Bukkit 0c1d258bb..db06c80d7:
> Add list of entities to EntityTransformEvent
> SPIGOT-4347: Add API to allow storing arbitrary values on ItemStacks
---work/CraftBukkit
Submodule work/CraftBukkit 6a398ac44..068dab5be:
> Enable optional source JAR shading via profile shadeSourcesJar
> Use ImmutableList rather than AbstractList for CraftMetaBook
> Fix setRecipes(List) not setting Knowledge Book recipes.
> Mappings Update
> Add list of entities to EntityTransformEvent & move die calls
> SPIGOT-4347: Add API to allow storing arbitrary values on ItemStacks
> Add Vanilla help to default permissions
--- work/Spigot
Submodule work/Spigot a1f2566f6..e769fe4d9:
> Mappings Update
> Rebuild patches