Fix color not being reset after block highlights

This commit is contained in:
nea
2023-05-03 20:02:10 +02:00
parent f844feba1b
commit e9f9ad1ac0
4 changed files with 25 additions and 13 deletions

View File

@@ -1,5 +1,7 @@
package moe.nea.notenoughupdates.features
import moe.nea.notenoughupdates.util.config.ManagedConfig
interface NEUFeature {
val name: String
val identifier: String
@@ -10,7 +12,7 @@ interface NEUFeature {
set(value) {
FeatureManager.setEnabled(identifier, value)
}
val config: ManagedConfig? get() = null
fun onLoad()
}

View File

@@ -3,8 +3,6 @@ package moe.nea.notenoughupdates.features.world
import io.github.moulberry.repo.data.Coordinate
import kotlinx.serialization.Serializable
import kotlinx.serialization.serializer
import net.minecraft.client.MinecraftClient
import net.minecraft.util.math.BlockPos
import moe.nea.notenoughupdates.events.ServerChatLineReceivedEvent
import moe.nea.notenoughupdates.events.SkyblockServerUpdateEvent
import moe.nea.notenoughupdates.events.WorldRenderLastEvent
@@ -12,26 +10,32 @@ import moe.nea.notenoughupdates.features.NEUFeature
import moe.nea.notenoughupdates.repo.RepoManager
import moe.nea.notenoughupdates.util.MC
import moe.nea.notenoughupdates.util.SBData
import moe.nea.notenoughupdates.util.blockPos
import moe.nea.notenoughupdates.util.config.ManagedConfig
import moe.nea.notenoughupdates.util.data.ProfileSpecificDataHolder
import moe.nea.notenoughupdates.util.render.RenderBlockContext.Companion.renderBlocks
import moe.nea.notenoughupdates.util.unformattedString
val Coordinate.blockPos: BlockPos
get() = BlockPos(x, y, z)
object FairySouls : NEUFeature,
ProfileSpecificDataHolder<FairySouls.Config>(serializer(), "found-fairysouls", ::Config) {
object FairySouls : NEUFeature {
@Serializable
data class Config(
data class Data(
val foundSouls: MutableMap<String, MutableSet<Int>> = mutableMapOf()
)
override val config: ManagedConfig
get() = TConfig
object DConfig : ProfileSpecificDataHolder<Data>(serializer(), "found-fairysouls", ::Data)
object TConfig : ManagedConfig("fairysouls") {
val displaySouls by toggle("show") { false }
val resetSouls by button("reset") {
FairySouls.data?.foundSouls?.clear() != null
DConfig.data?.foundSouls?.clear() != null
updateMissingSouls()
}
}
@@ -49,7 +53,7 @@ object FairySouls : NEUFeature,
fun updateMissingSouls() {
currentMissingSouls = emptyList()
val c = data ?: return
val c = DConfig.data ?: return
val fi = c.foundSouls[currentLocationName] ?: setOf()
val cms = currentLocationSouls.toMutableList()
fi.asSequence().sortedDescending().filter { it in cms.indices }.forEach { cms.removeAt(it) }
@@ -77,11 +81,11 @@ object FairySouls : NEUFeature,
private fun markNearestSoul() {
val nearestSoul = findNearestClickableSoul() ?: return
val c = data ?: return
val c = DConfig.data ?: return
val loc = currentLocationName ?: return
val idx = currentLocationSouls.indexOf(nearestSoul)
c.foundSouls.computeIfAbsent(loc) { mutableSetOf() }.add(idx)
markDirty()
DConfig.markDirty()
updateMissingSouls()
}

View File

@@ -1,7 +1,12 @@
package moe.nea.notenoughupdates.util
import io.github.moulberry.repo.data.Coordinate
import net.minecraft.client.MinecraftClient
import net.minecraft.util.math.BlockPos
object MC {
inline val player get() = MinecraftClient.getInstance().player
}
val Coordinate.blockPos: BlockPos
get() = BlockPos(x, y, z)

View File

@@ -12,7 +12,7 @@ import net.minecraft.client.render.VertexFormats
import net.minecraft.client.util.math.MatrixStack
import net.minecraft.util.math.BlockPos
class RenderBlockContext(private val tesselator: Tessellator, private val matrixStack: MatrixStack) {
class RenderBlockContext private constructor(private val tesselator: Tessellator, private val matrixStack: MatrixStack) {
private val buffer = tesselator.buffer
fun color(red: Float, green: Float, blue: Float, alpha: Float) {
RenderSystem.setShaderColor(red, green, blue, alpha)
@@ -83,6 +83,7 @@ class RenderBlockContext(private val tesselator: Tessellator, private val matrix
matrices.pop()
RenderSystem.setShaderColor(1F,1F,1F,1F)
VertexBuffer.unbind()
RenderSystem.enableDepthTest()
RenderSystem.disableBlend()