Fix respawn position not saved upon respawn (#376)

This commit is contained in:
IzzelAliz 2021-12-14 15:33:18 +08:00
parent 04859a24c4
commit 8acc90b89c
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338

View File

@ -290,7 +290,7 @@ public abstract class PlayerListMixin implements PlayerListBridge {
f2 = (float) Mth.wrapDegrees(Mth.atan2(vec3d2.z, vec3d2.x) * 57.2957763671875 - 90.0); f2 = (float) Mth.wrapDegrees(Mth.atan2(vec3d2.z, vec3d2.x) * 57.2957763671875 - 90.0);
} }
// playerIn.setLocationAndAngles(vec3d.x, vec3d.y, vec3d.z, f2, 0.0f); // playerIn.setLocationAndAngles(vec3d.x, vec3d.y, vec3d.z, f2, 0.0f);
playerIn.setRespawnPosition(spawnWorld.dimension(), pos, f, flag2, false); playerIn.setRespawnPosition(spawnWorld.dimension(), pos, f2, flag2, false);
flag3 = (!flag && flag4); flag3 = (!flag && flag4);
isBedSpawn = true; isBedSpawn = true;
location = new Location(((WorldBridge) spawnWorld).bridge$getWorld(), vec3d.x, vec3d.y, vec3d.z); location = new Location(((WorldBridge) spawnWorld).bridge$getWorld(), vec3d.x, vec3d.y, vec3d.z);
@ -408,7 +408,7 @@ public abstract class PlayerListMixin implements PlayerListBridge {
f2 = (float) Mth.wrapDegrees(Mth.atan2(vec3d2.z, vec3d2.x) * 57.2957763671875 - 90.0); f2 = (float) Mth.wrapDegrees(Mth.atan2(vec3d2.z, vec3d2.x) * 57.2957763671875 - 90.0);
} }
// playerIn.setLocationAndAngles(vec3d.x, vec3d.y, vec3d.z, f2, 0.0f); // playerIn.setLocationAndAngles(vec3d.x, vec3d.y, vec3d.z, f2, 0.0f);
playerIn.setRespawnPosition(spawnWorld.dimension(), pos, f, flag2, false); playerIn.setRespawnPosition(spawnWorld.dimension(), pos, f2, flag2, false);
flag3 = (!flag2 && flag4); flag3 = (!flag2 && flag4);
isBedSpawn = true; isBedSpawn = true;
location = new Location(((WorldBridge) spawnWorld).bridge$getWorld(), vec3d.x, vec3d.y, vec3d.z); location = new Location(((WorldBridge) spawnWorld).bridge$getWorld(), vec3d.x, vec3d.y, vec3d.z);
@ -449,6 +449,8 @@ public abstract class PlayerListMixin implements PlayerListBridge {
serverplayerentity.connection = playerIn.connection; serverplayerentity.connection = playerIn.connection;
serverplayerentity.restoreFrom(playerIn, conqueredEnd); serverplayerentity.restoreFrom(playerIn, conqueredEnd);
serverplayerentity.setRespawnPosition(playerIn.getRespawnDimension(), playerIn.getRespawnPosition(),
playerIn.getRespawnAngle(), playerIn.isRespawnForced(), false);
if (!conqueredEnd) { // keep inventory here since inventory dropped at ServerPlayerEntity#onDeath if (!conqueredEnd) { // keep inventory here since inventory dropped at ServerPlayerEntity#onDeath
serverplayerentity.getInventory().replaceWith(playerIn.getInventory()); serverplayerentity.getInventory().replaceWith(playerIn.getInventory());
} }