fix: armorstand according to wiki + wobble animation + head renderer

Armor stands are not damaged by cacti but can be broken by arrows. An armor stand destroyed by an explosion or a firework does not drop as an item. Armor stands in water and lava at the same time are not consumed by the lava.
This commit is contained in:
Lord_Cambion
2026-04-18 12:26:25 +02:00
parent 22953367f4
commit f2cfbafc26
9 changed files with 280 additions and 262 deletions
+18 -21
View File
@@ -2,13 +2,13 @@
#include "LivingEntityRenderer.h"
#include "HumanoidArmorLayer.h"
#include "ResourceLocation.h"
#include <vector>
class ArmorStandModel;
class LivingEntity;
class Entity;
class RenderLayer;
class CustomHeadLayer;
class ArmorStandRenderer : public LivingEntityRenderer {
public:
@@ -22,17 +22,12 @@ public:
protected:
std::vector<RenderLayer*> renderLayers;
ArmorStandArmorLayer* armorLayer;
CustomHeadLayer* headLayer;
public:
void addLayer(RenderLayer* layer) {
renderLayers.push_back(layer);
}
void addLayer(ArmorStandArmorLayer* layer) {
armorLayer = layer;
}
ArmorStandArmorLayer* getArmorLayer() {
return armorLayer;
}
void addLayer(RenderLayer* layer) { renderLayers.push_back(layer); }
void addLayer(ArmorStandArmorLayer* layer) { armorLayer = layer; }
ArmorStandArmorLayer* getArmorLayer() { return armorLayer; }
static ResourceLocation LOC_ARMOR_STAND;
@@ -40,15 +35,17 @@ public:
virtual ~ArmorStandRenderer();
virtual ResourceLocation* getTextureLocation(shared_ptr<Entity> entity) override;
virtual bool shouldShowName(shared_ptr<LivingEntity> mob) override;
virtual void setupRotations(shared_ptr<LivingEntity> mob,
float bob, float bodyRot, float a) override;
virtual void render(shared_ptr<Entity> entity,
double x, double y, double z,
float rot, float a) override;
virtual void renderModel(shared_ptr<LivingEntity> mob,
float wp, float ws, float bob,
float headRotMinusBodyRot,
float headRotx, float scale) override;
virtual int prepareArmor(shared_ptr<LivingEntity> mob, int layer, float a) override;
virtual bool shouldShowName(shared_ptr<LivingEntity> mob) override;
virtual void setupRotations(shared_ptr<LivingEntity> mob,
float bob, float bodyRot, float a) override;
virtual void render(shared_ptr<Entity> entity,
double x, double y, double z,
float rot, float a) override;
virtual void renderModel(shared_ptr<LivingEntity> mob,
float wp, float ws, float bob,
float headRotMinusBodyRot,
float headRotx, float scale) override;
virtual int prepareArmor(shared_ptr<LivingEntity> mob, int layer, float a) override;
virtual void additionalRendering(shared_ptr<LivingEntity> mob, float a) override;
};