3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-12-18 20:40:08 +01:00

Fix PlayerFishEvent not correctly cancelling. Fixes BUKKIT-5396

Prior to this commit cancelling the PlayerFishEvent would cause various
states of the fishing routine to be incorrectly or wrongly fired. This
incorrect behaviour was due to the miscommunication between the server and
client regarding the fishing state. When the event was cancelled, the
bobber entity was removed and caused the client to incorrectly determine
what the "next state" was to logically be.

This commit resolves the issue by ensuring the client is made aware of the
correct changes at the correct time regarding the bobber entity, therefore
keeping the logical steps of "fishing" proper and in-tact.
Dieser Commit ist enthalten in:
myiume 2014-02-19 15:40:37 +02:00 committet von turt2live
Ursprung b3e83b00fc
Commit 4507cec090

Datei anzeigen

@ -370,8 +370,6 @@ public class EntityFishingHook extends Entity {
this.world.getServer().getPluginManager().callEvent(playerFishEvent); this.world.getServer().getPluginManager().callEvent(playerFishEvent);
if (playerFishEvent.isCancelled()) { if (playerFishEvent.isCancelled()) {
this.die();
this.owner.hookedFish = null;
return 0; return 0;
} }
// CraftBukkit end // CraftBukkit end
@ -394,8 +392,6 @@ public class EntityFishingHook extends Entity {
this.world.getServer().getPluginManager().callEvent(playerFishEvent); this.world.getServer().getPluginManager().callEvent(playerFishEvent);
if (playerFishEvent.isCancelled()) { if (playerFishEvent.isCancelled()) {
this.die();
this.owner.hookedFish = null;
return 0; return 0;
} }
// CraftBukkit end // CraftBukkit end
@ -421,8 +417,6 @@ public class EntityFishingHook extends Entity {
this.world.getServer().getPluginManager().callEvent(playerFishEvent); this.world.getServer().getPluginManager().callEvent(playerFishEvent);
if (playerFishEvent.isCancelled()) { if (playerFishEvent.isCancelled()) {
this.die();
this.owner.hookedFish = null;
return 0; return 0;
} }
// CraftBukkit end // CraftBukkit end
@ -434,6 +428,9 @@ public class EntityFishingHook extends Entity {
if (b0 == 0) { if (b0 == 0) {
PlayerFishEvent playerFishEvent = new PlayerFishEvent((Player) this.owner.getBukkitEntity(), null, (Fish) this.getBukkitEntity(), PlayerFishEvent.State.FAILED_ATTEMPT); PlayerFishEvent playerFishEvent = new PlayerFishEvent((Player) this.owner.getBukkitEntity(), null, (Fish) this.getBukkitEntity(), PlayerFishEvent.State.FAILED_ATTEMPT);
this.world.getServer().getPluginManager().callEvent(playerFishEvent); this.world.getServer().getPluginManager().callEvent(playerFishEvent);
if (playerFishEvent.isCancelled()) {
return 0;
}
} }
// CraftBukkit end // CraftBukkit end