Skip to content

Commit

Permalink
Fix sending color codes to clients that don't support them.
Browse files Browse the repository at this point in the history
Also remove `disable_escape_sequences` since it's not needed anymore.
  • Loading branch information
red-001 committed Jun 9, 2017
1 parent d74385b commit dbf84a2
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 41 deletions.
44 changes: 13 additions & 31 deletions builtin/common/misc_helpers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -642,44 +642,26 @@ end

local ESCAPE_CHAR = string.char(0x1b)

-- Client-side mods don't have access to settings
if core.settings and core.settings:get_bool("disable_escape_sequences") then

function core.get_color_escape_sequence(color)
return ""
end

function core.get_background_escape_sequence(color)
return ""
end

function core.colorize(color, message)
return message
end

else

function core.get_color_escape_sequence(color)
return ESCAPE_CHAR .. "(c@" .. color .. ")"
end

function core.get_background_escape_sequence(color)
return ESCAPE_CHAR .. "(b@" .. color .. ")"
end
function core.get_color_escape_sequence(color)
return ESCAPE_CHAR .. "(c@" .. color .. ")"
end

function core.colorize(color, message)
local lines = tostring(message):split("\n", true)
local color_code = core.get_color_escape_sequence(color)
function core.get_background_escape_sequence(color)
return ESCAPE_CHAR .. "(b@" .. color .. ")"
end

for i, line in ipairs(lines) do
lines[i] = color_code .. line
end
function core.colorize(color, message)
local lines = tostring(message):split("\n", true)
local color_code = core.get_color_escape_sequence(color)

return table.concat(lines, "\n") .. core.get_color_escape_sequence("#ffffff")
for i, line in ipairs(lines) do
lines[i] = color_code .. line
end

return table.concat(lines, "\n") .. core.get_color_escape_sequence("#ffffff")
end


function core.strip_foreground_colors(str)
return (str:gsub(ESCAPE_CHAR .. "%(c@[^)]+%)", ""))
end
Expand Down
5 changes: 0 additions & 5 deletions builtin/settingtypes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -721,11 +721,6 @@ server_announce (Announce server) bool false
# If you want to announce your ipv6 address, use serverlist_url = v6.servers.minetest.net.
serverlist_url (Serverlist URL) string servers.minetest.net

# Disable escape sequences, e.g. chat coloring.
# Use this if you want to run a server with pre-0.4.14 clients and you want to disable
# the escape sequences generated by mods.
disable_escape_sequences (Disable escape sequences) bool false

[*Network]

# Network port to listen (UDP).
Expand Down
15 changes: 10 additions & 5 deletions src/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1643,15 +1643,20 @@ void Server::SendInventory(PlayerSAO* playerSAO)
void Server::SendChatMessage(u16 peer_id, const std::wstring &message)
{
DSTACK(FUNCTION_NAME);

NetworkPacket pkt(TOCLIENT_CHAT_MESSAGE, 0, peer_id);
pkt << message;

if (peer_id != PEER_ID_INEXISTENT) {
std::wstring processed_message;
if (m_clients.getProtocolVersion(peer_id) < 27)
processed_message = unescape_enriched(message);
else
processed_message = message;

NetworkPacket pkt(TOCLIENT_CHAT_MESSAGE, 0, peer_id);
pkt << processed_message;
Send(&pkt);
}
else {
m_clients.sendToAll(&pkt);
for (u16 id: m_clients.getClientIDs())
SendChatMessage(id, message);
}
}

Expand Down

0 comments on commit dbf84a2

Please sign in to comment.