summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUgleh <troti@ymail.com>2018-11-02 18:31:00 +1100
committermd_5 <git@md-5.net>2018-11-02 18:32:19 +1100
commita8000588cb9368dfedac1536e83ad6d99714f2aa (patch)
tree1a465f1c090ade41cba4bdd93a7b487124f67645 /src
parentaed3aecbafff223bb8c48ace7cb18f8a7dd0b6d5 (diff)
downloadcraftbukkit-a8000588cb9368dfedac1536e83ad6d99714f2aa.tar
craftbukkit-a8000588cb9368dfedac1536e83ad6d99714f2aa.tar.gz
craftbukkit-a8000588cb9368dfedac1536e83ad6d99714f2aa.tar.lz
craftbukkit-a8000588cb9368dfedac1536e83ad6d99714f2aa.tar.xz
craftbukkit-a8000588cb9368dfedac1536e83ad6d99714f2aa.zip
SPIGOT-4395: Additions to PlayerBedEnterEvent.
Contributions by blablubbabc as well - https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/pull-requests/500/overview
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index df8e99f2..328322c1 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -52,6 +52,7 @@ import org.bukkit.entity.ThrownExpBottle;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
+import org.bukkit.event.Event.Result;
import org.bukkit.event.block.*;
import org.bukkit.event.block.BlockIgniteEvent.IgniteCause;
import org.bukkit.event.entity.*;
@@ -63,6 +64,7 @@ import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.player.*;
+import org.bukkit.event.player.PlayerBedEnterEvent.BedEnterResult;
import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryView;
@@ -100,6 +102,44 @@ public class CraftEventFactory {
}
/**
+ * PlayerBedEnterEvent
+ */
+ public static EntityHuman.EnumBedResult callPlayerBedEnterEvent(EntityHuman player, BlockPosition bed, EntityHuman.EnumBedResult nmsBedResult) {
+ BedEnterResult bedEnterResult;
+ switch (nmsBedResult) {
+ case OK:
+ bedEnterResult = BedEnterResult.OK;
+ break;
+ case NOT_POSSIBLE_HERE:
+ bedEnterResult = BedEnterResult.NOT_POSSIBLE_HERE;
+ break;
+ case NOT_POSSIBLE_NOW:
+ bedEnterResult = BedEnterResult.NOT_POSSIBLE_NOW;
+ break;
+ case TOO_FAR_AWAY:
+ bedEnterResult = BedEnterResult.TOO_FAR_AWAY;
+ break;
+ case NOT_SAFE:
+ bedEnterResult = BedEnterResult.NOT_SAFE;
+ break;
+ default:
+ bedEnterResult = BedEnterResult.OTHER_PROBLEM;
+ }
+
+ PlayerBedEnterEvent event = new PlayerBedEnterEvent((Player) player.getBukkitEntity(), CraftBlock.at(player.world, bed), bedEnterResult);
+ Bukkit.getServer().getPluginManager().callEvent(event);
+
+ Result result = event.useBed();
+ if (result == Result.ALLOW) {
+ return EntityHuman.EnumBedResult.OK;
+ } else if (result == Result.DENY) {
+ return EntityHuman.EnumBedResult.OTHER_PROBLEM;
+ }
+
+ return nmsBedResult;
+ }
+
+ /**
* Block place methods
*/
public static BlockMultiPlaceEvent callBlockMultiPlaceEvent(World world, EntityHuman who, EnumHand hand, List<BlockState> blockStates, int clickedX, int clickedY, int clickedZ) {