From 89143558958e68ac524a36548d58b6fc29029b5c Mon Sep 17 00:00:00 2001 From: Alexander Harkness Date: Sat, 11 Apr 2020 00:20:51 +0100 Subject: Fix rotation metas on blocks --- src/Blocks/BlockAnvil.h | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'src/Blocks/BlockAnvil.h') diff --git a/src/Blocks/BlockAnvil.h b/src/Blocks/BlockAnvil.h index 2252c7ded..da242fdb7 100644 --- a/src/Blocks/BlockAnvil.h +++ b/src/Blocks/BlockAnvil.h @@ -2,6 +2,7 @@ #pragma once #include "BlockHandler.h" +#include "Mixins.h" #include "../Entities/Player.h" #include "../UI/AnvilWindow.h" @@ -10,11 +11,13 @@ class cBlockAnvilHandler : - public cBlockHandler + public cYawRotator { public: + using super = cYawRotator; + cBlockAnvilHandler(BLOCKTYPE a_BlockType) - : cBlockHandler(a_BlockType) + : super(a_BlockType) { } @@ -45,21 +48,12 @@ public: BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta ) override { - a_BlockType = m_BlockType; - NIBBLETYPE Meta = static_cast(a_Player.GetEquippedItem().m_ItemDamage); - int Direction = static_cast(floor(a_Player.GetYaw() * 4.0 / 360.0 + 1.5)) & 0x3; - - switch (Direction) + if (!super::GetPlacementBlockTypeMeta(a_ChunkInterface, a_Player, a_BlockX, a_BlockY, a_BlockZ, a_BlockFace, a_CursorX, a_CursorY, a_CursorZ, a_BlockType, a_BlockMeta)) { - case 0: a_BlockMeta = static_cast(0x2 | Meta << 2); break; - case 1: a_BlockMeta = static_cast(0x3 | Meta << 2); break; - case 2: a_BlockMeta = static_cast(0x0 | Meta << 2); break; - case 3: a_BlockMeta = static_cast(0x1 | Meta << 2); break; - default: - { - return false; - } + return false; } + + a_BlockMeta = a_BlockMeta | static_cast(a_Player.GetEquippedItem().m_ItemDamage << 2); return true; } -- cgit v1.2.3