#pragma once #include "Mobs/Minecart.h" class MinecartTNT : public Minecart { public: eINSTANCEOF GetType() { return eTYPE_MINECART_TNT; }; static Entity* create(Level* level) { return new MinecartTNT(level); } private: static const uint8_t EVENT_PRIME = 10; int fuse; void _init(); public: MinecartTNT(Level* level); MinecartTNT(Level* level, double x, double y, double z); virtual int getType(); virtual Tile* getDefaultDisplayTile(); virtual void tick(); virtual void destroy(DamageSource* source); protected: virtual void explode(double speedSqr); virtual void causeFallDamage(float distance); public: virtual void activateMinecart(int xt, int yt, int zt, bool state); virtual void handleEntityEvent(uint8_t eventId); virtual void primeFuse(); virtual int getFuse(); virtual bool isPrimed(); virtual float getTileExplosionResistance(Explosion* explosion, Level* level, int x, int y, int z, Tile* tile); virtual bool shouldTileExplode(Explosion* explosion, Level* level, int x, int y, int z, int id, float power); protected: virtual void readAdditionalSaveData(CompoundTag* tag); virtual void addAdditonalSaveData(CompoundTag* tag); };