Grief Prevention

Grief Prevention

1M Downloads

onEntityCombustByEntity fails when constructing EntityDamageByEntityEvent

rudde0 opened this issue ยท 3 comments

commented

Observed Behavior

New spigot update changed how EntityDamageByEntityEvent constructs and they added new mandatory parameter called DamageSource. Since this changes, server throws NoSuchMethodException for this: EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(), EntityDamageEvent.DamageCause.FIRE_TICK, event.getDuration());.

So GriefPrevention's EntityDamageHandler class needs to be updated.

Expected Behavior

It should construct EntityDamageByEntityEvent properly.

Reproduction steps

  1. Join to server
  2. Try to fire any entity in claimed land.

Stack trace or error log

[Server thread/ERROR]: Could not pass event EntityCombustByEntityEvent to GriefPrevention v17.0.0-12-gd53199d-dirty
java.lang.NoSuchMethodError: 'void org.bukkit.event.entity.EntityDamageByEntityEvent.<init>(org.bukkit.entity.Entity, org.bukkit.entity.Entity, org.bukkit.event.entity.EntityDamageEvent$DamageCause, double)'
	at me.ryanhamshire.GriefPrevention.EntityDamageHandler.onEntityCombustByEntity(EntityDamageHandler.java:138) ~[GriefPrevention.jar:?]
	at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor227.execute(Unknown Source) ~[?:?]
	at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:git-Purpur-2141]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.4-R0.1-SNAPSHOT.jar:?]
	at net.minecraft.world.entity.player.Player.attack(Player.java:1467) ~[?:?]
	at net.minecraft.server.level.ServerPlayer.attack(ServerPlayer.java:2407) ~[?:?]
	at net.minecraft.server.network.ServerGamePacketListenerImpl$4.a(ServerGamePacketListenerImpl.java:2861) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundInteractPacket$1.dispatch(ServerboundInteractPacket.java:24) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundInteractPacket.dispatch(ServerboundInteractPacket.java:80) ~[?:?]
	at net.minecraft.server.network.ServerGamePacketListenerImpl.handleInteract(ServerGamePacketListenerImpl.java:2783) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundInteractPacket.handle(ServerboundInteractPacket.java:67) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundInteractPacket.handle(ServerboundInteractPacket.java:12) ~[?:?]
	at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:54) ~[?:?]
	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
	at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1488) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
	at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1465) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1388) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
	at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1366) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1255) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323) ~[purpur-1.20.4.jar:git-Purpur-2141]
	at java.lang.Thread.run(Thread.java:1583) ~[?:?]

Server version

Current: git-Purpur-2141 (MC: 1.20.4)*
Previous: git-Purpur-2139 (MC: 1.20.4)
* You are running the latest version

GriefPrevention version

GriefPrevention version 17.0.0-12-gd53199d-dirty

Configuration

This is internal issue of GriefPrevention

Plugin list

No response

Running without GriefPrevention

  • I attempted running the server without GriefPrevention installed.
  • The problem does not occur when GriefPrevention is removed from the server.

Running with only GriefPrevention

  • I attempted running only GriefPrevention on the server.
  • The issue still occurs when GriefPrevention is the only plugin running.

Running on a fresh, clean server installation

  • I attempted testing for the issue on a new server.
  • The issue still occurs on a new server.

Using unmodified client

  • I attempted testing for the issue with the vanilla client.
  • The issue still occurs when using the vanilla client.

We appreciate you taking the time to fill out a bug report!

  • I searched for similar issues before submitting this bug report.
commented

Resolved by 9b671d0 for 17.0.0-SNAPSHOT and 354ab33 for legacy, which is included in release 16.18.2.

commented

Thanks. I know bigscary did this long ago to save on repeat code. Prolly need to refactor to be our own class, or pass parameters directly.