mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 07:48:53 +01:00
637a5bcfec
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 04405534 SPIGOT-5034: FoodLevelChangeEvent add getItem method 8154c64c SPIGOT-4984: EnchantmentOffer.getCost() documentation is misleading CraftBukkit Changes:f2757f95
SPIGOT-5071: Player loot tables not triggeredf4242226
Optimize getEntitiesByClasses slightlye81013d7
SPIGOT-5072: Process phantom, cat and patrol spawning in CustomChunkGenerator30a63379
SPIGOT-5010: World#getEntitiesByClass/es also return entities in border chunks.43431ba6
SPIGOT-5034: FoodLevelChangeEvent add getItem method
63 lines
3.2 KiB
Diff
63 lines
3.2 KiB
Diff
From df37016c278c1503a09326889f4e1c1ba3f27004 Mon Sep 17 00:00:00 2001
|
|
From: Caleb Bassham <caleb.bassham@gmail.com>
|
|
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 a0f27f1bcb..314ff6aadb 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
@@ -60,7 +60,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
private EnumChatVisibility ck;
|
|
private boolean cl = true;
|
|
private long cm = SystemUtils.getMonotonicMillis();
|
|
- private Entity spectatedEntity;
|
|
+ private Entity spectatedEntity; private void setSpectatorTargetField(Entity e) { this.spectatedEntity = e; } // Paper - OBFHELPER
|
|
public boolean worldChangeInvuln;
|
|
private boolean cp; private void setHasSeenCredits(boolean has) { this.cp = has; } // Paper - OBFHELPER
|
|
private final RecipeBookServer recipeBook;
|
|
@@ -1572,15 +1572,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
|
|
}
|
|
|
|
@Override
|
|
--
|
|
2.22.0
|
|
|