mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-21 03:01:05 +02:00
Distribute public keys
This commit is contained in:
parent
cb5b9d4175
commit
8424679c08
@ -1897,7 +1897,8 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
||||
List.of(new PlayerInfoPacket.AddPlayer.Property("textures", skin.textures(), skin.signature())) :
|
||||
Collections.emptyList();
|
||||
return new PlayerInfoPacket(PlayerInfoPacket.Action.ADD_PLAYER,
|
||||
new PlayerInfoPacket.AddPlayer(getUuid(), getUsername(), prop, getGameMode(), getLatency(), displayName));
|
||||
new PlayerInfoPacket.AddPlayer(getUuid(), getUsername(), prop, getGameMode(), getLatency(), displayName,
|
||||
getPlayerConnection().getPlayerPublicKey()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.minestom.server.adventure.ComponentHolder;
|
||||
import net.minestom.server.crypto.PlayerPublicKey;
|
||||
import net.minestom.server.entity.GameMode;
|
||||
import net.minestom.server.network.packet.server.ComponentHoldingServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
@ -128,7 +129,8 @@ public record PlayerInfoPacket(@NotNull Action action,
|
||||
}
|
||||
|
||||
public record AddPlayer(UUID uuid, String name, List<Property> properties, GameMode gameMode, int ping,
|
||||
Component displayName) implements Entry, ComponentHolder<AddPlayer> {
|
||||
Component displayName, @Nullable PlayerPublicKey playerPublicKey) implements Entry,
|
||||
ComponentHolder<AddPlayer> {
|
||||
public AddPlayer {
|
||||
properties = List.copyOf(properties);
|
||||
}
|
||||
@ -137,7 +139,7 @@ public record PlayerInfoPacket(@NotNull Action action,
|
||||
this(uuid, reader.readSizedString(),
|
||||
reader.readVarIntList(Property::new),
|
||||
GameMode.values()[reader.readVarInt()], reader.readVarInt(),
|
||||
reader.readBoolean() ? reader.readComponent() : null);
|
||||
reader.readBoolean() ? reader.readComponent() : null, reader.readBoolean() ? new PlayerPublicKey(reader) : null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -148,7 +150,7 @@ public record PlayerInfoPacket(@NotNull Action action,
|
||||
writer.writeVarInt(ping);
|
||||
writer.writeBoolean(displayName != null);
|
||||
if (displayName != null) writer.writeComponent(displayName);
|
||||
writer.writeBoolean(false);
|
||||
writer.writeNullable(playerPublicKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -159,7 +161,7 @@ public record PlayerInfoPacket(@NotNull Action action,
|
||||
@Override
|
||||
public @NotNull AddPlayer copyWithOperator(@NotNull UnaryOperator<Component> operator) {
|
||||
return displayName != null ?
|
||||
new AddPlayer(uuid, name, properties, gameMode, ping, operator.apply(displayName)) : this;
|
||||
new AddPlayer(uuid, name, properties, gameMode, ping, operator.apply(displayName), playerPublicKey) : this;
|
||||
}
|
||||
|
||||
public record Property(@NotNull String name, @NotNull String value,
|
||||
|
@ -9,6 +9,7 @@ import net.minestom.server.utils.SerializerUtils;
|
||||
import net.minestom.server.utils.Utils;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jglrxavpok.hephaistos.nbt.CompressedProcesser;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBT;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTWriter;
|
||||
@ -325,6 +326,15 @@ public class BinaryWriter extends OutputStream {
|
||||
}
|
||||
}
|
||||
|
||||
public void writeNullable(@Nullable Writeable writeable) {
|
||||
if (writeable == null) {
|
||||
writeBoolean(false);
|
||||
} else {
|
||||
writeBoolean(true);
|
||||
write(writeable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the given writeable object into this writer.
|
||||
*
|
||||
|
@ -122,7 +122,8 @@ public class PacketWriteReadTest {
|
||||
SERVER_PACKETS.add(new PlayerInfoPacket(PlayerInfoPacket.Action.UPDATE_LATENCY,
|
||||
new PlayerInfoPacket.UpdateLatency(UUID.randomUUID(), 5)));
|
||||
SERVER_PACKETS.add(new PlayerInfoPacket(PlayerInfoPacket.Action.ADD_PLAYER,
|
||||
new PlayerInfoPacket.AddPlayer(UUID.randomUUID(), "TheMode911", List.of(new PlayerInfoPacket.AddPlayer.Property("name", "value")), GameMode.CREATIVE, 5, COMPONENT)));
|
||||
new PlayerInfoPacket.AddPlayer(UUID.randomUUID(), "TheMode911", List.of(new PlayerInfoPacket.AddPlayer.Property("name", "value")), GameMode.CREATIVE, 5, COMPONENT, null)));
|
||||
// TODO Test with public key
|
||||
SERVER_PACKETS.add(new PlayerInfoPacket(PlayerInfoPacket.Action.REMOVE_PLAYER, new PlayerInfoPacket.RemovePlayer(UUID.randomUUID())));
|
||||
|
||||
//SERVER_PACKETS.add(new MultiBlockChangePacket(5,5,5,true, new long[]{0,5,543534,1321}));
|
||||
|
Loading…
Reference in New Issue
Block a user