neoLegacy/Minecraft.World/TallGrass2.h
2026-05-24 23:59:48 -04:00

73 lines
3.2 KiB
C++

#pragma once
#include "Bush.h"
class TallGrass2 : public Bush
{
friend class Tile;
public:
static const int SUNFLOWER = 0;
static const int LILAC = 1;
static const int TALL_GRASS = 2;
static const int LARGE_FERN = 3;
static const int ROSE_BUSH = 4;
static const int PEONY = 5;
static const int VARIANT_COUNT = 6;
static const int UPPER_BIT = 8;
private:
Icon* iconBottom[VARIANT_COUNT];
Icon* iconTop[VARIANT_COUNT];
Icon* iconHeadFront[VARIANT_COUNT];
Icon* iconHeadBack[VARIANT_COUNT];
protected:
TallGrass2(int id);
public:
virtual void updateDefaultShape() override;
virtual void createBlockStateDefinition() override;
virtual int defaultBlockState() override;
virtual int convertBlockStateToLegacyData(BlockState *state) override;
virtual Tile::BlockState getBlockState(LevelSource* level, int x, int y, int z) override;
virtual Tile::BlockState getBlockState(int data);
virtual Icon* getTexture(int face, int data) override;
virtual Icon* getTexture(LevelSource* level, int x, int y, int z, int face) override;
virtual void registerIcons(IconRegister* iconRegister) override;
Icon* getSunflowerHeadFrontIcon() const { return iconHeadFront[SUNFLOWER]; }
Icon* getSunflowerHeadBackIcon() const { return iconHeadBack[SUNFLOWER]; }
virtual int getRenderShape() override;
virtual bool blocksLight() override;
virtual bool isSolidRender(bool isServerLevel = false) override;
virtual bool isCubeShaped() override;
virtual int getColor(int auxData) override;
virtual int getColor() const override;
virtual int getColor(LevelSource* level, int x, int y, int z) override;
virtual int getColor(LevelSource* level, int x, int y, int z, int data) override;
virtual void finalizePlacement(Level* level, int x, int y, int z, int data) override;
virtual void onPlace(Level* level, int x, int y, int z) override;
virtual bool mayPlace(Level* level, int x, int y, int z) override;
virtual void neighborChanged(Level* level, int x, int y, int z, int type) override;
virtual bool canSurvive(Level* level, int x, int y, int z) override;
virtual void tick(Level* level, int x, int y, int z, Random* random) override;
virtual int getResource(int data, Random* random, int playerBonusLevel) override;
virtual int getResourceCountForLootBonus(int bonusLevel, Random* random) override;
virtual int getSpawnResourcesAuxValue(int data) override;
virtual void playerDestroy(Level* level, shared_ptr<Player> player, int x, int y, int z, int data) override;
virtual void playerWillDestroy(Level* level, int x, int y, int z, int data, shared_ptr<Player> player) override;
virtual int cloneTileData(Level* level, int x, int y, int z) override;
virtual unsigned int getDescriptionId(int iData = -1) override;
virtual int getPistonPushReaction() override;
protected:
virtual bool isSilkTouchable() override;
virtual shared_ptr<ItemInstance> getSilkTouchItemInstance(int data) override;
private:
int getVariant(LevelSource* level, int x, int y, int z);
bool isGrassColored(int variant);
};