From 81f3644565ec0cb400585ab17a146b5f624d7d7c Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 28 Sep 2022 21:48:47 +0200 Subject: [PATCH] use String::trimWhitespaces from kutil --- .../gui/gui/elements/input/node/NodeTextInputElement.kt | 5 ++--- .../render/texture/advanced/block/BlockDustParticle.kt | 3 ++- .../protocol/network/connection/play/ConnectionUtil.kt | 8 +++++--- .../protocol/network/connection/play/PlayConnection.kt | 9 +++++---- .../connection/play/plugin/DefaultPluginHandler.kt | 8 ++++---- src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt | 7 ++----- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/elements/input/node/NodeTextInputElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/elements/input/node/NodeTextInputElement.kt index 732b2c30c..7c378f5dd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/elements/input/node/NodeTextInputElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/elements/input/node/NodeTextInputElement.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.gui.gui.elements.input.node import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kutil.string.StringUtil.codePointAtOrNull import de.bixilon.kutil.string.TextUtil -import de.bixilon.kutil.string.WhitespaceUtil.removeTrailingWhitespaces +import de.bixilon.kutil.string.WhitespaceUtil.trimWhitespaces import de.bixilon.minosoft.commands.errors.ReaderError import de.bixilon.minosoft.commands.nodes.CommandNode import de.bixilon.minosoft.commands.stack.CommandStack @@ -32,7 +32,6 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY -import de.bixilon.minosoft.terminal.cli.CLI.removeDuplicatedWhitespaces import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType @@ -121,7 +120,7 @@ class NodeTextInputElement( fun updateSuggestion(suggestion: Any) { val string = suggestion.toString() - val value = value.removeDuplicatedWhitespaces().removeTrailingWhitespaces() + val value = value.trimWhitespaces() val overlappingLength = TextUtil.getOverlappingText(value, string) var nextValue = value val lastChar = value.codePointAtOrNull(value.length - 1) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt index 33d396769..3aa843edb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/advanced/block/BlockDustParticle.kt @@ -41,7 +41,7 @@ class BlockDustParticle(connection: PlayConnection, position: Vec3d, velocity: V color = 0.6f.asGray() if (data.blockState.block.resourceLocation != MinecraftBlocks.GRASS_BLOCK) { // Just the overlay is tinted - connection.rendering!!.renderWindow.tintManager.getTint(data.blockState, null, blockPosition)?.getOrNull(0)?.asRGBColor()?.let { + connection.rendering!!.renderWindow.tintManager.getTint(data.blockState, null, blockPosition)?.getOrNull(PARTICLE_TINT_INDEX)?.asRGBColor()?.let { color = RGBColor(color.floatRed * it.floatRed, color.floatGreen * it.floatGreen, color.floatBlue * it.floatBlue) } } @@ -57,6 +57,7 @@ class BlockDustParticle(connection: PlayConnection, position: Vec3d, velocity: V companion object : ParticleFactory { private const val GRAY = 153 shl 16 or (153 shl 8) or 153 + private const val PARTICLE_TINT_INDEX = 0 override val RESOURCE_LOCATION: ResourceLocation = "minecraft:block".toResourceLocation() override fun build(connection: PlayConnection, position: Vec3d, velocity: Vec3d, data: ParticleData): BlockDustParticle? { 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 index 67699a44f..2e334c3fa 100644 --- 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 @@ -16,7 +16,7 @@ package de.bixilon.minosoft.protocol.network.connection.play import com.fasterxml.jackson.core.io.JsonStringEncoder import com.google.common.primitives.Longs import de.bixilon.kotlinglm.vec3.Vec3d -import de.bixilon.kutil.string.WhitespaceUtil.removeTrailingWhitespaces +import de.bixilon.kutil.string.WhitespaceUtil.trimWhitespaces import de.bixilon.minosoft.commands.stack.CommandStack import de.bixilon.minosoft.data.text.BaseComponent import de.bixilon.minosoft.data.text.ChatComponent @@ -32,7 +32,6 @@ import de.bixilon.minosoft.protocol.packets.c2s.play.chat.SignedChatMessageC2SP import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.encryption.CryptManager import de.bixilon.minosoft.protocol.protocol.encryption.SignatureData -import de.bixilon.minosoft.terminal.cli.CLI.removeDuplicatedWhitespaces import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType @@ -58,13 +57,16 @@ class ConnectionUtil( } fun sendChatMessage(message: String) { - val message = message.removeDuplicatedWhitespaces().removeTrailingWhitespaces() + val message = message.trimWhitespaces() if (message.isBlank()) { throw IllegalArgumentException("Chat message can not be blank!") } if (message.contains(ProtocolDefinition.TEXT_COMPONENT_SPECIAL_PREFIX_CHAR)) { throw IllegalArgumentException("Chat message must not contain chat formatting (${ProtocolDefinition.TEXT_COMPONENT_SPECIAL_PREFIX_CHAR}): $message") } + if (message.length > connection.version.maxChatMessageSize) { + throw IllegalArgumentException("Message length (${message.length} can not exceed ${connection.version.maxChatMessageSize})") + } if (connection.fireEvent(ChatMessageSendEvent(connection, message))) { return } 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 f8b845976..301c8053c 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 @@ -135,15 +135,16 @@ class PlayConnection( } } } - network::state.observe(this) { - when (it) { + network::state.observe(this) { state -> + when (state) { ProtocolStates.HANDSHAKING, ProtocolStates.STATUS -> throw IllegalStateException("Invalid state!") ProtocolStates.LOGIN -> { - state = PlayConnectionStates.LOGGING_IN + this.state = PlayConnectionStates.LOGGING_IN this.network.send(StartC2SP(this.player)) } + ProtocolStates.PLAY -> { - state = PlayConnectionStates.JOINING + this.state = PlayConnectionStates.JOINING if (CLI.connection == null) { CLI.connection = this diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/DefaultPluginHandler.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/DefaultPluginHandler.kt index 1f842d73d..daf136dd5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/DefaultPluginHandler.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/DefaultPluginHandler.kt @@ -33,13 +33,13 @@ object DefaultPluginHandler { connection.pluginManager[brandChannel] = { connection.serverInfo.brand = it.readString() - sendBrand(brandChannel, connection, if (connection.profiles.connection.fakeBrand) ProtocolDefinition.VANILLA_BRAND else ProtocolDefinition.MINOSOFT_BRAND) + connection.sendBrand(brandChannel, if (connection.profiles.connection.fakeBrand) ProtocolDefinition.VANILLA_BRAND else ProtocolDefinition.MINOSOFT_BRAND) } } - private fun sendBrand(channel: ResourceLocation, connection: PlayConnection, brand: String) { - val buffer = PlayOutByteBuffer(connection) + private fun PlayConnection.sendBrand(channel: ResourceLocation, brand: String) { + val buffer = PlayOutByteBuffer(this) buffer.writeByteArray(brand.encodeNetwork()) - connection.sendPacket(PluginC2SP(channel, buffer)) + sendPacket(PluginC2SP(channel, buffer)) } } diff --git a/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt b/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt index 70a2bbf12..dd9a6899a 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt @@ -16,6 +16,7 @@ package de.bixilon.minosoft.terminal.cli import de.bixilon.kutil.latch.CountUpAndDownLatch import de.bixilon.kutil.shutdown.AbstractShutdownReason import de.bixilon.kutil.shutdown.ShutdownManager +import de.bixilon.kutil.string.WhitespaceUtil.trimWhitespaces import de.bixilon.kutil.watcher.DataWatcher.Companion.observe import de.bixilon.kutil.watcher.DataWatcher.Companion.watched import de.bixilon.minosoft.commands.nodes.RootNode @@ -68,7 +69,7 @@ object CLI { while (true) { try { - val line: String = reader.readLine().removeDuplicatedWhitespaces() + val line: String = reader.readLine().trimWhitespaces() if (line.isBlank()) { continue } @@ -82,10 +83,6 @@ object CLI { } } - fun String.removeDuplicatedWhitespaces(): String { - return this.replace("\\s{2,}".toRegex(), "") - } - object NodeCompleter : Completer { override fun complete(reader: LineReader, line: ParsedLine, candidates: MutableList) {