Skip to content

Commit 2fa6c3d

Browse files
committed
Updated ItemESP, GlobalToggle
1 parent ea4c1f5 commit 2fa6c3d

File tree

3 files changed

+55
-19
lines changed

3 files changed

+55
-19
lines changed

README.md

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -152,19 +152,19 @@ Build without the flag to get the full CevAPI experience; build with the flag fo
152152
- Right-clicking item frames (with items in them) or signs interacts with the block behind them. Hold sneak to interact with the frame or sign normally.
153153
- Toggle between signs, frames or both
154154

155-
### Location on Disconnect
156-
- Copyable XYZ co-ordinates on disconnect/kick (Works with AutoLeave)
157-
158-
![Disc](https://i.imgur.com/b327XLx.png)
159-
160-
### Antisocial
161-
- Hooks into the PlayerESP enter/leave detector (even if ESP itself is off) and logs out the instant someone walks into range.
162-
- Reuses AutoLeave's Quit/Chars/SelfHurt modes so you can pick the safest disconnect for your server.
163-
- Perfect for hiding or protecting yourself while AFK farming—optionally toggles AutoReconnect off so you stay gone.
164-
165-
### Anti-Fingerprint
166-
- Detects and stops resource-pack fingerprinting.
167-
- Basic protections are already enabled by default.
155+
### Location on Disconnect
156+
- Copyable XYZ co-ordinates on disconnect/kick (Works with AutoLeave)
157+
158+
![Disc](https://i.imgur.com/b327XLx.png)
159+
160+
### Antisocial
161+
- Hooks into the PlayerESP enter/leave detector (even if ESP itself is off) and logs out the instant someone walks into range.
162+
- Reuses AutoLeave's Quit/Chars/SelfHurt modes so you can pick the safest disconnect for your server.
163+
- Perfect for hiding or protecting yourself while AFK farming—optionally toggles AutoReconnect off so you stay gone.
164+
165+
### Anti-Fingerprint
166+
- Detects and stops resource-pack fingerprinting.
167+
- Basic protections are already enabled by default.
168168
- Policies: Observe (vanilla prompt + log), BlockLocal (decline private/LAN), BlockAll (decline all), SandboxAll (server sees fail; client saves copy).
169169
- Detects burst requests (N in M ms) with toasts; supports host whitelist.
170170
- Cache defenses: clear before download and per-session cache isolation.
@@ -230,6 +230,7 @@ Highlights dropped, equipped, and framed items with powerful filters and customi
230230
- Rendering: boxes with fill + outline; tracers use special color (or base color).
231231
- Robust parsing: lists accept unknown entries as keywords (safe parsing via `Identifier.tryParse`).
232232
- Ignore list: using keywords or specific item names you can exclude items from being highlighted entirely.
233+
- Entity ignore: Can ignore other players, armor stands etc
233234

234235
Examples:
235236
- Highlight skulls → Item ID: `minecraft:player_head`, special color: magenta, outline-only ON.

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public final class GlobalToggleHack extends Hack implements UpdateListener
4545
private OverrideState lastStickyState = OverrideState.NONE;
4646
private OverrideState lastYState = OverrideState.NONE;
4747
private int lastYLimitValue = 62;
48+
private boolean stickyAnnouncementsReady;
49+
private boolean yLimitAnnouncementsReady;
4850

4951
public GlobalToggleHack()
5052
{
@@ -80,6 +82,7 @@ public void onUpdate()
8082
stickyForceOff.setChecked(false);
8183
else
8284
stickyForceOn.setChecked(false);
85+
stickyAnnouncementsReady = true;
8386
return;
8487
}
8588

@@ -101,10 +104,12 @@ public void onUpdate()
101104
CheckboxOverrideManager.capture(hacks, "stickyArea");
102105
CheckboxOverrideManager.apply(hacks, "stickyArea",
103106
stickyState == OverrideState.FORCE_ON);
104-
announceSticky(stickyState == OverrideState.FORCE_ON);
107+
if(stickyAnnouncementsReady)
108+
announceSticky(stickyState == OverrideState.FORCE_ON);
105109
}
106110

107111
lastStickyState = stickyState;
112+
stickyAnnouncementsReady = true;
108113
}
109114

110115
// Y limit override -------------------------------------------------
@@ -114,6 +119,7 @@ public void onUpdate()
114119
yLimitForceOff.setChecked(false);
115120
else
116121
yLimitForceOn.setChecked(false);
122+
yLimitAnnouncementsReady = true;
117123
return;
118124
}
119125

@@ -143,10 +149,12 @@ public void onUpdate()
143149
yState == OverrideState.FORCE_ON);
144150
if(yState == OverrideState.FORCE_ON)
145151
AboveGroundFilterManager.setY(hacks, yValue);
146-
announceYLimit(yState == OverrideState.FORCE_ON);
152+
if(yLimitAnnouncementsReady)
153+
announceYLimit(yState == OverrideState.FORCE_ON);
147154
}
148155

149156
lastYState = yState;
157+
yLimitAnnouncementsReady = true;
150158
}
151159

152160
if(yState == OverrideState.FORCE_ON && yValue != lastYLimitValue)
@@ -157,6 +165,11 @@ public void onUpdate()
157165
{
158166
lastYLimitValue = yValue;
159167
}
168+
169+
if(!stickyAnnouncementsReady)
170+
stickyAnnouncementsReady = true;
171+
if(!yLimitAnnouncementsReady)
172+
yLimitAnnouncementsReady = true;
160173
}
161174

162175
private void announceSticky(boolean forcingOn)

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
import net.minecraft.entity.Entity;
1717
import net.minecraft.entity.ItemEntity;
1818
import net.minecraft.entity.LivingEntity;
19-
import net.minecraft.entity.player.PlayerEntity;
19+
import net.minecraft.entity.decoration.ArmorStandEntity;
2020
import net.minecraft.entity.decoration.ItemFrameEntity;
21+
import net.minecraft.entity.passive.VillagerEntity;
22+
import net.minecraft.entity.player.PlayerEntity;
2123
import net.minecraft.item.Item;
2224
import net.minecraft.item.ItemStack;
2325
import net.minecraft.registry.Registries;
@@ -111,6 +113,15 @@ private enum SpecialMode
111113
"Highlight equipped special",
112114
"Also highlight when a special item is held or worn on the head by a player/mob.",
113115
true);
116+
private final CheckboxSetting ignoreArmorStands =
117+
new CheckboxSetting("Ignore armor stands",
118+
"Won't highlight equipped special items on armor stands.", false);
119+
private final CheckboxSetting ignoreOtherPlayers =
120+
new CheckboxSetting("Ignore other players",
121+
"Won't highlight equipped special items on other players.", false);
122+
private final CheckboxSetting ignoreVillagers =
123+
new CheckboxSetting("Ignore villagers",
124+
"Won't highlight equipped special items on villagers.", false);
114125

115126
// New: include item frames holding special items
116127
private final CheckboxSetting includeItemFrames =
@@ -159,6 +170,9 @@ public ItemEspHack()
159170
addSetting(ignoredList);
160171
addSetting(linesOnlyForSpecial);
161172
addSetting(includeEquippedSpecial);
173+
addSetting(ignoreArmorStands);
174+
addSetting(ignoreOtherPlayers);
175+
addSetting(ignoreVillagers);
162176
addSetting(includeItemFrames);
163177
// above-ground filter
164178
addSetting(onlyAboveGround);
@@ -331,11 +345,19 @@ public void onRender(MatrixStack matrixStack, float partialTicks)
331345
{
332346
for(Entity ent : MC.world.getEntities())
333347
{
334-
if(!(ent instanceof LivingEntity))
348+
if(!(ent instanceof LivingEntity le))
349+
continue;
350+
if(ignoreArmorStands.isChecked()
351+
&& le instanceof ArmorStandEntity)
352+
continue;
353+
boolean isPlayer = le instanceof PlayerEntity;
354+
if(ignoreVillagers.isChecked() && le instanceof VillagerEntity)
355+
continue;
356+
if(ignoreOtherPlayers.isChecked() && isPlayer
357+
&& le != MC.player)
335358
continue;
336-
LivingEntity le = (LivingEntity)ent;
337359
if(le == MC.player)
338-
continue; // skip local player
360+
continue;
339361
// hands
340362
ItemStack main = le.getMainHandStack();
341363
if(main != null && !main.isEmpty() && !isIgnored(main)

0 commit comments

Comments
 (0)