mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-24 16:18:02 +01:00
Add PlayerPostRespawnEvent (#1622)
This commit is contained in:
parent
556259dd97
commit
830137acbe
2 changed files with 118 additions and 0 deletions
67
Spigot-API-Patches/0177-Add-PlayerPostRespawnEvent.patch
Normal file
67
Spigot-API-Patches/0177-Add-PlayerPostRespawnEvent.patch
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
From 80656b237d73ba1ee0563565476fa0dbd4c84afa Mon Sep 17 00:00:00 2001
|
||||||
|
From: MisterVector <whizkid3000@hotmail.com>
|
||||||
|
Date: Fri, 26 Oct 2018 21:33:13 -0700
|
||||||
|
Subject: [PATCH] Add PlayerPostRespawnEvent
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerPostRespawnEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerPostRespawnEvent.java
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..31f34b548
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerPostRespawnEvent.java
|
||||||
|
@@ -0,0 +1,52 @@
|
||||||
|
+package com.destroystokyo.paper.event.player;
|
||||||
|
+
|
||||||
|
+import org.bukkit.Location;
|
||||||
|
+import org.bukkit.entity.Player;
|
||||||
|
+import org.bukkit.event.HandlerList;
|
||||||
|
+import org.bukkit.event.player.PlayerEvent;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Fired after a player has respawned
|
||||||
|
+ */
|
||||||
|
+public class PlayerPostRespawnEvent extends PlayerEvent {
|
||||||
|
+ private final static HandlerList handlers = new HandlerList();
|
||||||
|
+ private final Location respawnedLocation;
|
||||||
|
+ private final boolean isBedSpawn;
|
||||||
|
+
|
||||||
|
+ public PlayerPostRespawnEvent(@NotNull final Player respawnPlayer, @NotNull final Location respawnedLocation, final boolean isBedSpawn) {
|
||||||
|
+ super(respawnPlayer);
|
||||||
|
+ this.respawnedLocation = respawnedLocation;
|
||||||
|
+ this.isBedSpawn = isBedSpawn;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Returns the location of the respawned player
|
||||||
|
+ *
|
||||||
|
+ * @return location of the respawned player
|
||||||
|
+ */
|
||||||
|
+ @NotNull
|
||||||
|
+ public Location getRespawnedLocation() {
|
||||||
|
+ return respawnedLocation.clone();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Checks if the player respawned to their bed
|
||||||
|
+ *
|
||||||
|
+ * @return whether the player respawned to their bed
|
||||||
|
+ */
|
||||||
|
+ public boolean isBedSpawn() {
|
||||||
|
+ return isBedSpawn;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ @NotNull
|
||||||
|
+ public HandlerList getHandlers() {
|
||||||
|
+ return handlers;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @NotNull
|
||||||
|
+ public static HandlerList getHandlerList() {
|
||||||
|
+ return handlers;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
From c02e172560f6518901f1bec9105493329b0938af Mon Sep 17 00:00:00 2001
|
||||||
|
From: MisterVector <whizkid3000@hotmail.com>
|
||||||
|
Date: Fri, 26 Oct 2018 21:31:00 -0700
|
||||||
|
Subject: [PATCH] Implement PlayerPostRespawnEvent
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
|
index b1630137e..fbabe5fdf 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
|
@@ -663,9 +663,14 @@ public abstract class PlayerList {
|
||||||
|
// this.a(entityplayer1, entityplayer, worldserver); // CraftBukkit - removed
|
||||||
|
BlockPosition blockposition1;
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ boolean isBedSpawn = false;
|
||||||
|
+ boolean isRespawn = false;
|
||||||
|
+ // Paper end
|
||||||
|
+
|
||||||
|
// CraftBukkit start - fire PlayerRespawnEvent
|
||||||
|
if (location == null) {
|
||||||
|
- boolean isBedSpawn = false;
|
||||||
|
+ //boolean isBedSpawn = false; Paper - moved up
|
||||||
|
CraftWorld cworld = (CraftWorld) this.server.server.getWorld(entityplayer.spawnWorld);
|
||||||
|
if (cworld != null && blockposition != null) {
|
||||||
|
blockposition1 = EntityHuman.getBed(cworld.getHandle(), blockposition, flag1);
|
||||||
|
@@ -695,6 +700,7 @@ public abstract class PlayerList {
|
||||||
|
|
||||||
|
location = respawnEvent.getRespawnLocation();
|
||||||
|
entityplayer.reset();
|
||||||
|
+ isRespawn = true; // Paper
|
||||||
|
} else {
|
||||||
|
location.setWorld(server.getWorldServer(dimensionmanager).getWorld());
|
||||||
|
}
|
||||||
|
@@ -757,6 +763,13 @@ public abstract class PlayerList {
|
||||||
|
if (entityplayer.playerConnection.isDisconnected()) {
|
||||||
|
this.savePlayerFile(entityplayer);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // Paper start
|
||||||
|
+ if (isRespawn) {
|
||||||
|
+ cserver.getPluginManager().callEvent(new com.destroystokyo.paper.event.player.PlayerPostRespawnEvent(entityplayer.getBukkitEntity(), location, isBedSpawn));
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
+
|
||||||
|
// CraftBukkit end
|
||||||
|
return entityplayer1;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
Loading…
Reference in a new issue