From 480991d1ac07c1715bf090a4d81e988a00803cf3 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Wed, 18 Sep 2013 00:01:20 +0100 Subject: Multiple fixes [SEE DESC] - Removed two random block handling files in the item handling section that didn't do anything. (One was an attempt at making slabs work, but failed to realise that the coords would have to be the block CLICKED, and another was just a random empty file for handling wooden planks.) * Fixed placing repeater blocks not directioning properly * Fixed wood directions breaking plank metadata --- source/Blocks/BlockHandler.cpp | 3 +- source/Blocks/BlockPlanks.h | 41 ++++++++++++++++++++++++++ source/Blocks/BlockRedstoneRepeater.cpp | 16 ++++++++++ source/Blocks/BlockRedstoneRepeater.h | 9 ++++++ source/Items/ItemHandler.cpp | 14 --------- source/Items/ItemSlab.h | 52 --------------------------------- source/Items/ItemWood.h | 22 -------------- 7 files changed, 68 insertions(+), 89 deletions(-) create mode 100644 source/Blocks/BlockPlanks.h delete mode 100644 source/Items/ItemSlab.h delete mode 100644 source/Items/ItemWood.h (limited to 'source') diff --git a/source/Blocks/BlockHandler.cpp b/source/Blocks/BlockHandler.cpp index 3e97d1e9d..e1cfebb56 100644 --- a/source/Blocks/BlockHandler.cpp +++ b/source/Blocks/BlockHandler.cpp @@ -41,6 +41,7 @@ #include "BlockNote.h" #include "BlockOre.h" #include "BlockPiston.h" +#include "BlockPlanks.h" #include "BlockPumpkin.h" #include "BlockRail.h" #include "BlockRedstone.h" @@ -153,7 +154,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType) case E_BLOCK_NOTE_BLOCK: return new cBlockNoteHandler (a_BlockType); case E_BLOCK_PISTON: return new cBlockPistonHandler (a_BlockType); case E_BLOCK_PISTON_EXTENSION: return new cBlockPistonHeadHandler (); - case E_BLOCK_PLANKS: return new cBlockWoodHandler (a_BlockType); + case E_BLOCK_PLANKS: return new cBlockPlanksHandler (a_BlockType); case E_BLOCK_PUMPKIN: return new cBlockPumpkinHandler (a_BlockType); case E_BLOCK_JACK_O_LANTERN: return new cBlockPumpkinHandler (a_BlockType); case E_BLOCK_PUMPKIN_STEM: return new cBlockStemsHandler (a_BlockType); diff --git a/source/Blocks/BlockPlanks.h b/source/Blocks/BlockPlanks.h new file mode 100644 index 000000000..b30164741 --- /dev/null +++ b/source/Blocks/BlockPlanks.h @@ -0,0 +1,41 @@ + +#pragma once + +#include "BlockHandler.h" + + + + + +class cBlockPlanksHandler : public cBlockHandler +{ +public: + cBlockPlanksHandler(BLOCKTYPE a_BlockType) + : cBlockHandler(a_BlockType) + { + } + + + virtual bool GetPlacementBlockTypeMeta( + cWorld * a_World, cPlayer * a_Player, + int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, + int a_CursorX, int a_CursorY, int a_CursorZ, + BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta + ) override + { + a_BlockType = m_BlockType; + NIBBLETYPE Meta = a_Player->GetEquippedItem().m_ItemDamage; + a_BlockMeta = Meta; + return true; + } + + + virtual const char * GetStepSound(void) override + { + return "step.wood"; + } +} ; + + + + diff --git a/source/Blocks/BlockRedstoneRepeater.cpp b/source/Blocks/BlockRedstoneRepeater.cpp index 3bc879435..5e491ee5a 100644 --- a/source/Blocks/BlockRedstoneRepeater.cpp +++ b/source/Blocks/BlockRedstoneRepeater.cpp @@ -4,6 +4,7 @@ #include "../Item.h" #include "../World.h" #include "../Simulator/RedstoneSimulator.h" +#include "../Entities/Player.h" @@ -44,3 +45,18 @@ void cBlockRedstoneRepeaterHandler::OnDigging(cWorld *a_World, cPlayer *a_Player +bool cBlockRedstoneRepeaterHandler::GetPlacementBlockTypeMeta( + cWorld * a_World, cPlayer * a_Player, + int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, + int a_CursorX, int a_CursorY, int a_CursorZ, + BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta +) +{ + a_BlockType = m_BlockType; + a_BlockMeta = cRedstoneSimulator::RepeaterRotationToMetaData(a_Player->GetRotation()); + return true; +} + + + + diff --git a/source/Blocks/BlockRedstoneRepeater.h b/source/Blocks/BlockRedstoneRepeater.h index 24250ab86..21f227332 100644 --- a/source/Blocks/BlockRedstoneRepeater.h +++ b/source/Blocks/BlockRedstoneRepeater.h @@ -36,6 +36,15 @@ public: { return ((a_RelY > 0) && (a_Chunk.GetBlock(a_RelX, a_RelY - 1, a_RelZ) != E_BLOCK_AIR)); } + + + virtual bool GetPlacementBlockTypeMeta( + cWorld * a_World, cPlayer * a_Player, + int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, + int a_CursorX, int a_CursorY, int a_CursorZ, + BLOCKTYPE & a_BlockType, NIBBLETYPE & a_BlockMeta + ) override; + virtual const char * GetStepSound(void) override { diff --git a/source/Items/ItemHandler.cpp b/source/Items/ItemHandler.cpp index 08a7b661d..3c2fa1e79 100644 --- a/source/Items/ItemHandler.cpp +++ b/source/Items/ItemHandler.cpp @@ -31,11 +31,9 @@ #include "ItemShears.h" #include "ItemShovel.h" #include "ItemSign.h" -#include "ItemSlab.h" #include "ItemSpawnEgg.h" #include "ItemSugarcane.h" #include "ItemSword.h" -#include "ItemWood.h" #include "../Blocks/BlockHandler.h" @@ -143,18 +141,6 @@ cItemHandler *cItemHandler::CreateItemHandler(int a_ItemType) return new cItemSwordHandler(a_ItemType); } - case E_BLOCK_STONE_SLAB: - case E_BLOCK_WOODEN_SLAB: - { - return new cItemSlabHandler(a_ItemType); - } - - case E_BLOCK_LOG: - case E_BLOCK_PLANKS: - { - return new cItemWoodHandler(a_ItemType); - } - case E_ITEM_BUCKET: case E_ITEM_WATER_BUCKET: case E_ITEM_LAVA_BUCKET: diff --git a/source/Items/ItemSlab.h b/source/Items/ItemSlab.h deleted file mode 100644 index 80de05eb5..000000000 --- a/source/Items/ItemSlab.h +++ /dev/null @@ -1,52 +0,0 @@ - -#pragma once - -#include "ItemHandler.h" -#include "../World.h" - - - - - -class cItemSlabHandler : public cItemHandler -{ -public: - cItemSlabHandler(int a_ItemType) - : cItemHandler(a_ItemType) - { - - } - - virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, char a_Dir) override - { - BLOCKTYPE Block; - NIBBLETYPE Meta; - a_World->GetBlockTypeMeta(a_BlockX, a_BlockY, a_BlockZ, Block, Meta); - - if ( - ((a_Dir == 0) || (a_Dir == 1)) // Only when clicking on top or on bottom of the block - && ((Block == E_BLOCK_WOODEN_SLAB) || (Block == E_BLOCK_STONE_SLAB)) // It is a slab - && (Block == a_Item.m_ItemType) // Same slab - && ((Meta & 0x7) == (a_Item.m_ItemDamage & 0x7))) // Same Texture - { - if (a_Player->GetGameMode() == eGameMode_Creative) - { - a_World->SetBlock(a_BlockX, a_BlockY, a_BlockZ, Block - 1, Meta); // Block - 1 simple hack to save one if statement - return true; - } - else - { - if (a_Player->GetInventory().RemoveOneEquippedItem()) - { - a_World->SetBlock(a_BlockX, a_BlockY, a_BlockZ, Block - 1, Meta); // Block - 1 simple hack to save one if statement - return true; - } - } - } - return false; - } -} ; - - - - diff --git a/source/Items/ItemWood.h b/source/Items/ItemWood.h deleted file mode 100644 index 476256c5d..000000000 --- a/source/Items/ItemWood.h +++ /dev/null @@ -1,22 +0,0 @@ - -#pragma once - -#include "ItemHandler.h" - - - - - -class cItemWoodHandler : - public cItemHandler -{ -public: - cItemWoodHandler(int a_ItemType) - : cItemHandler(a_ItemType) - { - } -} ; - - - - -- cgit v1.2.3