Skip to content

Commit b21369a

Browse files
committed
ClientChatOverlay
1 parent 61dfa54 commit b21369a

11 files changed

Lines changed: 686 additions & 4 deletions

File tree

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,13 @@ This hack is still undergoing development and has only been tested in the end. A
797797

798798
![ChunkyDunky](https://i.imgur.com/ndNfFUD.png)
799799

800+
### ClientChatOverlay
801+
- Adds a separate chat overlay that captures non-player/client/mod outputs and keeps normal player chat in the bottom vanilla chat
802+
- Optional transparancy, fade-out time, route to game console, Wurst only mode, max lines and X/Y offset
803+
- Can adjust its position by moving it with mouse when in inventory or container
804+
- Auto avoids vanilla chat messages if positioned above it
805+
- Is scrollable when chat is opened
806+
800807
## What's changed or improved in this fork?
801808

802809
### ChestESP

src/main/java/net/wurstclient/clickgui/ClickGui.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,10 @@ public void init()
132132

133133
if(f.getCategory() != null)
134134
{
135-
// GameStats is intentionally shown only in the dedicated
136-
// "UI Settings" window, not in category windows.
137-
if(f == WURST.getHax().gameStatsHack)
135+
// Some HUD/UI hacks are intentionally shown only in the
136+
// dedicated "UI Settings" window, not in category windows.
137+
if(f == WURST.getHax().gameStatsHack
138+
|| f == WURST.getHax().clientChatOverlayHack)
138139
continue;
139140

140141
windowMap.get(f.getCategory()).add(new FeatureButton(f));
@@ -175,6 +176,7 @@ public void init()
175176
uiSettings.add(new FeatureButton(WURST.getOtfs().wurstLogoOtf));
176177
uiSettings.add(new FeatureButton(WURST.getOtfs().hackListOtf));
177178
uiSettings.add(new FeatureButton(WURST.getHax().gameStatsHack));
179+
uiSettings.add(new FeatureButton(WURST.getHax().clientChatOverlayHack));
178180
uiSettings.add(new FeatureButton(WURST.getOtfs().keybindManagerOtf));
179181
uiSettings.add(new FeatureButton(WURST.getOtfs().presetManagerOtf));
180182
uiSettings.add(new FeatureButton(WURST.getOtfs().wurstOptionsOtf));

src/main/java/net/wurstclient/hack/HackList.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ public final class HackList implements UpdateListener
141141
public final HideWurstHack hideWurstHack = new HideWurstHack();
142142
public final DurabilityHudHack durabilityHudHack = new DurabilityHudHack();
143143
public final GameStatsHack gameStatsHack = new GameStatsHack();
144+
public final ClientChatOverlayHack clientChatOverlayHack =
145+
new ClientChatOverlayHack();
144146
public final HighJumpHack highJumpHack = new HighJumpHack();
145147
public final InfiniChatHack infiniChatHack = new InfiniChatHack();
146148
public final InstaBuildHack instaBuildHack = new InstaBuildHack();
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* Copyright (c) 2014-2026 Wurst-Imperium and contributors.
3+
*
4+
* This source code is subject to the terms of the GNU General Public
5+
* License, version 3. If a copy of the GPL was not distributed with this
6+
* file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt
7+
*/
8+
package net.wurstclient.hacks;
9+
10+
import net.wurstclient.Category;
11+
import net.wurstclient.SearchTags;
12+
import net.wurstclient.hack.Hack;
13+
import net.wurstclient.settings.CheckboxSetting;
14+
import net.wurstclient.settings.SliderSetting;
15+
import net.wurstclient.settings.SliderSetting.ValueDisplay;
16+
17+
@SearchTags({"ui settings", "chat overlay", "hud", "client chat"})
18+
public final class ClientChatOverlayHack extends Hack
19+
{
20+
private final SliderSetting transparency =
21+
new SliderSetting("Transparency", 35, 0, 100, 1, ValueDisplay.INTEGER);
22+
private final SliderSetting fadeOutTimeSeconds =
23+
new SliderSetting("Fade-out time", 10, 1, 60, 1, ValueDisplay.INTEGER);
24+
private final CheckboxSetting routeToConsole =
25+
new CheckboxSetting("Route to game console", false);
26+
private final CheckboxSetting onlyWurstMessages =
27+
new CheckboxSetting("Only Wurst messages", false);
28+
private final SliderSetting maxLines =
29+
new SliderSetting("Max lines", 10, 3, 30, 1, ValueDisplay.INTEGER);
30+
private final SliderSetting hudOffsetX = new SliderSetting("HUD X offset",
31+
0, -320, 320, 1, ValueDisplay.INTEGER);
32+
private final SliderSetting hudOffsetY = new SliderSetting("HUD Y offset",
33+
0, -240, 240, 1, ValueDisplay.INTEGER);
34+
35+
public ClientChatOverlayHack()
36+
{
37+
super("ClientChatOverlay");
38+
setCategory(Category.OTHER);
39+
addSetting(transparency);
40+
addSetting(fadeOutTimeSeconds);
41+
addSetting(routeToConsole);
42+
addSetting(onlyWurstMessages);
43+
addSetting(maxLines);
44+
addSetting(hudOffsetX);
45+
addSetting(hudOffsetY);
46+
}
47+
48+
public int getTransparencyPercent()
49+
{
50+
return transparency.getValueI();
51+
}
52+
53+
public long getFadeOutTimeMs()
54+
{
55+
return fadeOutTimeSeconds.getValueI() * 1000L;
56+
}
57+
58+
public boolean isRoutingToConsole()
59+
{
60+
return routeToConsole.isChecked();
61+
}
62+
63+
public boolean isOnlyWurstMessages()
64+
{
65+
return onlyWurstMessages.isChecked();
66+
}
67+
68+
public int getMaxLines()
69+
{
70+
return maxLines.getValueI();
71+
}
72+
73+
public int getHudOffsetX()
74+
{
75+
return hudOffsetX.getValueI();
76+
}
77+
78+
public int getHudOffsetY()
79+
{
80+
return hudOffsetY.getValueI();
81+
}
82+
83+
public void setHudOffsets(int x, int y)
84+
{
85+
hudOffsetX.setValue(x);
86+
hudOffsetY.setValue(y);
87+
}
88+
}

src/main/java/net/wurstclient/hacks/SeedMapperHelperHack.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,12 @@ public void onReceivedMessage(ChatInputEvent event)
570570
@Override
571571
public void onUpdate()
572572
{
573+
if(!isEnabled())
574+
{
575+
connectionPreviouslyNull = MC.getConnection() == null;
576+
return;
577+
}
578+
573579
boolean connected = MC.getConnection() != null;
574580
if(connected && connectionPreviouslyNull)
575581
{

0 commit comments

Comments
 (0)