events: EntityDestroyEvent now holds single entity

This commit is contained in:
Bixilon 2021-06-10 12:40:14 +02:00 committed by Lukas
parent 119541a2b1
commit 52f750ba9a
3 changed files with 8 additions and 19 deletions

View File

@ -53,16 +53,10 @@ class EntityHitBoxRenderer(
}
})
connection.registerEvent(CallbackEventInvoker.of<EntityDestroyEvent> {
val meshes: MutableSet<EntityHitBoxMesh> = mutableSetOf()
for (entity in it.entities) {
val mesh = this.meshes.getAndRemove(entity) ?: continue
meshes += mesh
}
val mesh = this.meshes.getAndRemove(it.entity) ?: return@of
renderWindow.queue += {
for (mesh in meshes) {
mesh.unload(false)
}
mesh.unload(false)
}
})
}

View File

@ -15,15 +15,9 @@ package de.bixilon.minosoft.modding.event.events
import de.bixilon.minosoft.data.entities.entities.Entity
import de.bixilon.minosoft.modding.event.EventInitiators
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.play.EntityDestroyS2CP
import de.bixilon.minosoft.util.KUtil.entities
class EntityDestroyEvent(
connection: PlayConnection,
initiator: EventInitiators,
val entities: Set<Entity>,
) : PlayConnectionEvent(connection, initiator) {
constructor(connection: PlayConnection, packet: EntityDestroyS2CP) : this(connection, EventInitiators.SERVER, packet.entityIds.entities(connection))
}
connection: PlayConnection,
initiator: EventInitiators,
val entity: Entity,
) : PlayConnectionEvent(connection, initiator)

View File

@ -13,6 +13,7 @@
package de.bixilon.minosoft.protocol.packets.s2c.play
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.modding.event.EventInitiators
import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
@ -35,11 +36,11 @@ class EntityDestroyS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
override fun handle(connection: PlayConnection) {
connection.fireEvent(EntityDestroyEvent(connection, this))
for (entityId in entityIds) {
val entity = connection.world.entities[entityId] ?: continue
entity.vehicle?.passengers?.remove(entity)
connection.fireEvent(EntityDestroyEvent(connection, EventInitiators.SERVER, entity))
connection.world.entities.remove(entityId)
}
}