Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-20 21:40:06 +01:00
fixed support for multiworld beds
Dieser Commit ist enthalten in:
Ursprung
4a0eb0a4a1
Commit
ca0711fdb3
@ -38,7 +38,7 @@ public abstract class EntityHuman extends EntityLiving {
|
|||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
public boolean sleeping;
|
public boolean sleeping;
|
||||||
public boolean fauxSleeping;
|
public boolean fauxSleeping;
|
||||||
public String spawnWorld;
|
public String spawnWorld = "";
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
public ChunkCoordinates A;
|
public ChunkCoordinates A;
|
||||||
public int sleepTicks; // CraftBukkit - private -> public
|
public int sleepTicks; // CraftBukkit - private -> public
|
||||||
@ -760,6 +760,7 @@ public abstract class EntityHuman extends EntityLiving {
|
|||||||
public void a(ChunkCoordinates chunkcoordinates) {
|
public void a(ChunkCoordinates chunkcoordinates) {
|
||||||
if (chunkcoordinates != null) {
|
if (chunkcoordinates != null) {
|
||||||
this.b = new ChunkCoordinates(chunkcoordinates);
|
this.b = new ChunkCoordinates(chunkcoordinates);
|
||||||
|
this.spawnWorld = world.worldData.name;
|
||||||
} else {
|
} else {
|
||||||
this.b = null;
|
this.b = null;
|
||||||
}
|
}
|
||||||
|
@ -216,7 +216,7 @@ public class ServerConfigurationManager {
|
|||||||
if(cw != null && chunkcoordinates != null) {
|
if(cw != null && chunkcoordinates != null) {
|
||||||
ChunkCoordinates chunkcoordinates1 = EntityHuman.getBed(cw.getHandle(), chunkcoordinates);
|
ChunkCoordinates chunkcoordinates1 = EntityHuman.getBed(cw.getHandle(), chunkcoordinates);
|
||||||
if (chunkcoordinates1 != null) {
|
if (chunkcoordinates1 != null) {
|
||||||
location = new Location(cw, chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z);
|
location = new Location(cw, chunkcoordinates1.x + 0.5, chunkcoordinates1.y + 0.1, chunkcoordinates1.z + 0.5);
|
||||||
} else {
|
} else {
|
||||||
entityplayer.netServerHandler.sendPacket(new Packet70Bed(0));
|
entityplayer.netServerHandler.sendPacket(new Packet70Bed(0));
|
||||||
}
|
}
|
||||||
@ -239,10 +239,10 @@ public class ServerConfigurationManager {
|
|||||||
WorldServer worldserver = ((CraftWorld)location.getWorld()).getHandle();
|
WorldServer worldserver = ((CraftWorld)location.getWorld()).getHandle();
|
||||||
worldserver.chunkProviderServer.getChunkAt((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4);
|
worldserver.chunkProviderServer.getChunkAt((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4);
|
||||||
|
|
||||||
while (worldserver.getEntities(entityplayer, entityplayer.boundingBox).size() != 0) {
|
while (worldserver.getTypeId(location.getBlockX(), location.getBlockY(), location.getBlockZ()) != 0 ||
|
||||||
entityplayer.setPosition(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ);
|
worldserver.getTypeId(location.getBlockX(), location.getBlockY() + 1, location.getBlockZ()) != 0) {
|
||||||
|
location.setY(location.getY() + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
byte actualDimension = (byte) (worldserver.getWorld().getEnvironment().getId());
|
byte actualDimension = (byte) (worldserver.getWorld().getEnvironment().getId());
|
||||||
entityplayer.netServerHandler.sendPacket(new Packet9Respawn((byte) (actualDimension >= 0 ? -1 : 0)));
|
entityplayer.netServerHandler.sendPacket(new Packet9Respawn((byte) (actualDimension >= 0 ? -1 : 0)));
|
||||||
entityplayer.netServerHandler.sendPacket(new Packet9Respawn(actualDimension));
|
entityplayer.netServerHandler.sendPacket(new Packet9Respawn(actualDimension));
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren