diff --git a/src/main/java/de/bixilon/minosoft/config/config/game/BlockOutline.kt b/src/main/java/de/bixilon/minosoft/config/config/game/BlockOutline.kt index 913a9643b..ab15db37c 100644 --- a/src/main/java/de/bixilon/minosoft/config/config/game/BlockOutline.kt +++ b/src/main/java/de/bixilon/minosoft/config/config/game/BlockOutline.kt @@ -14,8 +14,12 @@ package de.bixilon.minosoft.config.config.game import com.squareup.moshi.Json +import de.bixilon.minosoft.data.text.ChatColors +import de.bixilon.minosoft.data.text.RGBColor data class BlockOutline( @Json(name = "collision_boxes") val collisionBoxes: Boolean = false, @Json(name = "disable_z_buffer") val disableZBuffer: Boolean = false, + @Json(name = "outline_color") val outlineColor: RGBColor = ChatColors.RED, + @Json(name = "collision_color") val collisionColor: RGBColor = ChatColors.BLUE, ) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/block/outline/BlockOutlineRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/block/outline/BlockOutlineRenderer.kt index 86a80a28c..aa94d71d6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/block/outline/BlockOutlineRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/block/outline/BlockOutlineRenderer.kt @@ -17,7 +17,6 @@ import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.data.Gamemodes import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.data.mappings.blocks.BlockState -import de.bixilon.minosoft.data.text.ChatColors import de.bixilon.minosoft.gui.rendering.RenderConstants import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.Renderer @@ -48,9 +47,6 @@ class BlockOutlineRenderer( resourceLocation = ResourceLocation(ProtocolDefinition.MINOSOFT_NAMESPACE, "chunk/block/outline"), ) - private val outlineColor = ChatColors.RED - private val collisionColor = ChatColors.BLUE - override fun init() { outlineShader.load(connection.assetsManager) } @@ -115,10 +111,10 @@ class BlockOutlineRenderer( glDepthFunc(GL_ALWAYS) } outlineShader.use() - outlineShader.setRGBColor("tintColor", outlineColor) + outlineShader.setRGBColor("tintColor", Minosoft.config.config.game.other.blockOutline.outlineColor) outlineMesh.draw() collisionMesh?.let { - outlineShader.setRGBColor("tintColor", collisionColor) + outlineShader.setRGBColor("tintColor", Minosoft.config.config.game.other.blockOutline.collisionColor) it.draw() } glEnable(GL_CULL_FACE) diff --git a/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt index 6dd7a3951..23f75b5e4 100644 --- a/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt +++ b/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt @@ -15,19 +15,23 @@ package de.bixilon.minosoft.util.json import com.squareup.moshi.* import de.bixilon.minosoft.data.text.RGBColor +import de.bixilon.minosoft.data.text.RGBColor.Companion.asColor import de.bixilon.minosoft.data.text.RGBColor.Companion.asRGBColor object RGBColorSerializer : JsonAdapter() { @FromJson override fun fromJson(jsonReader: JsonReader): RGBColor? { - if (jsonReader.peek() == JsonReader.Token.NULL) { - return null + return when (jsonReader.peek()) { + JsonReader.Token.NUMBER -> { + val rgb = jsonReader.nextInt() + if (rgb == 0) { + return null + } + return rgb.asRGBColor() + } + JsonReader.Token.STRING -> jsonReader.nextString().asColor() + else -> null } - val rgb = jsonReader.nextInt() - if (rgb == 0) { - return null - } - return rgb.asRGBColor() } @ToJson @@ -36,9 +40,9 @@ object RGBColorSerializer : JsonAdapter() { jsonWriter.nullValue() return } - if (color.rgb == 0) { + if (color.rgba == 0) { jsonWriter.nullValue() } - jsonWriter.value(color.rgb) + jsonWriter.value(color.toString()) } }