13
0
geforkt von Mirrors/Velocity

Implement Player#spoofChatInput method

Dieser Commit ist enthalten in:
Luck 2018-09-20 19:42:27 +01:00
Ursprung 8763573ae6
Commit b805891d1f
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: EFA9B3EC5FD90F8B
3 geänderte Dateien mit 23 neuen und 4 gelöschten Zeilen

Datei anzeigen

@ -82,4 +82,11 @@ public interface Player extends CommandSource, InboundConnection, ChannelMessage
* @param reason component with the reason * @param reason component with the reason
*/ */
void disconnect(Component reason); void disconnect(Component reason);
/**
* Sends chat input onto the players current server as if they typed it
* into the client chat box.
* @param input the chat input to send
*/
void spoofChatInput(String input);
} }

Datei anzeigen

@ -247,7 +247,7 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
connection.closeWith(Disconnect.create(friendlyReason)); connection.closeWith(Disconnect.create(friendlyReason));
} }
} else { } else {
connection.write(Chat.create(friendlyReason)); connection.write(Chat.createClientbound(friendlyReason));
} }
} }
@ -350,6 +350,12 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player {
return true; return true;
} }
@Override
public void spoofChatInput(String input) {
Preconditions.checkArgument(input.length() <= Chat.MAX_SERVERBOUND_MESSAGE_LENGTH, "input cannot be greater than " + Chat.MAX_SERVERBOUND_MESSAGE_LENGTH + " characters in length");
connectedServer.getMinecraftConnection().write(Chat.createServerbound(input));
}
private class ConnectionRequestBuilderImpl implements ConnectionRequestBuilder { private class ConnectionRequestBuilderImpl implements ConnectionRequestBuilder {
private final RegisteredServer server; private final RegisteredServer server;

Datei anzeigen

@ -10,6 +10,8 @@ import net.kyori.text.serializer.ComponentSerializers;
public class Chat implements MinecraftPacket { public class Chat implements MinecraftPacket {
public static final byte CHAT = (byte) 0; public static final byte CHAT = (byte) 0;
public static final int MAX_SERVERBOUND_MESSAGE_LENGTH = 256;
private String message; private String message;
private byte type; private byte type;
@ -61,12 +63,16 @@ public class Chat implements MinecraftPacket {
} }
} }
public static Chat create(Component component) { public static Chat createClientbound(Component component) {
return create(component, CHAT); return createClientbound(component, CHAT);
} }
public static Chat create(Component component, byte type) { public static Chat createClientbound(Component component, byte type) {
Preconditions.checkNotNull(component, "component"); Preconditions.checkNotNull(component, "component");
return new Chat(ComponentSerializers.JSON.serialize(component), type); return new Chat(ComponentSerializers.JSON.serialize(component), type);
} }
public static Chat createServerbound(String message) {
return new Chat(message, CHAT);
}
} }