summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-07-31 23:37:37 +0200
committerMattes D <github@xoft.cz>2014-07-31 23:37:37 +0200
commitbc1cfd59426aea9c55d10dd42fd7e33366fa027d (patch)
treee847fc25ad6fe316fc52441d44a5440ca905b5dc
parentMerge pull request #1047 from mc-server/Enderman (diff)
parentChanged IsSolid to FullyOccupiesVoxel (diff)
downloadcuberite-bc1cfd59426aea9c55d10dd42fd7e33366fa027d.tar
cuberite-bc1cfd59426aea9c55d10dd42fd7e33366fa027d.tar.gz
cuberite-bc1cfd59426aea9c55d10dd42fd7e33366fa027d.tar.bz2
cuberite-bc1cfd59426aea9c55d10dd42fd7e33366fa027d.tar.lz
cuberite-bc1cfd59426aea9c55d10dd42fd7e33366fa027d.tar.xz
cuberite-bc1cfd59426aea9c55d10dd42fd7e33366fa027d.tar.zst
cuberite-bc1cfd59426aea9c55d10dd42fd7e33366fa027d.zip
-rw-r--r--src/Blocks/BlockIce.h14
-rw-r--r--src/Items/ItemHandler.cpp1
2 files changed, 13 insertions, 2 deletions
diff --git a/src/Blocks/BlockIce.h b/src/Blocks/BlockIce.h
index c50623594..c38630fe3 100644
--- a/src/Blocks/BlockIce.h
+++ b/src/Blocks/BlockIce.h
@@ -24,9 +24,19 @@ public:
}
- virtual void OnDestroyed(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, int a_BlockX, int a_BlockY, int a_BlockZ) override
+ virtual void OnDestroyedByPlayer(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ) override
{
- // TODO: Ice destroyed with air below it should turn into air instead of water
+ if (a_Player->IsGameModeCreative() || (a_BlockY <= 0))
+ {
+ return;
+ }
+
+ BLOCKTYPE BlockBelow = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY - 1, a_BlockZ);
+ if (!cBlockInfo::FullyOccupiesVoxel(BlockBelow) && !IsBlockLiquid(BlockBelow))
+ {
+ return;
+ }
+
a_ChunkInterface.FastSetBlock(a_BlockX, a_BlockY, a_BlockZ, E_BLOCK_WATER, 0);
// This is called later than the real destroying of this ice block
}
diff --git a/src/Items/ItemHandler.cpp b/src/Items/ItemHandler.cpp
index d36b5d663..acfd1e648 100644
--- a/src/Items/ItemHandler.cpp
+++ b/src/Items/ItemHandler.cpp
@@ -578,6 +578,7 @@ bool cItemHandler::CanHarvestBlock(BLOCKTYPE a_BlockType)
case E_BLOCK_LAPIS_BLOCK:
case E_BLOCK_SNOW:
case E_BLOCK_VINES:
+ case E_BLOCK_PACKED_ICE:
{
return false;
}