Added initial adventure mode support
Added missing Emerald crafting recipe You get more fall damage when jumping Torch no longer protects players from fall damage Fixed Ender Chest drops git-svn-id: http://mc-server.googlecode.com/svn/trunk@1070 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
65cf4ad33d
commit
8ca150b700
@ -277,6 +277,7 @@ IronIngot, 9 = IronBlock, *
|
|||||||
GoldIngot, 9 = GoldBlock, *
|
GoldIngot, 9 = GoldBlock, *
|
||||||
Diamond, 9 = DiamondBlock, *
|
Diamond, 9 = DiamondBlock, *
|
||||||
LapisLazuli, 9 = LapisBlock, *
|
LapisLazuli, 9 = LapisBlock, *
|
||||||
|
Emerald, 9 = EmeraldBlock, *
|
||||||
|
|
||||||
Painting = Stick, 1:1, 1:2, 1:3, 2:1, 2:3, 3:1, 3:2, 3:3 | Wool, 2:2
|
Painting = Stick, 1:1, 1:2, 1:3, 2:1, 2:3, 3:1, 3:2, 3:3 | Wool, 2:2
|
||||||
ItemFrame = Stick, 1:1, 1:2, 1:3, 2:1, 2:3, 3:1, 3:2, 3:3 | Leather, 2:2
|
ItemFrame = Stick, 1:1, 1:2, 1:3, 2:1, 2:3, 3:1, 3:2, 3:3 | Leather, 2:2
|
||||||
|
@ -1794,6 +1794,10 @@
|
|||||||
RelativePath="..\source\blocks\BlockDoor.h"
|
RelativePath="..\source\blocks\BlockDoor.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Blocks\BlockEnderchest.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\source\blocks\BlockEntity.h"
|
RelativePath="..\source\blocks\BlockEntity.h"
|
||||||
>
|
>
|
||||||
|
28
source/Blocks/BlockEnderchest.h
Normal file
28
source/Blocks/BlockEnderchest.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "BlockHandler.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class cBlockEnderchestHandler :
|
||||||
|
public cBlockHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cBlockEnderchestHandler(BLOCKTYPE a_BlockType)
|
||||||
|
: cBlockHandler(a_BlockType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
|
||||||
|
{
|
||||||
|
//todo: Drop Ender Chest if using silk touch pickaxe
|
||||||
|
a_Pickups.push_back(cItem(E_BLOCK_OBSIDIAN, 8, 0));
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -47,6 +47,7 @@
|
|||||||
#include "BlockMycelium.h"
|
#include "BlockMycelium.h"
|
||||||
#include "BlockRail.h"
|
#include "BlockRail.h"
|
||||||
#include "BlockGlass.h"
|
#include "BlockGlass.h"
|
||||||
|
#include "BlockEnderchest.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -100,6 +101,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
|
|||||||
case E_BLOCK_DOUBLE_STONE_SLAB: return new cBlockSlabHandler (a_BlockType);
|
case E_BLOCK_DOUBLE_STONE_SLAB: return new cBlockSlabHandler (a_BlockType);
|
||||||
case E_BLOCK_DOUBLE_WOODEN_SLAB: return new cBlockSlabHandler (a_BlockType);
|
case E_BLOCK_DOUBLE_WOODEN_SLAB: return new cBlockSlabHandler (a_BlockType);
|
||||||
case E_BLOCK_EMERALD_ORE: return new cBlockOreHandler (a_BlockType);
|
case E_BLOCK_EMERALD_ORE: return new cBlockOreHandler (a_BlockType);
|
||||||
|
case E_BLOCK_ENDER_CHEST: return new cBlockEnderchestHandler (a_BlockType);
|
||||||
case E_BLOCK_FARMLAND: return new cBlockFarmlandHandler;
|
case E_BLOCK_FARMLAND: return new cBlockFarmlandHandler;
|
||||||
case E_BLOCK_FIRE: return new cBlockFireHandler (a_BlockType);
|
case E_BLOCK_FIRE: return new cBlockFireHandler (a_BlockType);
|
||||||
case E_BLOCK_FURNACE: return new cBlockFurnaceHandler (a_BlockType);
|
case E_BLOCK_FURNACE: return new cBlockFurnaceHandler (a_BlockType);
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "BlockHandler.h"
|
#include "BlockHandler.h"
|
||||||
#include "../MersenneTwister.h"
|
|
||||||
#include "../World.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -354,9 +354,10 @@ inline bool BlockRequiresSpecialTool(BLOCKTYPE a_BlockType)
|
|||||||
//tolua_begin
|
//tolua_begin
|
||||||
enum eGameMode
|
enum eGameMode
|
||||||
{
|
{
|
||||||
eGameMode_NotSet = -1,
|
eGameMode_NotSet = -1,
|
||||||
eGameMode_Survival = 0,
|
eGameMode_Survival = 0,
|
||||||
eGameMode_Creative = 1
|
eGameMode_Creative = 1,
|
||||||
|
eGameMode_Adventure = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,6 +96,7 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName)
|
|||||||
a_PlayerName.c_str(), m_Pos.x, m_Pos.y, m_Pos.z
|
a_PlayerName.c_str(), m_Pos.x, m_Pos.y, m_Pos.z
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
m_LastJumpHeight = (float)(m_Pos.y);
|
||||||
m_LastGroundHeight = (float)(m_Pos.y);
|
m_LastGroundHeight = (float)(m_Pos.y);
|
||||||
m_Stance = m_Pos.y + 1.62;
|
m_Stance = m_Pos.y + 1.62;
|
||||||
}
|
}
|
||||||
@ -273,6 +274,7 @@ void cPlayer::SetTouchGround(bool a_bTouchGround)
|
|||||||
|
|
||||||
if (!m_bTouchGround)
|
if (!m_bTouchGround)
|
||||||
{
|
{
|
||||||
|
if(m_Pos.y > m_LastJumpHeight) m_LastJumpHeight = m_Pos.y;
|
||||||
cWorld* World = GetWorld();
|
cWorld* World = GetWorld();
|
||||||
char BlockID = World->GetBlock( float2int(m_Pos.x), float2int(m_Pos.y), float2int(m_Pos.z) );
|
char BlockID = World->GetBlock( float2int(m_Pos.x), float2int(m_Pos.y), float2int(m_Pos.z) );
|
||||||
if( BlockID != E_BLOCK_AIR )
|
if( BlockID != E_BLOCK_AIR )
|
||||||
@ -280,7 +282,7 @@ void cPlayer::SetTouchGround(bool a_bTouchGround)
|
|||||||
// LOGD("TouchGround set to true by server");
|
// LOGD("TouchGround set to true by server");
|
||||||
m_bTouchGround = true;
|
m_bTouchGround = true;
|
||||||
}
|
}
|
||||||
if( BlockID == E_BLOCK_WATER || BlockID == E_BLOCK_STATIONARY_WATER || BlockID == E_BLOCK_LADDER || BlockID == E_BLOCK_TORCH )
|
if( BlockID == E_BLOCK_WATER || BlockID == E_BLOCK_STATIONARY_WATER || BlockID == E_BLOCK_LADDER || BlockID == E_BLOCK_VINES )
|
||||||
{
|
{
|
||||||
// LOGD("Water / Ladder / Torch");
|
// LOGD("Water / Ladder / Torch");
|
||||||
m_LastGroundHeight = (float)m_Pos.y;
|
m_LastGroundHeight = (float)m_Pos.y;
|
||||||
@ -291,6 +293,8 @@ void cPlayer::SetTouchGround(bool a_bTouchGround)
|
|||||||
{
|
{
|
||||||
float Dist = (float)(m_LastGroundHeight - m_Pos.y);
|
float Dist = (float)(m_LastGroundHeight - m_Pos.y);
|
||||||
int Damage = (int)(Dist - 3.f);
|
int Damage = (int)(Dist - 3.f);
|
||||||
|
if(m_LastJumpHeight > m_LastGroundHeight) Damage++;
|
||||||
|
m_LastJumpHeight = m_Pos.y;
|
||||||
if (Damage > 0)
|
if (Damage > 0)
|
||||||
{
|
{
|
||||||
TakeDamage(Damage, 0);
|
TakeDamage(Damage, 0);
|
||||||
@ -493,7 +497,7 @@ void cPlayer::SetLastBlockActionCnt( int a_LastBlockActionCnt )
|
|||||||
|
|
||||||
void cPlayer::SetGameMode(eGameMode a_GameMode)
|
void cPlayer::SetGameMode(eGameMode a_GameMode)
|
||||||
{
|
{
|
||||||
if ((a_GameMode >= 2) || (a_GameMode < 0))
|
if ((a_GameMode >= 3) || (a_GameMode < 0))
|
||||||
{
|
{
|
||||||
LOGWARNING("%s: Setting invalid gamemode: %d", GetName().c_str(), a_GameMode);
|
LOGWARNING("%s: Setting invalid gamemode: %d", GetName().c_str(), a_GameMode);
|
||||||
return;
|
return;
|
||||||
|
@ -145,6 +145,7 @@ protected:
|
|||||||
float m_FoodExhaustionLevel;
|
float m_FoodExhaustionLevel;
|
||||||
char m_FoodTickTimer;
|
char m_FoodTickTimer;
|
||||||
|
|
||||||
|
float m_LastJumpHeight;
|
||||||
float m_LastGroundHeight;
|
float m_LastGroundHeight;
|
||||||
bool m_bTouchGround;
|
bool m_bTouchGround;
|
||||||
double m_Stance;
|
double m_Stance;
|
||||||
|
Loading…
Reference in New Issue
Block a user