Skip to content

Commit 044624d

Browse files
committed
Updated ChestSearch, HackList, GameStats, EnchantmentHandler Etc
1 parent b57e762 commit 044624d

18 files changed

Lines changed: 1036 additions & 160 deletions

src/main/java/net/wurstclient/clickgui/ClickGui.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,34 @@ public void handleNavigatorMouseClick(double cMouseX, double cMouseY,
868868
closeInvalidPopups();
869869
}
870870

871+
public boolean handleNavigatorComponentMouseScroll(double cMouseX,
872+
double cMouseY, double delta, Window window)
873+
{
874+
if(delta == 0)
875+
return false;
876+
877+
for(int i = window.countChildren() - 1; i >= 0; i--)
878+
{
879+
Component c = window.getChild(i);
880+
881+
if(cMouseX < c.getX() || cMouseY < c.getY())
882+
continue;
883+
if(cMouseX >= c.getX() + c.getWidth()
884+
|| cMouseY >= c.getY() + c.getHeight())
885+
continue;
886+
887+
if(c.handleMouseScroll(cMouseX, cMouseY, delta))
888+
{
889+
closeInvalidPopups();
890+
return true;
891+
}
892+
893+
break;
894+
}
895+
896+
return false;
897+
}
898+
871899
public void closePopupsOutsideArea(Window window, int x1, int y1, int x2,
872900
int y2)
873901
{

src/main/java/net/wurstclient/clickgui/Component.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public void handleMouseClick(double mouseX, double mouseY, int mouseButton,
3030

3131
}
3232

33+
public boolean handleMouseScroll(double mouseX, double mouseY, double delta)
34+
{
35+
return false;
36+
}
37+
3338
public abstract void extractRenderState(GuiGraphicsExtractor context,
3439
int mouseX, int mouseY, float partialTicks);
3540

src/main/java/net/wurstclient/clickgui/components/SettingGroupComponent.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,29 @@ public void handleMouseClick(double mouseX, double mouseY, int mouseButton,
164164
}
165165
}
166166

167+
@Override
168+
public boolean handleMouseScroll(double mouseX, double mouseY, double delta)
169+
{
170+
if(!expanded)
171+
return false;
172+
173+
for(Component child : childComponents)
174+
{
175+
int cx1 = child.getX();
176+
int cy1 = child.getY();
177+
int cx2 = cx1 + child.getWidth();
178+
int cy2 = cy1 + child.getHeight();
179+
180+
if(mouseX < cx1 || mouseX > cx2 || mouseY < cy1 || mouseY > cy2)
181+
continue;
182+
183+
if(child.handleMouseScroll(mouseX, mouseY, delta))
184+
return true;
185+
}
186+
187+
return false;
188+
}
189+
167190
@Override
168191
public void extractRenderState(GuiGraphicsExtractor context, int mouseX,
169192
int mouseY, float partialTicks)

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

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ public final class ChestSearchHack extends Hack
8585
"Fixed preview position",
8686
"Shows the mouse-over chest preview at a saved screen position that can be dragged.",
8787
false);
88+
private final EnumSetting<PreviewAnchor> previewAnchor =
89+
new EnumSetting<>("Preview anchor",
90+
"Choose where the fixed chest preview should pin itself.",
91+
PreviewAnchor.values(), PreviewAnchor.DRAGGED);
92+
private final SliderSetting previewAnchorGap = new SliderSetting(
93+
"Preview anchor gap", 8, 0, 240, 1, ValueDisplay.INTEGER);
8894
private final SliderSetting previewX =
8995
new SliderSetting("Preview X", 0, 0, 3840, 1, ValueDisplay.INTEGER);
9096
private final SliderSetting previewY =
@@ -127,6 +133,8 @@ public ChestSearchHack()
127133
addSetting(recordedChestNotifications);
128134
addSetting(displayOnMouse);
129135
addSetting(fixedPreviewPosition);
136+
addSetting(previewAnchor);
137+
addSetting(previewAnchorGap);
130138
addSetting(previewX);
131139
addSetting(previewY);
132140
addSetting(mousePreviewBackground);
@@ -182,6 +190,28 @@ public int getPreviewX()
182190
return previewX.getValueI();
183191
}
184192

193+
public PreviewAnchor getPreviewAnchor()
194+
{
195+
try
196+
{
197+
PreviewAnchor anchor = previewAnchor.getSelected();
198+
return anchor != null ? anchor : PreviewAnchor.DRAGGED;
199+
}catch(Throwable t)
200+
{
201+
return PreviewAnchor.DRAGGED;
202+
}
203+
}
204+
205+
public int getPreviewAnchorGap()
206+
{
207+
return previewAnchorGap.getValueI();
208+
}
209+
210+
public boolean usesPinnedPreviewAnchor()
211+
{
212+
return getPreviewAnchor() != PreviewAnchor.DRAGGED;
213+
}
214+
185215
public int getPreviewY()
186216
{
187217
return previewY.getValueI();
@@ -368,4 +398,28 @@ public String toString()
368398
return displayName;
369399
}
370400
}
401+
402+
public enum PreviewAnchor
403+
{
404+
DRAGGED("Dragged"),
405+
HUD_LEFT("HUD Left"),
406+
HUD_RIGHT("HUD Right"),
407+
TOP_LEFT("Top Left"),
408+
TOP_RIGHT("Top Right"),
409+
BOTTOM_LEFT("Bottom Left"),
410+
BOTTOM_RIGHT("Bottom Right");
411+
412+
private final String displayName;
413+
414+
private PreviewAnchor(String displayName)
415+
{
416+
this.displayName = displayName;
417+
}
418+
419+
@Override
420+
public String toString()
421+
{
422+
return displayName;
423+
}
424+
}
371425
}

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

Lines changed: 86 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import net.wurstclient.mixin.HandledScreenAccessor;
5151
import net.wurstclient.settings.CheckboxSetting;
5252
import net.wurstclient.settings.ColorSetting;
53+
import net.wurstclient.settings.EnumSetting;
5354
import net.wurstclient.settings.SliderSetting;
5455
import net.wurstclient.settings.SliderSetting.ValueDisplay;
5556
import net.wurstclient.util.ItemUtils;
@@ -123,6 +124,12 @@ public final class EnchantmentHandlerHack extends Hack
123124
new CheckboxSetting("Include shulker contents", true);
124125
private final CheckboxSetting showOnInventoryScreen =
125126
new CheckboxSetting("Show on inventory screen", true);
127+
private final EnumSetting<PanelAnchor> panelAnchor = new EnumSetting<>(
128+
"Panel anchor",
129+
"Pin the panel to the left, right, top, or bottom of the current inventory/container.",
130+
PanelAnchor.values(), PanelAnchor.LEFT);
131+
private final SliderSetting panelAnchorGap = new SliderSetting(
132+
"Panel anchor gap", 6, 0, 240, 1, ValueDisplay.INTEGER);
126133
private final CheckboxSetting slotHighlightEnabled =
127134
new CheckboxSetting("Slot highlight", true);
128135
private final ColorSetting slotHighlightColor =
@@ -191,6 +198,8 @@ public EnchantmentHandlerHack()
191198
addSetting(includePlayerInventory);
192199
addSetting(includeShulkerContents);
193200
addSetting(showOnInventoryScreen);
201+
addSetting(panelAnchor);
202+
addSetting(panelAnchorGap);
194203
addSetting(slotHighlightEnabled);
195204
addSetting(slotHighlightColor);
196205
addSetting(slotHighlightOpacity);
@@ -308,19 +317,14 @@ public void renderOnHandledScreen(AbstractContainerScreen<?> screen,
308317
Math.max(60, windowHeight - 10));
309318

310319
renderingInventoryScreen = screen instanceof InventoryScreen;
311-
int defaultX = accessor.getX() - panelWidth - PANEL_PADDING;
312-
int defaultY = accessor.getY();
313-
if(renderingInventoryScreen)
314-
{
315-
defaultX = accessor.getX();
316-
defaultY = accessor.getY() + accessor.getBackgroundHeight()
317-
+ PANEL_PADDING;
318-
}
319-
if(renderingInventoryScreen && inventoryCustomPosition)
320+
int defaultX = getAnchoredPanelX(accessor);
321+
int defaultY = getAnchoredPanelY(accessor);
322+
boolean freePosition = usesFreePosition();
323+
if(freePosition && renderingInventoryScreen && inventoryCustomPosition)
320324
{
321325
panelX = inventoryPanelX;
322326
panelY = inventoryPanelY;
323-
}else if(!renderingInventoryScreen && customPosition)
327+
}else if(freePosition && !renderingInventoryScreen && customPosition)
324328
{
325329
panelX = containerPanelX;
326330
panelY = containerPanelY;
@@ -345,11 +349,11 @@ public void renderOnHandledScreen(AbstractContainerScreen<?> screen,
345349
panelX =
346350
Mth.clamp(panelX, 2 - panelWidth, windowWidth - panelWidth - 2);
347351
panelY = Mth.clamp(panelY, 2, windowHeight - panelHeight - 2);
348-
if(renderingInventoryScreen && inventoryCustomPosition)
352+
if(freePosition && renderingInventoryScreen && inventoryCustomPosition)
349353
{
350354
inventoryPanelX = panelX;
351355
inventoryPanelY = panelY;
352-
}else if(!renderingInventoryScreen && customPosition)
356+
}else if(freePosition && !renderingInventoryScreen && customPosition)
353357
{
354358
containerPanelX = panelX;
355359
containerPanelY = panelY;
@@ -376,6 +380,8 @@ public boolean handleMouseClick(AbstractContainerScreen<?> screen,
376380

377381
if(button == 0 && isInsideDragBar(mouseX, mouseY))
378382
{
383+
if(!usesFreePosition())
384+
return true;
379385
startPanelDrag(mouseX, mouseY);
380386
return true;
381387
}
@@ -531,6 +537,8 @@ private double getScrollThumbHeight(double trackHeight)
531537

532538
private void startPanelDrag(double mouseX, double mouseY)
533539
{
540+
if(!usesFreePosition())
541+
return;
534542
panelDragging = true;
535543
dragOffsetX = (int)Math.round(mouseX - panelX);
536544
dragOffsetY = (int)Math.round(mouseY - panelY);
@@ -542,6 +550,8 @@ private void startPanelDrag(double mouseX, double mouseY)
542550

543551
private void savePanelPosition()
544552
{
553+
if(!usesFreePosition())
554+
return;
545555
if(renderingInventoryScreen)
546556
{
547557
savedInventoryPosition.setChecked(inventoryCustomPosition);
@@ -562,6 +572,48 @@ private void addHiddenPositionSetting(
562572
addSetting(setting);
563573
}
564574

575+
private boolean usesFreePosition()
576+
{
577+
return panelAnchor.getSelected() == PanelAnchor.FREE;
578+
}
579+
580+
private int getAnchoredPanelX(HandledScreenAccessor accessor)
581+
{
582+
int gap = panelAnchorGap.getValueI();
583+
return switch(panelAnchor.getSelected())
584+
{
585+
case LEFT -> accessor.getX() - panelWidth - gap;
586+
case RIGHT -> accessor.getX() + accessor.getBackgroundWidth() + gap;
587+
case TOP, BOTTOM -> accessor.getX()
588+
+ (accessor.getBackgroundWidth() - panelWidth) / 2;
589+
case FREE ->
590+
{
591+
if(renderingInventoryScreen)
592+
yield accessor.getX();
593+
yield accessor.getX() - panelWidth - PANEL_PADDING;
594+
}
595+
};
596+
}
597+
598+
private int getAnchoredPanelY(HandledScreenAccessor accessor)
599+
{
600+
int gap = panelAnchorGap.getValueI();
601+
return switch(panelAnchor.getSelected())
602+
{
603+
case LEFT, RIGHT -> accessor.getY();
604+
case TOP -> accessor.getY() - panelHeight - gap;
605+
case BOTTOM -> accessor.getY() + accessor.getBackgroundHeight()
606+
+ gap;
607+
case FREE ->
608+
{
609+
if(renderingInventoryScreen)
610+
yield accessor.getY() + accessor.getBackgroundHeight()
611+
+ PANEL_PADDING;
612+
yield accessor.getY();
613+
}
614+
};
615+
}
616+
565617
private void renderOverlay(GuiGraphicsExtractor context)
566618
{
567619
hitboxes.clear();
@@ -2318,6 +2370,28 @@ private static enum CategoryKind
23182370
POTION;
23192371
}
23202372

2373+
private static enum PanelAnchor
2374+
{
2375+
FREE("Free"),
2376+
LEFT("Left"),
2377+
RIGHT("Right"),
2378+
TOP("Top"),
2379+
BOTTOM("Bottom");
2380+
2381+
private final String displayName;
2382+
2383+
PanelAnchor(String displayName)
2384+
{
2385+
this.displayName = displayName;
2386+
}
2387+
2388+
@Override
2389+
public String toString()
2390+
{
2391+
return displayName;
2392+
}
2393+
}
2394+
23212395
private static enum GearCategory
23222396
{
23232397
HELMET("Armor (Helmet)"),

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ public final class GameStatsHack extends Hack implements PacketInputListener,
105105
private final CheckboxSetting showAverages =
106106
new CheckboxSetting("Show Averages", true);
107107

108+
private final CheckboxSetting pinAboveHackList =
109+
new CheckboxSetting("Pin above HackList", false);
110+
108111
private final CheckboxSetting showGraph =
109112
new CheckboxSetting("Show graph", false);
110113

@@ -163,6 +166,7 @@ public GameStatsHack()
163166
addSetting(hudOffsetY);
164167
addSetting(showPrefixes);
165168
addSetting(showAverages);
169+
addSetting(pinAboveHackList);
166170
addSetting(showGraph);
167171
addSetting(separateGraphWindow);
168172
addSetting(fpsGraphColor);
@@ -384,6 +388,11 @@ public boolean showAverages()
384388
return showAverages.isChecked();
385389
}
386390

391+
public boolean pinAboveHackList()
392+
{
393+
return pinAboveHackList.isChecked();
394+
}
395+
387396
public boolean showGraph()
388397
{
389398
return showGraph.isChecked();

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,12 @@ private void sendAlertIfNeeded(int currentCount)
499499
if(currentCount == lastAlertCount)
500500
return;
501501

502+
if(currentCount <= 0)
503+
{
504+
lastAlertCount = currentCount;
505+
return;
506+
}
507+
502508
long now = System.currentTimeMillis();
503509
long cooldownMs = alertCooldown.getValueI() * 1000L;
504510
if(now - lastAlertMs < cooldownMs)

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1563,7 +1563,9 @@ private boolean isOwnerCapableEntity(Entity entity)
15631563
{
15641564
if(entity == null || entity == MC.player)
15651565
return false;
1566-
if(entity instanceof Projectile || entity instanceof OwnableEntity)
1566+
if(entity instanceof Projectile projectile)
1567+
return isPlayerOwnedProjectile(projectile);
1568+
if(entity instanceof OwnableEntity)
15671569
return true;
15681570

15691571
try
@@ -1579,6 +1581,12 @@ private boolean isOwnerCapableEntity(Entity entity)
15791581
}
15801582
}
15811583

1584+
private static boolean isPlayerOwnedProjectile(Projectile projectile)
1585+
{
1586+
Entity owner = projectile.getOwner();
1587+
return owner instanceof Player;
1588+
}
1589+
15821590
private Entity getEntityOwner(Entity entity)
15831591
{
15841592
if(entity instanceof Projectile projectile)

0 commit comments

Comments
 (0)