@@ -21,17 +21,18 @@ import com.lambda.config.applyEdits
2121import com.lambda.config.groups.EntityColorSettings
2222import com.lambda.config.groups.EntitySelectionSettings
2323import com.lambda.config.groups.OutlineSettings
24- import com.lambda.config.groups.ScreenLineSettings
2524import com.lambda.config.groups.WorldLineSettings
25+ import com.lambda.graphics.mc.RenderBuilder
2626import com.lambda.graphics.mc.renderer.ImmediateRenderer.Companion.immediateRenderer
2727import com.lambda.graphics.util.DynamicAABB.Companion.interpolatedBox
2828import com.lambda.module.Module
2929import com.lambda.module.tag.ModuleTag
30- import com.lambda.util.EntityUtils
3130import com.lambda.util.NamedEnum
3231import com.lambda.util.math.setAlpha
33- import fi.dy.masa.malilib.render.RenderUtils.depthTest
34- import net.minecraft.client.network.ClientPlayerEntity
32+ import net.minecraft.block.entity.BlockEntity
33+ import net.minecraft.entity.Entity
34+ import net.minecraft.util.math.Box
35+ import java.awt.Color
3536
3637object ESP : Module(
3738 name = " ESP" ,
@@ -72,16 +73,45 @@ object ESP : Module(
7273 with (safeContext) {
7374 world.entities.forEach { entity ->
7475 if (! entitySettings.isSelected(entity)) return @forEach
75- val entityColor = entityColors.getColor(entity)
76- when (mode) {
77- EspMode .Shader -> worldOutline(entity, outlineStyle.toStyle(entityColor))
78- EspMode .Box -> {
79- box(entity.interpolatedBox, boxOutlineSettings) {
80- if (! drawFilled) hideFill()
81- else if (! drawOutline) hideOutline()
82- colors(entityColor.setAlpha(fillAlpha), entityColor.setAlpha(outlineAlpha))
83- }
84- }
76+ val color = entityColors.getColor(entity)
77+ drawEsp<Entity >(
78+ entity,
79+ color,
80+ { worldOutline(it, outlineStyle.toStyle(color)) },
81+ { listOf (it.interpolatedBox) }
82+ )
83+ }
84+ val chunkMap = world.chunkManager.chunks
85+ (0 until chunkMap.loadedChunkCount).forEach { chunk ->
86+ chunkMap.chunks.get(chunk)?.blockEntities?.values?.forEach { blockEntity ->
87+ if (! entitySettings.isSelected(blockEntity)) return @forEach
88+ val color = entityColors.getColor(blockEntity)
89+ drawEsp<BlockEntity >(
90+ blockEntity,
91+ color,
92+ { worldOutline(it.pos, outlineStyle.toStyle(color)) },
93+ { it.cachedState.getOutlineShape(world, it.pos).boundingBoxes }
94+ )
95+ }
96+ }
97+ }
98+ }
99+ }
100+
101+ private fun <T > RenderBuilder.drawEsp (
102+ entity : T ,
103+ color : Color ,
104+ outline : RenderBuilder .(T ) -> Unit ,
105+ boxes : (T ) -> Collection <Box >
106+ ) {
107+ when (mode) {
108+ EspMode .Shader -> outline(entity)
109+ EspMode .Box -> {
110+ boxes(entity).forEach { box ->
111+ box(box, boxOutlineSettings) {
112+ if (! drawFilled) hideFill()
113+ else if (! drawOutline) hideOutline()
114+ colors(color.setAlpha(fillAlpha), color.setAlpha(outlineAlpha))
85115 }
86116 }
87117 }
0 commit comments