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

Commit

Permalink
Fixed AutoRegear range check
Browse files Browse the repository at this point in the history
  • Loading branch information
Luna5ama committed Sep 13, 2023
1 parent 4b98745 commit 040dc62
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import dev.luna5ama.trollhack.event.events.WorldEvent
import dev.luna5ama.trollhack.event.listener
import dev.luna5ama.trollhack.event.safeParallelListener
import dev.luna5ama.trollhack.manager.Manager
import dev.luna5ama.trollhack.util.math.intersectsBlock
import it.unimi.dsi.fastutil.ints.Int2ObjectMap
import it.unimi.dsi.fastutil.ints.Int2ObjectMaps
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.util.math.AxisAlignedBB
import net.minecraft.util.math.BlockPos

object EntityManager : Manager() {
private var entity0 = emptyList<Entity>()
Expand Down Expand Up @@ -110,7 +112,7 @@ object EntityManager : Manager() {

fun getPlayerByID(id: Int): EntityPlayer? = playersByID[id]

fun checkEntityCollision(box: AxisAlignedBB, predicate: (Entity) -> Boolean): Boolean {
fun checkNoEntityCollision(box: AxisAlignedBB, predicate: (Entity) -> Boolean): Boolean {
return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it.preventEntitySpawning }
Expand All @@ -119,8 +121,8 @@ object EntityManager : Manager() {
.none()
}

fun checkEntityCollision(box: AxisAlignedBB, ignoreEntity: Entity?): Boolean {
if (ignoreEntity == null) return checkEntityCollision(box)
fun checkNoEntityCollision(box: AxisAlignedBB, ignoreEntity: Entity?): Boolean {
if (ignoreEntity == null) return checkNoEntityCollision(box)

return entity.asSequence()
.filter { it.isEntityAlive }
Expand All @@ -130,34 +132,60 @@ object EntityManager : Manager() {
.none()
}

fun checkEntityCollision(box: AxisAlignedBB): Boolean {
fun checkNoEntityCollision(pos: BlockPos, ignoreEntity: Entity?): Boolean {
if (ignoreEntity == null) return checkNoEntityCollision(pos)

return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it.preventEntitySpawning }
.filter { it != ignoreEntity || it.isRidingSameEntity(ignoreEntity) }
.filter { it.entityBoundingBox.intersectsBlock(pos) }
.none()
}

fun checkNoEntityCollision(box: AxisAlignedBB): Boolean {
return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it.preventEntitySpawning }
.filter { it.entityBoundingBox.intersects(box) }
.none()
}

fun checkAnyEntity(box: AxisAlignedBB, predicate: (Entity) -> Boolean): Boolean {
fun checkNoEntityCollision(pos: BlockPos): Boolean {
return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it.preventEntitySpawning }
.filter { it.entityBoundingBox.intersectsBlock(pos) }
.none()
}

fun checkNoEntity(box: AxisAlignedBB, predicate: (Entity) -> Boolean): Boolean {
return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it.entityBoundingBox.intersects(box) }
.filter(predicate)
.none()
}

fun checkAnyEntity(box: AxisAlignedBB, ignoreEntity: Entity): Boolean {
fun checkNoEntity(box: AxisAlignedBB, ignoreEntity: Entity): Boolean {
return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it != ignoreEntity }
.filter { it.entityBoundingBox.intersects(box) }
.none()
}

fun checkAnyEntity(box: AxisAlignedBB): Boolean {
fun checkNoEntity(box: AxisAlignedBB): Boolean {
return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it.entityBoundingBox.intersects(box) }
.none()
}

fun checkNoEntity(pos: BlockPos): Boolean {
return entity.asSequence()
.filter { it.isEntityAlive }
.filter { it.entityBoundingBox.intersectsBlock(pos) }
.none()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import dev.luna5ama.trollhack.module.modules.exploit.Bypass
import dev.luna5ama.trollhack.module.modules.player.InventorySorter
import dev.luna5ama.trollhack.module.modules.player.Kit
import dev.luna5ama.trollhack.util.Bind
import dev.luna5ama.trollhack.util.EntityUtils.eyePosition
import dev.luna5ama.trollhack.util.EntityUtils.isFriend
import dev.luna5ama.trollhack.util.EntityUtils.isSelf
import dev.luna5ama.trollhack.util.EntityUtils.spoofSneak
Expand Down Expand Up @@ -187,6 +188,8 @@ internal object AutoRegear : Module(
if (!placeShulker) return@safeParallelListener
placeShulker = false

Notification.send(AutoRegear, "$chatName Regearing...")

val shulkerSlot = player.allSlotsPrioritized.firstBlock<BlockShulkerBox>() ?: return@safeParallelListener

ConcurrentScope.launch {
Expand All @@ -207,7 +210,7 @@ internal object AutoRegear : Module(
val rangeSq = placeRange * placeRange
val mutable = BlockPos.MutableBlockPos()

VectorUtils.getBlockPosInSphere(player, placeRange)
VectorUtils.getBlockPosInSphere(player.eyePosition, placeRange + 3.0f)
.filterNot { world.getBlockState(it).isReplaceable }
.flatMap { pos ->
directions.asSequence().filter {
Expand All @@ -219,7 +222,7 @@ internal object AutoRegear : Module(
) < rangeSq
}.filter {
world.getBlockState(mutable.setAndAdd(pos, it)).isReplaceable
&& EntityManager.checkEntityCollision(AxisAlignedBB(mutable))
&& EntityManager.checkNoEntityCollision(mutable)
&& world.isAir(mutable.move(it))
}.map {
pos to it
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ internal object AutoTrap : Module(
val pos = center.add(offset)
if (toIgnore.contains(pos)) continue
if (!world.getBlockState(pos).isReplaceable) continue
if (!EntityManager.checkEntityCollision(AxisAlignedBB(pos))) continue
if (!EntityManager.checkNoEntityCollision(AxisAlignedBB(pos))) continue

return getPlacement(
pos,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ internal object AutoBurrow : Module(

private fun SafeClientEvent.canPlace(pos: BlockPos): Boolean {
return pos.up(2).let { world.getBlockState(it).getCollisionBoundingBox(world, it) == null }
&& EntityManager.checkEntityCollision(AxisAlignedBB(pos), player)
&& EntityManager.checkNoEntityCollision(pos, player)
}

private fun isValidHole(holeInfo: HoleInfo): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import dev.luna5ama.trollhack.module.Category
import dev.luna5ama.trollhack.module.Module
import dev.luna5ama.trollhack.translation.TranslateType
import dev.luna5ama.trollhack.util.EntityUtils.eyePosition
import dev.luna5ama.trollhack.util.MovementUtils.applySpeedPotionEffects
import dev.luna5ama.trollhack.util.SwingMode
import dev.luna5ama.trollhack.util.extension.synchronized
import dev.luna5ama.trollhack.util.interfaces.DisplayEnum
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/dev/luna5ama/trollhack/util/world/Check.kt
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ fun SafeClientEvent.hasNeighbor(pos: BlockPos): Boolean {
*/
fun World.isPlaceable(pos: BlockPos, ignoreSelfCollide: Boolean = false) =
this.getBlockState(pos).isReplaceable
&& EntityManager.checkEntityCollision(AxisAlignedBB(pos), if (ignoreSelfCollide) Wrapper.player else null)
&& EntityManager.checkNoEntityCollision(AxisAlignedBB(pos), if (ignoreSelfCollide) Wrapper.player else null)

fun World.checkBlockCollision(pos: BlockPos, box: AxisAlignedBB, tolerance: Double = 0.005): Boolean {
val blockBox = getCollisionBox(pos) ?: return false
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/dev/luna5ama/trollhack/util/world/Interact.kt
Original file line number Diff line number Diff line change
Expand Up @@ -185,12 +185,12 @@ fun interface PlacementSearchOption {

@JvmField
val ENTITY_COLLISION = PlacementSearchOption { _, _, to ->
EntityManager.checkEntityCollision(AxisAlignedBB(to))
EntityManager.checkNoEntityCollision(to)
}

@JvmField
val ENTITY_COLLISION_IGNORE_SELF = PlacementSearchOption { _, _, to ->
EntityManager.checkEntityCollision(AxisAlignedBB(to))
EntityManager.checkNoEntityCollision(to)
}
}
}
Expand Down

0 comments on commit 040dc62

Please sign in to comment.