From f31d7de587ec7ddf4247a66d71ea7b3bda6a2785 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Thu, 7 Apr 2011 11:26:33 -0700 Subject: [PATCH] Added bed events and methods. By: sk89q --- .../java/org/bukkit/entity/HumanEntity.java | 14 ++++++ .../src/main/java/org/bukkit/event/Event.java | 15 ++++++ .../event/player/PlayerBedEnterEvent.java | 50 +++++++++++++++++++ .../event/player/PlayerBedLeaveEvent.java | 29 +++++++++++ .../bukkit/event/player/PlayerListener.java | 16 ++++++ .../bukkit/plugin/java/JavaPluginLoader.java | 12 +++++ 6 files changed, 136 insertions(+) create mode 100644 paper-api/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java create mode 100644 paper-api/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java diff --git a/paper-api/src/main/java/org/bukkit/entity/HumanEntity.java b/paper-api/src/main/java/org/bukkit/entity/HumanEntity.java index 869d7ba40c..60f7b345c4 100644 --- a/paper-api/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/paper-api/src/main/java/org/bukkit/entity/HumanEntity.java @@ -45,4 +45,18 @@ public interface HumanEntity extends LivingEntity { * public void selectItemInHand( int index ); */ + + /** + * Returns whether this player is slumbering. + * + * @return slumber state + */ + public boolean isSleeping(); + + /** + * Get the sleep ticks of the player. This value may be capped. + * + * @return slumber ticks + */ + public int getSleepTicks(); } diff --git a/paper-api/src/main/java/org/bukkit/event/Event.java b/paper-api/src/main/java/org/bukkit/event/Event.java index c4dc0fc859..5476cc74ba 100644 --- a/paper-api/src/main/java/org/bukkit/event/Event.java +++ b/paper-api/src/main/java/org/bukkit/event/Event.java @@ -270,6 +270,21 @@ public abstract class Event implements Serializable { * @see org.bukkit.event.player.PlayerInventoryEvent */ PLAYER_INVENTORY(Category.PLAYER), + + /** + * Called when a player enter a bed + * + * @see org.bukkit.event.player.PlayerBedEnterEvent + */ + PLAYER_BED_ENTER(Category.PLAYER), + + /** + * Called when a player leaves a bed + * + * @see org.bukkit.event.player.PlayerBedEnterEvent + */ + PLAYER_BED_LEAVE(Category.PLAYER), + /** * BLOCK EVENTS */ diff --git a/paper-api/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java new file mode 100644 index 0000000000..93beec632f --- /dev/null +++ b/paper-api/src/main/java/org/bukkit/event/player/PlayerBedEnterEvent.java @@ -0,0 +1,50 @@ +package org.bukkit.event.player; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; + +/** + * This event is fired when the player is almost about to enter the bed. + * It can be cancelled. + * + * @author sk89q + */ +public class PlayerBedEnterEvent extends PlayerEvent implements Cancellable { + + private boolean cancel = false; + private Block bed; + + public PlayerBedEnterEvent(Player who, Block bed) { + super(Type.PLAYER_BED_ENTER, who); + this.bed = bed; + } + + /** + * Gets the cancellation state of this event. + * + * @return true if this event is cancelled + */ + public boolean isCancelled() { + return cancel; + } + + /** + * Prevents the player from entering the bed. + * + * @param cancel true if you wish to cancel this event + */ + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + /** + * Returns the bed block. + * + * @return + */ + public Block getBed() { + return bed; + } + +} 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 new file mode 100644 index 0000000000..2279334512 --- /dev/null +++ b/paper-api/src/main/java/org/bukkit/event/player/PlayerBedLeaveEvent.java @@ -0,0 +1,29 @@ +package org.bukkit.event.player; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +/** + * This event is fired when the player is leaving a bed. + * + * @author sk89q + */ +public class PlayerBedLeaveEvent extends PlayerEvent { + + private Block bed; + + public PlayerBedLeaveEvent(Player who, Block bed) { + super(Type.PLAYER_BED_LEAVE, who); + this.bed = bed; + } + + /** + * Returns the bed block. + * + * @return + */ + public Block getBed() { + return bed; + } + +} diff --git a/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java index 288f4eff9b..1aff9ed196 100644 --- a/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java +++ b/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java @@ -172,6 +172,22 @@ public class PlayerListener implements Listener { public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { } + /** + * Called when a player enters a bed + * + * @param event Relevant event details + */ + public void onPlayerBedEnter(PlayerBedEnterEvent event) { + } + + /** + * Called when a player leaves a bed + * + * @param event Relevant event details + */ + public void onPlayerBedLeave(PlayerBedLeaveEvent event) { + } + // TODO: Remove after RB @Deprecated public void onPlayerQuit(PlayerEvent event) {} @Deprecated public void onPlayerCommandPreprocess(PlayerChatEvent event) {} diff --git a/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java index 55ff75aca5..10eaaaa238 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -312,6 +312,18 @@ public final class JavaPluginLoader implements PluginLoader { ((PlayerListener) listener).onPlayerBucketFill((PlayerBucketFillEvent) event); } }; + case PLAYER_BED_ENTER: + return new EventExecutor() { + public void execute(Listener listener, Event event) { + ((PlayerListener) listener).onPlayerBedEnter((PlayerBedEnterEvent) event); + } + }; + case PLAYER_BED_LEAVE: + return new EventExecutor() { + public void execute(Listener listener, Event event) { + ((PlayerListener) listener).onPlayerBedLeave((PlayerBedLeaveEvent) event); + } + }; // Block Events case BLOCK_PHYSICS: