3
0
Mirror von https://github.com/ViaVersion/ViaBackwards.git synchronisiert 2024-12-24 15:20:19 +01:00
Dieser Commit ist enthalten in:
Nassim Jahnke 2022-07-08 21:07:57 +02:00
Ursprung 81a737886a
Commit 90460ee99f
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 6BE3B555EBC5982B
3 geänderte Dateien mit 31 neuen und 14 gelöschten Zeilen

Datei anzeigen

@ -5,7 +5,7 @@ plugins {
allprojects { allprojects {
group = "com.viaversion" group = "com.viaversion"
version = "4.4.0-1.19.1-pre3-SNAPSHOT" version = "4.4.0-1.19.1-pre4-SNAPSHOT"
description = "Allow older clients to join newer server versions." description = "Allow older clients to join newer server versions."
} }

Datei anzeigen

@ -198,28 +198,44 @@ public final class Protocol1_18_2To1_19_1 extends BackwardsProtocol<ClientboundP
@Override @Override
public void registerMap() { public void registerMap() {
handler(wrapper -> { handler(wrapper -> {
if (wrapper.read(Type.BOOLEAN)) {
// Previous signature
wrapper.read(Type.BYTE_ARRAY_PRIMITIVE);
}
final UUID sender = wrapper.read(Type.UUID);
wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Header signature
// Send the unsigned message if present, otherwise the signed message // Send the unsigned message if present, otherwise the signed message
final JsonElement message = wrapper.read(Type.COMPONENT); final JsonElement message = wrapper.read(Type.COMPONENT);
wrapper.read(Type.LONG); // Timestamp
wrapper.read(Type.LONG); // Salt
final int lastSeenPlayers = wrapper.read(Type.VAR_INT);
for (int i = 0; i < lastSeenPlayers; i++) {
wrapper.read(Type.UUID); // Profile uuid
wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Last signature
}
final JsonElement unsignedMessage = wrapper.read(Type.OPTIONAL_COMPONENT); final JsonElement unsignedMessage = wrapper.read(Type.OPTIONAL_COMPONENT);
wrapper.write(Type.COMPONENT, unsignedMessage != null ? unsignedMessage : message); final JsonElement chatMessage = unsignedMessage != null ? unsignedMessage : message;
}); wrapper.write(Type.COMPONENT, chatMessage);
handler(wrapper -> {
final int chatTypeId = wrapper.read(Type.VAR_INT); final int chatTypeId = wrapper.read(Type.VAR_INT);
wrapper.write(Type.BYTE, (byte) 1); wrapper.write(Type.BYTE, (byte) 1);
wrapper.passthrough(Type.UUID); wrapper.write(Type.UUID, sender);
final JsonElement senderName = wrapper.read(Type.COMPONENT); final JsonElement senderName = wrapper.read(Type.COMPONENT);
final JsonElement targetName = wrapper.read(Type.OPTIONAL_COMPONENT); final JsonElement targetName = wrapper.read(Type.OPTIONAL_COMPONENT);
final JsonElement element = wrapper.get(Type.COMPONENT, 0); final JsonElement decoratedMessage = decorateChatMessage(wrapper, chatTypeId, senderName, targetName, chatMessage);
final JsonElement decoratedMessage = decorateChatMessage(wrapper, chatTypeId, senderName, targetName, element);
if (decoratedMessage == null) { if (decoratedMessage == null) {
wrapper.cancel(); wrapper.cancel();
} else { } else {
wrapper.set(Type.COMPONENT, 0, decoratedMessage); wrapper.set(Type.COMPONENT, 0, decoratedMessage);
} }
}); });
read(Type.LONG); // Timestamp
read(Type.LONG); // Salt
read(Type.BYTE_ARRAY_PRIMITIVE); // Signature
} }
}); });
@ -293,8 +309,9 @@ public final class Protocol1_18_2To1_19_1 extends BackwardsProtocol<ClientboundP
} }
}); });
// Can't do anything with them unless we add clutter clients with fake player profiles cancelClientbound(ClientboundPackets1_19_1.CUSTOM_CHAT_COMPLETIONS); // Can't do anything with them unless we add clutter clients with fake player profiles
cancelClientbound(ClientboundPackets1_19_1.CUSTOM_CHAT_COMPLETIONS); cancelClientbound(ClientboundPackets1_19_1.DELETE_CHAT_MESSAGE); // Can't do without the old "send 50 empty lines and then resend previous messages" trick
cancelClientbound(ClientboundPackets1_19_1.PLAYER_CHAT_HEADER);
} }
@Override @Override
@ -327,7 +344,7 @@ public final class Protocol1_18_2To1_19_1 extends BackwardsProtocol<ClientboundP
return TextReplacementConfig.builder().matchLiteral("%s").replacement(GsonComponentSerializer.gson().deserializeFromTree(replacement)).once().build(); return TextReplacementConfig.builder().matchLiteral("%s").replacement(GsonComponentSerializer.gson().deserializeFromTree(replacement)).once().build();
} }
private JsonElement decorateChatMessage(final PacketWrapper wrapper, final int chatTypeId, final JsonElement senderName, final JsonElement targetName, final JsonElement message) throws Exception { private JsonElement decorateChatMessage(final PacketWrapper wrapper, final int chatTypeId, final JsonElement senderName, final JsonElement targetName, final JsonElement message) {
translatableRewriter.processText(message); translatableRewriter.processText(message);
CompoundTag chatType = wrapper.user().get(DimensionRegistryStorage.class).chatType(chatTypeId); CompoundTag chatType = wrapper.user().get(DimensionRegistryStorage.class).chatType(chatTypeId);

Datei anzeigen

@ -3,7 +3,7 @@ metadata.format.version = "1.1"
[versions] [versions]
# ViaVersion # ViaVersion
viaver = "4.4.0-1.19.1-pre3-SNAPSHOT" viaver = "4.4.0-1.19.1-pre4-SNAPSHOT"
# Common provided # Common provided
netty = "4.0.20.Final" netty = "4.0.20.Final"