From 1e1f79b795ffba893c6bfabc2df7ecee1e6c2ad5 Mon Sep 17 00:00:00 2001 From: Xenoxis Date: Sat, 28 Mar 2020 13:20:14 +0100 Subject: Updated Bookshelves drop behaviour (#4567) * Updated BookShelves Drop Behaviour As described here : https://minecraft.gamepedia.com/Bookshelf#Loot * Update src/Blocks/BlockBookShelf.h * Update CONTRIBUTORS --- CONTRIBUTORS | 1 + src/Blocks/BlockBookShelf.h | 26 ++++++++++++++++++++++++++ src/Blocks/BlockHandler.cpp | 2 ++ src/Blocks/CMakeLists.txt | 1 + 4 files changed, 30 insertions(+) create mode 100644 src/Blocks/BlockBookShelf.h diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 0bfc953f5..f2c9dbc4d 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -66,3 +66,4 @@ williamhatcher (Helped with API documentation updates and bug fixes) worktycho xoft (Mattes Dolak/madmaxoft on GH) Yeeeeezus (Donated AlchemistVillage prefabs) +Xenoxis diff --git a/src/Blocks/BlockBookShelf.h b/src/Blocks/BlockBookShelf.h new file mode 100644 index 000000000..477cb47b7 --- /dev/null +++ b/src/Blocks/BlockBookShelf.h @@ -0,0 +1,26 @@ + +#pragma once + +#include "BlockHandler.h" + + + + +class cBlockBookShelfHandler : + public cBlockHandler +{ + public: + cBlockBookShelfHandler(BLOCKTYPE a_BlockType) : + cBlockHandler(a_BlockType) + { + } + + virtual cItems ConvertToPickups(NIBBLETYPE a_BlockMeta, cBlockEntity * a_BlockEntity, const cEntity * a_Digger, const cItem * a_Tool) override + { + if ((ItemCategory::IsTool(a_Tool->m_ItemType)) && (ToolHasSilkTouch(a_Tool))) + { + return cItem(m_BlockType, 1); + } + return cItem(E_ITEM_BOOK, 3); + } +}; diff --git a/src/Blocks/BlockHandler.cpp b/src/Blocks/BlockHandler.cpp index a270a45da..5c23896bd 100644 --- a/src/Blocks/BlockHandler.cpp +++ b/src/Blocks/BlockHandler.cpp @@ -8,6 +8,7 @@ #include "BlockAnvil.h" #include "BlockBed.h" #include "BlockBigFlower.h" +#include "BlockBookShelf.h" #include "BlockBrewingStand.h" #include "BlockButton.h" #include "BlockCactus.h" @@ -202,6 +203,7 @@ static cBlockHandler * CreateBlockHandler(BLOCKTYPE a_BlockType) case E_BLOCK_BIRCH_FENCE: return new cBlockFenceHandler (a_BlockType); case E_BLOCK_BIRCH_FENCE_GATE: return new cBlockFenceGateHandler (a_BlockType); case E_BLOCK_BIRCH_WOOD_STAIRS: return new cBlockStairsHandler (a_BlockType); + case E_BLOCK_BOOKCASE: return new cBlockBookShelfHandler (a_BlockType); case E_BLOCK_BREWING_STAND: return new cBlockBrewingStandHandler (a_BlockType); case E_BLOCK_BRICK_STAIRS: return new cBlockStairsHandler (a_BlockType); case E_BLOCK_BROWN_MUSHROOM: return new cBlockMushroomHandler (a_BlockType); diff --git a/src/Blocks/CMakeLists.txt b/src/Blocks/CMakeLists.txt index 5a637f69c..22789fe1b 100644 --- a/src/Blocks/CMakeLists.txt +++ b/src/Blocks/CMakeLists.txt @@ -14,6 +14,7 @@ SET (HDRS BlockAnvil.h BlockBed.h BlockBigFlower.h + BlockBookShelf.h BlockBrewingStand.h BlockButton.h BlockCactus.h -- cgit v1.2.3