Skip to content

fix: NPE when a dispenser empties a bucket - #386

Open
fmauNeko wants to merge 1 commit into
QuiltServerTools:backport/1.20.1from
fmauNeko:fix/bucket-dispenser-npe-1.20.1
Open

fix: NPE when a dispenser empties a bucket#386
fmauNeko wants to merge 1 commit into
QuiltServerTools:backport/1.20.1from
fmauNeko:fix/bucket-dispenser-npe-1.20.1

Conversation

@fmauNeko

@fmauNeko fmauNeko commented Aug 1, 2026

Copy link
Copy Markdown

BucketItem.emptyContents is invoked with a null player by the vanilla bucket dispenser behaviour (DispenseItemBehavior$8). The 1.20.1 backport passed that player straight into the non-null BlockPlaceCallback.place and BlockChangeCallback.changeBlock overloads, so Kotlin's parameter null check threw and killed the server while ticking the block:

java.lang.NullPointerException: Parameter specified as non-null is
null: method BlockPlaceCallback.place, parameter player

Restore the null guards that were dropped in fe7ac87 when the injectors were converted from LivingEntity user back to the Player player signature 1.20.1 uses, falling back to Sources.REDSTONE as upstream does.

logFluidBreak already targets the nullable overload, so it only gains the @nullable annotation to document the contract.

Fixes #367
Fixes #370

BucketItem.emptyContents is invoked with a null player by the vanilla
bucket dispenser behaviour (DispenseItemBehavior$8). The 1.20.1 backport
passed that player straight into the non-null BlockPlaceCallback.place
and BlockChangeCallback.changeBlock overloads, so Kotlin's parameter
null check threw and killed the server while ticking the block:

  java.lang.NullPointerException: Parameter specified as non-null is
  null: method BlockPlaceCallback.place, parameter player

Restore the null guards that were dropped in fe7ac87 when the injectors
were converted from `LivingEntity user` back to the `Player player`
signature 1.20.1 uses, falling back to Sources.REDSTONE as upstream does.

logFluidBreak already targets the nullable overload, so it only gains the
@nullable annotation to document the contract.

Fixes QuiltServerTools#367
Fixes QuiltServerTools#370
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant