commit
4c1f1cc539
@ -15,8 +15,28 @@ public:
|
||||
: cBlockHandler(a_BlockType)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
virtual bool GetPlacementBlockTypeMeta(
|
||||
cWorld * a_World, cPlayer * a_Player,
|
||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||
) override
|
||||
{
|
||||
a_BlockType = m_BlockType;
|
||||
NIBBLETYPE Meta = a_World->GetBlockMeta(Vector3i(a_BlockX, a_BlockY, a_BlockZ));
|
||||
|
||||
if ((Meta < 7) && (Meta != 0)) // Is height at maximum (7) or at mininum (0)? Don't do anything if so
|
||||
{
|
||||
Meta++;
|
||||
}
|
||||
|
||||
a_BlockMeta = Meta;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
virtual bool DoesIgnoreBuildCollision(void) override
|
||||
{
|
||||
return true;
|
||||
|
@ -15,6 +15,51 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
virtual bool GetPlacementBlockTypeMeta(
|
||||
cWorld * a_World, cPlayer * a_Player,
|
||||
int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace,
|
||||
int a_CursorX, int a_CursorY, int a_CursorZ,
|
||||
BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta
|
||||
) override
|
||||
{
|
||||
a_BlockType = m_BlockType;
|
||||
NIBBLETYPE Meta = a_Player->GetEquippedItem().m_ItemDamage;
|
||||
a_BlockMeta = BlockFaceToMetaData(a_BlockFace, Meta);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
inline static NIBBLETYPE BlockFaceToMetaData(char a_BlockFace, NIBBLETYPE a_WoodMeta)
|
||||
{
|
||||
switch (a_BlockFace)
|
||||
{
|
||||
case BLOCK_FACE_YM:
|
||||
case BLOCK_FACE_YP:
|
||||
{
|
||||
return a_WoodMeta; // Top or bottom, just return original
|
||||
}
|
||||
|
||||
case BLOCK_FACE_ZP:
|
||||
case BLOCK_FACE_ZM:
|
||||
{
|
||||
return a_WoodMeta | 0x8; // North or south
|
||||
}
|
||||
|
||||
case BLOCK_FACE_XP:
|
||||
case BLOCK_FACE_XM:
|
||||
{
|
||||
return a_WoodMeta | 0x4; // East or west
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
ASSERT(!"Unhandled block face!");
|
||||
return a_WoodMeta | 0xC; // No idea, give a special meta (all sides bark)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
virtual const char * GetStepSound(void) override
|
||||
{
|
||||
|
@ -110,7 +110,7 @@ public:
|
||||
void SetSightDistance(float sd);
|
||||
|
||||
/// Sets whether the mob burns in daylight. Only evaluated at next burn-decision tick
|
||||
void SetBurnsInDaylight(bool a_BurnsInDaylight) { a_BurnsInDaylight = a_BurnsInDaylight; }
|
||||
void SetBurnsInDaylight(bool a_BurnsInDaylight) { m_BurnsInDaylight = a_BurnsInDaylight; }
|
||||
|
||||
enum MState{ATTACKING, IDLE, CHASING, ESCAPING} m_EMState;
|
||||
enum MPersonality{PASSIVE,AGGRESSIVE,COWARDLY} m_EMPersonality;
|
||||
|
Loading…
Reference in New Issue
Block a user