mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-21 03:01:05 +02:00
Add util methods
This commit is contained in:
parent
f81b310748
commit
0a68dacccc
@ -1,12 +1,19 @@
|
||||
package net.minestom.server.network.packet.client.play;
|
||||
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.arguments.minecraft.SignableArgument;
|
||||
import net.minestom.server.crypto.MessageSignature;
|
||||
import net.minestom.server.network.packet.client.ClientPacket;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public record ClientCommandChatPacket(@NotNull String message, long timestamp,
|
||||
long salt, Map<String, byte[]> signatures,
|
||||
@ -20,6 +27,27 @@ public record ClientCommandChatPacket(@NotNull String message, long timestamp,
|
||||
reader.readLong(), readSignature(reader), reader.readBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@link MessageSignature} to use in validation
|
||||
*
|
||||
* @param signer player's uuid who sent this packet
|
||||
* @return null if the client didn't sign the parameter
|
||||
*/
|
||||
@Contract("_, _ -> new")
|
||||
public @Nullable MessageSignature signatureOf(String parameterName, UUID signer) {
|
||||
final byte[] signature = signatures.get(parameterName);
|
||||
return signature == null ? null : new MessageSignature(signer, Instant.ofEpochMilli(timestamp), salt, signature);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #signatureOf(String, UUID)
|
||||
*/
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Contract("_, _ -> new")
|
||||
public <T extends Argument<?> & SignableArgument> @Nullable MessageSignature signatureOf(T argument, UUID signer) {
|
||||
return signatureOf(argument.getId(), signer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writer.writeSizedString(message);
|
||||
|
Loading…
Reference in New Issue
Block a user