Skip to content
This repository has been archived by the owner on May 12, 2024. It is now read-only.

Commit

Permalink
Target override command
Browse files Browse the repository at this point in the history
  • Loading branch information
Luna5ama committed Sep 12, 2023
1 parent c618e8e commit a92a0c2
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package dev.luna5ama.trollhack.command.commands

import dev.luna5ama.trollhack.command.ClientCommand
import dev.luna5ama.trollhack.manager.managers.CombatManager
import dev.luna5ama.trollhack.util.text.NoSpamMessage
import java.lang.ref.WeakReference

object TargetCommand : ClientCommand(
name = "target",
alias = arrayOf(),
description = "Override combat target"
) {
init {
player("player") { playerArg ->
executeSafe {
val targetPlayer = playerArg.value
if (targetPlayer.name == player.name) {
NoSpamMessage.sendError(TargetCommand, "You can't target yourself!")
return@executeSafe
}

val target = world.getPlayerEntityByName(targetPlayer.name)
if (target == null) {
NoSpamMessage.sendError(TargetCommand, "Player ${targetPlayer.name} not found!")
return@executeSafe
}

CombatManager.targetOverride = WeakReference(target)
NoSpamMessage.sendMessage("Targeting ${targetPlayer.name}")
}
}

executeSafe {
CombatManager.targetOverride = null
NoSpamMessage.sendMessage("Target override cleared")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import net.minecraft.network.play.server.*
import net.minecraft.util.SoundCategory
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Vec3d
import java.lang.ref.WeakReference
import java.util.*
import java.util.concurrent.ConcurrentHashMap
import kotlin.math.max
Expand All @@ -58,6 +59,7 @@ object CombatManager : Manager() {
private val hurtTimeMap = Int2LongMaps.synchronize(Int2LongOpenHashMap()).apply { defaultReturnValue(-1L) }
private val healthMap = Int2FloatMaps.synchronize(Int2FloatOpenHashMap()).apply { defaultReturnValue(Float.NaN) }

var targetOverride: WeakReference<EntityLivingBase>? = null
var target: EntityLivingBase? = null
get() {
if (field?.isEntityAlive == false) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import dev.fastmc.common.TimeUnit
import dev.fastmc.common.ceilToInt
import dev.fastmc.common.sq
import dev.luna5ama.trollhack.event.SafeClientEvent
import dev.luna5ama.trollhack.event.events.ConnectionEvent
import dev.luna5ama.trollhack.event.events.RunGameLoopEvent
import dev.luna5ama.trollhack.event.events.TickEvent
import dev.luna5ama.trollhack.event.events.render.Render2DEvent
Expand Down Expand Up @@ -205,6 +206,10 @@ internal object CombatSetting : Module(
override fun isActive() = KillAura.isActive() || BedAura.isActive() || TrollAura.isActive() || Surround.isActive()

init {
listener<ConnectionEvent.Disconnect> {
CombatManager.targetOverride = null
}

listener<RenderEntityEvent.Model.Pre> {
if (it.cancelled || !chams || it.entity != CombatManager.target) return@listener

Expand Down Expand Up @@ -286,15 +291,22 @@ internal object CombatSetting : Module(
overrideRange = if (it is KillAura) it.range else targetRange
}

val overrideTarget = CombatManager.targetOverride?.get()

val eyePos = player.eyePosition
val ignoreWall = shouldIgnoreWall()
val set = getTargetList()

val wallRangeSq = wallRange.sq
val newTarget = set.firstOrNull {
(overrideRange == targetRange || it.distanceTo(eyePos) < overrideRange)
&& (ignoreWall || (player.canEntityBeSeen(it) && player.distanceSqTo(it) <= wallRangeSq))
}
val newTarget =
if (overrideTarget != null && overrideTarget.distanceTo(eyePos) < overrideRange) {
overrideTarget
} else {
set.firstOrNull {
(overrideRange == targetRange || it.distanceTo(eyePos) < overrideRange)
&& (ignoreWall || (player.canEntityBeSeen(it) && player.distanceSqTo(it) <= wallRangeSq))
}
}
val tracker = CombatManager.trackerTarget?.takeIf { it.entity === newTarget }
?: newTarget?.let { MotionTracker(it) }

Expand Down

0 comments on commit a92a0c2

Please sign in to comment.