Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unhooking an Entity in PlayerFishEvent causes NPE #10700

Closed
cesoun opened this issue May 12, 2024 · 2 comments · Fixed by #10712
Closed

Unhooking an Entity in PlayerFishEvent causes NPE #10700

cesoun opened this issue May 12, 2024 · 2 comments · Fixed by #10712
Labels
status: accepted Disputed bug is accepted as valid or Feature accepted as desired to be added. type: bug Something doesn't work as it was intended to. version: 1.20.6 Game version 1.20.6

Comments

@cesoun
Copy link

cesoun commented May 12, 2024

Stack trace

[22:08:33 ERROR]: Failed to handle packet net.minecraft.network.protocol.game.ServerboundUseItemPacket@32d4e0dd, suppressing error
java.lang.NullPointerException: Cannot invoke "net.minecraft.world.entity.Entity.getDeltaMovement()" because "entity" is null
        at net.minecraft.world.entity.projectile.FishingHook.pullEntity(FishingHook.java:599) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.world.entity.projectile.FishingHook.retrieve(FishingHook.java:502) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.world.item.FishingRodItem.use(FishingRodItem.java:33) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.world.item.ItemStack.use(ItemStack.java:596) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.level.ServerPlayerGameMode.useItem(ServerPlayerGameMode.java:483) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItem(ServerGamePacketListenerImpl.java:2016) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:39) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:10) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:55) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:151) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1517) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:198) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:125) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1494) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1417) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:135) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1383) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1244) ~[paper-1.20.6.jar:git-Paper-68]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:326) ~[paper-1.20.6.jar:git-Paper-68]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

Plugin and Datapack List

> plugins
[22:18:37 INFO]: Server Plugins (5):
[22:18:37 INFO]: Bukkit Plugins:
[22:18:37 INFO]:  - CommandAPI, Economy, Lectern, LuckPerms, Regions
> datapack list
[22:19:14 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[22:19:14 INFO]: There are no more data packs available

Actions to reproduce (if known)

  1. Register a PlayerFishEvent Listener
  2. Call event.getHook().setHookedEntity(null)
  3. Hook an entity with a rod in-game and reel them in.
  4. NPE is raised and suppressed in console.

Paper version

> version
[22:19:45 INFO]: This server is running Paper version git-Paper-68 (MC: 1.20.6) (Implementing API version 1.20.6-R0.1-SNAPSHOT) (Git: 711f82e)
You are running the latest version
Previous version: git-Paper-62 (MC: 1.20.6)

Other

@EventHandler
fun onPlayerFish(event: PlayerFishEvent) {
	// ...
	
	event.hook.hookedEntity = null
	// event.getHook().setHookedEntity(null) // java eqiv.
	
	// ...
}
@papermc-sniffer papermc-sniffer bot added the version: 1.20.6 Game version 1.20.6 label May 12, 2024
@Machine-Maker
Copy link
Member

Yeah, I suppose we can address this. Is there functionally any difference from your end between doing this and cancelling the event?

@Machine-Maker Machine-Maker added status: accepted Disputed bug is accepted as valid or Feature accepted as desired to be added. type: bug Something doesn't work as it was intended to. and removed status: needs triage labels May 13, 2024
@cesoun
Copy link
Author

cesoun commented May 13, 2024

Yeah, I suppose we can address this. Is there functionally any difference from your end between doing this and cancelling the event?

Cancelling the event prevents the player from reeling the rod in, requiring them to swap to another item first before being able to re-cast the rod.

Unhooking the entity allows the rod to reel and be re-cast without switching items which is useful for preventing rod pulling entities and is more functionally expected behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: accepted Disputed bug is accepted as valid or Feature accepted as desired to be added. type: bug Something doesn't work as it was intended to. version: 1.20.6 Game version 1.20.6
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants