0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-20 01:12:13 +02:00

Merge #1054 (AutoFish Bite mode) into v7.46

This commit is contained in:
Alexander01998 2024-09-06 09:56:58 +02:00
commit c7fec44b16

View File

@ -9,7 +9,9 @@ package net.wurstclient.hacks;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.projectile.FishingBobberEntity;
import net.minecraft.item.Items;
import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket;
import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.math.Vec3d;
@ -23,6 +25,7 @@ import net.wurstclient.hacks.autofish.AutoFishDebugDraw;
import net.wurstclient.hacks.autofish.AutoFishRodSelector;
import net.wurstclient.hacks.autofish.FishingSpotManager;
import net.wurstclient.hacks.autofish.ShallowWaterWarningCheckbox;
import net.wurstclient.settings.EnumSetting;
import net.wurstclient.settings.SliderSetting;
import net.wurstclient.settings.SliderSetting.ValueDisplay;
@ -32,10 +35,20 @@ import net.wurstclient.settings.SliderSetting.ValueDisplay;
public final class AutoFishHack extends Hack
implements UpdateListener, PacketInputListener, RenderListener
{
private final EnumSetting<AutoFishHack.Mode> biteMode = new EnumSetting<>(
"Bite mode",
"\u00a7lSound\u00a7r mode detects bites by listening for the bite sound.\n"
+ "This method is less accurate, but is more resilient against anti-cheats.\n"
+ "See the \"Valid range\" setting.\n\n"
+ "\u00a7lEntity\u00a7r mode detects bites by listening for fishing hook's entity update packet.\n"
+ "It's more accurate than the sound method, but is less resilient against anti-cheats.",
AutoFishHack.Mode.values(), AutoFishHack.Mode.SOUND);
private final SliderSetting validRange = new SliderSetting("Valid range",
"Any bites that occur outside of this range will be ignored.\n\n"
+ "Increase your range if bites are not being detected, decrease it"
+ " if other people's bites are being detected as yours.",
+ " if other people's bites are being detected as yours.\n\n"
+ "This setting has effect only when \"Mode\" is set to \"Sound\".",
1.5, 0.25, 8, 0.25, ValueDisplay.DECIMAL);
private final SliderSetting catchDelay = new SliderSetting("Catch delay",
@ -69,6 +82,7 @@ public final class AutoFishHack extends Hack
{
super("AutoFish");
setCategory(Category.OTHER);
addSetting(biteMode);
addSetting(validRange);
addSetting(catchDelay);
addSetting(retryDelay);
@ -166,6 +180,15 @@ public final class AutoFishHack extends Hack
@Override
public void onReceivedPacket(PacketInputEvent event)
{
switch(biteMode.getSelected())
{
case SOUND -> processSoundUpdate(event);
case ENTITY -> processEntityUpdate(event);
}
}
private void processSoundUpdate(PacketInputEvent event)
{
// check packet type
if(!(event.getPacket() instanceof PlaySoundS2CPacket sound))
@ -193,6 +216,28 @@ public final class AutoFishHack extends Hack
biteDetected = true;
}
private void processEntityUpdate(PacketInputEvent event)
{
// check packet type
if(!(event.getPacket() instanceof EntityTrackerUpdateS2CPacket update))
return;
// check if the entity is a bobber
if(!(MC.world
.getEntityById(update.id()) instanceof FishingBobberEntity bobber))
return;
// check if it's our bobber
if(bobber != MC.player.fishHook)
return;
// check if player is fishing
if(!isFishing())
return;
biteDetected = true;
}
@Override
public void onRender(MatrixStack matrixStack, float partialTicks)
{
@ -206,4 +251,23 @@ public final class AutoFishHack extends Hack
&& !player.fishHook.isRemoved()
&& player.getMainHandStack().isOf(Items.FISHING_ROD);
}
private enum Mode
{
SOUND("Sound"),
ENTITY("Entity");
private final String name;
private Mode(String name)
{
this.name = name;
}
@Override
public String toString()
{
return name;
}
}
}