diff options
Diffstat (limited to 'src')
4 files changed, 25 insertions, 13 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/features/NEUFeature.kt b/src/main/kotlin/moe/nea/notenoughupdates/features/NEUFeature.kt index 1d3628e..39cfb35 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/features/NEUFeature.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/features/NEUFeature.kt @@ -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() } diff --git a/src/main/kotlin/moe/nea/notenoughupdates/features/world/FairySouls.kt b/src/main/kotlin/moe/nea/notenoughupdates/features/world/FairySouls.kt index d65af26..2a5219a 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/features/world/FairySouls.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/features/world/FairySouls.kt @@ -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() } diff --git a/src/main/kotlin/moe/nea/notenoughupdates/util/MC.kt b/src/main/kotlin/moe/nea/notenoughupdates/util/MC.kt index da06c68..36aa726 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/util/MC.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/util/MC.kt @@ -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) diff --git a/src/main/kotlin/moe/nea/notenoughupdates/util/render/block.kt b/src/main/kotlin/moe/nea/notenoughupdates/util/render/block.kt index 487a264..5fc70ef 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/util/render/block.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/util/render/block.kt @@ -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() |