Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 11:00:06 +01:00
e403d6aafc
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: a0149bf16 SPIGOT-6480: Players cannot take books from lecterns that were opened by plugins
45 Zeilen
2.1 KiB
Diff
45 Zeilen
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: JRoy <joshroy126@gmail.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 3bfb93890259210afd2f5e226cef100d26a11628..4028f4bd87a183a808f4c9a19d51ee1c9b9e30f7 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
@@ -13,6 +13,7 @@ import net.minecraft.network.chat.IChatBaseComponent;
|
|
import net.minecraft.network.protocol.game.PacketPlayInCloseWindow;
|
|
import net.minecraft.network.protocol.game.PacketPlayOutOpenWindow;
|
|
import net.minecraft.server.level.EntityPlayer;
|
|
+import net.minecraft.server.level.WorldServer;
|
|
import net.minecraft.world.ITileInventory;
|
|
import net.minecraft.world.entity.Entity;
|
|
import net.minecraft.world.entity.EntityTypes;
|
|
@@ -127,6 +128,22 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
|
return getHandle().sleepTicks;
|
|
}
|
|
|
|
+ // Paper start - Potential bed api
|
|
+ @Override
|
|
+ public Location getPotentialBedLocation() {
|
|
+ EntityPlayer handle = (EntityPlayer) getHandle();
|
|
+ BlockPosition bed = handle.getSpawn();
|
|
+ if (bed == null) {
|
|
+ return null;
|
|
+ }
|
|
+
|
|
+ WorldServer worldServer = handle.server.getWorldServer(handle.getSpawnDimension());
|
|
+ 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");
|