diff options
author | andrew <xdotftw@gmail.com> | 2014-03-25 10:13:27 +0100 |
---|---|---|
committer | andrew <xdotftw@gmail.com> | 2014-03-25 10:13:27 +0100 |
commit | ba4216641120ec2f49464ed0b136af3198d48f89 (patch) | |
tree | 727d0a45024b8c25152379d7c5e28339c40006ff /src/Blocks | |
parent | Protocol: Wither metadata (diff) | |
download | cuberite-ba4216641120ec2f49464ed0b136af3198d48f89.tar cuberite-ba4216641120ec2f49464ed0b136af3198d48f89.tar.gz cuberite-ba4216641120ec2f49464ed0b136af3198d48f89.tar.bz2 cuberite-ba4216641120ec2f49464ed0b136af3198d48f89.tar.lz cuberite-ba4216641120ec2f49464ed0b136af3198d48f89.tar.xz cuberite-ba4216641120ec2f49464ed0b136af3198d48f89.tar.zst cuberite-ba4216641120ec2f49464ed0b136af3198d48f89.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Blocks/BlockMobHead.h | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/Blocks/BlockMobHead.h b/src/Blocks/BlockMobHead.h index 9935c2496..693240898 100644 --- a/src/Blocks/BlockMobHead.h +++ b/src/Blocks/BlockMobHead.h @@ -47,6 +47,15 @@ public: void Reset(void) { m_IsWither = false; } } CallbackA, CallbackB; + + a_World->DoWithMobHeadAt(a_BlockX, a_BlockY, a_BlockZ, CallbackA); + + if (!CallbackA.IsWither()) + { + return false; + } + + CallbackA.Reset(); BLOCKTYPE BlockY1 = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY - 1, a_BlockZ); BLOCKTYPE BlockY2 = a_ChunkInterface.GetBlock(a_BlockX, a_BlockY - 2, a_BlockZ); @@ -151,7 +160,21 @@ public: World->DoWithMobHeadAt(a_BlockX, a_BlockY, a_BlockZ, Callback); a_ChunkInterface.SetBlockMeta(a_BlockX, a_BlockY, a_BlockZ, a_BlockMeta); - TrySpawnWither(a_ChunkInterface, World, a_BlockX, a_BlockY, a_BlockZ); + static const Vector3i Coords[] = + { + Vector3i( 0, 0, 0), + Vector3i( 1, 0, 0), + Vector3i(-1, 0, 0), + Vector3i( 0, 0, 1), + Vector3i( 0, 0, -1), + }; + for (size_t i = 0; i < ARRAYCOUNT(Coords); ++i) + { + if (TrySpawnWither(a_ChunkInterface, World, a_BlockX + Coords[i].x, a_BlockY, a_BlockZ + Coords[i].z)) + { + break; + } + } // for i - Coords[] } } ; |