#pragma once #include "BasicBlocks.h" #include "Block.h" class GrassBlockType; class GrassBlock : public AdditionalItemSpawningBlock { public: GrassBlock(int typeId, Framework::Vec3 pos, int dimensionId); virtual bool onTick( TickQueue* zQueue, int numTicks, bool& blocked) override; virtual void onPostTick() override; void filterPassingLight(unsigned char rgb[3]) const override; friend GrassBlockType; }; class GrassBlockType : public AdditionalItemSpawningBlockType { public: GrassBlockType(ModelInfo* model, Framework::Text name, int mapColor, Framework::Array spawns, Framework::RCArray groupNames); protected: virtual void createSuperBlock(Block* zBlock, Item* zItem) const override; virtual void loadSuperBlock(Block* zBlock, Framework::StreamReader* zReader, int dimensionId) const override; virtual void saveSuperBlock( Block* zBlock, Framework::StreamWriter* zWriter) const override; virtual Item* createItem() const override; virtual Block* createBlock( Framework::Vec3 position, int dimensionId) const override; public: Framework::Text getItemTypeName() const; virtual ItemType* createItemType() const override; }; class GrassBlockTypeFactory : public SubTypeFactory { public: GrassBlockTypeFactory(); GrassBlockType* fromJson(Framework::JSON::JSONObject* zJson) const override; Framework::JSON::JSONObject* toJson(GrassBlockType* zObject) const override; Framework::JSON::Validator::JSONValidator* getValidator( Framework::JSON::Validator::ObjectValidationBuilder< Framework::JSON::Validator::JSONValidator>* builder) const override; Framework::Text getTypeToken() const override; };