filter out more packets, NamedSoundEvent, more fixes

This commit is contained in:
Bixilon 2021-06-05 12:50:25 +02:00 committed by Lukas
parent b3cd731395
commit 93db26e250
19 changed files with 87 additions and 25 deletions

View File

@ -13,7 +13,6 @@
package de.bixilon.minosoft.gui.rendering.sound
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
import de.bixilon.minosoft.modding.event.CallbackEventInvoker
import de.bixilon.minosoft.modding.event.events.ExplosionEvent
import de.bixilon.minosoft.modding.event.events.PlaySoundEvent
@ -27,7 +26,7 @@ object DefaultAudioBehavior {
fun register(connection: PlayConnection) {
val world = connection.world
val invokers = listOf(
CallbackEventInvoker.of<PlaySoundEvent> { world.playSoundEvent(it.soundEvent, it.position.toVec3, it.volume, it.pitch) },
CallbackEventInvoker.of<PlaySoundEvent> { world.playSoundEvent(it.soundEvent, it.position, it.volume, it.pitch) },
CallbackEventInvoker.of<ExplosionEvent> { world.playSoundEvent(ENTITY_GENERIC_EXPLODE, it.position, 4.0f, (1.0f + (Random.nextFloat() - Random.nextFloat()) * 0.2f) * 0.7f) },
)

View File

@ -17,20 +17,23 @@ import de.bixilon.minosoft.data.SoundCategories
import de.bixilon.minosoft.data.mappings.sounds.SoundEvent
import de.bixilon.minosoft.modding.event.EventInitiators
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.play.NamedSoundEventS2CP
import de.bixilon.minosoft.protocol.packets.s2c.play.SoundEventS2CP
import glm_.vec3.Vec3i
import glm_.vec3.Vec3
class PlaySoundEvent(
connection: PlayConnection,
initiator: EventInitiators,
val category: SoundCategories?,
position: Vec3i,
position: Vec3,
val soundEvent: SoundEvent,
val volume: Float,
val pitch: Float,
) : CancelableEvent(connection, initiator) {
val position: Vec3i = position
get() = Vec3i(field)
val position: Vec3 = position
get() = Vec3(field)
constructor(connection: PlayConnection, packet: SoundEventS2CP) : this(connection, EventInitiators.SERVER, packet.category, packet.position, packet.soundEvent, packet.volume, packet.pitch)
constructor(connection: PlayConnection, packet: SoundEventS2CP) : this(connection, EventInitiators.SERVER, packet.category, Vec3(packet.position), packet.soundEvent, packet.volume, packet.pitch)
constructor(connection: PlayConnection, packet: NamedSoundEventS2CP) : this(connection, EventInitiators.SERVER, packet.category, packet.position, packet.soundEvent!!, packet.volume, packet.pitch)
}

View File

@ -19,7 +19,6 @@ import de.bixilon.minosoft.data.ChatTextPositions
import de.bixilon.minosoft.data.accounts.Account
import de.bixilon.minosoft.data.assets.MultiAssetsManager
import de.bixilon.minosoft.data.commands.CommandRootNode
import de.bixilon.minosoft.data.mappings.DefaultRegistries
import de.bixilon.minosoft.data.mappings.MappingsLoadingException
import de.bixilon.minosoft.data.mappings.ResourceLocation
import de.bixilon.minosoft.data.mappings.recipes.Recipes
@ -34,16 +33,13 @@ import de.bixilon.minosoft.data.text.ChatComponent
import de.bixilon.minosoft.data.world.World
import de.bixilon.minosoft.gui.rendering.RenderConstants
import de.bixilon.minosoft.gui.rendering.Rendering
import de.bixilon.minosoft.modding.channels.DefaultPluginChannels
import de.bixilon.minosoft.modding.event.CallbackEventInvoker
import de.bixilon.minosoft.modding.event.EventInvoker
import de.bixilon.minosoft.modding.event.events.ChatMessageReceiveEvent
import de.bixilon.minosoft.modding.event.events.ConnectionStateChangeEvent
import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent
import de.bixilon.minosoft.modding.event.events.PluginMessageReceiveEvent
import de.bixilon.minosoft.protocol.packets.c2s.handshaking.HandshakeC2SP
import de.bixilon.minosoft.protocol.packets.c2s.login.LoginStartC2SP
import de.bixilon.minosoft.protocol.packets.c2s.play.PluginMessageC2SP
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket
import de.bixilon.minosoft.protocol.protocol.*
@ -150,14 +146,6 @@ class PlayConnection(
}
Log.log(LogMessageType.CHAT_IN, additionalPrefix = ChatComponent.of(additionalPrefix)) { it.message }
})
registerEvent(CallbackEventInvoker.of<PluginMessageReceiveEvent> {
val brandName = DefaultRegistries.DEFAULT_PLUGIN_CHANNELS_REGISTRY.forVersion(version)[DefaultPluginChannels.BRAND]!!.resourceLocation
if (it.channel == brandName) {
val buffer = PlayOutByteBuffer(this)
buffer.writeString("vanilla") // ToDo: Remove prefix
sendPacket(PluginMessageC2SP(brandName, buffer.toByteArray()))
}
})
}
ConnectionStates.DISCONNECTED -> {
if (previousConnectionState.connected) {

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
@ -44,6 +45,9 @@ class EntityDestroyS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity destroy (entityIds=$entityIds)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
@ -29,7 +30,9 @@ class EntityHeadRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity head rotation (entityId=$entityId, headYaw=$headYaw)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.entities.meta.EntityMetaData
import de.bixilon.minosoft.modding.event.events.EntityMetaDataChangeEvent
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
@ -34,6 +35,9 @@ class EntityMetadataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity metadata (entityId=$entityId, metaData=$metaData)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
@ -43,6 +44,9 @@ class EntityMoveAndRotateS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity move and rotate (entityId=$entityId, delta=$delta, yaw=$yaw, pitch=$pitch, onGround=$onGround)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
@ -40,6 +41,9 @@ class EntityRelativeMoveS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity relative move (entityId=$entityId, delta=$delta, onGround=$onGround)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
@ -36,6 +37,9 @@ class EntityRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity rotation (entityId=$entityId, yaw=$yaw, pitch=$pitch, onGround=$onGround)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
@ -44,6 +45,9 @@ class EntityTeleportS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity teleport (entityId=$entityId, position=$position, yaw=$yaw, pitch=$pitch, onGround=$onGround)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
@ -30,6 +31,9 @@ class EntityVelocityS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Entity velocity (entityId=$entityId, velocity=$velocity)" }
}
}

View File

@ -15,17 +15,21 @@ package de.bixilon.minosoft.protocol.packets.s2c.play
import com.google.common.collect.HashBiMap
import de.bixilon.minosoft.data.Difficulties
import de.bixilon.minosoft.data.abilities.Gamemodes
import de.bixilon.minosoft.data.mappings.DefaultRegistries
import de.bixilon.minosoft.data.mappings.Dimension
import de.bixilon.minosoft.data.mappings.ResourceLocation
import de.bixilon.minosoft.data.world.biome.accessor.BlockBiomeAccessor
import de.bixilon.minosoft.data.world.biome.accessor.NoiseBiomeAccessor
import de.bixilon.minosoft.modding.channels.DefaultPluginChannels
import de.bixilon.minosoft.modding.event.events.JoinGameEvent
import de.bixilon.minosoft.protocol.ErrorHandler
import de.bixilon.minosoft.protocol.network.connection.Connection
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.c2s.play.ClientSettingsC2SP
import de.bixilon.minosoft.protocol.packets.c2s.play.PluginMessageC2SP
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
import de.bixilon.minosoft.protocol.protocol.PlayOutByteBuffer
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_20W27A
import de.bixilon.minosoft.util.BitByte
@ -153,8 +157,13 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
} else {
NoiseBiomeAccessor(connection.world)
}
TimeWorker.addTask(TimeWorkerTask(100, true) { // ToDo: Temp workaround
TimeWorker.addTask(TimeWorkerTask(150, true) { // ToDo: Temp workaround
connection.sendPacket(ClientSettingsC2SP("en_us"))
val brandName = DefaultRegistries.DEFAULT_PLUGIN_CHANNELS_REGISTRY.forVersion(connection.version)[DefaultPluginChannels.BRAND]!!.resourceLocation
val buffer = PlayOutByteBuffer(connection)
buffer.writeString("vanilla") // ToDo: Remove prefix
connection.sendPacket(PluginMessageC2SP(brandName, buffer.toByteArray()))
})
}

View File

@ -12,7 +12,11 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.SoundCategories
import de.bixilon.minosoft.data.mappings.sounds.SoundEvent
import de.bixilon.minosoft.modding.event.events.PlaySoundEvent
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
@ -23,7 +27,7 @@ import de.bixilon.minosoft.util.logging.LogMessageType
import glm_.vec3.Vec3
class NamedSoundEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
val sound: String
val soundEvent: SoundEvent?
val volume: Float
val pitch: Float
lateinit var position: Vec3
@ -35,7 +39,7 @@ class NamedSoundEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
if (buffer.versionId >= ProtocolVersions.V_17W15A && buffer.versionId < ProtocolVersions.V_17W18A) {
this.category = SoundCategories[buffer.readVarInt()]
}
sound = buffer.readString()
soundEvent = buffer.connection.registries.soundEventRegistry[buffer.readResourceLocation()]
if (buffer.versionId >= ProtocolVersions.V_17W15A && buffer.versionId < ProtocolVersions.V_17W18A) {
buffer.readString() // parrot entity type
}
@ -56,7 +60,15 @@ class NamedSoundEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
}
override fun handle(connection: PlayConnection) {
soundEvent ?: return
if (!Minosoft.config.config.game.sound.enablePacketSounds) {
return
}
connection.fireEvent(PlaySoundEvent(connection, this))
}
override fun log() {
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Named sound event (sound=$sound, volume=$volume, pitch=$pitch,position=$position, category=$category)" }
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Named sound event (sound=$soundEvent, volume=$volume, pitch=$pitch,position=$position, category=$category)" }
}
}

View File

@ -83,6 +83,6 @@ class PositionAndRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "LocalPlayerEntity position (position=$position, rotation=$rotation, onGround=$isOnGround)" }
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "LocalPlayerEntity position (position=$position, rotation=$rotation, onGround=$isOnGround, flags=$flags, teleportId=$teleportId, dismountVehicle=$dismountVehicle)" }
}
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.abilities.Gamemodes
import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity
import de.bixilon.minosoft.data.player.PlayerProperty
@ -172,6 +173,9 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Tab list data (items=$items)" }
}

View File

@ -12,6 +12,7 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.mappings.ResourceLocation
import de.bixilon.minosoft.data.tags.Tag
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
@ -59,6 +60,9 @@ class TagsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Tags (tags=$tags)" }
}

View File

@ -13,6 +13,7 @@
package de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.teams
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.scoreboard.NameTagVisibilities
import de.bixilon.minosoft.data.scoreboard.Team
import de.bixilon.minosoft.data.scoreboard.TeamCollisionRules
@ -115,6 +116,9 @@ class TeamCreateS2CP(val name: String, buffer: PlayInByteBuffer) : PlayS2CPacket
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Team create (name=$name, prefix=$prefix, suffix=$suffix, friendlyFire=$friendlyFire, canSeeInvisibleTeam=$canSeeInvisibleTeam, collisionRule=$collisionRule, nameTagVisibility=$nameTagVisibility, formattingCode=$formattingCode§r, members=$members)" }
}
}

View File

@ -13,6 +13,7 @@
package de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.teams
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
@ -35,6 +36,9 @@ class TeamMemberAddS2CP(val name: String, buffer: PlayInByteBuffer) : PlayS2CPac
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Team member add (name=$name, members=$members)" }
}
}

View File

@ -13,6 +13,7 @@
package de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.teams
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.scoreboard.NameTagVisibilities
import de.bixilon.minosoft.data.scoreboard.TeamCollisionRules
import de.bixilon.minosoft.data.text.ChatCode
@ -103,6 +104,9 @@ class TeamUpdateS2CP(val name: String, buffer: PlayInByteBuffer) : PlayS2CPacket
}
override fun log() {
if (Minosoft.config.config.general.reduceProtocolLog) {
return
}
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Team update (name=$name, prefix=$prefix, suffix=$suffix, friendlyFire=$friendlyFire, canSeeInvisibleTeam=$canSeeInvisibleTeam, collisionRule=$collisionRule, nameTagVisibility=$nameTagVisibility, formattingCode=$formattingCode)" }
}
}