mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 09:56:37 -04:00
events: EntityDestroyEvent now holds single entity
This commit is contained in:
parent
119541a2b1
commit
52f750ba9a
@ -53,17 +53,11 @@ class EntityHitBoxRenderer(
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
connection.registerEvent(CallbackEventInvoker.of<EntityDestroyEvent> {
|
connection.registerEvent(CallbackEventInvoker.of<EntityDestroyEvent> {
|
||||||
val meshes: MutableSet<EntityHitBoxMesh> = mutableSetOf()
|
val mesh = this.meshes.getAndRemove(it.entity) ?: return@of
|
||||||
for (entity in it.entities) {
|
|
||||||
val mesh = this.meshes.getAndRemove(entity) ?: continue
|
|
||||||
meshes += mesh
|
|
||||||
}
|
|
||||||
|
|
||||||
renderWindow.queue += {
|
renderWindow.queue += {
|
||||||
for (mesh in meshes) {
|
|
||||||
mesh.unload(false)
|
mesh.unload(false)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,15 +15,9 @@ package de.bixilon.minosoft.modding.event.events
|
|||||||
import de.bixilon.minosoft.data.entities.entities.Entity
|
import de.bixilon.minosoft.data.entities.entities.Entity
|
||||||
import de.bixilon.minosoft.modding.event.EventInitiators
|
import de.bixilon.minosoft.modding.event.EventInitiators
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
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(
|
class EntityDestroyEvent(
|
||||||
connection: PlayConnection,
|
connection: PlayConnection,
|
||||||
initiator: EventInitiators,
|
initiator: EventInitiators,
|
||||||
val entities: Set<Entity>,
|
val entity: Entity,
|
||||||
) : PlayConnectionEvent(connection, initiator) {
|
) : PlayConnectionEvent(connection, initiator)
|
||||||
|
|
||||||
constructor(connection: PlayConnection, packet: EntityDestroyS2CP) : this(connection, EventInitiators.SERVER, packet.entityIds.entities(connection))
|
|
||||||
|
|
||||||
}
|
|
@ -13,6 +13,7 @@
|
|||||||
package de.bixilon.minosoft.protocol.packets.s2c.play
|
package de.bixilon.minosoft.protocol.packets.s2c.play
|
||||||
|
|
||||||
import de.bixilon.minosoft.Minosoft
|
import de.bixilon.minosoft.Minosoft
|
||||||
|
import de.bixilon.minosoft.modding.event.EventInitiators
|
||||||
import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent
|
import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
||||||
@ -35,11 +36,11 @@ class EntityDestroyS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
|
|
||||||
|
|
||||||
override fun handle(connection: PlayConnection) {
|
override fun handle(connection: PlayConnection) {
|
||||||
connection.fireEvent(EntityDestroyEvent(connection, this))
|
|
||||||
for (entityId in entityIds) {
|
for (entityId in entityIds) {
|
||||||
val entity = connection.world.entities[entityId] ?: continue
|
val entity = connection.world.entities[entityId] ?: continue
|
||||||
entity.vehicle?.passengers?.remove(entity)
|
entity.vehicle?.passengers?.remove(entity)
|
||||||
|
|
||||||
|
connection.fireEvent(EntityDestroyEvent(connection, EventInitiators.SERVER, entity))
|
||||||
connection.world.entities.remove(entityId)
|
connection.world.entities.remove(entityId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user