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) { class ItemEntity(connection: PlayConnection, entityType: EntityType, data: EntityData, position: Vec3d, rotation: EntityRotation) : Entity(connection, entityType, data, position, rotation) {
@get:SynchronizedEntityData @get:SynchronizedEntityData
val item: ItemStack? val stack: ItemStack? by data(ITEM_DATA, null)
get() = data.get(ITEM_DATA, null)
override fun onAttack(attacker: Entity): Boolean { 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.kutil.latch.AbstractLatch
import de.bixilon.minosoft.data.registries.factory.DefaultFactory 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.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.item.PrimedTNTEntityRenderer
import de.bixilon.minosoft.gui.rendering.entities.renderer.living.animal.CowRenderer import de.bixilon.minosoft.gui.rendering.entities.renderer.living.animal.CowRenderer
import de.bixilon.minosoft.gui.rendering.entities.renderer.living.animal.PigRenderer 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<*>>( object DefaultEntityModels : DefaultFactory<RegisteredEntityModelFactory<*>>(
PlayerRenderer, PlayerRenderer,
PigRenderer, CowRenderer, PigRenderer, CowRenderer,
PrimedTNTEntityRenderer, FallingBlockEntityRenderer, PrimedTNTEntityRenderer, FallingBlockEntityRenderer, ItemEntityRenderer,
) { ) {
fun load(loader: ModelLoader, latch: AbstractLatch?) { fun load(loader: ModelLoader, latch: AbstractLatch?) {

View File

@ -14,24 +14,26 @@
package de.bixilon.minosoft.gui.rendering.entities.renderer.item package de.bixilon.minosoft.gui.rendering.entities.renderer.item
import de.bixilon.kutil.observer.DataObserver.Companion.observe 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.data.registries.identified.Identified
import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer
import de.bixilon.minosoft.gui.rendering.entities.factory.RegisteredEntityModelFactory 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.entities.renderer.EntityRenderer
import de.bixilon.minosoft.gui.rendering.models.raw.display.DisplayPositions
class ItemEntityRenderer(renderer: EntitiesRenderer, entity: FallingBlockEntity) : EntityRenderer<FallingBlockEntity>(renderer, entity) { class ItemEntityRenderer(renderer: EntitiesRenderer, entity: ItemEntity) : EntityRenderer<ItemEntity>(renderer, entity) {
val block = BlockFeature(this, null).register() val item = ItemFeature(this, null, DisplayPositions.GROUND).register()
init { 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 { companion object : RegisteredEntityModelFactory<ItemEntity>, Identified {
override val identifier get() = FallingBlockEntity.identifier 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)
} }
} }