ChatPlus
Chat history, timestamps, selection and copying, resizing, opacity, message counters and a font/color editor. Cream settings with tabs and previews. Open with F3, /chatplus, chat gear or the grouped side button.
| Date uploaded | 2 weeks ago |
| Version | 1.4.2 |
| Download link | LightShaper-ChatPlus-1.4.2.zip |
| Downloads | 45 |
| Dependency string | LightShaper-ChatPlus-1.4.2 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305README
ChatPlus

Source code on GitHub | Report an issue | Thunderstore
A BepInEx mod for On Together that makes the chat nicer to use: the time of every message, a much longer history that comes back after a lobby change and is saved to a file, and a chat window you can resize.
♥ Enjoying the mod? Leave a like on Thunderstore and a ⭐ on GitHub — it helps the project grow!
Settings menu
F3, /chatplus, the chat-header gear or the speech-bubble side button open/close settings. Tabs: Appearance, Messages, History, Controls. Advanced rows collapse.
Cream panels, warm brown text, coral accents, rounded controls and game fonts. Side buttons form one group, show the mod name and the settings hotkey (where available), and move away from visible UI panels. If both edges are blocked, the buttons wait until space becomes available. Existing hotkeys, commands and configuration keys are preserved. Menus scroll on smaller screens; changes save automatically. Where shown, Apply saves a field draft. Invalid values keep the saved setting.
Features
- Message time in front of every message (and, optionally, of the game's notifications), in the format you like:
14:05,14:05:09,2:05 PM,[14:05]or any .NET time format. Its color and size can be changed. Messages from another day also show the date. - Longer history. The game keeps only 50 lines in the Global tab and 25 in Local; ChatPlus keeps 200 and 100 by default (up to 1000 each).
- History that survives a lobby change. Everything said during the game session is remembered: when you join a lobby (again), the chat shows the earlier messages, marked by an "earlier messages" line. Clicking an earlier message still opens the player's ID card. Players you ignore or muted stay hidden.
- History file. The session's chat is written to
BepInEx/ChatPlus/chat-history.tsv(opens in Excel, LibreOffice or any text editor). On the next game start it is moved tochat-history.previous.tsv, so the history lasts until the game is restarted. Optionally it can be kept across restarts, and readable daily logs (BepInEx/ChatPlus/logs/yyyy-MM-dd.txt) can be written too. - Resizable chat window. Drag the handle at the chat's top-right corner (it shows while the chat is active), or set the width and height in the settings. The frame, the message area and the input field follow; double-click the handle for the game's size. The text size can be changed separately.
- The chat stays where you put it, also after a lobby change or a restart.
- Separate counters while the chat is collapsed: Global (
G, orГin Russian) and Local (L/Л), each independently shown or hidden in the settings. Both are enabled by default and reset when you expand the chat. Each counts received player messages up to 99; your messages, restored history and game notifications do not count. Hiding a counter keeps its count until you expand the chat or leave the lobby. - Mention highlight: messages with your name or your keywords are highlighted.
- Up / Down in the empty input field bring back the messages and commands you sent before.
- Select and copy text: hold Shift, then drag with the left mouse button, within a message or across multiple messages, and press Ctrl+C. Escape or a click elsewhere clears the selection. An ordinary left-button drag or touch swipe scrolls the chat; the mouse wheel also scrolls. The gesture mode is fixed when you press, so changing Shift during a drag does not switch actions. Dragging a selection beyond the viewport scrolls too. An ordinary click still opens the player's card; a swipe does not.
- Right-click within the selection to copy it, or right-click another message to copy its whole text.
- Background opacity: set it from 0% (transparent) to 100% (the original background), separately from the text size. This includes the frame, chat and input backgrounds, Global/Local tab backgrounds, and ChatPlus's settings button, gear icon and resize handle. Message text and selection highlighting retain their opacity.
- Settings in the game's style: a cream/coral F3 window with Appearance, Messages, History and Controls tabs, live previews and collapsible advanced options. Open it with F3,
/chatplusor the gear in the chat header. The header also shows scrolling, selection and copying hints. Settings save automatically; mod-manager config edits apply while the game is running. - Message editor in F3 → Messages: a draft, live preview using the game's text renderer, font selection, solid colors or gradients, bold and italic. Choose colors from presets, type
#RRGGBB, or click the swatch for RGB sliders. Insert into chat copies the draft into the normal chat input; press Enter there to send. - Optional outgoing formatting uses the game's standard text tags, so recipients do not need ChatPlus. Font choices are the normal game font and built-in Liberation Sans; Liberation Sans changes Latin letters, while Russian letters keep the usual fallback font. Gradients use up to eight color bands and fewer bands when needed to fit the game's 250-character limit (including tags). Messages that cannot fit are not sent or truncated, and the draft is kept. Commands and manually tagged messages are left alone.
- Only the sender needs the mod. Other features remain local; outgoing formatting is sent as part of the ordinary message text. English and Russian interface (follows the game's language).
Usage
| Action | How |
|---|---|
| Settings window | F3, /chatplus or the gear in the chat header |
| Resize the chat | drag the handle at its top-right corner; double-click it for the normal size |
| Size from the chat | /chatplus size 150 120 (width and height in %), /chatplus size reset |
| Text size | /chatplus text 120 |
| Background opacity | F3 → Appearance → Background opacity (0–100%) |
| Message editor | F3 → Messages |
| Scroll the chat | left-button drag / swipe, or mouse wheel |
| Select / copy text | hold Shift before left-dragging, then Ctrl+C or right-click within the selection; Escape clears |
| Message time | /chatplus time on, /chatplus time off, /chatplus time format HH:mm:ss |
| Lines kept in the chat | /chatplus lines 300 150 (Global, Local) |
| Clear the chat | /chatplus clear (the history keeps the lines) |
| Forget the history | /chatplus clearhistory |
| Open the history folder | /chatplus folder |
| Size and position back to normal | /chatplus reset |
| Highlight words | /chatplus keyword add mark, markus, keyword remove mark, keyword list, keyword clear |
| Current settings | /chatplus status |
| Command list | /chatplus help |
/chp is a short alias for /chatplus. Commands are handled on your side and are never posted to the chat. If CommandAPI is installed, the command is also listed by its /help and suggested by CommandTypeahead.
Configuration
BepInEx/config/ontogether.chatplus.cfg (created on first launch; editable from the mod manager's Config editor, also while the game is running).
| Section | Key | Default | Description |
|---|---|---|---|
| General | Language |
Auto |
Auto (the game's language), English, Russian. |
| General | SettingsWindow |
F3 |
Opens / closes the settings window. |
| Outgoing | Enabled |
false |
Apply the editor's style to messages you send; visible on unmodified clients. |
| Outgoing | Font |
GameDefault |
GameDefault or LiberationSans. The latter changes Latin letters; Cyrillic uses the normal fallback. |
| Outgoing | ColorMode |
Original |
Original, Solid or Gradient. |
| Outgoing | Color, EndColor |
#F2C46D, #6AA8FF |
Solid/first color and last gradient color, as #RRGGBB. |
| Outgoing | Bold, Italic |
false, false |
Bold and italic tags on outgoing messages. |
| Time | Enabled |
true |
Show the time in front of every message. |
| Time | Format |
HH:mm |
.NET time format: HH:mm, HH:mm:ss, h:mm tt, [HH:mm]... |
| Time | Color |
#F5EDE1A6 |
#RRGGBB or #RRGGBBAA; empty = the text's color. |
| Time | Size |
85 |
Size of the time, in % of the text. |
| Time | OnNotifications |
true |
Also for the game's notifications. |
| History | GlobalLines |
200 |
Lines kept in the Global tab (the game: 50). |
| History | LocalLines |
100 |
Lines kept in the Local tab (the game: 25). |
| History | RestoreAfterLobbyChange |
true |
Show the session's earlier messages after joining a lobby. |
| History | RestoreNotifications |
false |
Bring back the game's notifications too. |
| History | SaveToFile |
true |
Write the session's chat to BepInEx/ChatPlus/chat-history.tsv. |
| History | KeepAfterRestart |
false |
Keep (and show) the previous game session's history after a restart. |
| History | DailyLogs |
false |
Also write readable logs, one file per day, to BepInEx/ChatPlus/logs. |
| Window | Width, Height |
100, 100 |
Chat window size in % of the game's size (70-300, 50-200). |
| Window | TextSize |
100 |
Chat text size in % (60-200). |
| Window | BackgroundOpacity |
100 |
Background and ChatPlus button opacity in % (0-100). Text is unaffected. |
| Window | ResizeHandle |
true |
Show the resize handle on the chat. |
| Window | RememberPosition |
true |
Keep the chat where you dragged it. |
| Window | Position |
(empty) | Saved automatically. |
| Window | CullHiddenLines |
true |
Lines scrolled out of view are not drawn (keeps a long chat fast). Turn it off if chat text shows outside the chat window. |
| Notifications | ShowGlobalCounter |
true |
Show the Global message counter beside the reopen-chat button while the chat is collapsed. Applies immediately. |
| Notifications | ShowLocalCounter |
true |
Show the Local message counter beside the reopen-chat button while the chat is collapsed. Applies immediately. Disable both to hide all collapsed-chat counters. |
| Extras | HighlightMentions |
true |
Highlight messages that mention you. |
| Extras | HighlightColor |
#F2C46D |
Highlight color (made see-through). |
| Extras | Keywords |
(empty) | More words that highlight a message, separated by commas. |
| Extras | RecallSentMessages |
true |
Up / Down in the empty input field bring back sent messages. |
| Extras | RightClickCopies |
true |
A right click copies the selection on that message, or the whole message without a selection. |
| Extras | SelectText |
true |
Shift + left-drag selects text across messages; Ctrl+C copies, Escape clears. Normal dragging and touch swipes always scroll. Disable to turn off selection. |
Files
| File | What it is |
|---|---|
BepInEx/ChatPlus/chat-history.tsv |
This game session's chat: time, channel, type, Steam ID, name, message, the line as shown. Tab-separated, UTF-8. |
BepInEx/ChatPlus/chat-history.previous.tsv |
The previous game session's chat. |
BepInEx/ChatPlus/logs/yyyy-MM-dd.txt |
Readable logs (only with DailyLogs). |
The files are outside BepInEx/config, so they are not included when you export or share a mod manager profile.
Notes
- Very large line limits make the chat slower: every line is a text object in the game's UI. To keep a long chat fast, lines scrolled out of view are not drawn, and the game's rebuild of all chat lines when the chat fades in or out is skipped unless the font outline really changed (it changes only in the desktop overlay modes).
- The size is in % of the game's chat window. The chat is kept on the screen: if a new size would make it stick out, it is moved.
- Works together with ChatSounds, LocalChatRange, CommandAPI / CommandTypeahead and AndrewLin's mods. ChatResizer (jaide) scales the same window; use one of the two.
Installation
Thunderstore Mod Manager / r2modman: install from the mod list, or use Settings -> Import local mod with the package zip.
Manual: install BepInExPack, then copy ChatPlus.dll into BepInEx/plugins/.
Building from source
Requires Windows, .NET SDK 6.0 or newer, an installed copy of On Together, and BepInEx 5 (for example, a Thunderstore Mod Manager / r2modman profile).
From the repository directory, run:
powershell -ExecutionPolicy Bypass -File .\build.ps1 -GameDir "C:\path\to\On-Together" -BepInExCore "C:\path\to\profile\BepInEx\core"
GameDir must contain OnTogether.exe and OnTogether_Data\Managed. BepInExCore must contain BepInEx.dll and 0Harmony.dll. Game and BepInEx assemblies are referenced locally and are not distributed in this repository.
The build creates the plugin DLL in src/bin/Release/ and the installable Thunderstore archive in dist/. Ready-to-install archives are also available in GitHub Releases.
Run the existing tests with .NET SDK 9.0 or newer: dotnet run --project tests/ChatPlus.Tests.csproj.
Русский
♥ Нравится мод? Поставьте лайк на Thunderstore и ⭐ звезду на GitHub — это помогает проекту расти!
Настройки открываются через F3, /chatplus, шестерёнку чата или боковую кнопку с облаком сообщения. Вкладки: Вид, Сообщения, История, Управление. Дополнительные параметры сворачиваются.
Кремовые панели, коричневый текст, коралловые акценты и скруглённые элементы. Боковые кнопки собраны в одну группу; при наведении видны название мода и клавиша настроек, если она есть. Группа избегает видимых игровых панелей; когда места нет, кнопки скрываются до освобождения края. Настройки и прежние клавиши сохранены. Низкие окна прокручиваются, изменения сохраняются автоматически; кнопка «Применить», где она есть, сохраняет введённое значение.
Side settings buttons are opaque squares with rounded corners, a dark brown outline and proportionate icons, sized to match the game's right-hand controls. They hide with the native controls in Desktop mode, including tooltips and pointer hit areas.
Боковые кнопки настроек стали непрозрачными и квадратными: скруглённые углы, коричневая обводка и значки без растягивания. Размер соответствует высоте игровых кнопок справа. В Desktop-режиме они скрываются вместе с игровыми; подсказки и области нажатия также отключаются.
CHANGELOG
Changelog
1.5.1
- Aligned mod side buttons with the game's right-hand controls: matching height, left edge and row spacing, with the right cap extending beyond the screen.
- Reused the game's fill and outline sprites, idle/hover colors and border thickness. Mod icons remain proportionate and use the native icon offset.
- The button group stays on the right, avoids open panels and hides when there is no safe space. Desktop mode and native UI hiding also hide tooltips and disable pointer input.
1.5.0
- Added a Nickname tab with independent font, solid color/gradient, bold and italic settings, RGB/HEX controls, live preview and reset. Nickname styling is off by default.
- Nickname styling is sent in the game's separate name field on new Global and Local chat messages, so recipients do not need ChatPlus. The saved name and the message's 250-character budget are preserved.
- Added an optional Nameplates and Tab setting (on by default when nickname styling is enabled). Styles synchronize through the game's own profile updates after controls settle, including for recipients without mods and newly joining players. The shared profile name also appears on ID cards. Turning the option off restores the original world name.
- Reused the message formatter's Unicode-aware gradient bands and balanced tags. Names that cannot fit the style keep their original formatting without truncation.
1.4.2
- Cream panels, warm brown text, coral accents, rounded controls and game fonts.
- Grouped square side buttons with brown outlines, proportionate icons and name/hotkey hints. Buttons avoid open panels and hide with game controls in Desktop mode.
- Responsive settings menus, tabs and collapsible advanced options. Existing configuration keys, commands and English/Russian support are preserved.
- Input guards keep menu editing and scrolling from moving the player or camera.
- Updated menu instructions and direct support links for this mod on Thunderstore and GitHub.
- Preview rendering remains deferred outside OnGUI, with a shared reentry guard and the URP depth buffer. Chat controls continue to follow chat opacity.
1.4.1
- Applied the chat opacity setting to ChatPlus's settings button, gear icon and resize handle. Their opacity now follows the same slider and native chat fade; message text and selection highlighting are unchanged.
1.4.0
- Redesigned F3 in the game's cream/coral style with Appearance, Messages, History and Controls tabs, live previews, and collapsible advanced controls. Settings still save automatically.
- Added a settings gear and gesture hints inside the chat header. The input and move handle keep their native positions.
- Fixed 0% opacity for native chat backgrounds and Global/Local tab fills and borders while preserving text, stencil masks and the settings gear.
- Fixed Shift + drag selection for Input System mouse devices and native font-material refreshes, including selection started from a focused input. Ordinary dragging still scrolls.
- Kept preview text inside its IMGUI box and deferred preview rendering to LateUpdate with a reentry guard, fixing UniversalCameraData errors. Preview output now has the depth buffer required by URP Render Graph.
1.3.1
- Restored native chat scrolling by holding the left mouse button and dragging, including when starting on message text. Touch swipes also scroll.
- Text selection now uses Shift + left-drag: hold Shift before pressing the mouse button. The mode stays fixed throughout the gesture, even if Shift is released or pressed while dragging.
- Forwarded the complete scroll drag lifecycle, including initialization to stop previous inertia. Dragging no longer opens a player's card on release; an ordinary click still does.
- Updated English/Russian settings hints and usage instructions.
1.3.0
- Select parts of chat text by dragging with the left mouse button, including across messages and wrapped lines. Ctrl+C copies the selection; Escape or an outside click clears it. The mouse wheel scrolls, and dragging beyond the viewport scrolls the selection.
- Right-click within the selection copies it; otherwise right-click still copies the whole message. A normal left click still opens the player's card.
- Added a background opacity slider (0–100%) beside the existing text size slider (60–200%) in F3. Background opacity leaves text and controls unchanged and respects the game's fade.
- Selection is enabled by default and can be disabled in F3 or with Extras.SelectText. Window.BackgroundOpacity defaults to 100%; settings are saved and apply during play.
1.2.0
- Added a message editor to the top of the F3 settings window, with a draft, live TextMeshPro preview and an Insert into chat button.
- Added optional outgoing solid colors and gradients, HEX entry, color presets and RGB sliders, and bold/italic text.
- Added font choices for the normal game font and built-in Liberation Sans. Recipients do not need the mod; Liberation Sans changes Latin letters, while Cyrillic uses the usual fallback font.
- Outgoing formatting uses standard font/color tags. Gradients use up to eight color bands and reduce the number to fit the 250-character message limit, preserving Unicode text elements. Oversized styled messages are rejected with a local explanation and keep the draft.
- Commands, explicitly tagged messages, and the raw drafts used by Up/Down recall keep their original text. Formatting is off by default; all options are saved in the Outgoing config section.
1.1.1
- Updated the package icon and README with the rounded LightShaper logo and black, white and purple visual style.
- Plugin behavior is unchanged.
1.1.0
- Split collapsed-chat notifications into separate Global and Local message counters (up to 99 each), reset when the chat is expanded.
- Added independent visibility settings for both counters in the F3 window (English/Russian) and the Notifications config section. Changes apply while the game is running.
- Only received player messages count; own messages, restored history and game notifications are excluded.
1.0.1
- Added the public GitHub repository link to the package website and README.
- Published source code and packaged downloads on GitHub. Mod behavior is unchanged.
1.0.0
- Initial release.
- Time in front of every chat message (format, color and size can be changed; optional for notifications; the date for messages from another day).
- Longer chat history: 200 lines in Global and 100 in Local by default (the game keeps 50 and 25), up to 1000 each.
- The game session's chat comes back after a lobby change, and is saved to
BepInEx/ChatPlus/chat-history.tsv; optionally kept across game restarts, optional readable daily logs. - Resizable chat window: a handle at the top-right corner of the chat, width and height settings, a 9-sliced frame; text size setting; the chat remembers where it was dragged.
- A long chat stays fast: lines scrolled out of view are not drawn, lines are re-wrapped once a resize settles, and the game's rebuild of all lines when the chat fades in or out is skipped when nothing changed.
- Highlight of messages that mention you, Up / Down recall of sent messages, right-click copy of a message.
- In-game settings window (F3 or
/chatplus),/chatplus(/chp) commands, config edits in the mod manager apply while the game is running. - English and Russian interface.
- Optional integration with CommandAPI (
/helplisting, CommandTypeahead suggestions).