summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/net/minecraft/server/EntityHuman.java34
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java10
2 files changed, 42 insertions, 2 deletions
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index 36d8593a..84631ee2 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -11,6 +11,8 @@ import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
+import org.bukkit.event.player.PlayerBedEnterEvent;
+import org.bukkit.event.player.PlayerBedLeaveEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
// CraftBukkit end
@@ -33,9 +35,13 @@ public abstract class EntityHuman extends EntityLiving {
public double w;
public double x;
public double y;
- private boolean sleeping;
+ // CraftBukkit start
+ public boolean sleeping;
+ // CraftBukkit end
private ChunkCoordinates b;
- private int sleepTicks;
+ // CraftBukkit start
+ public int sleepTicks;
+ // CraftBukkit end
public float z;
public float A;
private ChunkCoordinates d;
@@ -547,6 +553,20 @@ public abstract class EntityHuman extends EntityLiving {
} else if (this.world.d()) {
return EnumBedError.NOT_POSSIBLE_NOW;
} else if (Math.abs(this.locX - (double) i) <= 3.0D && Math.abs(this.locY - (double) j) <= 2.0D && Math.abs(this.locZ - (double) k) <= 3.0D) {
+ // CraftBukkit start
+ if (this.getBukkitEntity() instanceof Player) {
+ Player player = (Player) this.getBukkitEntity();
+ CraftServer server = ((WorldServer) world).getServer();
+ org.bukkit.block.Block bed = ((WorldServer) world).getWorld().getBlockAt(i, j, k);
+ PlayerBedEnterEvent event = new PlayerBedEnterEvent(player, bed);
+ server.getPluginManager().callEvent(event);
+
+ if (event.isCancelled()) {
+ return EnumBedError.OTHER_PROBLEM;
+ }
+ }
+ // CraftBukkit end
+
this.b(0.2F, 0.2F);
this.height = 0.2F;
if (this.world.f(i, j, k)) {
@@ -637,6 +657,16 @@ public abstract class EntityHuman extends EntityLiving {
this.world.q();
}
+ // CraftBukkit start
+ if (this.getBukkitEntity() instanceof Player) {
+ Player player = (Player) this.getBukkitEntity();
+ CraftServer server = ((WorldServer) world).getServer();
+ org.bukkit.block.Block bed = ((WorldServer) world).getWorld().getBlockAt(this.b.a, this.b.b, this.b.c);
+ PlayerBedLeaveEvent event = new PlayerBedLeaveEvent(player, bed);
+ server.getPluginManager().callEvent(event);
+ }
+ // CraftBukkit end
+
if (flag) {
this.sleepTicks = 0;
} else {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index 7b37b309..011cf748 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -47,4 +47,14 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
public String toString() {
return "CraftHumanEntity{" + "id=" + getEntityId() + "name=" + getName() + '}';
}
+
+ @Override
+ public boolean isSleeping() {
+ return getHandle().sleeping;
+ }
+
+ @Override
+ public int getSleepTicks() {
+ return getHandle().sleepTicks;
+ }
}