Skip to content

Commit 66bcab6

Browse files
committed
Active Redstone Detection
1 parent 25a5548 commit 66bcab6

File tree

5 files changed

+299
-56
lines changed

5 files changed

+299
-56
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,10 @@ A ready-to-publish starter project is included here: [https://github.com/cev-api
238238
- Color override settings option to force all blocks to be a single color.
239239
- Colors here will superseed ChestESP.
240240
- Added HackList count.
241+
- Active redstone circuit detection modes.
241242

242243
![RedStone](https://i.imgur.com/VGGq4eU.png)
244+
![ActiveOnly](https://i.imgur.com/lgajrpi.png)
243245

244246
### TridentESP
245247
- Highlights thrown tridents, plus held tridents by players/mobs.

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -508,13 +508,16 @@ private void renderBoxes(PoseStack matrixStack)
508508
{
509509
boolean workstationEnabled = false;
510510
boolean redstoneEnabled = false;
511+
boolean redstoneActiveOnly = false;
511512
try
512513
{
513514
var hax = net.wurstclient.WurstClient.INSTANCE.getHax();
514515
workstationEnabled = hax.workstationEspHack != null
515516
&& hax.workstationEspHack.isEnabled();
516517
redstoneEnabled =
517518
hax.redstoneEspHack != null && hax.redstoneEspHack.isEnabled();
519+
redstoneActiveOnly = hax.redstoneEspHack != null
520+
&& hax.redstoneEspHack.isActiveOnlyMode();
518521
}catch(Throwable ignored)
519522
{}
520523
ChestSearchHack csh = null;
@@ -560,8 +563,9 @@ private void renderBoxes(PoseStack matrixStack)
560563
if(workstationEnabled
561564
&& (group == groups.crafters || group == groups.furnaces))
562565
continue;
563-
if(redstoneEnabled && (group == groups.droppers
564-
|| group == groups.dispensers || group == groups.hoppers))
566+
if(redstoneEnabled && !redstoneActiveOnly
567+
&& (group == groups.droppers || group == groups.dispensers
568+
|| group == groups.hoppers))
565569
continue;
566570

567571
List<AABB> boxes = group.getBoxes();
@@ -867,13 +871,16 @@ private void renderTracers(PoseStack matrixStack, float partialTicks)
867871
{
868872
boolean workstationEnabled = false;
869873
boolean redstoneEnabled = false;
874+
boolean redstoneActiveOnly = false;
870875
try
871876
{
872877
var hax = net.wurstclient.WurstClient.INSTANCE.getHax();
873878
workstationEnabled = hax.workstationEspHack != null
874879
&& hax.workstationEspHack.isEnabled();
875880
redstoneEnabled =
876881
hax.redstoneEspHack != null && hax.redstoneEspHack.isEnabled();
882+
redstoneActiveOnly = hax.redstoneEspHack != null
883+
&& hax.redstoneEspHack.isActiveOnlyMode();
877884
}catch(Throwable ignored)
878885
{}
879886

@@ -916,8 +923,9 @@ private void renderTracers(PoseStack matrixStack, float partialTicks)
916923
if(workstationEnabled
917924
&& (group == groups.crafters || group == groups.furnaces))
918925
continue;
919-
if(redstoneEnabled && (group == groups.droppers
920-
|| group == groups.dispensers || group == groups.hoppers))
926+
if(redstoneEnabled && !redstoneActiveOnly
927+
&& (group == groups.droppers || group == groups.dispensers
928+
|| group == groups.hoppers))
921929
continue;
922930

923931
List<AABB> boxes = group.getBoxes();

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public final class GlobalToggleHack extends Hack implements UpdateListener
9494
private int lastSearchThreadPriority =
9595
ChunkSearcher.getBackgroundThreadPriority();
9696
private boolean lastDisableAllTracers;
97+
private boolean tracerStateInitialized;
9798

9899
public GlobalToggleHack()
99100
{
@@ -199,7 +200,11 @@ public void onUpdate()
199200
}
200201

201202
boolean suppressTracers = disableAllTracers.isChecked();
202-
if(suppressTracers != lastDisableAllTracers)
203+
if(!tracerStateInitialized)
204+
{
205+
lastDisableAllTracers = suppressTracers;
206+
tracerStateInitialized = true;
207+
}else if(suppressTracers != lastDisableAllTracers)
203208
{
204209
ChatUtils.message(suppressTracers ? "All tracers disabled globally."
205210
: "Global tracer suppression disabled.");

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

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
import java.util.ArrayList;
1212
import java.util.Comparator;
1313
import java.util.List;
14-
import java.util.Map;
15-
import java.util.concurrent.ConcurrentHashMap;
16-
import java.util.concurrent.ConcurrentLinkedDeque;
17-
import net.minecraft.core.BlockPos;
18-
import net.minecraft.core.registries.BuiltInRegistries;
19-
import net.minecraft.network.protocol.Packet;
20-
import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
21-
import net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket;
22-
import net.minecraft.world.level.block.state.BlockState;
14+
import java.util.Map;
15+
import java.util.concurrent.ConcurrentHashMap;
16+
import java.util.concurrent.ConcurrentLinkedDeque;
17+
import net.minecraft.core.BlockPos;
18+
import net.minecraft.core.registries.BuiltInRegistries;
19+
import net.minecraft.network.protocol.Packet;
20+
import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
21+
import net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket;
22+
import net.minecraft.world.level.block.state.BlockState;
2323
import net.minecraft.world.phys.AABB;
2424
import net.minecraft.world.phys.Vec3;
2525
import net.wurstclient.Category;
@@ -58,10 +58,10 @@ public final class PlayerSonarHack extends Hack
5858
private final SliderSetting tracerThickness =
5959
new SliderSetting("Tracer thickness", 2, 0.5, 10, 0.1,
6060
ValueDisplay.DECIMAL.withSuffix("px"));
61-
private final CheckboxSetting detectRedstoneInteraction =
62-
new CheckboxSetting("Detect redstone interaction",
63-
"Also score powered/open/triggered/lit toggles as weaker hints.",
64-
true);
61+
private final CheckboxSetting detectRedstoneInteraction =
62+
new CheckboxSetting("Detect redstone interaction",
63+
"Also score powered/open/triggered/lit toggles as weaker hints.",
64+
true);
6565
private final CheckboxSetting chatAlerts =
6666
new CheckboxSetting("Chat alerts",
6767
"Show chat alerts when a block-change signal is detected.", true);
@@ -93,10 +93,10 @@ public PlayerSonarHack()
9393
setCategory(Category.RENDER);
9494
addSetting(showBoxes);
9595
addSetting(onlyBeyondPlayerEspRange);
96-
addSetting(showTracers);
97-
addSetting(tracerThickness);
98-
addSetting(detectRedstoneInteraction);
99-
addSetting(chatAlerts);
96+
addSetting(showTracers);
97+
addSetting(tracerThickness);
98+
addSetting(detectRedstoneInteraction);
99+
addSetting(chatAlerts);
100100
addSetting(markerLifetimeSec);
101101
addSetting(maxMarkers);
102102
addSetting(placeColor);
@@ -139,12 +139,12 @@ public void onReceivedPacket(PacketInputEvent event)
139139
return;
140140
}
141141

142-
if(packet instanceof ClientboundSectionBlocksUpdatePacket deltaUpdate)
143-
{
144-
deltaUpdate.runUpdates(this::handleBlockChange);
145-
return;
146-
}
147-
}
142+
if(packet instanceof ClientboundSectionBlocksUpdatePacket deltaUpdate)
143+
{
144+
deltaUpdate.runUpdates(this::handleBlockChange);
145+
return;
146+
}
147+
}
148148

149149
private void handleBlockChange(BlockPos pos, BlockState newState)
150150
{
@@ -227,7 +227,7 @@ private boolean hasInteractiveFlip(BlockState oldState, BlockState newState)
227227
return false;
228228
}
229229

230-
private String getBlockId(BlockState state)
230+
private String getBlockId(BlockState state)
231231
{
232232
if(state == null)
233233
return "minecraft:air";
@@ -390,14 +390,14 @@ public void onRender(PoseStack matrixStack, float partialTicks)
390390

391391
private int getColorForKind(String kind)
392392
{
393-
return switch(kind)
394-
{
395-
case "PLACE" -> placeColor.getColorI(220);
396-
case "BREAK" -> breakColor.getColorI(220);
397-
case "REDSTONE" -> redstoneColor.getColorI(220);
398-
default -> placeColor.getColorI(220);
399-
};
400-
}
393+
return switch(kind)
394+
{
395+
case "PLACE" -> placeColor.getColorI(220);
396+
case "BREAK" -> breakColor.getColorI(220);
397+
case "REDSTONE" -> redstoneColor.getColorI(220);
398+
default -> placeColor.getColorI(220);
399+
};
400+
}
401401

402402
private boolean isBeyondPlayerEspRange(BlockPos pos)
403403
{

0 commit comments

Comments
 (0)