From ee02f8bb5c1310ae88cbbaada8cf012ff16959d5 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Fri, 2 Aug 2024 14:40:55 +0200 Subject: [PATCH] wip debug world --- .../minosoft/commands/nodes/ChatNodeTest.kt | 2 +- .../packet/receiver/PacketReceiverTest.kt | 15 ++-- .../netty/packet/sender/PacketSenderTest.kt | 13 +-- .../network/client/test/TestNetwork.kt | 44 +++------- .../network/session/play/PacketTestUtil.kt | 10 +-- .../network/session/play/SessionTestUtil.kt | 4 +- .../player/local/SignatureKeyManagement.kt | 2 +- .../de/bixilon/minosoft/example/ExampleMod.kt | 2 +- .../main/play/server/ServerListController.kt | 2 +- .../minosoft/gui/rendering/RenderLoader.kt | 2 +- .../hud/elements/tab/TabListEntryElement.kt | 2 +- .../rendering/input/key/DebugKeyBindings.kt | 2 +- .../minosoft/protocol/AddressResolver.kt | 2 +- .../{connection => }/ServerConnection.kt | 2 +- .../protocol/local/DebugConnection.kt | 80 +++++++++++++++++++ .../NetworkConnection.kt | 3 +- .../network/network/client/ClientNetwork.kt | 2 +- .../network/client/netty/NettyClient.kt | 2 +- .../network/session/play/PlaySession.kt | 6 +- .../play/channel/login/LoginChannelManager.kt | 2 +- .../play/channel/play/PlayChannelManager.kt | 2 +- .../play/settings/ClientSettingsManager.kt | 2 +- .../network/session/play/util/SessionUtil.kt | 2 +- .../network/session/status/StatusSession.kt | 2 +- .../protocol/packets/registry/PacketType.kt | 2 +- .../packets/s2c/common/CompressionS2CP.kt | 2 +- .../protocol/packets/s2c/common/KickS2CP.kt | 2 +- .../packets/s2c/configuration/ReadyS2CP.kt | 2 +- .../packets/s2c/login/EncryptionS2CP.kt | 2 +- .../protocol/packets/s2c/login/SuccessS2CP.kt | 2 +- .../packets/s2c/play/ReconfigureS2CP.kt | 2 +- .../bixilon/minosoft/terminal/AutoConnect.kt | 29 ++++++- .../terminal/commands/ConnectCommand.kt | 2 +- .../util/crash/section/SessionCrashSection.kt | 2 +- 34 files changed, 161 insertions(+), 93 deletions(-) rename src/main/java/de/bixilon/minosoft/protocol/{connection => }/ServerConnection.kt (95%) create mode 100644 src/main/java/de/bixilon/minosoft/protocol/local/DebugConnection.kt rename src/main/java/de/bixilon/minosoft/protocol/{connection => network}/NetworkConnection.kt (96%) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/commands/nodes/ChatNodeTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/commands/nodes/ChatNodeTest.kt index 71f153cb2..eb0c8a648 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/commands/nodes/ChatNodeTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/commands/nodes/ChatNodeTest.kt @@ -56,7 +56,7 @@ class ChatNodeTest { util::class.java.getFieldOrNull("session")!!.forceSet(util, session) util::class.java.getFieldOrNull("random")!!.forceSet(util, SecureRandom()) session::util.forceSet(util) - session::network.forceSet(TestNetwork()) + session::connection.forceSet(TestNetwork(session)) session.commands = root val stack = CommandStack(session) execute(CommandReader(command), stack) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/receiver/PacketReceiverTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/receiver/PacketReceiverTest.kt index 1128de2ac..08a755e77 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/receiver/PacketReceiverTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/receiver/PacketReceiverTest.kt @@ -13,22 +13,16 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.packet.receiver -import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketHandleException -import de.bixilon.minosoft.protocol.network.network.client.test.TestNetwork -import de.bixilon.minosoft.protocol.network.session.Session -import de.bixilon.minosoft.protocol.packets.registry.PacketType -import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket -import org.testng.Assert.assertEquals -import org.testng.Assert.assertTrue -import org.testng.annotations.Test - +/* +// TODO @Test(groups = ["network"]) class PacketReceiverTest { val type = PacketType("test", false, false, null, null) private fun create(): PacketReceiver { - val network = TestNetwork() + val session = createSession() + val receiver = PacketReceiver(TestNetwork(session), session) return network.receiver } @@ -86,3 +80,4 @@ class PacketReceiverTest { } } } + */ diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/sender/PacketSenderTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/sender/PacketSenderTest.kt index 22c80df98..c1ee6275e 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/sender/PacketSenderTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/netty/packet/sender/PacketSenderTest.kt @@ -13,18 +13,11 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.packet.sender -import de.bixilon.minosoft.protocol.network.network.client.test.TestNetwork -import de.bixilon.minosoft.protocol.network.session.play.PacketTestUtil.assertNoPacket -import de.bixilon.minosoft.protocol.network.session.play.PacketTestUtil.assertPacket -import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -import org.testng.Assert.assertEquals -import org.testng.Assert.assertTrue -import org.testng.annotations.Test - +/* +// TODO @Test(groups = ["network"]) class PacketSenderTest { - private fun create(): PacketSender { val network = TestNetwork() return network.sender @@ -71,3 +64,5 @@ class PacketSenderTest { override fun log(reducedLog: Boolean) = Unit } } + + */ diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/test/TestNetwork.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/test/TestNetwork.kt index 50a2dd5eb..f58a74bec 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/test/TestNetwork.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/network/client/test/TestNetwork.kt @@ -13,51 +13,31 @@ package de.bixilon.minosoft.protocol.network.network.client.test -import de.bixilon.minosoft.protocol.address.ServerAddress -import de.bixilon.minosoft.protocol.network.network.client.ClientNetwork -import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketHandleException -import de.bixilon.minosoft.protocol.network.network.client.netty.packet.receiver.PacketReceiver -import de.bixilon.minosoft.protocol.network.network.client.netty.packet.sender.PacketSender +import de.bixilon.minosoft.protocol.ServerConnection import de.bixilon.minosoft.protocol.network.session.Session -import de.bixilon.minosoft.protocol.network.session.play.SessionTestUtil.createSession import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import java.util.concurrent.ConcurrentLinkedQueue -import javax.crypto.Cipher class TestNetwork( - session: Session = createSession(), -) : ClientNetwork { - override val sender = PacketSender(this) - override val receiver = PacketReceiver(this, session) - override var connected: Boolean = true - override var state: ProtocolStates = ProtocolStates.PLAY - override var compressionThreshold: Int = -1 - override var encrypted: Boolean = false - override val detached = false - + session: Session, +) : ServerConnection { + override val identifier: String + get() = "test" + override var active = false private var queue = ConcurrentLinkedQueue() - override fun connect(address: ServerAddress, native: Boolean) { - connected = true + override fun connect(session: Session) { + active = true } override fun disconnect() { - connected = false - } - - override fun setupEncryption(encrypt: Cipher, decrypt: Cipher) { - encrypted = true - } - - override fun setupCompression(threshold: Int) { - this.compressionThreshold = threshold + active = false } override fun detach() = Unit - override fun forceSend(packet: C2SPacket) { + override fun send(packet: C2SPacket) { if (queue.size > 15) { // leaking return @@ -71,8 +51,4 @@ class TestNetwork( } return queue.remove() } - - override fun handleError(error: Throwable) { - throw PacketHandleException(error) - } } diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/PacketTestUtil.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/PacketTestUtil.kt index 82e9b4a48..f7fdf6033 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/PacketTestUtil.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/PacketTestUtil.kt @@ -16,17 +16,17 @@ package de.bixilon.minosoft.protocol.network.session.play import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.kutil.exception.Broken import de.bixilon.kutil.unsafe.UnsafeUtil.setUnsafeAccessible -import de.bixilon.minosoft.protocol.network.network.client.ClientNetwork +import de.bixilon.minosoft.protocol.ServerConnection import de.bixilon.minosoft.protocol.network.network.client.test.TestNetwork import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket object PacketTestUtil { fun PlaySession.test(): TestNetwork { - return network.unsafeCast() + return connection.unsafeCast() } - fun ClientNetwork.assertPacket(expected: C2SPacket) { + fun ServerConnection.assertPacket(expected: C2SPacket) { if (this !is TestNetwork) Broken("Not testing") val found = take() ?: throw AssertionError("Expected packet $expected, but found [null]!") if (found::class.java != expected::class.java) { @@ -42,7 +42,7 @@ object PacketTestUtil { } } - fun ClientNetwork.assertNoPacket() { + fun ServerConnection.assertNoPacket() { if (this !is TestNetwork) Broken("Not testing") val packet = take() if (packet != null) { @@ -64,7 +64,7 @@ object PacketTestUtil { assertNoPacket() } - fun ClientNetwork.assertPacket(type: Class): T { + fun ServerConnection.assertPacket(type: Class): T { if (this !is TestNetwork) Broken("Not testing") val packet = take() ?: throw AssertionError("Expected packet of type $type, but found [null]!") val clazz = packet::class.java diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/SessionTestUtil.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/SessionTestUtil.kt index e88c82019..598c6ee33 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/SessionTestUtil.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/session/play/SessionTestUtil.kt @@ -57,7 +57,7 @@ object SessionTestUtil { private val REGISTRIES = PlaySession::registries.field private val WORLD = PlaySession::world.field private val PLAYER = PlaySession::player.field - private val NETWORK = PlaySession::network.field + private val CONNECTION = PlaySession::connection.field private val EVENTS = PlaySession::events.field private val PROFILES = PlaySession::profiles.field private val ASSETS_MANAGER = PlaySession::assetsManager.field @@ -83,7 +83,7 @@ object SessionTestUtil { WORLD.set(session, createWorld(session, light, (worldSize * 2 + 1).pow(2))) PLAYER.set(session, LocalPlayerEntity(session.account, session, signature)) session.player.startInit() - NETWORK.set(session, TestNetwork(session)) + CONNECTION.set(session, TestNetwork(session)) EVENTS.set(session, EventMaster()) PROFILES.set(session, profiles) ASSETS_MANAGER.set(session, SessionAssetsManager(AssetsManagerProperties(PackProperties(version.packFormat)))) diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/SignatureKeyManagement.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/SignatureKeyManagement.kt index 5d26c4915..4c917f8f9 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/SignatureKeyManagement.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/SignatureKeyManagement.kt @@ -24,7 +24,7 @@ import de.bixilon.minosoft.data.chat.signature.ChatSignatureProperties import de.bixilon.minosoft.data.chat.signature.errors.KeyExpiredError import de.bixilon.minosoft.data.text.TextComponent import de.bixilon.minosoft.modding.event.events.chat.ChatMessageEvent -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.packets.c2s.play.SessionDataC2SP import de.bixilon.minosoft.protocol.protocol.ProtocolStates diff --git a/src/main/java/de/bixilon/minosoft/example/ExampleMod.kt b/src/main/java/de/bixilon/minosoft/example/ExampleMod.kt index 2c20a3a8e..b5d525e27 100644 --- a/src/main/java/de/bixilon/minosoft/example/ExampleMod.kt +++ b/src/main/java/de/bixilon/minosoft/example/ExampleMod.kt @@ -21,7 +21,7 @@ import de.bixilon.minosoft.modding.event.events.session.play.PlaySessionCreateEv import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.modding.loader.mod.ModMain -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.util.KUtil.toResourceLocation diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt index 9326bf02a..f340d0c37 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt @@ -46,7 +46,7 @@ import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventListener import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext import de.bixilon.minosoft.modding.event.events.KickEvent -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.network.session.play.PlaySessionStates import de.bixilon.minosoft.protocol.network.session.play.PlaySessionStates.Companion.disconnected diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderLoader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderLoader.kt index 99eee71e5..0ef157ebd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderLoader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderLoader.kt @@ -157,7 +157,7 @@ object RenderLoader { val latch = SimpleLatch(1) - session::state.observe(this) { + session::state.observe(this, instant = true) { if (it == PlaySessionStates.PLAYING && latch.count > 0) { latch.dec() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt index d8a3f1129..b96f40ed6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt @@ -33,7 +33,7 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2Util.EMPTY -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.util.KUtil.nullCompare import java.util.* diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DebugKeyBindings.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DebugKeyBindings.kt index 91ace96f0..0562faa87 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DebugKeyBindings.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/DebugKeyBindings.kt @@ -24,7 +24,7 @@ import de.bixilon.minosoft.gui.rendering.RenderContext import de.bixilon.minosoft.gui.rendering.input.key.manager.binding.BindingsManager import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes import de.bixilon.minosoft.gui.rendering.system.window.CursorModes -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.util.KUtil.format diff --git a/src/main/java/de/bixilon/minosoft/protocol/AddressResolver.kt b/src/main/java/de/bixilon/minosoft/protocol/AddressResolver.kt index c0835e7d9..67c090047 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/AddressResolver.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/AddressResolver.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.protocol import de.bixilon.minosoft.protocol.address.ServerAddress -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.util.DNSUtil import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogMessageType diff --git a/src/main/java/de/bixilon/minosoft/protocol/connection/ServerConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/ServerConnection.kt similarity index 95% rename from src/main/java/de/bixilon/minosoft/protocol/connection/ServerConnection.kt rename to src/main/java/de/bixilon/minosoft/protocol/ServerConnection.kt index b29414822..15d2e739a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/connection/ServerConnection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/ServerConnection.kt @@ -11,7 +11,7 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.connection +package de.bixilon.minosoft.protocol import de.bixilon.minosoft.protocol.network.session.Session import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket diff --git a/src/main/java/de/bixilon/minosoft/protocol/local/DebugConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/local/DebugConnection.kt new file mode 100644 index 000000000..358cea0b1 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/local/DebugConnection.kt @@ -0,0 +1,80 @@ +/* + * Minosoft + * Copyright (C) 2020-2024 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.protocol.local + +import de.bixilon.kotlinglm.vec3.Vec3d +import de.bixilon.kutil.observer.DataObserver.Companion.observed +import de.bixilon.minosoft.data.abilities.Gamemodes +import de.bixilon.minosoft.data.entities.entities.player.local.Abilities +import de.bixilon.minosoft.data.registries.blocks.types.building.stone.StoneBlock +import de.bixilon.minosoft.data.registries.dimension.DimensionProperties +import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft +import de.bixilon.minosoft.data.world.World +import de.bixilon.minosoft.data.world.biome.source.DummyBiomeSource +import de.bixilon.minosoft.data.world.positions.ChunkPosition +import de.bixilon.minosoft.protocol.ServerConnection +import de.bixilon.minosoft.protocol.network.session.Session +import de.bixilon.minosoft.protocol.network.session.play.PlaySession +import de.bixilon.minosoft.protocol.network.session.play.PlaySessionStates +import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket +import de.bixilon.minosoft.util.logging.Log +import de.bixilon.minosoft.util.logging.LogLevels +import de.bixilon.minosoft.util.logging.LogMessageType + +class DebugConnection : ServerConnection { + override val identifier = "dbg" + override var active by observed(false) + private var detached = false + private lateinit var session: PlaySession + + private fun World.createChunks(position: ChunkPosition, radius: Int) { + val biome = session.registries.biome[minecraft("plains")] + val stone = session.registries.block[StoneBlock.Block]?.states?.default + for (x in position.x - radius until position.x + radius) { + for (z in position.y - radius until position.y + radius) { + val chunk = chunks.create(ChunkPosition(x, z)) + chunk.biomeSource = DummyBiomeSource(biome) + chunk[0, 0, 0] = stone + } + } + } + + override fun connect(session: Session) { + if (session !is PlaySession) throw IllegalStateException("Not a play session?") + Log.log(LogMessageType.NETWORK, LogLevels.INFO) { "Establishing debug connection" } + active = true + this.session = session + + + session.world.dimension = DimensionProperties() + session.player.additional.gamemode = Gamemodes.CREATIVE + session.player.abilities = Abilities(false, true, true) + session.player.physics.forceTeleport(Vec3d(0, 100, 0)) + session.world.createChunks(ChunkPosition(0, 0), 5) + session.state = PlaySessionStates.PLAYING + } + + override fun disconnect() { + active = false + } + + override fun detach() { + detached = true + } + + override fun send(packet: C2SPacket) { + if (detached) return + packet.log(false) + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/connection/NetworkConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/NetworkConnection.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/protocol/connection/NetworkConnection.kt rename to src/main/java/de/bixilon/minosoft/protocol/network/NetworkConnection.kt index c21b74e2a..086a572d5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/connection/NetworkConnection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/NetworkConnection.kt @@ -11,12 +11,13 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.connection +package de.bixilon.minosoft.protocol.network import de.bixilon.kutil.concurrent.lock.thread.ThreadLock import de.bixilon.kutil.observer.DataObserver import de.bixilon.kutil.observer.DataObserver.Companion.observe import de.bixilon.kutil.observer.DataObserver.Companion.observed +import de.bixilon.minosoft.protocol.ServerConnection import de.bixilon.minosoft.protocol.address.ServerAddress import de.bixilon.minosoft.protocol.network.network.client.ClientNetwork import de.bixilon.minosoft.protocol.network.network.client.netty.NettyClient diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/ClientNetwork.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/ClientNetwork.kt index 08f204a6f..2aa1f4847 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/ClientNetwork.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/ClientNetwork.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.protocol.network.network.client -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.network.client.netty.packet.receiver.PacketReceiver import de.bixilon.minosoft.protocol.network.network.client.netty.packet.sender.PacketSender import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/NettyClient.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/NettyClient.kt index d0b1e93b9..3bf44e9e4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/NettyClient.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/NettyClient.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.protocol.network.network.client.netty import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.exception.ExceptionUtil.catchAll import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileManager -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.network.client.ClientNetwork import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.NetworkException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketHandleException diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/PlaySession.kt b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/PlaySession.kt index 60c103a6c..dbead77fa 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/PlaySession.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/PlaySession.kt @@ -53,8 +53,8 @@ import de.bixilon.minosoft.modding.event.events.session.play.PlaySessionCreateEv import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.modding.loader.phase.DefaultModPhases -import de.bixilon.minosoft.protocol.connection.NetworkConnection -import de.bixilon.minosoft.protocol.connection.ServerConnection +import de.bixilon.minosoft.protocol.ServerConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.Session import de.bixilon.minosoft.protocol.network.session.play.channel.DefaultChannelHandlers import de.bixilon.minosoft.protocol.network.session.play.channel.SessionChannelHandler @@ -249,8 +249,8 @@ class PlaySession( private fun establish(latch: AbstractLatch?) { latch?.dec() // remove initial value - connection.connect(this) state = PlaySessionStates.ESTABLISHING + connection.connect(this) } private fun establishRendering(latch: AbstractLatch?) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/login/LoginChannelManager.kt b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/login/LoginChannelManager.kt index dbaaaca3e..d32710c68 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/login/LoginChannelManager.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/login/LoginChannelManager.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.protocol.network.session.play.channel.login import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.collections.CollectionUtil.toSynchronizedList import de.bixilon.minosoft.data.registries.identified.ResourceLocation -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.network.session.play.channel.ChannelManager import de.bixilon.minosoft.protocol.packets.c2s.login.ChannelC2SP diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/play/PlayChannelManager.kt b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/play/PlayChannelManager.kt index 58bc4b42c..7ec021a11 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/play/PlayChannelManager.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/channel/play/PlayChannelManager.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.protocol.network.session.play.channel.play import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.collections.CollectionUtil.toSynchronizedList import de.bixilon.minosoft.data.registries.identified.ResourceLocation -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.network.session.play.channel.ChannelManager import de.bixilon.minosoft.protocol.packets.c2s.common.ChannelC2SP diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/settings/ClientSettingsManager.kt b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/settings/ClientSettingsManager.kt index 7f0374dca..b23ba749c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/settings/ClientSettingsManager.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/settings/ClientSettingsManager.kt @@ -17,7 +17,7 @@ import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.observer.DataObserver.Companion.observe import de.bixilon.kutil.observer.set.SetObserver.Companion.observeSet import de.bixilon.minosoft.data.language.LanguageUtil -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.packets.c2s.common.SettingsC2SP import de.bixilon.minosoft.protocol.protocol.ProtocolStates diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/util/SessionUtil.kt b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/util/SessionUtil.kt index 43275a8a8..2001c23f6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/session/play/util/SessionUtil.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/session/play/util/SessionUtil.kt @@ -31,7 +31,7 @@ import de.bixilon.minosoft.modding.event.events.chat.ChatMessageEvent import de.bixilon.minosoft.modding.event.events.chat.ChatMessageSendEvent import de.bixilon.minosoft.modding.event.events.container.ContainerCloseEvent import de.bixilon.minosoft.protocol.ProtocolUtil.encodeNetwork -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.packets.c2s.play.chat.ChatMessageC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.chat.CommandC2SP diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/session/status/StatusSession.kt b/src/main/java/de/bixilon/minosoft/protocol/network/session/status/StatusSession.kt index 796b7ebc6..af2890509 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/session/status/StatusSession.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/session/status/StatusSession.kt @@ -18,7 +18,7 @@ import de.bixilon.kutil.observer.DataObserver.Companion.observed import de.bixilon.minosoft.modding.event.events.session.status.StatusSessionCreateEvent import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.protocol.AddressResolver -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.Session import de.bixilon.minosoft.protocol.packets.c2s.handshake.HandshakeC2SP import de.bixilon.minosoft.protocol.packets.c2s.status.StatusRequestC2SP diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt index 663a90150..02591c9f1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.protocol.packets.registry import de.bixilon.kutil.cast.CastUtil.nullCast -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketBufferUnderflowException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.implementation.PacketNotImplementedException import de.bixilon.minosoft.protocol.network.session.Session diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/CompressionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/CompressionS2CP.kt index f50355f49..7558fa66f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/CompressionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/CompressionS2CP.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.common import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/KickS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/KickS2CP.kt index c61bbfc57..283679ea5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/KickS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/common/KickS2CP.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.common import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.KickEvent -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.network.session.play.PlaySessionStates import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/configuration/ReadyS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/configuration/ReadyS2CP.kt index aea9cfe11..5c268443f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/configuration/ReadyS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/configuration/ReadyS2CP.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.configuration import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.packets.c2s.configuration.ReadyC2SP import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt index e0044f368..d4270d219 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.login import com.google.common.primitives.Longs import de.bixilon.kutil.base64.Base64Util.toBase64 import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.packets.c2s.login.EncryptionC2SP import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt index 658dd2262..9c8501838 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.login import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.minosoft.data.entities.entities.player.properties.PlayerProperties import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.network.session.play.channel.vanila.BrandHandler.sendBrand import de.bixilon.minosoft.protocol.packets.c2s.login.ConfigureC2SP diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ReconfigureS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ReconfigureS2CP.kt index 1105d879f..f27902852 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ReconfigureS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ReconfigureS2CP.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.packets.c2s.play.ReconfigureC2SP import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket diff --git a/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt b/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt index ef4b98acd..c182862d5 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt @@ -19,13 +19,13 @@ import de.bixilon.kutil.shutdown.ShutdownManager import de.bixilon.minosoft.config.profile.profiles.account.AccountProfileManager import de.bixilon.minosoft.data.accounts.Account import de.bixilon.minosoft.protocol.address.ServerAddress -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.local.DebugConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.network.session.play.PlaySessionStates.Companion.disconnected import de.bixilon.minosoft.protocol.network.session.status.StatusSession import de.bixilon.minosoft.protocol.versions.Version import de.bixilon.minosoft.protocol.versions.Versions -import de.bixilon.minosoft.util.DNSUtil import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType @@ -53,6 +53,25 @@ object AutoConnect { session.connect() } + private fun debug(version: Version, account: Account) { + val session = PlaySession( + connection = DebugConnection(), + account = account, + version = version, + ) + if (RunConfiguration.DISABLE_EROS) { + session::state.observe(this) { + if (it.disconnected) { + Log.log(LogMessageType.AUTO_CONNECT, LogLevels.INFO) { "Disconnected from server, exiting..." } + ShutdownManager.shutdown() + } + } + } + session::error.observe(this) { ShutdownManager.shutdown(reason = AbstractShutdownReason.CRASH) } + Log.log(LogMessageType.AUTO_CONNECT, LogLevels.INFO) { "Connecting to debug, with version $version using account $account..." } + session.connect() + } + fun autoConnect(connectString: String) { // ToDo: Show those connections in eros val split = connectString.split(',') @@ -63,7 +82,7 @@ object AutoConnect { val account = accountProfile.entries[split.getOrNull(2)] ?: accountProfile.selected ?: throw RuntimeException("Auto connect: Account not found! Have you started normal before or added an account?") Log.log(LogMessageType.AUTO_CONNECT, LogLevels.INFO) { "Checking account..." } - account.tryCheck(null) +// account.tryCheck(null) if (version == Versions.AUTOMATIC) { Log.log(LogMessageType.AUTO_CONNECT, LogLevels.INFO) { "Pinging server to get version..." } @@ -74,6 +93,8 @@ object AutoConnect { return } - autoConnect(DNSUtil.resolveServerAddress(address).first(), version, account) + debug(version, account) + + // autoConnect(DNSUtil.resolveServerAddress(address).first(), version, account) } } diff --git a/src/main/java/de/bixilon/minosoft/terminal/commands/ConnectCommand.kt b/src/main/java/de/bixilon/minosoft/terminal/commands/ConnectCommand.kt index 612c94758..5d04fa39d 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/commands/ConnectCommand.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/commands/ConnectCommand.kt @@ -22,7 +22,7 @@ import de.bixilon.minosoft.commands.stack.print.PrintTarget import de.bixilon.minosoft.config.profile.profiles.account.AccountProfileManager import de.bixilon.minosoft.data.accounts.Account import de.bixilon.minosoft.protocol.address.ServerAddress -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession import de.bixilon.minosoft.protocol.network.session.status.StatusSession import de.bixilon.minosoft.protocol.versions.Version diff --git a/src/main/java/de/bixilon/minosoft/util/crash/section/SessionCrashSection.kt b/src/main/java/de/bixilon/minosoft/util/crash/section/SessionCrashSection.kt index 311f2ff86..49edd7b72 100644 --- a/src/main/java/de/bixilon/minosoft/util/crash/section/SessionCrashSection.kt +++ b/src/main/java/de/bixilon/minosoft/util/crash/section/SessionCrashSection.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.util.crash.section -import de.bixilon.minosoft.protocol.connection.NetworkConnection +import de.bixilon.minosoft.protocol.network.NetworkConnection import de.bixilon.minosoft.protocol.network.session.play.PlaySession class SessionCrashSection(