diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.kt index af9315c9f..6165c7e8e 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/item/ItemEntity.kt @@ -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 { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/factory/DefaultEntityModels.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/factory/DefaultEntityModels.kt index 384a01ec2..d087d0ef8 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/factory/DefaultEntityModels.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/factory/DefaultEntityModels.kt @@ -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>( PlayerRenderer, PigRenderer, CowRenderer, - PrimedTNTEntityRenderer, FallingBlockEntityRenderer, + PrimedTNTEntityRenderer, FallingBlockEntityRenderer, ItemEntityRenderer, ) { fun load(loader: ModelLoader, latch: AbstractLatch?) { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/item/ItemEntityRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/item/ItemEntityRenderer.kt index 8b5d2f62a..fbf6f87d6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/item/ItemEntityRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/item/ItemEntityRenderer.kt @@ -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(renderer, entity) { - val block = BlockFeature(this, null).register() +class ItemEntityRenderer(renderer: EntitiesRenderer, entity: ItemEntity) : EntityRenderer(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, Identified { - override val identifier get() = FallingBlockEntity.identifier + companion object : RegisteredEntityModelFactory, 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) } }