aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/PlayerConnection.cpp
diff options
context:
space:
mode:
authorKevin <115616336+lag@users.noreply.github.com>2026-03-06 09:52:28 -0600
committerGitHub <noreply@github.com>2026-03-06 09:52:28 -0600
commitea65542c1b63d7ee37025837bf205e55ace0c863 (patch)
tree0ba5abdfdbf055d11bd85a460b98b51f2c9c9904 /Minecraft.Client/PlayerConnection.cpp
parent1755cd58bebf19053c6b4bbf9915b07237e1c14e (diff)
Add Chat / Pastes / Formatting (#682)
* Initial fixes for ContainerSetSlotPacket and CraftItemPacket * Chat: paste, history, ยง formatting, 1-9 block when open (Windows64) Made-with: Cursor * static_cast refactor
Diffstat (limited to 'Minecraft.Client/PlayerConnection.cpp')
-rw-r--r--Minecraft.Client/PlayerConnection.cpp32
1 files changed, 11 insertions, 21 deletions
diff --git a/Minecraft.Client/PlayerConnection.cpp b/Minecraft.Client/PlayerConnection.cpp
index ab8ae20b..9404a5d6 100644
--- a/Minecraft.Client/PlayerConnection.cpp
+++ b/Minecraft.Client/PlayerConnection.cpp
@@ -21,6 +21,8 @@
#include "..\Minecraft.World\AABB.h"
#include "..\Minecraft.World\Pos.h"
#include "..\Minecraft.World\SharedConstants.h"
+#include "..\Minecraft.World\ChatPacket.h"
+#include "..\Minecraft.World\StringHelpers.h"
#include "..\Minecraft.World\Socket.h"
#include "..\Minecraft.World\Achievements.h"
#include "..\Minecraft.World\net.minecraft.h"
@@ -607,38 +609,26 @@ void PlayerConnection::handleSetCarriedItem(shared_ptr<SetCarriedItemPacket> pac
void PlayerConnection::handleChat(shared_ptr<ChatPacket> packet)
{
- // 4J - TODO
-#if 0
- wstring message = packet->message;
+ if (packet->m_stringArgs.empty()) return;
+ wstring message = trimString(packet->m_stringArgs[0]);
if (message.length() > SharedConstants::maxChatLength)
{
- disconnect(L"Chat message too long");
+ disconnect(DisconnectPacket::eDisconnect_None); // or a specific reason
return;
}
- message = message.trim();
- for (int i = 0; i < message.length(); i++)
- {
- if (SharedConstants.acceptableLetters.indexOf(message.charAt(i)) < 0 && (int) message.charAt(i) < 32)
- {
- disconnect(L"Illegal characters in chat");
- return;
- }
- }
-
- if (message.startsWith("/"))
+ // Optional: validate characters (acceptableLetters)
+ if (message.length() > 0 && message[0] == L'/')
{
handleCommand(message);
- } else {
- message = "<" + player.name + "> " + message;
- logger.info(message);
- server.players.broadcastAll(new ChatPacket(message));
+ return;
}
+ wstring formatted = L"<" + player->name + L"> " + message;
+ server->getPlayers()->broadcastAll(shared_ptr<ChatPacket>(new ChatPacket(formatted)));
chatSpamTickCount += SharedConstants::TICKS_PER_SECOND;
if (chatSpamTickCount > SharedConstants::TICKS_PER_SECOND * 10)
{
- disconnect("disconnect.spam");
+ disconnect(DisconnectPacket::eDisconnect_None); // spam
}
-#endif
}
void PlayerConnection::handleCommand(const wstring& message)