diff options
Diffstat (limited to 'Spigot-Server-Patches/0379-Call-player-spectator-target-events.patch')
-rw-r--r-- | Spigot-Server-Patches/0379-Call-player-spectator-target-events.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0379-Call-player-spectator-target-events.patch b/Spigot-Server-Patches/0379-Call-player-spectator-target-events.patch new file mode 100644 index 0000000000..1016ce0a03 --- /dev/null +++ b/Spigot-Server-Patches/0379-Call-player-spectator-target-events.patch @@ -0,0 +1,63 @@ +From d1b3dc4217aa68d0c522bb1f600ddebb54a191af Mon Sep 17 00:00:00 2001 +From: Caleb Bassham <[email protected]> +Date: Fri, 28 Sep 2018 02:32:19 -0500 +Subject: [PATCH] Call player spectator target events + + +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index 62feadc8af..f1b7353cf8 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -59,7 +59,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + private EntityHuman.EnumChatVisibility cs; + private boolean ct = true; + private long cu = SystemUtils.getMonotonicMillis(); +- private Entity spectatedEntity; ++ private Entity spectatedEntity; private void setSpectatorTargetField(Entity e) { this.spectatedEntity = e; } // Paper - OBFHELPER + public boolean worldChangeInvuln; + private boolean cx; private void setHasSeenCredits(boolean has) { this.cx = has; } // Paper - OBFHELPER + private final RecipeBookServer recipeBook; +@@ -1390,15 +1390,35 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + return (Entity) (this.spectatedEntity == null ? this : this.spectatedEntity); + } + +- public void setSpectatorTarget(Entity entity) { ++ public void setSpectatorTarget(Entity newSpectatorTarget) { ++ // Paper start - Add PlayerStartSpectatingEntityEvent and PlayerStopSpectatingEntity Event + Entity entity1 = this.getSpecatorTarget(); + +- this.spectatedEntity = (Entity) (entity == null ? this : entity); +- if (entity1 != this.spectatedEntity) { +- this.playerConnection.sendPacket(new PacketPlayOutCamera(this.spectatedEntity)); +- this.playerConnection.a(this.spectatedEntity.locX, this.spectatedEntity.locY, this.spectatedEntity.locZ, this.yaw, this.pitch, TeleportCause.SPECTATE); // CraftBukkit ++ if (newSpectatorTarget == null) { ++ newSpectatorTarget = this; + } + ++ if (entity1 == newSpectatorTarget) return; // new spec target is the current spec target ++ ++ if (newSpectatorTarget == this) { ++ com.destroystokyo.paper.event.player.PlayerStopSpectatingEntityEvent playerStopSpectatingEntityEvent = new com.destroystokyo.paper.event.player.PlayerStopSpectatingEntityEvent(this.getBukkitEntity(), entity1.getBukkitEntity()); ++ ++ if (!playerStopSpectatingEntityEvent.callEvent()) { ++ return; ++ } ++ } else { ++ com.destroystokyo.paper.event.player.PlayerStartSpectatingEntityEvent playerStartSpectatingEntityEvent = new com.destroystokyo.paper.event.player.PlayerStartSpectatingEntityEvent(this.getBukkitEntity(), entity1.getBukkitEntity(), newSpectatorTarget.getBukkitEntity()); ++ ++ if (!playerStartSpectatingEntityEvent.callEvent()) { ++ return; ++ } ++ } ++ ++ setSpectatorTargetField(newSpectatorTarget); ++ ++ this.playerConnection.sendPacket(new PacketPlayOutCamera(newSpectatorTarget)); ++ this.playerConnection.a(this.spectatedEntity.locX, this.spectatedEntity.locY, this.spectatedEntity.locZ, this.yaw, this.pitch, TeleportCause.SPECTATE); // CraftBukkit ++ // Paper end + } + + protected void E() { +-- +2.21.0 + |