Skip to content

Commit 0fe60fb

Browse files
committed
Small Fixes
1 parent 85f0a2a commit 0fe60fb

7 files changed

Lines changed: 120 additions & 74 deletions

File tree

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,11 @@ private UUID getOwnerUuid(Entity entity)
112112
return OwnerResolver.getOwnerUuid(entity, projectiles.isChecked());
113113
}
114114

115-
private String resolveOwnerName(UUID owner)
116-
{
117-
return OwnerResolver.lookupPlayerName(owner);
118-
}
115+
private String resolveOwnerName(UUID owner)
116+
{
117+
String name = OwnerResolver.lookupPlayerName(owner);
118+
return OwnerResolver.isResolvablePlayerName(name) ? name : null;
119+
}
119120

120121
@Override
121122
public void onRender(PoseStack matrixStack, float partialTicks)
@@ -151,12 +152,12 @@ public void onRender(PoseStack matrixStack, float partialTicks)
151152
private String getProjectileOwnerLabel(Entity projectile, Entity owner)
152153
{
153154
UUID ownerUuid = OwnerResolver.getOwnerUuid(projectile);
154-
if(ownerUuid != null)
155-
{
156-
String name = OwnerResolver.lookupPlayerName(ownerUuid);
157-
if(name != null)
158-
return "Owner: " + name;
159-
}
155+
if(ownerUuid != null)
156+
{
157+
String name = OwnerResolver.lookupPlayerName(ownerUuid);
158+
if(OwnerResolver.isResolvablePlayerName(name))
159+
return "Owner: " + name;
160+
}
160161

161162
if(owner == null)
162163
return showUuidWhenUnknown.isChecked() ? "Owner: Unknown" : null;

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -984,21 +984,21 @@ private String getOwnerUuidLabel(UUID ownerUuid)
984984
if(MC.player != null && ownerUuid.equals(MC.player.getUUID()))
985985
return "Owner: You";
986986

987-
String name = resolvePlayerName(ownerUuid);
988-
return name == null ? null : "Owner: " + name;
989-
}
987+
String name = resolvePlayerName(ownerUuid);
988+
return name == null ? null : "Owner: " + name;
989+
}
990990

991991
private String resolvePlayerName(UUID uuid)
992992
{
993993
if(uuid == null)
994994
return null;
995995

996-
String name = OwnerResolver.lookupPlayerName(uuid);
997-
if(name != null && !name.isBlank())
998-
{
999-
knownPlayerNames.put(uuid, name);
1000-
return name;
1001-
}
996+
String name = OwnerResolver.lookupPlayerName(uuid);
997+
if(OwnerResolver.isResolvablePlayerName(name))
998+
{
999+
knownPlayerNames.put(uuid, name);
1000+
return name;
1001+
}
10021002

10031003
String cached = knownPlayerNames.get(uuid);
10041004
if(cached != null && !cached.isBlank())

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

Lines changed: 59 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*/
88
package net.wurstclient.hacks;
99

10+
import com.mojang.blaze3d.platform.InputConstants;
1011
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
1112
import net.minecraft.client.gui.screens.inventory.InventoryScreen;
1213
import net.minecraft.core.BlockPos;
@@ -20,6 +21,7 @@
2021
import net.wurstclient.events.UpdateListener;
2122
import net.wurstclient.hack.Hack;
2223
import net.wurstclient.settings.CheckboxSetting;
24+
import net.wurstclient.settings.TextFieldSetting;
2325
import net.wurstclient.util.ChatUtils;
2426

2527
@SearchTags({"remote echest", "remote ender chest", "ender chest",
@@ -30,12 +32,16 @@ public final class RemoteEnderChestHack extends Hack implements UpdateListener
3032

3133
private boolean guiHidden;
3234
private boolean guiWasOpen;
33-
private boolean lastKeyState;
35+
private boolean lastToggleKeyState;
3436
private AbstractContainerScreen<?> savedScreen;
3537
private int savedSyncId = -1;
3638
private Level lastWorld;
3739
private BlockPos potentialEChestPos;
3840

41+
private final TextFieldSetting toggleGuiKey =
42+
new TextFieldSetting("Toggle GUI key", "key.keyboard.left.alt",
43+
RemoteEnderChestHack::isValidKey);
44+
3945
private final CheckboxSetting swapInventoryKey =
4046
new CheckboxSetting("Swap inventory key",
4147
"When active, pressing the inventory key (E) will open the linked\n"
@@ -47,6 +53,7 @@ public RemoteEnderChestHack()
4753
super("RemoteEChest");
4854
instance = this;
4955
setCategory(Category.OTHER);
56+
addSetting(toggleGuiKey);
5057
addSetting(swapInventoryKey);
5158
}
5259

@@ -87,9 +94,6 @@ public static void toggleLinkedGui()
8794
if(self == null || !self.isEnabled() || self.savedScreen == null)
8895
return;
8996

90-
// Prevent double-toggle when both a mixin and onUpdate() see Left Alt.
91-
self.lastKeyState = true;
92-
9397
if(!self.isSavedContainerMenuStillActive())
9498
{
9599
self.breakLink("Ender chest handler invalid. EChest link broken.");
@@ -233,6 +237,25 @@ && isSavedContainerMenuStillActive() && guiHidden
233237
return;
234238
}
235239

240+
if(MC.screen == null && savedScreen != null
241+
&& isSavedContainerMenuStillActive())
242+
{
243+
InputConstants.Key key = getToggleGuiKey();
244+
if(key != null)
245+
{
246+
boolean keyDown =
247+
InputConstants.isKeyDown(MC.getWindow(), key.getValue());
248+
boolean keyJustPressed = keyDown && !lastToggleKeyState;
249+
lastToggleKeyState = keyDown;
250+
if(keyJustPressed)
251+
{
252+
toggleLinkedGui();
253+
return;
254+
}
255+
}
256+
}else
257+
lastToggleKeyState = false;
258+
236259
if(MC.hitResult instanceof BlockHitResult bhr)
237260
{
238261
potentialEChestPos = bhr.getBlockPos();
@@ -249,8 +272,8 @@ && isSavedContainerMenuStillActive() && guiHidden
249272
}
250273

251274
// Opening another container, chest, player inventory, etc. invalidates
252-
// the saved link. Clear it immediately so Alt cannot reopen a stale
253-
// ghost GUI later.
275+
// the saved link. Clear it immediately so the toggle key cannot
276+
// reopen a stale ghost GUI later.
254277
if(savedScreen != null
255278
&& MC.screen instanceof AbstractContainerScreen<?> screen
256279
&& screen != savedScreen)
@@ -281,32 +304,8 @@ && isSavedContainerMenuStillActive() && guiHidden
281304
guiWasOpen = true;
282305
lastWorld = MC.level;
283306
ChatUtils.message(
284-
"EChest link created! Press Left Alt to toggle the GUI.");
285-
}
286-
287-
long window = MC.getWindow().handle();
288-
boolean keyDown = org.lwjgl.glfw.GLFW.glfwGetKey(window,
289-
org.lwjgl.glfw.GLFW.GLFW_KEY_LEFT_ALT) == 1;
290-
boolean keyJustPressed = keyDown && !lastKeyState;
291-
lastKeyState = keyDown;
292-
293-
if(keyJustPressed && savedScreen != null)
294-
{
295-
if(!isSavedContainerMenuStillActive())
296-
{
297-
breakLink("Ender chest handler invalid. EChest link broken.");
298-
return;
299-
}
300-
301-
if(guiHidden)
302-
{
303-
MC.setScreen(savedScreen);
304-
guiHidden = false;
305-
}else
306-
{
307-
MC.setScreen(null);
308-
guiHidden = true;
309-
}
307+
"EChest link created! Use the configured toggle key to show or"
308+
+ " hide the GUI.");
310309
}
311310

312311
if(savedScreen != null && MC.screen == null && !guiHidden && guiWasOpen)
@@ -373,7 +372,7 @@ private void resetStuff(boolean sendClosePacket)
373372

374373
guiHidden = false;
375374
guiWasOpen = false;
376-
lastKeyState = false;
375+
lastToggleKeyState = false;
377376
potentialEChestPos = null;
378377
savedSyncId = -1;
379378
savedScreen = null;
@@ -388,4 +387,31 @@ private void resetStuff(boolean sendClosePacket)
388387
.send(new ServerboundContainerClosePacket(syncId));
389388
}
390389
}
390+
391+
public String getToggleGuiKeyName()
392+
{
393+
return toggleGuiKey.getValue();
394+
}
395+
396+
private InputConstants.Key getToggleGuiKey()
397+
{
398+
try
399+
{
400+
return InputConstants.getKey(toggleGuiKey.getValue());
401+
}catch(IllegalArgumentException e)
402+
{
403+
return null;
404+
}
405+
}
406+
407+
private static boolean isValidKey(String keyName)
408+
{
409+
try
410+
{
411+
return InputConstants.getKey(keyName) != null;
412+
}catch(IllegalArgumentException e)
413+
{
414+
return false;
415+
}
416+
}
391417
}

src/main/java/net/wurstclient/hacks/itemhandler/ItemHandlerHack.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -721,10 +721,11 @@ private void scanNearbySigns()
721721
if(owner == null && ownerUuid == null)
722722
continue;
723723

724-
// If we have a UUID but no entity, require a known name
725-
if(owner == null
726-
&& OwnerResolver.lookupPlayerName(ownerUuid) == null)
727-
continue;
724+
// If we have a UUID but no entity, require a known name
725+
String ownerName = ownerUuid == null ? null
726+
: OwnerResolver.lookupPlayerName(ownerUuid);
727+
if(owner == null && !hasResolvableOwnerName(ownerName))
728+
continue;
728729

729730
boolean ownedByMe = MC.player != null && ownerUuid != null
730731
&& ownerUuid.equals(MC.player.getUUID())
@@ -1605,19 +1606,25 @@ private String getOwnerLabel(Entity entity, Entity owner)
16051606
if(MC.player != null && ownerUuid.equals(MC.player.getUUID()))
16061607
return "Owner: You";
16071608

1608-
String name = OwnerResolver.lookupPlayerName(ownerUuid);
1609-
if(name != null)
1610-
return "Owner: " + name;
1609+
String name = OwnerResolver.lookupPlayerName(ownerUuid);
1610+
if(hasResolvableOwnerName(name))
1611+
return "Owner: " + name;
16111612
}
16121613

16131614
if(owner == MC.player)
16141615
return "Owner: You";
16151616
if(owner instanceof Player player)
16161617
return "Owner: " + player.getName().getString();
1617-
if(owner != null)
1618-
return "Owner: " + entityDisplayName(owner);
1619-
return "Owner: Unknown";
1620-
}
1618+
if(owner != null)
1619+
return "Owner: " + entityDisplayName(owner);
1620+
return "Owner: Unknown";
1621+
}
1622+
1623+
private boolean hasResolvableOwnerName(String name)
1624+
{
1625+
return name != null && !name.isBlank()
1626+
&& !OwnerResolver.DUMMY_NAME.equals(name);
1627+
}
16211628

16221629
private UUID getEntityOwnerUuid(Entity entity)
16231630
{

src/main/java/net/wurstclient/mixin/ContainerScreenMixin.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.spongepowered.asm.mixin.injection.Inject;
1515
import org.spongepowered.asm.mixin.injection.At;
1616
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
17+
import com.mojang.blaze3d.platform.InputConstants;
1718
import net.minecraft.client.gui.GuiGraphicsExtractor;
1819
import net.minecraft.client.gui.components.Button;
1920
import net.minecraft.client.input.KeyEvent;
@@ -126,7 +127,11 @@ public boolean keyPressed(KeyEvent event)
126127
RemoteEnderChestHack.hideLinkedGui();
127128
return true;
128129
}
129-
if(key == GLFW.GLFW_KEY_LEFT_ALT)
130+
String keyName = InputConstants.getKey(
131+
new KeyEvent(event.key(), event.scancode(), event.modifiers()))
132+
.getName();
133+
if(remote != null
134+
&& keyName.equalsIgnoreCase(remote.getToggleGuiKeyName()))
130135
{
131136
RemoteEnderChestHack.toggleLinkedGui();
132137
return true;

src/main/java/net/wurstclient/util/OwnerResolver.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,16 @@ private static UUID uuidFrom(@Nullable Object value)
132132
return null;
133133
}
134134

135-
public static boolean shouldFetchFromServer(@Nullable UUID uuid)
136-
{
137-
String name = lookupPlayerName(uuid);
138-
return name == null || name.equals(DUMMY_NAME);
139-
}
135+
public static boolean shouldFetchFromServer(@Nullable UUID uuid)
136+
{
137+
String name = lookupPlayerName(uuid);
138+
return !isResolvablePlayerName(name);
139+
}
140+
141+
public static boolean isResolvablePlayerName(@Nullable String name)
142+
{
143+
return name != null && !name.isBlank() && !DUMMY_NAME.equals(name);
144+
}
140145

141146
@Nullable
142147
public static String lookupPlayerName(@Nullable UUID uuid)

src/main/resources/assets/wurst/translations/en_us.json

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -590,11 +590,13 @@
590590
"hack.wurst.mapa": "Mapa",
591591
"description.wurst.hack.mapa": "Provides an integrated minimap and world map with optional ESP markers.",
592592
"hack.wurst.miningevidence": "MiningEvidence",
593-
"description.wurst.hack.miningevidence": "Detects underground line-shaped item drops that suggest recent mining activity and keeps the matched trail visible for a configurable time after the items disappear.",
594-
"hack.wurst.spectatormonitor": "SpectatorMonitor",
595-
"description.wurst.hack.spectatormonitor": "Monitors the tab list for players entering or leaving spectator mode, with optional alerts for visible player entities missing from the tab list.",
596-
"description.wurst.hack.ui-utils": "Adds UI utilities like packet control, chat-in-GUI input, and resource pack bypass tools.",
597-
"hack.wurst.pearlesp": "PearlESP",
593+
"description.wurst.hack.miningevidence": "Detects underground line-shaped item drops that suggest recent mining activity and keeps the matched trail visible for a configurable time after the items disappear.",
594+
"hack.wurst.spectatormonitor": "SpectatorMonitor",
595+
"description.wurst.hack.spectatormonitor": "Monitors the tab list for players entering or leaving spectator mode, with optional alerts for visible player entities missing from the tab list.",
596+
"hack.wurst.staffmonitor": "StaffMonitor",
597+
"description.wurst.hack.staffmonitor": "Monitors the tab list for players entering or leaving spectator mode, with optional alerts for hidden staff and visible player entities missing from the tab list.",
598+
"description.wurst.hack.ui-utils": "Adds UI utilities like packet control, chat-in-GUI input, and resource pack bypass tools.",
599+
"hack.wurst.pearlesp": "PearlESP",
598600
"description.wurst.hack.pearlesp": "Highlights ender pearls thrown by other players, shows predicted landing with a purple box, draws a trajectory line, and highlights when players are holding an ender pearl.",
599601
"hack.wurst.projectileowner": "ProjectileOwner",
600602
"description.wurst.hack.projectileowner": "Shows owner labels above projectiles when the owner is known client-side, ignoring projectiles thrown by you.",

0 commit comments

Comments
 (0)