diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/overlay/OverlayC.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/overlay/OverlayC.kt index b486bfee4..a7ead3cbc 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/overlay/OverlayC.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/overlay/OverlayC.kt @@ -27,5 +27,10 @@ class OverlayC { */ var pumpkin by delegate(true) + /** + * Enables the world boreder overlay + */ + var worldBorder by delegate(true) + val fire = FireC() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/DefaultOverlays.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/DefaultOverlays.kt index 6c722dfe6..f5fef071b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/DefaultOverlays.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/DefaultOverlays.kt @@ -13,10 +13,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays -import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.simple.PowderSnowOverlay -import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.simple.PumpkinOverlay -import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.simple.WallOverlay -import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.simple.WaterOverlay +import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.simple.* object DefaultOverlays { val OVERLAYS = listOf( @@ -25,5 +22,6 @@ object DefaultOverlays { PumpkinOverlay, PowderSnowOverlay, FireOverlay, + WorldBorderOverlay, ) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PowderSnowOverlay.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PowderSnowOverlay.kt index 53c77b0bb..9d85b3653 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PowderSnowOverlay.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PowderSnowOverlay.kt @@ -22,7 +22,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation class PowderSnowOverlay(renderWindow: RenderWindow, z: Float) : SimpleOverlay(renderWindow, z) { private val config = renderWindow.connection.profiles.rendering.overlay - override val texture: AbstractTexture = renderWindow.textureManager.staticTextures.createTexture("misc/powder_snow_outline".toResourceLocation().texture()) + override val texture: AbstractTexture = renderWindow.textureManager.staticTextures.createTexture(OVERLAY_TEXTURE) private var ticksFrozen: Int = 0 override val render: Boolean get() = config.powderSnow && ticksFrozen > 0 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PumpkinOverlay.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PumpkinOverlay.kt index ca9d22295..9050c5aef 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PumpkinOverlay.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/PumpkinOverlay.kt @@ -23,7 +23,7 @@ import de.bixilon.minosoft.util.KUtil.toResourceLocation class PumpkinOverlay(renderWindow: RenderWindow, z: Float) : FirstPersonOverlay(renderWindow, z) { private val config = renderWindow.connection.profiles.rendering.overlay - override val texture: AbstractTexture = renderWindow.textureManager.staticTextures.createTexture("misc/pumpkinblur".toResourceLocation().texture()) + override val texture: AbstractTexture = renderWindow.textureManager.staticTextures.createTexture(OVERLAY_TEXTURE) override val render: Boolean get() { if (!config.pumpkin) { @@ -41,6 +41,7 @@ class PumpkinOverlay(renderWindow: RenderWindow, z: Float) : FirstPersonOverlay( companion object : OverlayFactory { + private val OVERLAY_TEXTURE = "misc/pumpkinblur".toResourceLocation().texture() override fun build(renderWindow: RenderWindow, z: Float): PumpkinOverlay { return PumpkinOverlay(renderWindow, z) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/WorldBorderOverlay.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/WorldBorderOverlay.kt new file mode 100644 index 000000000..7a01bb149 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/simple/WorldBorderOverlay.kt @@ -0,0 +1,45 @@ +/* + * Minosoft + * Copyright (C) 2020-2022 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.overlays.simple + +import de.bixilon.minosoft.data.text.RGBColor +import de.bixilon.minosoft.gui.rendering.RenderWindow +import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.OverlayFactory +import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture +import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture +import de.bixilon.minosoft.util.KUtil.toResourceLocation + +class WorldBorderOverlay(renderWindow: RenderWindow, z: Float) : SimpleOverlay(renderWindow, z) { + private val config = renderWindow.connection.profiles.rendering.overlay + override val texture: AbstractTexture = renderWindow.textureManager.staticTextures.createTexture(OVERLAY_TEXTURE) + override val render: Boolean + get() = config.worldBorder && renderWindow.connection.world.border.isOutside(renderWindow.connection.player.position) + + override fun update() { + tintColor = RGBColor(1.0f, 0.0f, 0.0f, 0.5f) // ToDo: Correct + } + + + companion object : OverlayFactory { + private val OVERLAY_TEXTURE = "misc/vignette".toResourceLocation().texture() + + override fun build(renderWindow: RenderWindow, z: Float): WorldBorderOverlay? { + if (renderWindow.connection.assetsManager.nullGet(OVERLAY_TEXTURE) == null) { // ToDo: Don't get twice + // overlay not yet available (< 1.17) + return null + } + return WorldBorderOverlay(renderWindow, z) + } + } +}