Vine decay (patch contributed by funmaker)
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1002 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
35e174b4c1
commit
793ae5359d
@ -16,19 +16,50 @@ public:
|
||||
: cBlockHandler(a_BlockType)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
virtual bool DoesIgnoreBuildCollision(void) override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
virtual void PlaceBlock(cWorld * a_World, cPlayer * a_Player, NIBBLETYPE a_BlockMeta, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
||||
{
|
||||
a_World->SetBlock(a_BlockX, a_BlockY, a_BlockZ, m_BlockType, cVine::DirectionToMetaData(a_Dir));
|
||||
OnPlacedByPlayer(a_World, a_Player, a_BlockX, a_BlockY, a_BlockZ, a_Dir);
|
||||
}
|
||||
|
||||
|
||||
virtual bool CanBePlacedAt(cWorld * a_World, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override
|
||||
{
|
||||
if (
|
||||
(a_World->GetBlock( a_BlockX, a_BlockY+1, a_BlockZ ) == E_BLOCK_VINES) &&
|
||||
(cVine::MetaDataToDirection(a_World->GetBlockMeta( a_BlockX, a_BlockY+1, a_BlockZ )) == a_Dir)
|
||||
)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((a_World->GetBlock( a_BlockX, a_BlockY+1, a_BlockZ ) != E_BLOCK_AIR))
|
||||
{
|
||||
AddDirection( a_BlockX, a_BlockY, a_BlockZ, a_Dir, true );
|
||||
if(a_World->GetBlock( a_BlockX, a_BlockY, a_BlockZ ) == E_BLOCK_AIR){
|
||||
AddDirection( a_BlockX, a_BlockY, a_BlockZ, a_Dir, false );
|
||||
a_World->FastSetBlock( a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_VINES, 0);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
AddDirection( a_BlockX, a_BlockY, a_BlockZ, a_Dir, true );
|
||||
|
||||
return a_World->GetBlock( a_BlockX, a_BlockY, a_BlockZ ) != E_BLOCK_AIR;
|
||||
}
|
||||
|
||||
|
||||
virtual bool CanBeAt(cWorld * a_World, int a_BlockX, int a_BlockY, int a_BlockZ) override
|
||||
{
|
||||
char Dir = cVine::MetaDataToDirection(a_World->GetBlockMeta( a_BlockX, a_BlockY, a_BlockZ));
|
||||
return CanBePlacedAt(a_World, a_BlockX, a_BlockY, a_BlockZ, Dir);
|
||||
}
|
||||
|
||||
virtual bool DoesIgnoreBuildCollision(void) override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
virtual bool DoesAllowBlockOnTop(void) override
|
||||
@ -41,6 +72,12 @@ public:
|
||||
{
|
||||
return "step.grass";
|
||||
}
|
||||
|
||||
|
||||
bool DoesDropOnUnsuitable(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@ class cVine //tolua_export
|
||||
{ //tolua_export
|
||||
public:
|
||||
|
||||
static char DirectionToMetaData( char a_Direction ) //tolua_export
|
||||
static NIBBLETYPE DirectionToMetaData( char a_Direction ) //tolua_export
|
||||
{ //tolua_export
|
||||
switch (a_Direction)
|
||||
{
|
||||
@ -17,7 +17,25 @@ public:
|
||||
case 0x5:
|
||||
return 0x2;
|
||||
default:
|
||||
return 0xf;
|
||||
return 0x0;
|
||||
};
|
||||
} //tolua_export
|
||||
}; //tolua_export
|
||||
|
||||
static char MetaDataToDirection(NIBBLETYPE a_MetaData ) //tolua_export
|
||||
{ //tolua_export
|
||||
switch(a_MetaData)
|
||||
{
|
||||
case 0x1:
|
||||
return 0x2;
|
||||
case 0x4:
|
||||
return 0x3;
|
||||
case 0x8:
|
||||
return 0x4;
|
||||
case 0x2:
|
||||
return 0x5;
|
||||
default:
|
||||
return 0x1;
|
||||
};
|
||||
} //tolua_export
|
||||
|
||||
}; //tolua_export
|
||||
|
Loading…
Reference in New Issue
Block a user