#pragma once #include "LivingEntityRenderer.h" #include "HumanoidArmorLayer.h" #include "ResourceLocation.h" #include class ArmorStandModel; class LivingEntity; class Entity; class RenderLayer; class CustomHeadLayer; class ArmorStandRenderer : public LivingEntityRenderer { public: class ArmorStandArmorLayer : public HumanoidArmorLayer { public: explicit ArmorStandArmorLayer(LivingEntityRenderer* renderer); virtual ~ArmorStandArmorLayer() {} virtual void createArmorModels() override; }; protected: std::vector renderLayers; ArmorStandArmorLayer* armorLayer; CustomHeadLayer* headLayer; public: void addLayer(RenderLayer* layer) { renderLayers.push_back(layer); } void addLayer(ArmorStandArmorLayer* layer) { armorLayer = layer; } ArmorStandArmorLayer* getArmorLayer() { return armorLayer; } static ResourceLocation LOC_ARMOR_STAND; ArmorStandRenderer(); virtual ~ArmorStandRenderer(); virtual ResourceLocation* getTextureLocation(shared_ptr entity) override; virtual bool shouldShowName(shared_ptr mob) override; virtual void setupRotations(shared_ptr mob, float bob, float bodyRot, float a) override; virtual void render(shared_ptr entity, double x, double y, double z, float rot, float a) override; virtual void renderModel(shared_ptr mob, float wp, float ws, float bob, float headRotMinusBodyRot, float headRotx, float scale) override; virtual int prepareArmor(shared_ptr mob, int layer, float a) override; virtual void additionalRendering(shared_ptr mob, float a) override; };