diff options
author | Tycho <work.tycho+git@gmail.com> | 2014-04-05 23:12:17 +0200 |
---|---|---|
committer | Tycho <work.tycho+git@gmail.com> | 2014-04-05 23:12:17 +0200 |
commit | 23395a5ce1daab24465d607575c09e06e5b7c449 (patch) | |
tree | 18555c220fc6e602b071a935b190ef25444f18a9 /src/Blocks/BlockAnvil.h | |
parent | Fixed tolua++ override support (diff) | |
parent | Fixed Endiannes conversion routines for floats and doubles. (diff) | |
download | cuberite-23395a5ce1daab24465d607575c09e06e5b7c449.tar cuberite-23395a5ce1daab24465d607575c09e06e5b7c449.tar.gz cuberite-23395a5ce1daab24465d607575c09e06e5b7c449.tar.bz2 cuberite-23395a5ce1daab24465d607575c09e06e5b7c449.tar.lz cuberite-23395a5ce1daab24465d607575c09e06e5b7c449.tar.xz cuberite-23395a5ce1daab24465d607575c09e06e5b7c449.tar.zst cuberite-23395a5ce1daab24465d607575c09e06e5b7c449.zip |
Diffstat (limited to 'src/Blocks/BlockAnvil.h')
-rw-r--r-- | src/Blocks/BlockAnvil.h | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/Blocks/BlockAnvil.h b/src/Blocks/BlockAnvil.h index 9f5f84be0..93a796ef7 100644 --- a/src/Blocks/BlockAnvil.h +++ b/src/Blocks/BlockAnvil.h @@ -18,11 +18,13 @@ public: { } + virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override { a_Pickups.push_back(cItem(E_BLOCK_ANVIL, 1, a_BlockMeta >> 2)); } + virtual bool GetPlacementBlockTypeMeta( cChunkInterface & a_ChunkInterface, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, @@ -31,27 +33,23 @@ public: ) override { a_BlockType = m_BlockType; - - int Direction = (int)floor(a_Player->GetYaw() * 4.0 / 360.0 + 0.5) & 0x3; - int RawMeta = a_BlockMeta >> 2; - - Direction++; - Direction %= 4; + NIBBLETYPE HighBits = a_BlockMeta & 0x0c; // Only highest two bits are preserved + int Direction = (int)floor(a_Player->GetYaw() * 4.0 / 360.0 + 1.5) & 0x3; switch (Direction) { - case 0: a_BlockMeta = 0x2 | RawMeta << 2; break; - case 1: a_BlockMeta = 0x3 | RawMeta << 2; break; - case 2: a_BlockMeta = 0x0 | RawMeta << 2; break; - case 3: a_BlockMeta = 0x1 | RawMeta << 2; break; + case 0: a_BlockMeta = 0x2 | HighBits; break; + case 1: a_BlockMeta = 0x3 | HighBits; break; + case 2: a_BlockMeta = 0x0 | HighBits; break; + case 3: a_BlockMeta = 0x1 | HighBits; break; default: { return false; } } - return true; } + virtual bool IsUseable() override { return true; |