From bb95be0d094e61bc55cf9fffcec4a72961a59423 Mon Sep 17 00:00:00 2001 From: Miraculixx Date: Fri, 24 Jan 2025 23:51:14 +0100 Subject: [PATCH] Add ocelot renderer --- .../map/hires/entity/EntityRendererType.java | 2 +- .../core/map/hires/entity/OcelotRenderer.java | 39 +++++++++++++++++++ .../core/world/mca/entity/EntityType.java | 2 +- .../bluemap/core/world/mca/entity/Ocelot.java | 15 +++++++ .../assets/minecraft/entitystates/ocelot.json | 2 +- 5 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/OcelotRenderer.java create mode 100644 core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/Ocelot.java diff --git a/core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/EntityRendererType.java b/core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/EntityRendererType.java index f5e6ff49..7a0cc716 100644 --- a/core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/EntityRendererType.java +++ b/core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/EntityRendererType.java @@ -47,9 +47,9 @@ public interface EntityRendererType extends Keyed, EntityRendererFactory { DEFAULT, MISSING, LLAMA, - BEE BEE, CAT, + OCELOT ); /** diff --git a/core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/OcelotRenderer.java b/core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/OcelotRenderer.java new file mode 100644 index 00000000..e2f5f63e --- /dev/null +++ b/core/src/main/java/de/bluecolored/bluemap/core/map/hires/entity/OcelotRenderer.java @@ -0,0 +1,39 @@ +package de.bluecolored.bluemap.core.map.hires.entity; + +import de.bluecolored.bluemap.core.map.TextureGallery; +import de.bluecolored.bluemap.core.map.hires.RenderSettings; +import de.bluecolored.bluemap.core.map.hires.TileModelView; +import de.bluecolored.bluemap.core.resources.ResourcePath; +import de.bluecolored.bluemap.core.resources.pack.resourcepack.ResourcePack; +import de.bluecolored.bluemap.core.resources.pack.resourcepack.entitystate.Part; +import de.bluecolored.bluemap.core.resources.pack.resourcepack.model.Model; +import de.bluecolored.bluemap.core.util.Key; +import de.bluecolored.bluemap.core.world.Entity; +import de.bluecolored.bluemap.core.world.block.BlockNeighborhood; +import de.bluecolored.bluemap.core.world.mca.entity.Ocelot; + +public class OcelotRenderer extends ResourceModelRenderer { + + private final ResourcePath + OCELOT = new ResourcePath<>(Key.MINECRAFT_NAMESPACE, "entity/cat/cat_ocelot"); + + public OcelotRenderer(ResourcePack resourcePack, TextureGallery textureGallery, RenderSettings renderSettings) { + super(resourcePack, textureGallery, renderSettings); + } + + @Override + public void render(Entity entity, BlockNeighborhood block, Part part, TileModelView tileModel) { + if (!(entity instanceof Ocelot ocelot)) return; + + // choose correct model + ResourcePath model = OCELOT; + + // render chosen model + super.render(entity, block, model.getResource(resourcePack::getModel), TintColorProvider.NO_TINT, tileModel); + + // apply part transform + if (part.isTransformed()) + tileModel.transform(part.getTransformMatrix()); + } + +} diff --git a/core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/EntityType.java b/core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/EntityType.java index d5535264..4e77e686 100644 --- a/core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/EntityType.java +++ b/core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/EntityType.java @@ -40,9 +40,9 @@ public interface EntityType extends Keyed { Registry REGISTRY = new Registry<>( LLAMA, - BEE BEE, CAT, + OCELOT ); Class getEntityClass(); diff --git a/core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/Ocelot.java b/core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/Ocelot.java new file mode 100644 index 00000000..d1a132c5 --- /dev/null +++ b/core/src/main/java/de/bluecolored/bluemap/core/world/mca/entity/Ocelot.java @@ -0,0 +1,15 @@ +package de.bluecolored.bluemap.core.world.mca.entity; + +import de.bluecolored.bluenbt.NBTName; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; + +@Getter +@EqualsAndHashCode(callSuper = true) +@ToString +@SuppressWarnings("FieldMayBeFinal") +public class Ocelot extends AgeEntity { + + @NBTName("Sitting") int sitting; +} diff --git a/core/src/main/resourceExtensions/assets/minecraft/entitystates/ocelot.json b/core/src/main/resourceExtensions/assets/minecraft/entitystates/ocelot.json index 260d6619..beaa92b3 100644 --- a/core/src/main/resourceExtensions/assets/minecraft/entitystates/ocelot.json +++ b/core/src/main/resourceExtensions/assets/minecraft/entitystates/ocelot.json @@ -1,5 +1,5 @@ { "parts": [ - { "model": "minecraft:entity/cat/cat_ocelot" } + { "renderer": "minecraft:ocelot" } ] } \ No newline at end of file