Skip to content

Commit

Permalink
Added experience drops when mining ores
Browse files Browse the repository at this point in the history
  • Loading branch information
NiLSPACE committed Feb 28, 2015
1 parent e7708d4 commit e63b4f4
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions src/Blocks/BlockOre.h
Expand Up @@ -11,6 +11,7 @@
class cBlockOreHandler :
public cBlockHandler
{
typedef cBlockHandler super;
public:
cBlockOreHandler(BLOCKTYPE a_BlockType)
: cBlockHandler(a_BlockType)
Expand Down Expand Up @@ -56,6 +57,64 @@ class cBlockOreHandler :
}
}
}

virtual void OnDestroyedByPlayer(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ) override
{
super::OnDestroyedByPlayer(a_ChunkInterface, a_WorldInterface, a_Player, a_BlockX, a_BlockY, a_BlockZ);

if (a_Player->IsGameModeCreative())
{
// Don't drop XP when the player is in creative mode.
return;
}

if (a_Player->GetEquippedItem().m_Enchantments.GetLevel(cEnchantments::enchSilkTouch) != 0)
{
// Don't drop XP when the ore is mined with the Silk Touch enchantment
return;
}

cFastRandom Random;
int Reward = 0;

switch (m_BlockType)
{
case E_BLOCK_NETHER_QUARTZ_ORE:
case E_BLOCK_LAPIS_ORE:
{
// Lapis and nether quartz get 2 - 5 experience
Reward = Random.NextInt(4) + 2;
break;
}
case E_BLOCK_REDSTONE_ORE:
case E_BLOCK_REDSTONE_ORE_GLOWING:
{
// Redstone gets 1 - 5 experience
Reward = Random.NextInt(5) + 1;
break;
}
case E_BLOCK_DIAMOND_ORE:
case E_BLOCK_EMERALD_ORE:
{
// Diamond and emerald get 3 - 7 experience
Reward = Random.NextInt(5) + 3;
break;
}
case E_BLOCK_COAL_ORE:
{
// Coal gets 0 - 2 experience
Reward = Random.NextInt(3);
break;
}

default: break;
}

if (Reward != 0)
{
a_WorldInterface.SpawnExperienceOrb(a_BlockX, a_BlockY, a_BlockZ, Reward);
}
}
} ;


Expand Down

0 comments on commit e63b4f4

Please sign in to comment.