Skip to content

Commit df89d64

Browse files
committed
Update FastBreak.kt
1 parent 36e0057 commit df89d64

File tree

1 file changed

+47
-85
lines changed
  • common/src/main/kotlin/com/lambda/module/modules/player

1 file changed

+47
-85
lines changed

common/src/main/kotlin/com/lambda/module/modules/player/FastBreak.kt

Lines changed: 47 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ import com.lambda.event.events.PlayerEvent
2323
import com.lambda.event.events.RenderEvent
2424
import com.lambda.event.events.TickEvent
2525
import com.lambda.event.listener.SafeListener.Companion.listen
26-
import com.lambda.graphics.renderer.esp.DynamicAABB
2726
import com.lambda.graphics.renderer.esp.builders.buildFilled
2827
import com.lambda.graphics.renderer.esp.builders.buildOutline
29-
import com.lambda.graphics.renderer.esp.global.DynamicESP
3028
import com.lambda.module.Module
3129
import com.lambda.module.tag.ModuleTag
3230
import com.lambda.util.math.lerp
@@ -45,46 +43,27 @@ object FastBreak : Module(
4543
) {
4644
private val page by setting("Page", Page.Mining)
4745

48-
private val breakDelay by setting("Break Delay", 5, 0..5, 1, unit = "ticks", description = "The tick delay between breaking blocks", visibility = { page == Page.Mining })
49-
private val breakThreshold by setting("Break Threshold", 0.7f, 0.2f..1.0f, 0.1f, description = "The progress at which the block will break.", visibility = { page == Page.Mining })
46+
private val breakDelay by setting("Break Delay", 5, 0..5, 1, "The tick delay between breaking blocks", unit = " ticks") { page == Page.Mining }
47+
private val breakThreshold by setting("Break Threshold", 0.7f, 0.2f..1.0f, 0.1f, "The progress at which the block will break.") { page == Page.Mining }
5048

51-
private val renderMode by setting("Render Mode", RenderMode.Out, "The animation style of the renders", visibility = { page == Page.Render })
52-
private val renderSetting by setting("Render Setting", RenderSetting.Both, "The different ways to draw the renders", visibility = { page == Page.Render && renderMode.isEnabled() })
49+
private val render by setting("Render", true, "Render block breaking progress")
50+
private val renderMode by setting("Render Mode", RenderMode.Out, "The animation style of the renders") { page == Page.Render }
51+
private val renderSetting by setting("Render Setting", RenderSetting.Both, "The different ways to draw the renders") { page == Page.Render && render }
5352

54-
private val fillColourMode by setting("Fill Mode", ColourMode.Dynamic, visibility = { page == Page.Render && renderSetting != RenderSetting.Outline })
55-
private val staticFillColour by setting("Static Fill Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the static fill of the box", visibility = { page == Page.Render && renderMode.isEnabled() && renderSetting != RenderSetting.Outline && fillColourMode == ColourMode.Static })
56-
private val startFillColour by setting("Start Fill Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the start fill of the box", visibility = { page == Page.Render && renderMode.isEnabled() && renderSetting != RenderSetting.Outline && fillColourMode == ColourMode.Dynamic })
57-
private val endFillColour by setting("End Fill Colour", Color(0f, 1f, 0f, 0.3f), "The colour used to render the end fill of the box", visibility = { page == Page.Render && renderMode.isEnabled() && renderSetting != RenderSetting.Outline && fillColourMode == ColourMode.Dynamic })
53+
private val fillColourMode by setting("Fill Mode", ColourMode.Dynamic) { page == Page.Render && renderSetting != RenderSetting.Outline }
54+
private val staticFillColour by setting("Static Fill Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the static fill of the box") { page == Page.Render && render && renderSetting != RenderSetting.Outline && fillColourMode == ColourMode.Static }
55+
private val startFillColour by setting("Start Fill Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the start fill of the box") { page == Page.Render && render && renderSetting != RenderSetting.Outline && fillColourMode == ColourMode.Dynamic }
56+
private val endFillColour by setting("End Fill Colour", Color(0f, 1f, 0f, 0.3f), "The colour used to render the end fill of the box") { page == Page.Render && render && renderSetting != RenderSetting.Outline && fillColourMode == ColourMode.Dynamic }
5857

59-
private val outlineColourMode by setting("Outline Mode", ColourMode.Dynamic, visibility = { page == Page.Render && renderSetting != RenderSetting.Fill })
60-
private val staticOutlineColour by setting("Static Outline Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the static outline of the box", visibility = { page == Page.Render && renderMode.isEnabled() && renderSetting != RenderSetting.Fill && outlineColourMode == ColourMode.Static })
61-
private val startOutlineColour by setting("Start Outline Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the start outline of the box", visibility = { page == Page.Render && renderMode.isEnabled() && renderSetting != RenderSetting.Fill && outlineColourMode == ColourMode.Dynamic })
62-
private val endOutlineColour by setting("End Outline Colour", Color(0f, 1f, 0f, 0.3f), "The colour used to render the end outline of the box", visibility = { page == Page.Render && renderMode.isEnabled() && renderSetting != RenderSetting.Fill && outlineColourMode == ColourMode.Dynamic })
63-
private val outlineWidth by setting("Outline Width", 1f, 0f..3f, 0.1f, "the thickness of the outline", visibility = { page == Page.Render && renderMode.isEnabled() && renderSetting != RenderSetting.Fill })
58+
private val outlineColourMode by setting("Outline Mode", ColourMode.Dynamic) { page == Page.Render && renderSetting != RenderSetting.Fill }
59+
private val staticOutlineColour by setting("Static Outline Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the static outline of the box") { page == Page.Render && render && renderSetting != RenderSetting.Fill && outlineColourMode == ColourMode.Static }
60+
private val startOutlineColour by setting("Start Outline Colour", Color(1f, 0f, 0f, 0.3f), "The colour used to render the start outline of the box") { page == Page.Render && render && renderSetting != RenderSetting.Fill && outlineColourMode == ColourMode.Dynamic }
61+
private val endOutlineColour by setting("End Outline Colour", Color(0f, 1f, 0f, 0.3f), "The colour used to render the end outline of the box") { page == Page.Render && render && renderSetting != RenderSetting.Fill && outlineColourMode == ColourMode.Dynamic }
62+
private val outlineWidth by setting("Outline Width", 1f, 0f..3f, 0.1f, "the thickness of the outline") { page == Page.Render && render && renderSetting != RenderSetting.Fill }
6463

6564

66-
private val renderer = DynamicESP
6765
private var boxSet = emptySet<Box>()
6866

69-
private enum class Page {
70-
Mining, Render
71-
}
72-
73-
private enum class RenderMode {
74-
Out, In, InOut, OutIn, Static, None;
75-
76-
fun isEnabled(): Boolean =
77-
this != None
78-
}
79-
80-
private enum class ColourMode {
81-
Static, Dynamic
82-
}
83-
84-
private enum class RenderSetting {
85-
Both, Fill, Outline
86-
}
87-
8867
init {
8968
listen<PacketEvent.Send.Pre> {
9069
if (it.packet !is PlayerActionC2SPacket
@@ -112,70 +91,53 @@ object FastBreak : Module(
11291
.calcBlockBreakingDelta(player, world, it.pos) * (1 - breakThreshold)
11392
}
11493

115-
listen<TickEvent.Post> {
116-
if (!renderMode.isEnabled()) return@listen
117-
118-
val pos = interaction.currentBreakingPos
119-
boxSet = world.getBlockState(pos).getOutlineShape(world, pos).boundingBoxes.toSet()
120-
}
121-
122-
listen<RenderEvent.World> {
123-
if (!interaction.isBreakingBlock || !renderMode.isEnabled()) return@listen
94+
listen<RenderEvent.StaticESP> { event ->
95+
if (!render || !interaction.isBreakingBlock) return@listen
12496

12597
val pos = interaction.currentBreakingPos
12698
val breakDelta = world.getBlockState(pos).calcBlockBreakingDelta(player, world, pos)
12799

128-
renderer.clear()
129-
boxSet.forEach { box ->
100+
world.getBlockState(pos).getOutlineShape(world, pos).boundingBoxes.forEach {
130101
val previousFactor = interaction.currentBreakingProgress - breakDelta
131102
val nextFactor = interaction.currentBreakingProgress
132-
val currentFactor = lerp(mc.tickDelta, previousFactor, nextFactor)
103+
val factor = lerp(mc.tickDelta, previousFactor, nextFactor).toDouble()
133104

134-
val fillColour = if (fillColourMode == ColourMode.Dynamic) {
135-
lerp(currentFactor.toDouble(), startFillColour, endFillColour)
136-
} else {
137-
staticFillColour
138-
}
105+
val fillColour = fillColourMode.block(factor, if (fillColourMode == ColourMode.Static) staticFillColour else startFillColour, endFillColour)
106+
val outlineColor = outlineColourMode.block(factor, if (fillColourMode == ColourMode.Static) staticOutlineColour else startOutlineColour, endOutlineColour)
107+
val box = renderMode.block(factor, it)
108+
.offset(pos)
139109

140-
val outlineColour = if (outlineColourMode == ColourMode.Dynamic) {
141-
lerp(currentFactor.toDouble(), startOutlineColour, endOutlineColour)
142-
} else {
143-
staticOutlineColour
144-
}
110+
when (renderSetting) {
111+
RenderSetting.Both -> {
112+
event.renderer.buildFilled(box, fillColour)
113+
event.renderer.buildOutline(box, outlineColor)
114+
}
145115

146-
val renderBox = if (renderMode != RenderMode.Static) {
147-
getLerpBox(box, currentFactor).offset(pos)
148-
} else {
149-
box.offset(pos)
116+
RenderSetting.Fill -> event.renderer.buildFilled(box, fillColour)
117+
RenderSetting.Outline -> event.renderer.buildOutline(box, outlineColor)
150118
}
151-
152-
val dynamicAABB = DynamicAABB()
153-
dynamicAABB.update(renderBox)
154-
155-
if (renderSetting != RenderSetting.Outline) renderer.buildFilled(dynamicAABB, fillColour)
156-
if (renderSetting != RenderSetting.Fill) renderer.buildOutline(dynamicAABB, outlineColour)
157119
}
158-
renderer.upload()
159120
}
160121
}
161122

162-
private fun getLerpBox(box: Box, factor: Float): Box {
163-
val boxCenter = Box(box.center, box.center)
164-
return when (renderMode) {
165-
RenderMode.Out -> lerp(factor.toDouble(), boxCenter, box)
166-
RenderMode.In -> lerp(factor.toDouble(), box, boxCenter)
167-
RenderMode.InOut -> {
168-
if (factor >= 0.5f) lerp((factor.toDouble() - 0.5) * 2, boxCenter, box)
169-
else lerp(factor.toDouble() * 2, box, boxCenter)
170-
}
171-
RenderMode.OutIn -> {
172-
if (factor >= 0.5f) lerp((factor.toDouble() - 0.5) * 2, box, boxCenter)
173-
else lerp(factor.toDouble() * 2, boxCenter, box)
174-
}
175-
else -> box
176-
}
123+
enum class Page {
124+
Mining, Render
177125
}
178126

179-
fun SafeContext.interpolateProgress(min: Double = 0.0, max: Double = 1.0) =
180-
transform(interaction.currentBreakingProgress.toDouble(), 0.0, 1.0, min, max)
127+
enum class RenderSetting {
128+
Both, Fill, Outline
129+
}
130+
131+
enum class ColourMode(val block: (Double, Color, Color) -> Color) {
132+
Static({ _, start, _ -> start }),
133+
Dynamic({ factor, start, end -> lerp(factor, start, end) })
134+
}
135+
136+
val Box.ofCenter: Box get() = Box(center, center)
137+
138+
enum class RenderMode(val block: (Double, Box) -> Box) {
139+
Out({ factor, box -> lerp(factor, box.ofCenter, box)}),
140+
In({ factor, box -> lerp(factor, box, box.ofCenter)}),
141+
Static({ _, box -> box });
142+
}
181143
}

0 commit comments

Comments
 (0)