item entity renderer

This commit is contained in:
Moritz Zwerger 2023-11-15 15:55:32 +01:00
parent 2da0531fca
commit 7a2c29b524
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 13 additions and 11 deletions

View File

@ -29,8 +29,7 @@ import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
class ItemEntity(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : Entity(connection, entityType, data, position, rotation) {
@get:SynchronizedEntityData
val item: ItemStack?
get() = data.get(ITEM_DATA, null)
val stack: ItemStack? by data(ITEM_DATA, null)
override fun onAttack(attacker: Entity): Boolean {

View File

@ -16,6 +16,7 @@ package de.bixilon.minosoft.gui.rendering.entities.factory
import de.bixilon.kutil.latch.AbstractLatch
import de.bixilon.minosoft.data.registries.factory.DefaultFactory
import de.bixilon.minosoft.gui.rendering.entities.renderer.item.FallingBlockEntityRenderer
import de.bixilon.minosoft.gui.rendering.entities.renderer.item.ItemEntityRenderer
import de.bixilon.minosoft.gui.rendering.entities.renderer.item.PrimedTNTEntityRenderer
import de.bixilon.minosoft.gui.rendering.entities.renderer.living.animal.CowRenderer
import de.bixilon.minosoft.gui.rendering.entities.renderer.living.animal.PigRenderer
@ -28,7 +29,7 @@ import de.bixilon.minosoft.util.logging.LogMessageType
object DefaultEntityModels : DefaultFactory<RegisteredEntityModelFactory<*>>(
PlayerRenderer,
PigRenderer, CowRenderer,
PrimedTNTEntityRenderer, FallingBlockEntityRenderer,
PrimedTNTEntityRenderer, FallingBlockEntityRenderer, ItemEntityRenderer,
) {
fun load(loader: ModelLoader, latch: AbstractLatch?) {

View File

@ -14,24 +14,26 @@
package de.bixilon.minosoft.gui.rendering.entities.renderer.item
import de.bixilon.kutil.observer.DataObserver.Companion.observe
import de.bixilon.minosoft.data.entities.entities.item.FallingBlockEntity
import de.bixilon.minosoft.data.entities.entities.item.ItemEntity
import de.bixilon.minosoft.data.registries.identified.Identified
import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer
import de.bixilon.minosoft.gui.rendering.entities.factory.RegisteredEntityModelFactory
import de.bixilon.minosoft.gui.rendering.entities.feature.block.BlockFeature
import de.bixilon.minosoft.gui.rendering.entities.feature.item.ItemFeature
import de.bixilon.minosoft.gui.rendering.entities.renderer.EntityRenderer
import de.bixilon.minosoft.gui.rendering.models.raw.display.DisplayPositions
class ItemEntityRenderer(renderer: EntitiesRenderer, entity: FallingBlockEntity) : EntityRenderer<FallingBlockEntity>(renderer, entity) {
val block = BlockFeature(this, null).register()
class ItemEntityRenderer(renderer: EntitiesRenderer, entity: ItemEntity) : EntityRenderer<ItemEntity>(renderer, entity) {
val item = ItemFeature(this, null, DisplayPositions.GROUND).register()
init {
entity::blockState.observe(this, true) { block.state = it }
entity::stack.observe(this, true) { item.stack = it }
// TODO: rotate, lift up and down
}
companion object : RegisteredEntityModelFactory<FallingBlockEntity>, Identified {
override val identifier get() = FallingBlockEntity.identifier
companion object : RegisteredEntityModelFactory<ItemEntity>, Identified {
override val identifier get() = ItemEntity.identifier
override fun create(renderer: EntitiesRenderer, entity: FallingBlockEntity) = ItemEntityRenderer(renderer, entity)
override fun create(renderer: EntitiesRenderer, entity: ItemEntity) = ItemEntityRenderer(renderer, entity)
}
}