Skip to content

Commit 571e04d

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 8385f28 + 4514c4d commit 571e04d

9 files changed

Lines changed: 51 additions & 188 deletions

File tree

build.gradle

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
}
99

1010
dependencies {
11-
classpath 'net.minecraftforge.gradle:ForgeGradle:4.+'
11+
classpath 'net.minecraftforge.gradle:ForgeGradle:5.+'
1212
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
1313
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
1414
}
@@ -67,7 +67,7 @@ dependencies {
6767
minecraft "net.minecraftforge:forge:$minecraftVersion-$forgeVersion"
6868

6969
// Online maven dependency coming soon
70-
implementation(files("lib/lambda-3.0.1-api.jar"))
70+
implementation(files("lib/lambda-3.1-api.jar"))
7171

7272
implementation('org.spongepowered:mixin:0.7.11-SNAPSHOT') {
7373
exclude module: 'commons-io'
@@ -131,9 +131,14 @@ processResources {
131131
exclude '**/rawimagefiles'
132132

133133
from(sourceSets.main.resources.srcDirs) {
134+
duplicatesStrategy = DuplicatesStrategy.INCLUDE
134135
include 'plugin_info.json'
135136
expand 'version': project.version
136137
}
137138
}
138139

140+
test {
141+
useJUnitPlatform()
142+
}
143+
139144
jar.finalizedBy('reobfJar')
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

src/main/kotlin/org/lambda/ExampleCommand.kt

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/main/kotlin/org/lambda/ExampleLabelHud.kt

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/main/kotlin/org/lambda/ExampleModule.kt

Lines changed: 0 additions & 72 deletions
This file was deleted.

src/main/kotlin/org/lambda/MusicToolsPlugin.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ internal object MusicToolsPlugin : Plugin() {
77
override fun onLoad() {
88
// Load any modules, commands, or HUD elements here
99
modules.add(NoteESP)
10-
commands.add(ExampleCommand)
11-
hudElements.add(ExampleLabelHud)
1210
}
1311

1412
override fun onUnload() {

src/main/kotlin/org/lambda/NoteESP.kt

Lines changed: 43 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.lambda.client.event.events.PacketEvent
44
import com.lambda.client.event.events.RenderOverlayEvent
55
import com.lambda.client.event.events.RenderWorldEvent
66
import com.lambda.client.module.Category
7-
import com.lambda.client.module.modules.render.StorageESP
87
import com.lambda.client.plugin.api.PluginModule
98
import com.lambda.client.util.TickTimer
109
import com.lambda.client.util.graphics.ESPRenderer
@@ -14,15 +13,20 @@ import com.lambda.client.util.graphics.font.FontRenderAdapter
1413
import com.lambda.client.util.math.CoordinateConverter.asString
1514
import com.lambda.client.util.math.VectorUtils.toVec3dCenter
1615
import com.lambda.client.util.text.MessageSendHelper
16+
import com.lambda.client.util.threads.defaultScope
17+
import com.lambda.client.util.threads.runSafe
1718
import com.lambda.client.util.threads.safeListener
19+
import kotlinx.coroutines.launch
1820
import net.minecraft.block.BlockNote
1921
import net.minecraft.network.play.server.SPacketBlockAction
2022
import net.minecraft.util.math.BlockPos
2123
import net.minecraftforge.event.world.NoteBlockEvent
24+
import net.minecraftforge.fml.common.gameevent.TickEvent
2225
import org.lambda.util.Note
2326
import org.lwjgl.opengl.GL11
2427
import java.util.*
2528
import java.util.concurrent.ConcurrentHashMap
29+
import kotlin.coroutines.coroutineContext
2630

2731
internal object NoteESP : PluginModule(
2832
name = "NoteESP",
@@ -31,15 +35,13 @@ internal object NoteESP : PluginModule(
3135
pluginMain = MusicToolsPlugin
3236
)
3337

34-
//TODO: remove rendering when block is broken
35-
3638
{
3739
private val page by setting("Page", Page.SETTINGS)
3840

39-
private val boxRange by setting("Render Range for box", 32, 0..265, 4, { (renderMode == RenderMode.RANGE || renderMode == RenderMode.TUNINGMODE) && page == Page.SETTINGS }, description = "Range for Rendering of the box")
40-
private val textRange by setting("Render Range for text ", 32, 0..256, 4, { (renderMode == RenderMode.RANGE || renderMode == RenderMode.TUNINGMODE) && page == Page.SETTINGS }, description = "Range for Rendering of the text")
41-
private val renderMode by setting("Rendering", RenderMode.RANGE, { page == Page.SETTINGS }, description = "Changes Render Mode")
42-
private val tuningRange by setting("Tuning Range", 2, 2..6, 1, { renderMode == RenderMode.TUNINGMODE && page == Page.SETTINGS }, description = "Rendering for Y Level below feet")
41+
private val boxRange by setting("Render Range for box", 32, 0..265, 4, { page == Page.SETTINGS }, description = "Range for Rendering of the box")
42+
private val textRange by setting("Render Range for text", 32, 0..256, 4, { page == Page.SETTINGS }, description = "Range for Rendering of the text")
43+
private val tuning by setting("Tuning Mode", false, { page == Page.SETTINGS }, description = "Selectively renders only relevant layers")
44+
private val tuningRange by setting("Tuning Range", 2, 2..6, 1, { tuning && page == Page.SETTINGS }, description = "Rendering for Y Level below feet")
4345
private val reset = setting("Reset", false, { page == Page.SETTINGS }, description = "Resets cached notes")
4446
private val debug by setting("Debug", false, { page == Page.SETTINGS }, description = "Debug messages in chat")
4547

@@ -53,8 +55,8 @@ internal object NoteESP : PluginModule(
5355

5456
private val cachedMusicData = ConcurrentHashMap<BlockPos, MusicData>()
5557
private val renderer = ESPRenderer()
56-
// private val updateTimer = TickTimer()
57-
// private const val updateDelay = 1000
58+
private val updateTimer = TickTimer()
59+
private const val updateDelay = 1000L
5860

5961
private enum class Page {
6062
SETTINGS, RENDER
@@ -64,10 +66,6 @@ internal object NoteESP : PluginModule(
6466
DEFAULT, RAINBOW
6567
}
6668

67-
enum class RenderMode {
68-
RANGE, TUNINGMODE
69-
}
70-
7169
// reset button
7270
init {
7371
reset.consumers.add { _, it ->
@@ -95,79 +93,61 @@ internal object NoteESP : PluginModule(
9593
}
9694
}
9795

96+
safeListener<TickEvent.ClientTickEvent> { event ->
97+
if (event.phase != TickEvent.Phase.START || !updateTimer.tick(updateDelay)) return@safeListener
98+
defaultScope.launch {
99+
runSafe {
100+
cachedMusicData
101+
.filter { world.getBlockState(it.key).block !is BlockNote }
102+
.forEach { cachedMusicData.remove(it.key) }
103+
}
104+
}
105+
}
106+
98107
//renders box
99108
safeListener<RenderWorldEvent> {
100109
renderer.aFilled = if (filled) alphaFilled else 0
101110
renderer.aOutline = if (outline) alphaOutline else 0
102111
renderer.thickness = thickness
103112

104-
cachedMusicData.forEach {
105-
if (renderMode == RenderMode.RANGE) {
106-
if (player.getPositionEyes(1f).distanceTo(it.key.toVec3dCenter()) < boxRange) {
107-
renderer.add(it.key, it.value.color)
108-
}
109-
}
110-
if (renderMode == RenderMode.TUNINGMODE) {
111-
if ((it.key.y > player.getPositionEyes(1f).y.toInt() - tuningRange - 2) &&
112-
(player.getPositionEyes(1f).distanceTo(it.key.toVec3dCenter()) < boxRange)) {
113-
renderer.add(it.key, it.value.color)
114-
}
115-
}
113+
var renderData = cachedMusicData.filter { player.positionVector.distanceTo(it.key.toVec3dCenter()) < boxRange }
114+
115+
if (tuning) {
116+
renderData = renderData.filter { it.key.y > player.posY - tuningRange }
116117
}
118+
119+
renderData.forEach { renderer.add(it.key, it.value.color) }
120+
117121
renderer.render(true)
118122
}
119123

120124
//renders text overlay
121125
safeListener<RenderOverlayEvent> {
122126
GlStateUtils.rescaleActual()
123127

124-
cachedMusicData.forEach { it ->
125-
if (renderMode == RenderMode.RANGE) {
126-
if (player.getPositionEyes(1f).distanceTo(it.key.toVec3dCenter()) < textRange) {
127-
GL11.glPushMatrix()
128-
129-
val screenPos = ProjectionUtils.toScreenPos(it.key.toVec3dCenter())
130-
131-
GL11.glTranslated(screenPos.x, screenPos.y, 0.0)
132-
GL11.glScalef(textScale * 2f, textScale * 2f, 1f)
133-
134-
val centerValue = FontRenderAdapter.getStringWidth(it.value.note.ordinal.toString()) / -2f
135-
val centerKey = FontRenderAdapter.getStringWidth(it.value.instrument.name) / -2f
128+
var renderData = cachedMusicData.filter { player.positionVector.distanceTo(it.key.toVec3dCenter()) < textRange }
136129

137-
FontRenderAdapter.drawString(it.value.note.ordinal.toString(), centerValue, 0f, color = it.value.color)
138-
FontRenderAdapter.drawString(it.value.instrument.name.lowercase().replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }, centerKey, FontRenderAdapter.getFontHeight(), color = it.value.color)
130+
if (tuning) {
131+
renderData = renderData.filter { it.key.y > player.posY - tuningRange }
132+
}
139133

140-
GL11.glPopMatrix()
141-
}
142-
}
143-
if (renderMode == RenderMode.TUNINGMODE) {
144-
if ((it.key.y > player.getPositionEyes(1f).y.toInt() - tuningRange - 2) &&
145-
(player.getPositionEyes(1f).distanceTo(it.key.toVec3dCenter()) < boxRange)) {
146-
GL11.glPushMatrix()
134+
renderData.forEach { musicDataEntry ->
135+
GL11.glPushMatrix()
147136

148-
val screenPos = ProjectionUtils.toScreenPos(it.key.toVec3dCenter())
137+
val screenPos = ProjectionUtils.toScreenPos(musicDataEntry.key.toVec3dCenter())
149138

150-
GL11.glTranslated(screenPos.x, screenPos.y, 0.0)
151-
GL11.glScalef(textScale * 2f, textScale * 2f, 1f)
139+
GL11.glTranslated(screenPos.x, screenPos.y, 0.0)
140+
GL11.glScalef(textScale * 2f, textScale * 2f, 1f)
152141

153-
val centerValue = FontRenderAdapter.getStringWidth(it.value.note.ordinal.toString()) / -2f
154-
val centerKey = FontRenderAdapter.getStringWidth(it.value.instrument.name) / -2f
142+
val centerValue = FontRenderAdapter.getStringWidth(musicDataEntry.value.note.ordinal.toString()) / -2f
143+
val centerKey = FontRenderAdapter.getStringWidth(musicDataEntry.value.instrument.name) / -2f
155144

156-
FontRenderAdapter.drawString(it.value.note.ordinal.toString(), centerValue, 0f, color = it.value.color)
157-
FontRenderAdapter.drawString(it.value.instrument.name.lowercase().replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }, centerKey, FontRenderAdapter.getFontHeight(), color = it.value.color)
145+
FontRenderAdapter.drawString(musicDataEntry.value.note.ordinal.toString(), centerValue, 0f, color = musicDataEntry.value.color)
146+
FontRenderAdapter.drawString(musicDataEntry.value.instrument.name.lowercase().replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() }, centerKey, FontRenderAdapter.getFontHeight(), color = musicDataEntry.value.color)
158147

159-
GL11.glPopMatrix()
160-
}
161-
}
148+
GL11.glPopMatrix()
162149
}
163150
}
164-
// safeListener<RenderWorldEvent> {
165-
// renderer.render(false)
166-
//
167-
// if (updateTimer.tick(updateDelay.toLong())) {
168-
// updateRenderer()
169-
// }
170-
// }
171151
}
172152

173153
private class MusicData(val note: Note, val instrument: NoteBlockEvent.Instrument) {

0 commit comments

Comments
 (0)