WrappedPacketInChat now has the 1.19 features
This commit is contained in:
1 parent
8809088b66
commit
b843499ac6
1 file changed
+73
+73
@@ -20,12 +20,36 @@ package io.github.retrooper.packetevents.packetwrappers.play.in.chat;
|
||||
|
||||
import io.github.retrooper.packetevents.packetwrappers.NMSPacket;
|
||||
import io.github.retrooper.packetevents.packetwrappers.WrappedPacket;
|
||||
import io.github.retrooper.packetevents.utils.SaltSignature;
|
||||
import io.github.retrooper.packetevents.utils.reflection.Reflection;
|
||||
import io.github.retrooper.packetevents.utils.reflection.SubclassUtil;
|
||||
import io.github.retrooper.packetevents.utils.server.ServerVersion;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.time.Instant;
|
||||
import java.util.Optional;
|
||||
|
||||
public final class WrappedPacketInChat extends WrappedPacket {
|
||||
private static Class<?> VANILLA_SALT_SIGNATURE_CLASS;
|
||||
private static Constructor<?> VANILLA_SALT_SIGNATURE_CONSTRUCTOR;
|
||||
public WrappedPacketInChat(NMSPacket packet) {
|
||||
super(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void load() {
|
||||
Class<?> minecraftEncryptionClass = Reflection.getClassByNameWithoutException("net.minecraft.util.MinecraftEncryption");
|
||||
if (minecraftEncryptionClass != null) {
|
||||
VANILLA_SALT_SIGNATURE_CLASS = SubclassUtil.getSubClass(minecraftEncryptionClass, "b");
|
||||
try {
|
||||
VANILLA_SALT_SIGNATURE_CONSTRUCTOR = VANILLA_SALT_SIGNATURE_CLASS.getConstructor(long.class, byte[].class);
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return readString(0);
|
||||
}
|
||||
@@ -33,4 +57,53 @@ public final class WrappedPacketInChat extends WrappedPacket {
|
||||
public void setMessage(String message) {
|
||||
writeString(0, message);
|
||||
}
|
||||
|
||||
public Optional<Instant> getInstant() {
|
||||
return version.isNewerThanOrEquals(ServerVersion.v_1_19) ? Optional.of(readObject(0, Instant.class)) : Optional.empty();
|
||||
}
|
||||
|
||||
public void setInstant(Instant instant) {
|
||||
if (version.isNewerThanOrEquals(ServerVersion.v_1_19)) {
|
||||
writeObject(0, instant);
|
||||
}
|
||||
}
|
||||
|
||||
public Optional<SaltSignature> getSaltSignature() {
|
||||
if (version.isNewerThanOrEquals(ServerVersion.v_1_19)) {
|
||||
Object rawSS = readObject(0, VANILLA_SALT_SIGNATURE_CLASS);
|
||||
WrappedPacket rawSSWrapper = new WrappedPacket(new NMSPacket(rawSS));
|
||||
SaltSignature ss = new SaltSignature(rawSSWrapper.readLong(0), rawSSWrapper.readByteArray(0));
|
||||
return Optional.of(ss);
|
||||
}
|
||||
else {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
public void setSaltSignature(SaltSignature saltSignature) {
|
||||
if (version.isNewerThanOrEquals(ServerVersion.v_1_19)) {
|
||||
Object rawSS = null;
|
||||
try {
|
||||
rawSS = VANILLA_SALT_SIGNATURE_CONSTRUCTOR.newInstance(saltSignature.getSalt(), saltSignature.getSignature());
|
||||
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
write(VANILLA_SALT_SIGNATURE_CLASS, 0, rawSS);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSignedPreview() {
|
||||
if (version.isNewerThanOrEquals(ServerVersion.v_1_19)) {
|
||||
return readBoolean(0);
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void setSignedPreview(boolean signedPreview) {
|
||||
if (version.isNewerThanOrEquals(ServerVersion.v_1_19)) {
|
||||
writeBoolean(0, signedPreview);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user