Skip to content

Commit dcadea7

Browse files
committed
ItemESP improvements, keyword use for non-standard items allowed in lists
1 parent 4b14b2e commit dcadea7

16 files changed

+911
-248
lines changed

README.md

Lines changed: 90 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -2,171 +2,142 @@
22

33
![Wurst Client logo](https://img.wimods.net/github.com/Wurst-Imperium/Wurst7?to=https://wurst.wiki/_media/logo/wurst_758x192.webp)
44

5-
- **Original Repo:** https://github.com/Wurst-Imperium/Wurst7
6-
7-
- **Downloads:** [https://www.wurstclient.net/download/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwww.wurstclient.net%2Fdownload%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
8-
9-
- **Installation guide:** [https://www.wurstclient.net/tutorials/how-to-install/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwww.wurstclient.net%2Ftutorials%2Fhow-to-install%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
10-
11-
- **Feature list:** [https://www.wurstclient.net/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwww.wurstclient.net%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
12-
13-
- **Wiki:** [https://wurst.wiki/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwurst.wiki%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
5+
- Original Repo: https://github.com/Wurst-Imperium/Wurst7
6+
- Downloads: [https://www.wurstclient.net/download/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwww.wurstclient.net%2Fdownload%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
7+
- Installation guide: [https://www.wurstclient.net/tutorials/how-to-install/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwww.wurstclient.net%2Ftutorials%2Fhow-to-install%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
8+
- Feature list: [https://www.wurstclient.net/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwww.wurstclient.net%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
9+
- Wiki: [https://wurst.wiki/](https://go.wimods.net/from/github.com/Wurst-Imperium/Wurst7?to=https%3A%2F%2Fwurst.wiki%2F%3Futm_source%3DGitHub%26utm_medium%3DWurst7%2Brepo)
1410

1511
## Relationship to upstream
1612

1713
This project is a friendly, independent fork of Wurst 7. I originally proposed these features upstream and the maintainers kindly declined, so I’m keeping them in a separate fork. I’ll continue to maintain these additions and periodically rebase/sync with the upstream project.
1814

19-
- Upstream repository: https://github.com/Wurst-Imperium/Wurst7
20-
- This fork: https://github.com/cev-api/Wurst7-CevAPI
21-
- Status: actively maintained and rebased as upstream evolves
15+
- Upstream repository: https://github.com/Wurst-Imperium/Wurst7
16+
- This fork: https://github.com/cev-api/Wurst7-CevAPI
17+
- Status: actively maintained and rebased as upstream evolves
18+
19+
All credit for the original client goes to Wurst-Imperium and its contributors. This fork is not affiliated with or endorsed by Wurst-Imperium. This fork maintains the original GPLv3 licensing.
2220

23-
All credit for the original client goes to Wurst‑Imperium and its contributors. This fork is not affiliated with or endorsed by Wurst‑Imperium. This fork maintains the original GPLv3 licensing.
21+
---
2422

2523
## What’s new in this fork
2624

2725
### MobSearch
28-
- Search mobs by fuzzy name/ID or exact type (e.g., `minecraft:zombie` or `zombie`).
29-
- Added list mode (with mode switcher) with visual list of mobs to search for.
30-
- Multi-term queries: separate with commas (e.g., `skeleton, zombie`).
31-
- Rendering: Boxes, Lines, or Both. Rainbow or fixed color (default red). Box size configurable.
26+
- Search mobs by fuzzy name/ID or exact type (e.g., `minecraft:zombie` or `zombie`).
27+
- Added list mode with visual list of mobs.
28+
- Multi-term queries: comma-separated (e.g., `skeleton, zombie`).
29+
- Rendering: Boxes, Lines, or Both. Rainbow or fixed color. Box size configurable.
3230

3331
### BedESP
34-
- Finds all bed types.
35-
- Chunk-based scanning with configurable color and Box/Line style.
36-
- Rendering: Boxes, Lines, or Both in a fixed color.
32+
- Finds all bed types.
33+
- Chunk-based scanning with configurable color and Box/Line style.
34+
- Rendering: Boxes, Lines, or Both in a fixed color.
3735

3836
### SignESP
39-
- Finds all sign types/materials.
40-
- Option: Include Frames (item frames + glow item frames) with a separate color.
41-
- Rendering: Boxes, Lines, or Both in a fixed color.
37+
- Finds all sign types/materials.
38+
- Option: include frames (item frames + glow item frames) with a separate color.
39+
- Rendering: Boxes, Lines, or Both in a fixed color.
4240

4341
### WorkstationESP
44-
- Highlights: Crafting Table, Smithing Table, Anvil (all states), Grindstone, Enchanting Table, Cartography Table, Stonecutter, Loom, Furnace, Blast Furnace, Smoker, Campfire, Soul Campfire, Brewing Stand, Cauldron, Barrel, Composter, Lectern, Fletching Table, Beacon.
45-
- Per-block toggles and per-block colors. Defaults: all enabled; each uses the main/default color unless overridden.
46-
- Rendering: Boxes, Lines, or Both in a fixed color.
42+
- Highlights crafting/workstation blocks: Crafting Table, Smithing Table, Anvil, Grindstone, Enchanting Table, Cartography Table, Stonecutter, Loom, Furnace, Blast Furnace, Smoker, Campfire, Soul Campfire, Brewing Stand, Cauldron, Barrel, Composter, Lectern, Fletching Table, Beacon.
43+
- Per-block toggles and colors. Defaults: all enabled.
44+
- Rendering: Boxes, Lines, or Both in a fixed color.
4745

4846
### RedstoneESP
49-
- Highlights: Redstone Torch/Block, Lever, Tripwire Hook, Target Block, Dust, Repeater, Comparator, Observer, Daylight Detector, Sculk Sensor (+ Calibrated), Pistons (regular/sticky), Dispenser, Dropper, Hopper, Trapped Chest, Note Block, Jukebox, Bell, Lectern (redstone), Powered/Detector/Activator Rails.
50-
- Buttons and Pressure Plates are grouped:
51-
- Include buttons + Buttons color (matches all button variants)
52-
- Include pressure plates + Pressure plates color (matches all plate variants)
53-
- Rendering: Boxes, Lines, or Both in a fixed color.
54-
55-
### Waypoints
56-
Create and save waypoints and automatically save and or display in chat the location of your death.
57-
- Opening the manager
58-
- Default keybind: apostrophe ('). This triggers the command `.waypoints`.
59-
- Can also be found in the options menu.
60-
- Creating and editing
61-
- The editor shows name, coordinates (X/Y/Z), dimension, icon, visibility, lines on/off, and color.
62-
- Copy coordinates: In the manager list, each waypoint row includes a Copy button that places `x, y, z` on the clipboard.
63-
- Opposite: Default OFF. When ON (and applicable), the editor shows a hint below the toggle: “Opposite shows in … at (x, y, z)”. This converts Overworld <-> Nether using the usual 8× rule. (Opposite has no effect in the End.)
64-
- Rendering behavior
65-
- Constant-size labels: Waypoint name and distance are rendered at a configurable and fixed on‑screen size
66-
- Per‑waypoint “lines” toggle: Draws tracer + box around the target block when enabled.
67-
- Death waypoints: Optional automatic waypoints on death (for both you and optionally other players). You can toggle creating death waypoints, toggle whether they have lines, and choose their color. There’s also a setting to prune older death waypoints.
68-
- Manager list
69-
- Remove and edit existing waypoints easily.
70-
- Storage
71-
- Waypoints are stored per world/server under `wurst/waypoints/<worldId>.json` where `<worldId>` is the server address (or `singleplayer`).
72-
73-
### Breadcrumbs
74-
A line follows you wherever you go, useful for tracing back your path. It can be pausable via a keybind or through the menu.
75-
- Settings
76-
- Color
77-
- Max sections (how many points are kept)
78-
- Section length (distance before a new point is added)
79-
- Line thickness
80-
81-
### LogoutSpots
82-
Visualizes where players logged out.
83-
- How it works
84-
- The hack snapshots the current player list and compares it each tick. If an entry disappears, a logout spot is recorded at that player’s last known position (bounding box).
85-
- Spots for players who rejoin are removed automatically.
86-
- Rendering
87-
- Draws solid boxes (sides) plus an outline around each recorded spot.
88-
- Optional line tracer.
89-
- On‑screen labels with the player’s name (and adjustable name scale).
90-
- Settings
91-
- Side color (box fill)
92-
- Line color (outline + tracers)
93-
- Name scale
94-
- Show tracers (on/off)
47+
- Highlights redstone components: Torch/Block, Lever, Tripwire Hook, Target Block, Dust, Repeater, Comparator, Observer, Daylight Detector, Sculk Sensor (+ Calibrated), Pistons, Dispenser, Dropper, Hopper, Trapped Chest, Note Block, Jukebox, Bell, Lectern (redstone), Powered/Detector/Activator Rails.
48+
- Buttons and pressure plates are grouped with individual toggles + colors.
49+
- Rendering: Boxes, Lines, or Both in a fixed color.
9550

9651
### TridentESP
97-
Highlights thrown and or held tridents in the world.
98-
- Optional: highlight tridents held by other players or mobs (not your own).
99-
- Optional: color distinctions for ownership:
100-
- Your tridents
101-
- Other players’ tridents
102-
- Mobs’ tridents
103-
- Rendering styles: Boxes, Lines, or Both.
104-
- Box size modes: Accurate (tight fit) or Fancy (larger/nicer boxes).
105-
- Color options:
106-
- Fixed single color
107-
- Rainbow
108-
- Color by owner type (overrides fixed/rainbow).
109-
- Settings
110-
- Toggle held-trident highlights (players/mobs).
111-
- Choose rendering style, box size, and color mode.
112-
- Usage
113-
- Enable TridentESP from the ClickGUI → Render tab.
114-
- Adjust style, color, and ownership toggles as desired.
115-
116-
### Added keyword matches for all lists (Search, MobSearch, Nuker, SpeedNuker, NoHandClip AutoDrop, Xray etc)
117-
- Type a keyword (eg., "diamond") to populate the list with all matching blocks/mobs.
118-
- Clear list button added.
52+
- Highlights thrown tridents, plus held tridents by players/mobs.
53+
- Color distinctions: your tridents, other players, mobs.
54+
- Rendering: Boxes, Lines, or Both.
55+
- Box size: Accurate or Fancy.
56+
- Colors: fixed, rainbow, or by owner type.
57+
- Toggles for held-trident highlights.
58+
59+
### Waypoints
60+
- Create and save waypoints, with optional automatic death waypoints for all players.
61+
- Manager UI (`.waypoints` or apostrophe key).
62+
- Features: name, coords, dimension, icon, visibility, lines, color, copy button, opposite coords, death pruning.
63+
- Constant-size labels and optional tracers.
64+
- Stored per world/server under `wurst/waypoints/<worldId>.json`.
65+
66+
### Breadcrumbs
67+
- Leaves a line trail behind you (toggleable/pauseable).
68+
- Settings: color, max sections, section length, thickness.
69+
70+
### LogoutSpots
71+
- Records where players log out.
72+
- Removes spots when they rejoin.
73+
- Rendering: solid box + outline, optional tracers, name labels with adjustable scale.
74+
- Settings: side color, line color, name scale, tracers toggle.
75+
76+
### ItemESP (expanded)
77+
Highlights dropped, equipped, and framed items with powerful filters and customization.
78+
79+
- Base highlighting: all dropped items with configurable base color.
80+
- Special filters: List, Item ID, or Query (keywords).
81+
- Special colors & styles: fixed or rainbow, outline-only, lines-only-for-special.
82+
- Equipped specials: highlight items held or worn by players/mobs (not yourself).
83+
- Item frames: highlight frames if the contained item matches special criteria.
84+
- Keyword matching: supports base ID, translation key, and display name (works with renamed/NBT/plugin-modified items).
85+
- Rendering: boxes with fill + outline; tracers use special color (or base color).
86+
- Robust parsing: lists accept unknown entries as keywords (safe parsing via `Identifier.tryParse`).
87+
- Works across item, block, and entity lists (Search, MobSearch, X-Ray, BaseFinder, HandNoClip, Nuker).
88+
89+
Examples:
90+
- Highlight skulls → Item ID: `minecraft:player_head`, special color: magenta, outline-only ON.
91+
- Highlight talismans (non-standard item) → Query: `talisman`, special color: rainbow, highlight frames ON, lines-only-for-special ON.
11992

12093
### Search improvements
121-
- Keyword field accepts plain-text terms (e.g., `diamond`). Falls back to the block picker when empty.
122-
- Added list mode (with mode switcher) with visual list of items to search for.
123-
- Multi-term queries supported: comma-separated terms (e.g., `diamond, ancient`) to match both diamond ores and ancient debris.
124-
- Rendering style: Boxes, Lines, or Both (tracers). View-bobbing is canceled when lines are enabled.
125-
- Color mode for lines: “Use fixed color” toggle (default off → rainbow). When enabled, pick a fixed color.
126-
- Safer update cycle: query/radius changes trigger proper rescans; shared normalization and predicate helpers.
127-
- Tracer safety: falls back to block center when the outline shape is empty (prevents crashes on empty VoxelShapes).
94+
- Keyword queries supported; falls back to picker when empty.
95+
- List mode with visual item list.
96+
- Multi-term queries supported.
97+
- Rendering: Boxes, Lines, or Both. Tracers cancel view-bobbing.
98+
- Fixed/rainbow line colors.
99+
- Safer rescans and better crash handling.
128100

129101
### Xray improvements
130-
- Opacity and block types apply live with no toggling of the hack required.
102+
- Opacity and block type changes apply live without toggling.
131103

132104
### BaseFinder improvements
133-
- Updated the list of natural world generated blocks to latest minecraft blocks/biomes.
105+
- Updated natural blocks list to latest versions.
134106

135107
### MobESP improvements
136-
- Added color options like MobSearch:
137-
- Rainbow or fixed color for boxes/lines (configurable).
108+
- Added rainbow/fixed color options for boxes/lines.
138109

139110
### Portal ESP improvement
140-
- Area/radius changes reset its scan coordinator so expanding the radius takes effect immediately.
111+
- Radius changes reset scan instantly.
141112

142113
### Larger scan radius
143-
- ChunkAreaSetting extended up to 65×65 chunks for all chunk-based features (Search, Portal ESP, BedESP, SignESP, WorkstationESP, RedstoneESP).
114+
- Extended up to 65×65 chunks for all chunk-based features.
144115

145116
### Sticky area (new option)
146-
- Added to: Search, Portal ESP, BedESP, SignESP, RedstoneESP, WorkstationESP, ChestESP.
147-
- Turn Sticky area On to keep results anchored as you move. Useful for pathing back to things you found at the edge of your range.
148-
- Default: Off (re-centers every time you enter a new chunk to match ESP drop-off distances).
117+
- Added to chunk-based ESPs (Search, Portal ESP, BedESP, SignESP, WorkstationESP, RedstoneESP, ChestESP).
118+
- Keeps results anchored as you move. Default OFF.
149119

150120
### Unsafe Chat Toast
151-
- Now optional, toggle it within NoChatReports or Wurst Options menu.
121+
- Optional; toggle via NoChatReports or Wurst Options.
152122

153123
### Removed Wurst Logo
154-
- Removed from UI when out-dated
155-
- Removed from Options Button
124+
- Removed from UI and Options.
156125

157126
### Replace Taco with Neco
158-
- Removed the stupid little Taco guy and replaced it with Neco-Arc dancing instead! Amazing achievement!
127+
- Replaced Taco icon with dancing Neco-Arc.
159128

160129
### Usability
161-
- Right-click the Area setting to reset to its default (e.g., 33×33 where configured).
130+
- Right-click Area setting resets it to default.
162131

163132
### Stability
164-
- Fixed “UnsupportedOperationException: No bounds for empty shape” by:
165-
- Using the block center when an outline is empty (Search tracers).
166-
- Skipping entries with empty/zero-size shapes (SignESP).
133+
- Fixed crashes on empty/zero-size shapes.
134+
- Search tracers now use block centers as fallback.
135+
- SignESP skips zero-size entries safely.
167136

168137
### Notes
169-
- Scanning only includes chunks the server has sent. Larger radii work best in singleplayer or on servers with higher view distance.
138+
- Scanning only includes server-loaded chunks. Larger radii work best in singleplayer or on high view distance servers.
139+
140+
---
170141

171142
## License
172143

src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ public void init()
7373
{
7474
for(net.minecraft.block.Block bk : fuzzyMatches)
7575
blockList.add(bk);
76+
}else
77+
{
78+
String raw = blockNameField.getText();
79+
if(raw != null)
80+
raw = raw.trim();
81+
if(raw != null && !raw.isEmpty())
82+
blockList.addRawName(raw);
7683
}
7784
client.setScreen(EditBlockListScreen.this);
7885
}).dimensions(width / 2 + 40, height - 56, 80, 20).build());
@@ -172,7 +179,9 @@ public void tick()
172179
fuzzyMatches.sort(java.util.Comparator
173180
.comparing(net.wurstclient.util.BlockUtils::getName));
174181
}
175-
addButton.active = !fuzzyMatches.isEmpty();
182+
addButton.active =
183+
!fuzzyMatches.isEmpty() || (blockNameField.getText() != null
184+
&& !blockNameField.getText().trim().isEmpty());
176185
addButton.setMessage(Text.literal(fuzzyMatches.isEmpty() ? "Add"
177186
: ("Add Matches (" + fuzzyMatches.size() + ")")));
178187
}else
@@ -212,7 +221,6 @@ public void render(DrawContext context, int mouseX, int mouseY,
212221

213222
int x0 = blockNameField.getX();
214223
int y0 = blockNameField.getY();
215-
int x1 = x0 + blockNameField.getWidth();
216224
int y1 = y0 + blockNameField.getHeight();
217225

218226
if(blockNameField.getText().isEmpty() && !blockNameField.isFocused())

src/main/java/net/wurstclient/clickgui/screens/EditEntityTypeListScreen.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,13 @@ public void init()
7171
{
7272
for(net.minecraft.entity.EntityType<?> et : fuzzyMatches)
7373
typeList.add(et);
74+
}else
75+
{
76+
String raw = typeNameField.getText();
77+
if(raw != null)
78+
raw = raw.trim();
79+
if(raw != null && !raw.isEmpty())
80+
typeList.addRawName(raw);
7481
}
7582
client.setScreen(EditEntityTypeListScreen.this);
7683
}).dimensions(width / 2 - 2, height - 56, 80, 20).build());
@@ -174,7 +181,9 @@ public void tick()
174181
fuzzyMatches.sort(java.util.Comparator.comparing(
175182
t -> Registries.ENTITY_TYPE.getId(t).toString()));
176183
}
177-
addButton.active = !fuzzyMatches.isEmpty();
184+
addButton.active =
185+
!fuzzyMatches.isEmpty() || (typeNameField.getText() != null
186+
&& !typeNameField.getText().trim().isEmpty());
178187
addButton.setMessage(Text.literal(fuzzyMatches.isEmpty() ? "Add"
179188
: ("Add Matches (" + fuzzyMatches.size() + ")")));
180189
}else
@@ -214,7 +223,6 @@ public void render(DrawContext context, int mouseX, int mouseY,
214223

215224
int x0 = typeNameField.getX();
216225
int y0 = typeNameField.getY();
217-
int x1 = x0 + typeNameField.getWidth();
218226
int y1 = y0 + typeNameField.getHeight();
219227

220228
if(typeNameField.getText().isEmpty() && !typeNameField.isFocused())
@@ -267,8 +275,15 @@ public void render(DrawContext context, int index, int y, int x,
267275
boolean hovered, float tickDelta)
268276
{
269277
TextRenderer tr = client.textRenderer;
270-
String display = Registries.ENTITY_TYPE.get(Identifier.of(typeName))
271-
.getName().getString();
278+
String display;
279+
net.minecraft.util.Identifier id =
280+
net.minecraft.util.Identifier.tryParse(typeName);
281+
if(id != null
282+
&& net.minecraft.registry.Registries.ENTITY_TYPE.containsId(id))
283+
display = net.minecraft.registry.Registries.ENTITY_TYPE.get(id)
284+
.getName().getString();
285+
else
286+
display = "\u00a7okeyword\u00a7r";
272287
context.drawText(tr, display, x + 8, y,
273288
net.wurstclient.util.WurstColors.VERY_LIGHT_GRAY, false);
274289
context.drawText(tr, typeName, x + 8, y + 10, Colors.LIGHT_GRAY,

0 commit comments

Comments
 (0)