feat: added trace, look, tool options to aura
option to check for visibility, option to change player rotation before attacking, option to switch to best tool
This commit is contained in:
parent
c13aa88bbd
commit
5ac2a187ba
1 changed files with 82 additions and 2 deletions
|
@ -6,10 +6,17 @@ import ftbsc.bscv.Boscovicino;
|
||||||
import ftbsc.bscv.ICommons;
|
import ftbsc.bscv.ICommons;
|
||||||
import ftbsc.bscv.api.ILoadable;
|
import ftbsc.bscv.api.ILoadable;
|
||||||
import ftbsc.bscv.modules.QuickModule;
|
import ftbsc.bscv.modules.QuickModule;
|
||||||
|
import ftbsc.bscv.modules.self.AutoTool;
|
||||||
import ftbsc.bscv.tools.Setting;
|
import ftbsc.bscv.tools.Setting;
|
||||||
|
import net.minecraft.command.arguments.EntityAnchorArgument;
|
||||||
|
import net.minecraft.command.arguments.EntityAnchorArgument.Type;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.network.play.client.CPlayerPacket;
|
||||||
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
import net.minecraft.util.math.vector.Vector3d;
|
||||||
import net.minecraftforge.common.ForgeConfigSpec;
|
import net.minecraftforge.common.ForgeConfigSpec;
|
||||||
import net.minecraftforge.event.TickEvent;
|
import net.minecraftforge.event.TickEvent;
|
||||||
import net.minecraftforge.event.TickEvent.Phase;
|
import net.minecraftforge.event.TickEvent.Phase;
|
||||||
|
@ -18,6 +25,13 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
@AutoService(ILoadable.class)
|
@AutoService(ILoadable.class)
|
||||||
public class Aura extends QuickModule implements ICommons {
|
public class Aura extends QuickModule implements ICommons {
|
||||||
|
|
||||||
|
private enum LookType {
|
||||||
|
NONE,
|
||||||
|
PACKET,
|
||||||
|
ONCE,
|
||||||
|
// RESET
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getDefaultKey() {
|
protected int getDefaultKey() {
|
||||||
return UNBOUND;
|
return UNBOUND;
|
||||||
|
@ -25,9 +39,15 @@ public class Aura extends QuickModule implements ICommons {
|
||||||
|
|
||||||
public final ForgeConfigSpec.ConfigValue<Double> reach;
|
public final ForgeConfigSpec.ConfigValue<Double> reach;
|
||||||
public final ForgeConfigSpec.ConfigValue<Double> strenght;
|
public final ForgeConfigSpec.ConfigValue<Double> strenght;
|
||||||
|
public final ForgeConfigSpec.ConfigValue<Boolean> tool;
|
||||||
|
public final ForgeConfigSpec.ConfigValue<Boolean> trace;
|
||||||
|
public final ForgeConfigSpec.ConfigValue<LookType> look;
|
||||||
|
public final ForgeConfigSpec.ConfigValue<Boolean> swing;
|
||||||
public final ForgeConfigSpec.ConfigValue<Boolean> neutral;
|
public final ForgeConfigSpec.ConfigValue<Boolean> neutral;
|
||||||
public final ForgeConfigSpec.ConfigValue<Boolean> friends;
|
public final ForgeConfigSpec.ConfigValue<Boolean> friends;
|
||||||
|
|
||||||
|
private AutoTool autotool;
|
||||||
|
|
||||||
public Aura() {
|
public Aura() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
@ -46,6 +66,30 @@ public class Aura extends QuickModule implements ICommons {
|
||||||
.fallback(1.)
|
.fallback(1.)
|
||||||
.build(this);
|
.build(this);
|
||||||
|
|
||||||
|
this.tool = Setting.Bool.builder()
|
||||||
|
.fallback(true)
|
||||||
|
.name("tool")
|
||||||
|
.comment("trigger AutoTool when attacking")
|
||||||
|
.build(this);
|
||||||
|
|
||||||
|
this.trace = Setting.Bool.builder()
|
||||||
|
.fallback(true)
|
||||||
|
.name("trace")
|
||||||
|
.comment("make sure mobs are visible before hitting")
|
||||||
|
.build(this);
|
||||||
|
|
||||||
|
this.look = Setting.Switch.builder(LookType.class)
|
||||||
|
.fallback(LookType.PACKET)
|
||||||
|
.name("look")
|
||||||
|
.comment("look at mobs before attacking them")
|
||||||
|
.build(this);
|
||||||
|
|
||||||
|
this.swing = Setting.Bool.builder()
|
||||||
|
.fallback(true)
|
||||||
|
.name("swing")
|
||||||
|
.comment("swing arm when attacking")
|
||||||
|
.build(this);
|
||||||
|
|
||||||
this.neutral = Setting.Bool.builder()
|
this.neutral = Setting.Bool.builder()
|
||||||
.fallback(false)
|
.fallback(false)
|
||||||
.name("neutral")
|
.name("neutral")
|
||||||
|
@ -59,6 +103,23 @@ public class Aura extends QuickModule implements ICommons {
|
||||||
.build(this);
|
.build(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onEnabled() {
|
||||||
|
this.autotool = (AutoTool) Boscovicino.modManager.get(AutoTool.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lookAtHidden(EntityAnchorArgument.Type anchor, Vector3d target) {
|
||||||
|
// This code comes from vanilla Minecraft, but we send a packet rather than turning player
|
||||||
|
Vector3d translated = anchor.apply(MC.player);
|
||||||
|
double d0 = target.x - translated.x;
|
||||||
|
double d1 = target.y - translated.y;
|
||||||
|
double d2 = target.z - translated.z;
|
||||||
|
double d3 = (double)MathHelper.sqrt(d0 * d0 + d2 * d2);
|
||||||
|
float xRot = MathHelper.wrapDegrees((float)(-(MathHelper.atan2(d1, d3) * (double)(180F / (float)Math.PI))));
|
||||||
|
float yRot = MathHelper.wrapDegrees((float)(MathHelper.atan2(d2, d0) * (double)(180F / (float)Math.PI)) - 90.0F);
|
||||||
|
MC.player.connection.send(new CPlayerPacket.RotationPacket(yRot, xRot, MC.player.isOnGround()));
|
||||||
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onTick(TickEvent.ClientTickEvent event) {
|
public void onTick(TickEvent.ClientTickEvent event) {
|
||||||
if (event.phase == Phase.END) return;
|
if (event.phase == Phase.END) return;
|
||||||
|
@ -79,9 +140,28 @@ public class Aura extends QuickModule implements ICommons {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!this.friends.get() && Boscovicino.friends().isFriend(e.getDisplayName().getString())) continue;
|
if (this.trace.get() && !MC.player.canSee(e)) continue;
|
||||||
MC.gameMode.attack(MC.player, e);
|
|
||||||
|
switch (this.look.get()) {
|
||||||
|
case ONCE:
|
||||||
|
MC.player.lookAt(Type.EYES, e.getEyePosition(1.0F));
|
||||||
|
MC.player.connection.send(new CPlayerPacket.RotationPacket(MC.player.yRot, MC.player.xRot, MC.player.isOnGround()));
|
||||||
break;
|
break;
|
||||||
|
case PACKET:
|
||||||
|
this.lookAtHidden(Type.EYES, e.getEyePosition(1.0F));
|
||||||
|
break;
|
||||||
|
case NONE: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.tool.get()) {
|
||||||
|
this.autotool.selectBestWeapon();
|
||||||
|
}
|
||||||
|
MC.gameMode.attack(MC.player, e);
|
||||||
|
if (this.swing.get()) {
|
||||||
|
MC.player.swing(Hand.MAIN_HAND);
|
||||||
|
}
|
||||||
|
|
||||||
|
break; // TODO should find all valid targets and choose one rather than stopping here
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue