@@ -41,6 +41,7 @@ import net.minecraft.util.math.BlockPos
4141import net.minecraft.util.math.Direction
4242import net.minecraft.world.LightType
4343import java.awt.Color
44+ import kotlin.collections.forEach
4445
4546object LightLevels : Module(
4647 name = " LightLevels" ,
@@ -56,6 +57,7 @@ object LightLevels : Module(
5657 .onValueChange { _, _ -> chunkedRenderer.clear(); refreshChunkedRenderer(this ) }
5758 private val minLightLevel by setting(" Min Light Level" , 0 , 0 .. 15 ).onValueChange(::refreshChunkedRenderer)
5859 private val renderMode by setting(" Render Mode" , RenderMode .Square ).onValueChange(::refreshChunkedRenderer)
60+ private val areaMode by setting(" Area Mode" , AreaMode .Both , " Where to build renders around" ) { mode == Mode .Radius }
5961 private val color by setting(" Color" , Color .RED ).onValueChange(::refreshChunkedRenderer)
6062 private val size by setting(" Size" , 14 , 1 .. 16 ).onValueChange(::refreshChunkedRenderer)
6163 private val fill by setting(" Fill" , false ) { renderMode == RenderMode .Square }.group(Group .Fill ).onValueChange(::refreshChunkedRenderer)
@@ -78,14 +80,25 @@ object LightLevels : Module(
7880 init {
7981 tickedRenderer(" LightLevels Ticked Renderer" , { depthTest }) { safeContext ->
8082 if (mode != Mode .Radius ) return @tickedRenderer
81- val playerPos = mc.gameRenderer.camera.pos.flooredBlockPos
8283
84+ val positions = hashSetOf<BlockPos >()
8385 val dashStyle = worldLineConfig.getDashStyle()
84- (playerPos.x - horizontalRange.. playerPos.x + horizontalRange).forEach { x ->
85- (playerPos.z - horizontalRange.. playerPos.z + horizontalRange).forEach { z ->
86- (playerPos.y - verticalRange.. playerPos.y + verticalRange).forEach { y ->
87- with (safeContext) { buildRender(BlockPos (x, y, z), dashStyle) }
88- }
86+
87+ with (safeContext) {
88+ if (areaMode.player) buildPositions(positions, player.blockPos)
89+ if (areaMode.camera) buildPositions(positions, mc.gameRenderer.camera.pos.flooredBlockPos)
90+ positions.forEach { pos ->
91+ buildRender(pos, dashStyle)
92+ }
93+ }
94+ }
95+ }
96+
97+ private fun buildPositions (collection : MutableCollection <BlockPos >, center : BlockPos ) {
98+ (center.x - horizontalRange.. center.x + horizontalRange).forEach { x ->
99+ (center.z - horizontalRange.. center.z + horizontalRange).forEach { z ->
100+ (center.y - verticalRange.. center.y + verticalRange).forEach { y ->
101+ collection.add(BlockPos (x, y, z))
89102 }
90103 }
91104 }
@@ -149,4 +162,10 @@ object LightLevels : Module(
149162 Cross ,
150163 Circle
151164 }
165+
166+ private enum class AreaMode (val player : Boolean , val camera : Boolean ) {
167+ Both (true , true ),
168+ Camera (false , true ),
169+ Player (true , false )
170+ }
152171}
0 commit comments