From 4fda0e084910a7521cc70a7d64a57a4346fd980f Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 29 Dec 2021 18:07:09 +0100 Subject: [PATCH] deprecate some stuff, ConnectionUtil, cleanup RenderWindow a bit --- .../minosoft/gui/rendering/RenderWindow.kt | 87 +------------------ .../rendering/entity/EntityHitboxRenderer.kt | 2 +- .../framebuffer/FramebufferManager.kt | 2 + .../framebuffer/IntegratedFramebuffer.kt | 2 + .../framebuffer/gui/GUIFramebuffer.kt | 2 + .../framebuffer/world/WorldFramebuffer.kt | 2 + .../gui/rendering/gui/hud/HUDRenderer.kt | 3 + .../input/key/DefaultKeyCombinations.kt | 80 +++++++++++++++++ .../input/key/RenderWindowInputHandler.kt | 2 +- .../gui/rendering/renderer/Renderer.kt | 3 + .../gui/rendering/renderer/RendererManager.kt | 8 +- .../minosoft/gui/rendering/sky/SkyRenderer.kt | 6 +- .../gui/rendering/system/base/PolygonModes.kt | 4 + .../gui/rendering/util/ScreenshotTaker.kt | 4 +- .../world/chunk/ChunkBorderRenderer.kt | 2 +- .../network/connection/play/ConnectionUtil.kt | 16 ++++ .../network/connection/play/PlayConnection.kt | 5 ++ 17 files changed, 133 insertions(+), 97 deletions(-) create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DefaultKeyCombinations.kt create mode 100644 src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt index f190d7464..52cc0d919 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt @@ -18,20 +18,15 @@ import de.bixilon.kutil.latch.CountUpAndDownLatch import de.bixilon.kutil.math.MMath.round10 import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.kutil.time.TimeUtil -import de.bixilon.minosoft.config.key.KeyAction -import de.bixilon.minosoft.config.key.KeyBinding -import de.bixilon.minosoft.config.key.KeyCodes import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatch import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.data.text.BaseComponent -import de.bixilon.minosoft.data.text.ChatColors -import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.gui.rendering.camera.Camera import de.bixilon.minosoft.gui.rendering.font.Font import de.bixilon.minosoft.gui.rendering.font.FontLoader import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferManager import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLike import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLikeTexture +import de.bixilon.minosoft.gui.rendering.input.key.DefaultKeyCombinations import de.bixilon.minosoft.gui.rendering.input.key.RenderWindowInputHandler import de.bixilon.minosoft.gui.rendering.modding.events.* import de.bixilon.minosoft.gui.rendering.renderer.RendererManager @@ -40,21 +35,17 @@ import de.bixilon.minosoft.gui.rendering.stats.AbstractRenderStats import de.bixilon.minosoft.gui.rendering.stats.ExperimentalRenderStats import de.bixilon.minosoft.gui.rendering.stats.RenderStats import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes -import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow import de.bixilon.minosoft.gui.rendering.system.window.GLFWWindow import de.bixilon.minosoft.gui.rendering.tint.TintManager import de.bixilon.minosoft.gui.rendering.util.ScreenshotTaker -import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.PositionAndRotationS2CP import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition -import de.bixilon.minosoft.util.KUtil.format -import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.Stopwatch import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels @@ -86,7 +77,6 @@ class RenderWindow( var initialized = false private set - private lateinit var renderThread: Thread lateinit var renderStats: AbstractRenderStats private set @@ -140,7 +130,6 @@ class RenderWindow( } fun init(latch: CountUpAndDownLatch) { - renderThread = Thread.currentThread() Log.log(LogMessageType.RENDERING_LOADING) { "Creating window..." } val stopwatch = Stopwatch() @@ -196,7 +185,7 @@ class RenderWindow( inputHandler.init() - registerGlobalKeyCombinations() + DefaultKeyCombinations.registerAll(this) connection.fireEvent(ResizeWindowEvent(previousSize = Vec2i(0, 0), size = window.size)) @@ -211,70 +200,6 @@ class RenderWindow( Log.log(LogMessageType.RENDERING_GENERAL) { "Showing window after ${stopwatch.totalTime()}" } } - private fun registerGlobalKeyCombinations() { - inputHandler.registerKeyCallback("minosoft:enable_debug_polygon".toResourceLocation(), - KeyBinding( - mapOf( - KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4), - KeyAction.STICKY to setOf(KeyCodes.KEY_P), - ), - )) { - val nextMode = it.decide(PolygonModes.LINE, PolygonModes.FILL) - renderSystem.framebuffer = framebufferManager.world.framebuffer - renderSystem.polygonMode = nextMode - sendDebugMessage("Polygon mode: ${nextMode.format()}") - } - - inputHandler.registerKeyCallback("minosoft:quit_rendering".toResourceLocation(), - KeyBinding( - mapOf( - KeyAction.RELEASE to setOf(KeyCodes.KEY_ESCAPE), - ), - )) { window.close() } - - inputHandler.registerKeyCallback("minosoft:take_screenshot".toResourceLocation(), - KeyBinding( - mapOf( - KeyAction.PRESS to setOf(KeyCodes.KEY_F2), - ), - ignoreConsumer = true, - )) { screenshotTaker.takeScreenshot() } - - inputHandler.registerKeyCallback("minosoft:pause_incoming_packets".toResourceLocation(), - KeyBinding( - mapOf( - KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4), - KeyAction.STICKY to setOf(KeyCodes.KEY_I), - ), - ignoreConsumer = true, - )) { - sendDebugMessage("Pausing incoming packets: ${it.format()}") - connection.network.pauseReceiving(it) - } - - inputHandler.registerKeyCallback("minosoft:pause_outgoing_packets".toResourceLocation(), - KeyBinding( - mapOf( - KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4), - KeyAction.STICKY to setOf(KeyCodes.KEY_O), - ), - ignoreConsumer = true, - )) { - sendDebugMessage("Pausing outgoing packets: ${it.format()}") - connection.network.pauseSending(it) - } - - inputHandler.registerKeyCallback("minosoft:toggle_fullscreen".toResourceLocation(), - KeyBinding( - mapOf( - KeyAction.PRESS to setOf(KeyCodes.KEY_F11), - ), - ignoreConsumer = true, - )) { - window.fullscreen = !window.fullscreen - } - } - fun startLoop() { Log.log(LogMessageType.RENDERING_LOADING) { "Starting loop" } var closed = false @@ -348,12 +273,4 @@ class RenderWindow( // disconnect connection.disconnect() } - - fun sendDebugMessage(message: Any) { - connection.fireEvent(InternalMessageReceiveEvent(connection, BaseComponent(RenderConstants.DEBUG_MESSAGES_PREFIX, ChatComponent.of(message).apply { applyDefaultColor(ChatColors.BLUE) }))) - } - - fun assertOnRenderThread() { - check(Thread.currentThread() === renderThread) { "Current thread (${Thread.currentThread().name} is not the render thread!" } - } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityHitboxRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityHitboxRenderer.kt index 78a72e75c..263357fe5 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityHitboxRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityHitboxRenderer.kt @@ -100,7 +100,7 @@ class EntityHitboxRenderer( ), ), defaultPressed = profile.enabled) { profile.enabled = it - renderWindow.sendDebugMessage("Entity hit boxes: ${it.format()}") + connection.util.sendDebugMessage("Entity hit boxes: ${it.format()}") } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt index b0efe1505..48fbd5f79 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt @@ -5,6 +5,7 @@ import de.bixilon.minosoft.gui.rendering.framebuffer.gui.GUIFramebuffer import de.bixilon.minosoft.gui.rendering.framebuffer.world.WorldFramebuffer import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent import de.bixilon.minosoft.gui.rendering.renderer.Drawable +import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker class FramebufferManager( @@ -32,6 +33,7 @@ class FramebufferManager( override fun draw() { + renderWindow.renderSystem.polygonMode = PolygonModes.FILL world.draw() gui.draw() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/IntegratedFramebuffer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/IntegratedFramebuffer.kt index 1613ad1d0..cef9d3794 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/IntegratedFramebuffer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/IntegratedFramebuffer.kt @@ -3,6 +3,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.renderer.Drawable import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes +import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh @@ -12,6 +13,7 @@ interface IntegratedFramebuffer : Drawable { val shader: Shader val framebuffer: Framebuffer val mesh: Mesh + val polygonMode: PolygonModes fun init() { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/gui/GUIFramebuffer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/gui/GUIFramebuffer.kt index 78cd03d17..d2cca5776 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/gui/GUIFramebuffer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/gui/GUIFramebuffer.kt @@ -3,6 +3,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer.gui import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferMesh import de.bixilon.minosoft.gui.rendering.framebuffer.IntegratedFramebuffer +import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -12,4 +13,5 @@ class GUIFramebuffer( override val shader = renderWindow.renderSystem.createShader("minosoft:framebuffer/gui".toResourceLocation()) override val framebuffer: Framebuffer = renderWindow.renderSystem.createFramebuffer() override val mesh = FramebufferMesh(renderWindow) + override var polygonMode: PolygonModes = PolygonModes.DEFAULT } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/WorldFramebuffer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/WorldFramebuffer.kt index d6267e610..5a8cc921f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/WorldFramebuffer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/WorldFramebuffer.kt @@ -3,6 +3,7 @@ package de.bixilon.minosoft.gui.rendering.framebuffer.world import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferMesh import de.bixilon.minosoft.gui.rendering.framebuffer.IntegratedFramebuffer +import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -12,4 +13,5 @@ class WorldFramebuffer( override val shader = renderWindow.renderSystem.createShader("minosoft:framebuffer/world".toResourceLocation()) override val framebuffer: Framebuffer = renderWindow.renderSystem.createFramebuffer() override val mesh = FramebufferMesh(renderWindow) + override var polygonMode: PolygonModes = PolygonModes.DEFAULT } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt index 32015b3fd..35eb4311f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/HUDRenderer.kt @@ -43,6 +43,7 @@ import de.bixilon.minosoft.gui.rendering.renderer.Drawable import de.bixilon.minosoft.gui.rendering.renderer.Renderer import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes +import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.phases.OtherDrawable @@ -69,6 +70,8 @@ class HUDRenderer( private set override val framebuffer: Framebuffer get() = renderWindow.framebufferManager.gui.framebuffer + override val polygonMode: PolygonModes + get() = renderWindow.framebufferManager.gui.polygonMode private val hudElements: MutableMap = synchronizedMapOf() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DefaultKeyCombinations.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DefaultKeyCombinations.kt new file mode 100644 index 000000000..de7802f30 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DefaultKeyCombinations.kt @@ -0,0 +1,80 @@ +package de.bixilon.minosoft.gui.rendering.input.key + +import de.bixilon.kutil.primitive.BooleanUtil.decide +import de.bixilon.minosoft.config.key.KeyAction +import de.bixilon.minosoft.config.key.KeyBinding +import de.bixilon.minosoft.config.key.KeyCodes +import de.bixilon.minosoft.gui.rendering.RenderWindow +import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes +import de.bixilon.minosoft.util.KUtil.format +import de.bixilon.minosoft.util.KUtil.toResourceLocation + +object DefaultKeyCombinations { + + fun registerAll(renderWindow: RenderWindow) { + val inputHandler = renderWindow.inputHandler + val window = renderWindow.window + val connection = renderWindow.connection + + inputHandler.registerKeyCallback("minosoft:enable_debug_polygon".toResourceLocation(), + KeyBinding( + mapOf( + KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4), + KeyAction.STICKY to setOf(KeyCodes.KEY_P), + ), + )) { + val nextMode = it.decide(PolygonModes.LINE, PolygonModes.FILL) + renderWindow.framebufferManager.world.polygonMode = nextMode + connection.util.sendDebugMessage("Polygon mode: ${nextMode.format()}") + } + + inputHandler.registerKeyCallback("minosoft:quit_rendering".toResourceLocation(), + KeyBinding( + mapOf( + KeyAction.RELEASE to setOf(KeyCodes.KEY_ESCAPE), + ), + )) { window.close() } + + inputHandler.registerKeyCallback("minosoft:take_screenshot".toResourceLocation(), + KeyBinding( + mapOf( + KeyAction.PRESS to setOf(KeyCodes.KEY_F2), + ), + ignoreConsumer = true, + )) { renderWindow.screenshotTaker.takeScreenshot() } + + inputHandler.registerKeyCallback("minosoft:pause_incoming_packets".toResourceLocation(), + KeyBinding( + mapOf( + KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4), + KeyAction.STICKY to setOf(KeyCodes.KEY_I), + ), + ignoreConsumer = true, + )) { + connection.util.sendDebugMessage("Pausing incoming packets: ${it.format()}") + connection.network.pauseReceiving(it) + } + + inputHandler.registerKeyCallback("minosoft:pause_outgoing_packets".toResourceLocation(), + KeyBinding( + mapOf( + KeyAction.MODIFIER to setOf(KeyCodes.KEY_F4), + KeyAction.STICKY to setOf(KeyCodes.KEY_O), + ), + ignoreConsumer = true, + )) { + connection.util.sendDebugMessage("Pausing outgoing packets: ${it.format()}") + connection.network.pauseSending(it) + } + + inputHandler.registerKeyCallback("minosoft:toggle_fullscreen".toResourceLocation(), + KeyBinding( + mapOf( + KeyAction.PRESS to setOf(KeyCodes.KEY_F11), + ), + ignoreConsumer = true, + )) { + window.fullscreen = !window.fullscreen + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt index bc4e301de..d0c5c990e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt @@ -65,7 +65,7 @@ class RenderWindowInputHandler( CursorModes.HIDDEN -> CursorModes.NORMAL } renderWindow.window.cursorMode = nextMode - renderWindow.sendDebugMessage("Cursor mode: ${nextMode.format()}") + connection.util.sendDebugMessage("Cursor mode: ${nextMode.format()}") } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/Renderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/Renderer.kt index 761e442f0..fee63308e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/Renderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/Renderer.kt @@ -14,6 +14,7 @@ package de.bixilon.minosoft.gui.rendering.renderer import de.bixilon.minosoft.gui.rendering.RenderWindow +import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer @@ -22,6 +23,8 @@ interface Renderer { val renderSystem: RenderSystem val framebuffer: Framebuffer? get() = renderWindow.framebufferManager.world.framebuffer + val polygonMode: PolygonModes + get() = renderWindow.framebufferManager.world.polygonMode fun init() = Unit diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/RendererManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/RendererManager.kt index b7e7f9deb..aa88fd341 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/RendererManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/renderer/RendererManager.kt @@ -70,7 +70,7 @@ class RendererManager( } } - private fun renderAll(rendererList: Collection) { + private fun renderNormal(rendererList: Collection) { for (phase in RenderPhases.VALUES) { for (renderer in rendererList) { if (renderer is SkipAll && renderer.skipAll) { @@ -83,6 +83,7 @@ class RendererManager( continue } renderSystem.framebuffer = renderer.framebuffer + renderSystem.polygonMode = renderer.polygonMode phase.invokeSetup(renderer) phase.invokeDraw(renderer) } @@ -93,10 +94,9 @@ class RendererManager( val renderers = renderers.values for (renderer in renderers) { - renderSystem.framebuffer = renderer.framebuffer renderer.prepareDraw() } - renderAll(renderers) + renderNormal(renderers) renderSystem.framebuffer = null renderPre(renderers) @@ -115,6 +115,7 @@ class RendererManager( if (renderer.skipPre) { continue } + renderSystem.polygonMode = renderer.polygonMode renderSystem.framebuffer = renderer.framebuffer renderer.drawPre() } @@ -131,6 +132,7 @@ class RendererManager( if (renderer.skipPost) { continue } + renderSystem.polygonMode = renderer.polygonMode renderSystem.framebuffer = renderer.framebuffer renderer.drawPost() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt index 32555629c..7e5991cdd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt @@ -21,10 +21,7 @@ import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent import de.bixilon.minosoft.gui.rendering.renderer.Renderer import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder -import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions -import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions -import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem -import de.bixilon.minosoft.gui.rendering.system.base.RenderingCapabilities +import de.bixilon.minosoft.gui.rendering.system.base.* import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.phases.PostDrawable import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture @@ -50,6 +47,7 @@ class SkyRenderer( private var updateSun: Boolean = true var baseColor = RenderConstants.DEFAULT_SKY_COLOR override val framebuffer: Framebuffer? = null + override val polygonMode: PolygonModes = PolygonModes.DEFAULT override fun init() { skyboxShader.load() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/PolygonModes.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/PolygonModes.kt index 3549ce7b9..48fea58d3 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/PolygonModes.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/PolygonModes.kt @@ -18,4 +18,8 @@ enum class PolygonModes { LINE, POINT, ; + + companion object { + val DEFAULT = FILL + } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/ScreenshotTaker.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/ScreenshotTaker.kt index 25b155adf..ba5e70fb0 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/util/ScreenshotTaker.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/ScreenshotTaker.kt @@ -72,7 +72,7 @@ class ScreenshotTaker( ImageIO.write(bufferedImage, "png", file) - renderWindow.sendDebugMessage(BaseComponent( + renderWindow.connection.util.sendDebugMessage(BaseComponent( "§aScreenshot saved to ", TextComponent(file.name).apply { color = ChatColors.WHITE @@ -101,7 +101,7 @@ class ScreenshotTaker( private fun Throwable?.fail() { this?.printStackTrace() - renderWindow.sendDebugMessage("§cFailed to make a screenshot: ${this?.message}") + renderWindow.connection.util.sendDebugMessage("§cFailed to make a screenshot: ${this?.message}") } companion object { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/chunk/ChunkBorderRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/chunk/ChunkBorderRenderer.kt index e8190618b..7de83d01b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/chunk/ChunkBorderRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/chunk/ChunkBorderRenderer.kt @@ -53,7 +53,7 @@ class ChunkBorderRenderer( ), ), defaultPressed = profile.chunkBorder.enabled) { profile.chunkBorder.enabled = it - renderWindow.sendDebugMessage("Chunk borders: ${it.format()}") + connection.util.sendDebugMessage("Chunk borders: ${it.format()}") } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt new file mode 100644 index 000000000..d0571c267 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt @@ -0,0 +1,16 @@ +package de.bixilon.minosoft.protocol.network.connection.play + +import de.bixilon.minosoft.data.text.BaseComponent +import de.bixilon.minosoft.data.text.ChatColors +import de.bixilon.minosoft.data.text.ChatComponent +import de.bixilon.minosoft.gui.rendering.RenderConstants +import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent + +class ConnectionUtil( + private val connection: PlayConnection, +) { + + fun sendDebugMessage(message: Any) { + connection.fireEvent(InternalMessageReceiveEvent(connection, BaseComponent(RenderConstants.DEBUG_MESSAGES_PREFIX, ChatComponent.of(message).apply { applyDefaultColor(ChatColors.BLUE) }))) + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt index 6228d592d..6299ee65b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt @@ -78,6 +78,7 @@ class PlayConnection( val tabList = TabList() val scoreboardManager = ScoreboardManager(this) val bossbarManager = BossbarManager() + val util = ConnectionUtil(this) @Deprecated(message = "PacketSender is deprecated") val sender = PacketSender(this) @@ -255,11 +256,13 @@ class PlayConnection( latch.count = count } + @Deprecated("ToDo: Version?") override fun getPacketId(packetType: PacketTypes.C2S): Int { // ToDo: Improve speed return version.c2sPackets[packetType.state]?.indexOf(packetType) ?: Protocol.getPacketId(packetType) ?: error("Can not find packet $packetType for $version") } + @Deprecated("ToDo: Version?") override fun getPacketById(packetId: Int): PacketTypes.S2C { return version.s2cPackets[protocolState]?.getOrNull(packetId) ?: Protocol.getPacketById(protocolState, packetId) ?: let { // wtf, notchain sends play disconnect packet in login state... @@ -274,6 +277,7 @@ class PlayConnection( } ?: error("Can not find packet $packetId in $protocolState for $version") } + @Deprecated("ToDo: Packet handler") override fun handlePacket(packet: S2CPacket) { if (!protocolState.connected) { return @@ -292,6 +296,7 @@ class PlayConnection( } } + @Deprecated("ToDo: Tag manager") fun inTag(`object`: Any?, tagType: ResourceLocation, tag: ResourceLocation): Boolean { fun fallback(): Boolean {