Fixed certain blocks crashing clients when mined
Fixed rail duplication glitch Fixed fall damage calculation Glass no longer drops glass git-svn-id: http://mc-server.googlecode.com/svn/trunk@1068 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
f50c14f91b
commit
eb7131bd12
@ -1818,6 +1818,10 @@
|
|||||||
RelativePath="..\source\blocks\BlockFurnace.h"
|
RelativePath="..\source\blocks\BlockFurnace.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Blocks\BlockGlass.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\source\blocks\BlockGlowstone.h"
|
RelativePath="..\source\blocks\BlockGlowstone.h"
|
||||||
>
|
>
|
||||||
|
26
source/Blocks/BlockGlass.h
Normal file
26
source/Blocks/BlockGlass.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "BlockHandler.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class cBlockGlassHandler :
|
||||||
|
public cBlockHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cBlockGlassHandler(BLOCKTYPE a_BlockType)
|
||||||
|
: cBlockHandler(a_BlockType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
|
||||||
|
{
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,6 +46,7 @@
|
|||||||
#include "BlockFarmland.h"
|
#include "BlockFarmland.h"
|
||||||
#include "BlockMycelium.h"
|
#include "BlockMycelium.h"
|
||||||
#include "BlockRail.h"
|
#include "BlockRail.h"
|
||||||
|
#include "BlockGlass.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -104,6 +105,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
|
|||||||
case E_BLOCK_FURNACE: return new cBlockFurnaceHandler (a_BlockType);
|
case E_BLOCK_FURNACE: return new cBlockFurnaceHandler (a_BlockType);
|
||||||
case E_BLOCK_GLOWSTONE: return new cBlockGlowstoneHandler (a_BlockType);
|
case E_BLOCK_GLOWSTONE: return new cBlockGlowstoneHandler (a_BlockType);
|
||||||
case E_BLOCK_GOLD_ORE: return new cBlockOreHandler (a_BlockType);
|
case E_BLOCK_GOLD_ORE: return new cBlockOreHandler (a_BlockType);
|
||||||
|
case E_BLOCK_GLASS: return new cBlockGlassHandler (a_BlockType);
|
||||||
case E_BLOCK_GRASS: return new cBlockDirtHandler (a_BlockType);
|
case E_BLOCK_GRASS: return new cBlockDirtHandler (a_BlockType);
|
||||||
case E_BLOCK_GRAVEL: return new cBlockGravelHandler (a_BlockType);
|
case E_BLOCK_GRAVEL: return new cBlockGravelHandler (a_BlockType);
|
||||||
case E_BLOCK_ICE: return new cBlockIceHandler (a_BlockType);
|
case E_BLOCK_ICE: return new cBlockIceHandler (a_BlockType);
|
||||||
|
@ -20,7 +20,7 @@ public:
|
|||||||
|
|
||||||
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
|
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
|
||||||
{
|
{
|
||||||
short ItemType = E_ITEM_EMPTY;
|
short ItemType = m_BlockType;
|
||||||
char Count = 1;
|
char Count = 1;
|
||||||
short Meta = 0;
|
short Meta = 0;
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ public:
|
|||||||
|
|
||||||
virtual void OnNeighborChanged(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ) override
|
virtual void OnNeighborChanged(cWorld *a_World, int a_BlockX, int a_BlockY, int a_BlockZ) override
|
||||||
{
|
{
|
||||||
if(IsUnstable(a_World, a_BlockX, a_BlockY, a_BlockZ))
|
char Meta = a_World->GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
|
if(IsUnstable(a_World, a_BlockX, a_BlockY, a_BlockZ) && Meta != FindMeta(a_World, a_BlockX, a_BlockY, a_BlockZ))
|
||||||
a_World->FastSetBlock(a_BlockX, a_BlockY, a_BlockZ, m_BlockType, FindMeta(a_World, a_BlockX, a_BlockY, a_BlockZ));
|
a_World->FastSetBlock(a_BlockX, a_BlockY, a_BlockZ, m_BlockType, FindMeta(a_World, a_BlockX, a_BlockY, a_BlockZ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ enum
|
|||||||
inline bool IsValidBlock( int a_BlockType ) //tolua_export
|
inline bool IsValidBlock( int a_BlockType ) //tolua_export
|
||||||
{ //tolua_export
|
{ //tolua_export
|
||||||
if( a_BlockType > -1 &&
|
if( a_BlockType > -1 &&
|
||||||
a_BlockType <= 126 && //items to 109 are valid for Beta1.8.1.. 1.2.5 is up to 126
|
a_BlockType <= 145 && //items to 109 are valid for Beta1.8.1.. 1.2.5 is up to 126
|
||||||
//a_BlockType != 29 && allow pistons
|
//a_BlockType != 29 && allow pistons
|
||||||
//a_BlockType != 33 && allow pistons
|
//a_BlockType != 33 && allow pistons
|
||||||
a_BlockType != 34 &&
|
a_BlockType != 34 &&
|
||||||
@ -66,7 +66,7 @@ inline bool IsValidBlock( int a_BlockType ) //tolua_export
|
|||||||
// Changed to fit the style ;)
|
// Changed to fit the style ;)
|
||||||
inline bool IsValidItem( int a_ItemID ) //tolua_export
|
inline bool IsValidItem( int a_ItemID ) //tolua_export
|
||||||
{ //tolua_export
|
{ //tolua_export
|
||||||
if( (a_ItemID >= 256 && a_ItemID <= 388)
|
if( (a_ItemID >= 256 && a_ItemID <= 400)
|
||||||
|| (a_ItemID >= 2256 && a_ItemID <= 2267) )
|
|| (a_ItemID >= 2256 && a_ItemID <= 2267) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -290,7 +290,7 @@ void cPlayer::SetTouchGround(bool a_bTouchGround)
|
|||||||
if (m_bTouchGround)
|
if (m_bTouchGround)
|
||||||
{
|
{
|
||||||
float Dist = (float)(m_LastGroundHeight - m_Pos.y);
|
float Dist = (float)(m_LastGroundHeight - m_Pos.y);
|
||||||
int Damage = (int)(Dist - 4.f);
|
int Damage = (int)(Dist - 3.f);
|
||||||
if (Damage > 0)
|
if (Damage > 0)
|
||||||
{
|
{
|
||||||
TakeDamage(Damage, 0);
|
TakeDamage(Damage, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user