From 30d8b71004c0b914da960fb022e84b0f939599ed Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Mon, 27 Aug 2018 02:47:18 -0400 Subject: [PATCH] API to prevent PlayerBedLeaveEvent from changing a player's spawn location By: Senmori --- .../event/player/PlayerBedLeaveEvent.java | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) 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;