mirror of https://github.com/Minestom/Minestom.git
fix: death location type to WorldPos (same type as metadata), fix missing world pos serialization (was npe)
This commit is contained in:
parent
b5c35e0144
commit
54212ebc97
|
@ -64,7 +64,7 @@ import net.minestom.server.network.packet.server.ServerPacket;
|
|||
import net.minestom.server.network.packet.server.common.*;
|
||||
import net.minestom.server.network.packet.server.login.LoginDisconnectPacket;
|
||||
import net.minestom.server.network.packet.server.play.*;
|
||||
import net.minestom.server.network.packet.server.play.data.DeathLocation;
|
||||
import net.minestom.server.network.packet.server.play.data.WorldPos;
|
||||
import net.minestom.server.network.player.GameProfile;
|
||||
import net.minestom.server.network.player.PlayerConnection;
|
||||
import net.minestom.server.network.player.PlayerSocketConnection;
|
||||
|
@ -88,7 +88,6 @@ import net.minestom.server.utils.function.IntegerBiConsumer;
|
|||
import net.minestom.server.utils.identity.NamedAndIdentified;
|
||||
import net.minestom.server.utils.instance.InstanceUtils;
|
||||
import net.minestom.server.utils.inventory.PlayerInventoryUtils;
|
||||
import net.minestom.server.utils.player.PlayerUtils;
|
||||
import net.minestom.server.utils.time.Cooldown;
|
||||
import net.minestom.server.utils.time.TimeUnit;
|
||||
import net.minestom.server.utils.validate.Check;
|
||||
|
@ -145,7 +144,7 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||
private Instance pendingInstance = null;
|
||||
private DimensionType dimensionType;
|
||||
private GameMode gameMode;
|
||||
private DeathLocation deathLocation;
|
||||
private WorldPos deathLocation;
|
||||
|
||||
/**
|
||||
* Keeps track of what chunks are sent to the client, this defines the center of the loaded area
|
||||
|
@ -1218,10 +1217,10 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||
}
|
||||
|
||||
public void setDeathLocation(@NotNull DimensionType type, @NotNull Pos position) {
|
||||
this.deathLocation = new DeathLocation(type.getName().asString(), position);
|
||||
this.deathLocation = new WorldPos(type.getName().asString(), position);
|
||||
}
|
||||
|
||||
public @Nullable DeathLocation getDeathLocation() {
|
||||
public @Nullable WorldPos getDeathLocation() {
|
||||
return this.deathLocation;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import net.minestom.server.entity.metadata.animal.SnifferMeta;
|
|||
import net.minestom.server.entity.metadata.animal.tameable.CatMeta;
|
||||
import net.minestom.server.entity.metadata.other.PaintingMeta;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.network.packet.server.play.data.DeathLocation;
|
||||
import net.minestom.server.network.packet.server.play.data.WorldPos;
|
||||
import net.minestom.server.particle.Particle;
|
||||
import net.minestom.server.utils.Direction;
|
||||
import net.minestom.server.utils.validate.Check;
|
||||
|
@ -55,7 +55,7 @@ public final class NetworkBuffer {
|
|||
// METADATA
|
||||
public static final Type<Integer> BLOCK_STATE = new NetworkBufferTypeImpl.BlockStateType();
|
||||
public static final Type<int[]> VILLAGER_DATA = new NetworkBufferTypeImpl.VillagerDataType();
|
||||
public static final Type<DeathLocation> DEATH_LOCATION = new NetworkBufferTypeImpl.DeathLocationType();
|
||||
public static final Type<WorldPos> DEATH_LOCATION = new NetworkBufferTypeImpl.DeathLocationType();
|
||||
public static final Type<Point> VECTOR3 = new NetworkBufferTypeImpl.Vector3Type();
|
||||
public static final Type<Point> VECTOR3D = new NetworkBufferTypeImpl.Vector3DType();
|
||||
public static final Type<float[]> QUATERNION = new NetworkBufferTypeImpl.QuaternionType();
|
||||
|
|
|
@ -7,7 +7,7 @@ import net.minestom.server.coordinate.Point;
|
|||
import net.minestom.server.coordinate.Vec;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
import net.minestom.server.network.packet.server.play.data.DeathLocation;
|
||||
import net.minestom.server.network.packet.server.play.data.WorldPos;
|
||||
import net.minestom.server.particle.Particle;
|
||||
import net.minestom.server.particle.data.ParticleData;
|
||||
import net.minestom.server.utils.validate.Check;
|
||||
|
@ -532,22 +532,15 @@ interface NetworkBufferTypeImpl<T> extends NetworkBuffer.Type<T> {
|
|||
}
|
||||
}
|
||||
|
||||
record DeathLocationType() implements NetworkBufferTypeImpl<DeathLocation> {
|
||||
record DeathLocationType() implements NetworkBufferTypeImpl<WorldPos> {
|
||||
@Override
|
||||
public void write(@NotNull NetworkBuffer buffer, DeathLocation value) {
|
||||
buffer.writeOptional(writer -> {
|
||||
writer.write(STRING, value.dimension());
|
||||
writer.write(BLOCK_POSITION, value.position());
|
||||
});
|
||||
public void write(@NotNull NetworkBuffer buffer, WorldPos value) {
|
||||
buffer.writeOptional(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeathLocation read(@NotNull NetworkBuffer buffer) {
|
||||
return buffer.readOptional(networkBuffer -> {
|
||||
final String dimension = networkBuffer.read(STRING);
|
||||
final Point position = networkBuffer.read(BLOCK_POSITION);
|
||||
return new DeathLocation(dimension, position);
|
||||
});
|
||||
public WorldPos read(@NotNull NetworkBuffer buffer) {
|
||||
return buffer.readOptional(WorldPos::new);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import net.minestom.server.entity.GameMode;
|
|||
import net.minestom.server.network.NetworkBuffer;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.network.packet.server.play.data.DeathLocation;
|
||||
import net.minestom.server.network.packet.server.play.data.WorldPos;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
@ -17,7 +17,7 @@ public record JoinGamePacket(
|
|||
int viewDistance, int simulationDistance, boolean reducedDebugInfo, boolean enableRespawnScreen,
|
||||
boolean doLimitedCrafting,
|
||||
String dimensionType, String world, long hashedSeed, GameMode gameMode, GameMode previousGameMode,
|
||||
boolean isDebug, boolean isFlat, DeathLocation deathLocation, int portalCooldown
|
||||
boolean isDebug, boolean isFlat, WorldPos deathLocation, int portalCooldown
|
||||
) implements ServerPacket.Play {
|
||||
public static final int MAX_WORLDS = Short.MAX_VALUE;
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import net.minestom.server.entity.GameMode;
|
|||
import net.minestom.server.network.NetworkBuffer;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
import net.minestom.server.network.packet.server.play.data.DeathLocation;
|
||||
import net.minestom.server.network.packet.server.play.data.WorldPos;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static net.minestom.server.network.NetworkBuffer.*;
|
||||
|
@ -12,7 +12,7 @@ import static net.minestom.server.network.NetworkBuffer.*;
|
|||
public record RespawnPacket(
|
||||
String dimensionType, String worldName,
|
||||
long hashedSeed, GameMode gameMode, GameMode previousGameMode,
|
||||
boolean isDebug, boolean isFlat, DeathLocation deathLocation,
|
||||
boolean isDebug, boolean isFlat, WorldPos deathLocation,
|
||||
int portalCooldown, int copyData
|
||||
) implements ServerPacket.Play {
|
||||
public static final int COPY_NONE = 0x0;
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
package net.minestom.server.network.packet.server.play.data;
|
||||
|
||||
import net.minestom.server.coordinate.Point;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public record DeathLocation(@NotNull String dimension, @NotNull Point position) {
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package net.minestom.server.network.packet.server.play.data;
|
||||
|
||||
import net.minestom.server.coordinate.Point;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static net.minestom.server.network.NetworkBuffer.BLOCK_POSITION;
|
||||
import static net.minestom.server.network.NetworkBuffer.STRING;
|
||||
|
||||
public record WorldPos(@NotNull String dimension, @NotNull Point position) implements NetworkBuffer.Writer {
|
||||
|
||||
public WorldPos(@NotNull NetworkBuffer reader) {
|
||||
this(reader.read(STRING), reader.read(BLOCK_POSITION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull NetworkBuffer writer) {
|
||||
writer.write(STRING, dimension);
|
||||
writer.write(BLOCK_POSITION, position);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue