geforkt von Mirrors/Paper
bd0337b7a9
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: 7dd1cfcd PortalEvent additions CraftBukkit Changes:e8cb2f51
SPIGOT-5252: Nether portal fixes and additionsfde78ef3
SPIGOT-5477: Server not shutting down Spigot Changes: 037559e7 Rebuild patches
72 Zeilen
3.5 KiB
Diff
72 Zeilen
3.5 KiB
Diff
From 79335f2b17824b7c681cb113e96dbed732bb87b9 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 c3e9f9d90..70c9a41ee 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 ch;
|
|
private boolean ci = true;
|
|
private long cj = SystemUtils.getMonotonicMillis();
|
|
- private Entity spectatedEntity;
|
|
+ private Entity spectatedEntity; private void setSpectatorTargetField(Entity e) { this.spectatedEntity = e; } // Paper - OBFHELPER
|
|
public boolean worldChangeInvuln;
|
|
private boolean cm; private void setHasSeenCredits(boolean has) { this.cm = has; } // Paper - OBFHELPER
|
|
private final RecipeBookServer recipeBook;
|
|
@@ -1583,15 +1583,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
|
|
@@ -1599,7 +1619,6 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
if (this.portalCooldown > 0 && !this.worldChangeInvuln) {
|
|
--this.portalCooldown;
|
|
}
|
|
-
|
|
}
|
|
|
|
@Override
|
|
--
|
|
2.24.1
|
|
|