diff --git a/paper-api/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java
index 628ab0b03b..0b57635faa 100644
--- a/paper-api/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java
+++ b/paper-api/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java
@@ -1,5 +1,6 @@
package org.bukkit.event.player;
+import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
@@ -10,10 +11,12 @@ import org.bukkit.event.HandlerList;
public class PlayerBedLeaveEvent extends PlayerEvent {
private static final HandlerList handlers = new HandlerList();
private final Block bed;
+ private boolean setBedSpawn;
- public PlayerBedLeaveEvent(final Player who, final Block bed) {
+ public PlayerBedLeaveEvent(final Player who, final Block bed, boolean setBedSpawn) {
super(who);
this.bed = bed;
+ this.setBedSpawn = setBedSpawn;
}
/**
@@ -25,6 +28,38 @@ public class PlayerBedLeaveEvent extends PlayerEvent {
return bed;
}
+ /**
+ * Get if this event should set the new spawn location for the
+ * {@link Player}.
+ *
+ * This does not remove any existing spawn location, only prevent it from
+ * being changed (if true).
+ *
+ * To change a {@link Player}'s spawn location, use
+ * {@link Player#setBedSpawnLocation(Location)}.
+ *
+ * @return true if the spawn location will be changed
+ */
+ public boolean shouldSetSpawnLocation() {
+ return setBedSpawn;
+ }
+
+ /**
+ * Set if this event should set the new spawn location for the
+ * {@link Player}.
+ *
+ * This will not remove any existing spawn location, only prevent it from
+ * being changed (if true).
+ *
+ * To change a {@link Player}'s spawn location, use
+ * {@link Player#setBedSpawnLocation(Location)}.
+ *
+ * @param setBedSpawn true to change the new spawn location
+ */
+ public void setSpawnLocation(boolean setBedSpawn) {
+ this.setBedSpawn = setBedSpawn;
+ }
+
@Override
public HandlerList getHandlers() {
return handlers;