wip debug world

This commit is contained in:
Moritz Zwerger 2024-08-02 14:40:55 +02:00
parent aaa195cdc6
commit ee02f8bb5c
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
34 changed files with 161 additions and 93 deletions

View File

@ -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)

View File

@ -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 {
}
}
}
*/

View File

@ -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
}
}
*/

View File

@ -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<C2SPacket>()
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)
}
}

View File

@ -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 <T : C2SPacket> ClientNetwork.assertPacket(type: Class<T>): T {
fun <T : C2SPacket> ServerConnection.assertPacket(type: Class<T>): 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

View File

@ -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))))

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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()
}

View File

@ -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.*

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <https://www.gnu.org/licenses/>.
*
* 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)
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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?) {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)
}
}

View File

@ -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

View File

@ -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(