2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								From: Josh Roy <10731363+JRoy@users.noreply.github.com>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Date: Sun, 10 May 2020 23:06:30 -0400
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Subject: [PATCH] Potential bed API
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Adds a new method to fetch the location of a player's bed without generating any sync loads.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								getPotentialBedLocation - Gets the last known location of a player's bed. This does not preform any check if the bed is still valid and does not load any chunks.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ import net.minecraft.nbt.CompoundTag;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.network.chat.Component;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.network.protocol.game.ServerboundContainerClosePacket;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+import net.minecraft.server.level.ServerLevel;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.server.level.ServerPlayer;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.MenuProvider;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.entity.Entity;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 22:32:56 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         return this.getHandle().sleepCounter;
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper start - Potential bed api
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    @Override
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public Location getPotentialBedLocation() {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        ServerPlayer handle = (ServerPlayer) getHandle();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        BlockPos bed = handle.getRespawnPosition();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (bed == null) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            return null;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        ServerLevel worldServer = handle.server.getLevel(handle.getRespawnDimension());
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (worldServer == null) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            return null;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        return new Location(worldServer.getWorld(), bed.getX(), bed.getY(), bed.getZ());
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public boolean sleep(Location location, boolean force) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         Preconditions.checkArgument(location != null, "Location cannot be null");