Skip to content

Fix field not being unset if emptyContents returns false - #14345

Merged
kennytv merged 2 commits into
PaperMC:mainfrom
Dueris:fix/item-left-in-hand-field
Oct 5, 2026
Merged

kennytv merged 2 commits into
PaperMC:mainfrom
Dueris:fix/item-left-in-hand-field

Conversation

@Dueris

@Dueris Dueris commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

If BucketItem#emptyContents returns false, and itemLeftInHandAfterPlayerBucketEmptyEvent is set, then it wont unset it since it returned false, making it not call getEmptySuccessItem which clears the field. This simply sets the field to null if the function returns false

@Dueris
Dueris requested a review from a team as a code owner October 4, 2026 08:45

@WouterGritter WouterGritter left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It makes more sense to null itemLeftInHandAfterPlayerBucketEmptyEvent in emptyContents() instead of use(), otherwise the field is only cleared when the failure goes through use() (the field is set and can go stale in emptyContents()). This PR works now, but only because use() is currently the only caller that sees a Player.

It makes more sense to null it right before returning false in emptyContents() (after it had already been set):

if (!level.setBlock(pos, this.content.defaultFluidState().createLegacyBlock(), Block.UPDATE_ALL_IMMEDIATE)
    && !blockState.getFluidState().isSource()) {
    itemLeftInHandAfterPlayerBucketEmptyEvent = null; // Paper - Fix PlayerBucketEmptyEvent result itemstack
    return false;
}

@Dueris

Dueris commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

Agreed. Updated now.

@kennytv
kennytv merged commit 780818f into PaperMC:main Oct 5, 2026
6 checks passed
WinPlay02 added a commit to WoMa-Entertainment/Icicle that referenced this pull request Oct 5, 2026
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@288d43e1 Add getInstrument method to BlockType PaperMC/Paper#14251
PaperMC/Paper@6bc56abc Add `throws CommandSyntaxException` to BasicCommand PaperMC/Paper#14339
PaperMC/Paper@a9d03827 Fix startup crash using autoEnableOnServerStart in plugin-provided datapacks PaperMC/Paper#14238
PaperMC/Paper@ddb45eb4 Fix incorrect container setChanged() called in optimized hopper patch PaperMC/Paper#14269
PaperMC/Paper@60c8e563 Force absolute positions for item frames
PaperMC/Paper@1d254ec4 Fix adding entities with api with already valid passengers PaperMC/Paper#14336
PaperMC/Paper@371c96aa Fix username duplication in chat when defaultRenderer is explicitly set PaperMC/Paper#13868
PaperMC/Paper@6e88e469 Fix possible CME race conditions for post effects PaperMC/Paper#14335
PaperMC/Paper@1a7b6265 Bump JLine to 4.4.6, drop JNI backend as Paper compiles to Java 25 PaperMC/Paper#14323
PaperMC/Paper@1dbde610 Make test block codec conditional
PaperMC/Paper@780818ff  Clear bucket empty event result when fluid placement fails PaperMC/Paper#14345
PaperMC/Paper@2de3a930 Fix silent ignore of Block#getState(boolean) parameter PaperMC/Paper#14341
PaperMC/Paper@65c408ad Don't remove player twice when disconnected during config switch PaperMC/Paper#14346
PaperMC/Paper@4728a906 Fix bundle contents corruption with item obfuscation and shelves PaperMC/Paper#14352
granny added a commit to PurpurMC/Purpur that referenced this pull request Oct 6, 2026
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@288d43e1 Add getInstrument method to BlockType PaperMC/Paper#14251
PaperMC/Paper@6bc56abc Add `throws CommandSyntaxException` to BasicCommand PaperMC/Paper#14339
PaperMC/Paper@a9d03827 Fix startup crash using autoEnableOnServerStart in plugin-provided datapacks PaperMC/Paper#14238
PaperMC/Paper@ddb45eb4 Fix incorrect container setChanged() called in optimized hopper patch PaperMC/Paper#14269
PaperMC/Paper@60c8e563 Force absolute positions for item frames
PaperMC/Paper@1d254ec4 Fix adding entities with api with already valid passengers PaperMC/Paper#14336
PaperMC/Paper@371c96aa Fix username duplication in chat when defaultRenderer is explicitly set PaperMC/Paper#13868
PaperMC/Paper@6e88e469 Fix possible CME race conditions for post effects PaperMC/Paper#14335
PaperMC/Paper@1a7b6265 Bump JLine to 4.4.6, drop JNI backend as Paper compiles to Java 25 PaperMC/Paper#14323
PaperMC/Paper@1dbde610 Make test block codec conditional
PaperMC/Paper@780818ff  Clear bucket empty event result when fluid placement fails PaperMC/Paper#14345
PaperMC/Paper@2de3a930 Fix silent ignore of Block#getState(boolean) parameter PaperMC/Paper#14341
PaperMC/Paper@65c408ad Don't remove player twice when disconnected during config switch PaperMC/Paper#14346
PaperMC/Paper@4728a906 Fix bundle contents corruption with item obfuscation and shelves PaperMC/Paper#14352
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Merged

Development

Successfully merging this pull request may close these issues.

4 participants