@@ -75,14 +75,13 @@ public final class TrialSpawnerEspHack extends Hack implements UpdateListener,
7575 new CheckboxSetting ("Show mob type" , true );
7676 private final CheckboxSetting showStatus =
7777 new CheckboxSetting ("Show status" , true );
78- private final CheckboxSetting showWaveInfo =
79- new CheckboxSetting ("Show wave info" , true );
78+ // removed wave info setting (simplified status display)
8079 private final CheckboxSetting showNextSpawn =
8180 new CheckboxSetting ("Show next wave" , true );
82- private final CheckboxSetting showCooldown =
83- new CheckboxSetting ( "Show cooldown " , true );
84- private final CheckboxSetting showCooldownBar =
85- new CheckboxSetting ( "Show cooldown bar " , true );
81+ private final ColorSetting vaultBoxColor =
82+ new ColorSetting ( "Vault box color " , new Color ( 0xFF7CF2C9 ) );
83+ private final ColorSetting ominousVaultBoxColor =
84+ new ColorSetting ( "Ominous vault color " , new Color ( 0xFF9B59B6 ) );
8685 private final CheckboxSetting showDistance =
8786 new CheckboxSetting ("Show distance" , true );
8887 private final CheckboxSetting showTrialType =
@@ -124,15 +123,14 @@ public TrialSpawnerEspHack()
124123 addSetting (overlayScale );
125124 addSetting (showMobType );
126125 addSetting (showStatus );
127- addSetting (showWaveInfo );
128126 addSetting (showNextSpawn );
129- addSetting (showCooldown );
130- addSetting (showCooldownBar );
131127 addSetting (showDistance );
132128 addSetting (showTrialType );
133129 addSetting (showActivationRadius );
134130 addSetting (showVaultLink );
135131 addSetting (vaultLinkRange );
132+ addSetting (vaultBoxColor );
133+ addSetting (ominousVaultBoxColor );
136134 addSetting (showCountInHackList );
137135 addSetting (colorIdle );
138136 addSetting (colorCharging );
@@ -173,11 +171,10 @@ public void onUpdate()
173171 }
174172
175173 vaults .clear ();
176- if (showVaultLink .isChecked ())
177- ChunkUtils .getLoadedBlockEntities ()
178- .filter (be -> be instanceof VaultBlockEntity )
179- .map (be -> (VaultBlockEntity )be ).forEach (
180- be -> vaults .add (new VaultInfo (be .getPos ().toImmutable ())));
174+ ChunkUtils .getLoadedBlockEntities ()
175+ .filter (be -> be instanceof VaultBlockEntity )
176+ .map (be -> (VaultBlockEntity )be ).forEach (
177+ be -> vaults .add (new VaultInfo (be .getPos ().toImmutable ())));
181178
182179 boolean limit = maxDistance .getValue () > 0 ;
183180 double maxDistanceSq = maxDistance .getValue () * maxDistance .getValue ();
@@ -213,7 +210,7 @@ public void onCameraTransformViewBobbing(
213210 @ Override
214211 public void onRender (MatrixStack matrices , float partialTicks )
215212 {
216- if (spawners . isEmpty () || MC .world == null )
213+ if (MC .world == null )
217214 return ;
218215
219216 ArrayList <ColoredBox > outlineBoxes = new ArrayList <>();
@@ -222,6 +219,35 @@ public void onRender(MatrixStack matrices, float partialTicks)
222219 ArrayList <ColoredPoint > tracerTargets =
223220 drawTracers .isChecked () ? new ArrayList <>() : null ;
224221
222+ // Render vault ESP boxes and simple status labels while hack is enabled
223+ if (!vaults .isEmpty ())
224+ {
225+ for (VaultInfo v : vaults )
226+ {
227+ BlockPos vpos = v .pos ();
228+ BlockState vstate = MC .world .getBlockState (vpos );
229+ int vcolor = vaultBoxColor .getColorI ();
230+ boolean ominous = vstate .contains (VaultBlock .OMINOUS )
231+ && vstate .get (VaultBlock .OMINOUS );
232+ if (ominous )
233+ vcolor = ominousVaultBoxColor .getColorI ();
234+ Box vbox = new Box (vpos );
235+ outlineBoxes .add (new ColoredBox (vbox , vcolor ));
236+ if (filledBoxes != null )
237+ filledBoxes
238+ .add (new ColoredBox (vbox , withAlpha (vcolor , 0.18F )));
239+
240+ // show simple status label above the vault
241+ String status = describeVaultState (vstate );
242+ List <OverlayLine > lines =
243+ List .of (new OverlayLine ("Vault" , vcolor ),
244+ new OverlayLine (status , 0xFFFFFFFF ));
245+ Vec3d labelPos = Vec3d .ofCenter (vpos ).add (0 , 1.0 , 0 );
246+ labelPos = resolveLabelPosition (labelPos );
247+ drawLabel (matrices , labelPos , lines , overlayScale .getValueF ());
248+ }
249+ }
250+
225251 for (TrialSpawnerInfo info : spawners )
226252 {
227253 TrialSpawnerBlockEntity be = info .blockEntity ();
@@ -366,8 +392,7 @@ private void drawOverlay(MatrixStack matrices, TrialSpawnerInfo info,
366392
367393 String trialType = describeTrialType (mobName , spawnId );
368394 TrialStatus status = TrialStatus .fromState (state );
369- String statusLine =
370- describeStatus (status , currentWave , totalWaves , cooldownSeconds );
395+ String statusLine = describeStatus (status );
371396
372397 ArrayList <OverlayLine > lines = new ArrayList <>();
373398 String title =
@@ -383,12 +408,7 @@ private void drawOverlay(MatrixStack matrices, TrialSpawnerInfo info,
383408 if (alive > 0 )
384409 lines .add (new OverlayLine ("Active mobs: " + alive , 0xFFFFFFFF ));
385410
386- if (showWaveInfo .isChecked ())
387- {
388- String waveText = "Wave: " + currentWave + "/" + totalWaves + " ("
389- + mobsProgress + "/" + totalMobs + " mobs)" ;
390- lines .add (new OverlayLine (waveText , 0xFFFFFFFF ));
391- }
411+ // removed wave info display (keeps overlay simple)
392412
393413 if (showNextSpawn .isChecked () && state == TrialSpawnerState .ACTIVE )
394414 {
@@ -397,20 +417,7 @@ private void drawOverlay(MatrixStack matrices, TrialSpawnerInfo info,
397417 lines .add (new OverlayLine (next , 0xFFFFFFFF ));
398418 }
399419
400- if (showCooldown .isChecked () && cooldownSeconds > 0 )
401- lines .add (new OverlayLine (
402- "Cooldown: " + formatSeconds (cooldownSeconds ), 0xFFFFFFFF ));
403-
404- if (showCooldownBar .isChecked () && status == TrialStatus .IDLE
405- && state == TrialSpawnerState .COOLDOWN
406- && logic .getCooldownLength () > 0 )
407- {
408- double total = logic .getCooldownLength () / 20.0 ;
409- double progress = total <= 0 ? 1
410- : MathHelper .clamp (1 - (cooldownSeconds / total ), 0 , 1 );
411- lines .add (new OverlayLine ("Cooling: " + progressBar (progress ) + " "
412- + Math .round (progress * 100 ) + "%" , 0xFFFFFFFF ));
413- }
420+ // removed cooldown display
414421
415422 if (showTrialType .isChecked ())
416423 lines .add (new OverlayLine ("Trial: " + trialType , 0xFFFFFFFF ));
@@ -775,16 +782,14 @@ private String describeVaultState(BlockState state)
775782 };
776783 }
777784
778- private String describeStatus (TrialStatus status , int currentWave ,
779- int totalWaves , double cooldownSeconds )
785+ private String describeStatus (TrialStatus status )
780786 {
781787 return switch (status )
782788 {
783- case ACTIVE -> "Spawning wave " + currentWave + "/" + totalWaves ;
784- case CHARGING -> "Priming (" + currentWave + "/" + totalWaves + ") " ;
789+ case ACTIVE -> "Spawning" ;
790+ case CHARGING -> "Priming" ;
785791 case COMPLETED -> "Completed" ;
786- case IDLE -> cooldownSeconds > 0
787- ? "Cooling (" + formatSeconds (cooldownSeconds ) + ")" : "Idle" ;
792+ case IDLE -> "Idle" ;
788793 };
789794 }
790795
0 commit comments