From 480991d1ac07c1715bf090a4d81e988a00803cf3 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Wed, 18 Sep 2013 00:01:20 +0100 Subject: [PATCH] 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 --- VC2008/MCServer.vcproj | 12 ++---- 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 ----------- 8 files changed, 72 insertions(+), 97 deletions(-) create mode 100644 source/Blocks/BlockPlanks.h delete mode 100644 source/Items/ItemSlab.h delete mode 100644 source/Items/ItemWood.h diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj index af07300e3..423e3e2b0 100644 --- a/VC2008/MCServer.vcproj +++ b/VC2008/MCServer.vcproj @@ -2159,6 +2159,10 @@ RelativePath="..\source\blocks\BlockPiston.h" > + + @@ -2351,10 +2355,6 @@ RelativePath="..\source\items\ItemSign.h" > - - @@ -2371,10 +2371,6 @@ RelativePath="..\source\Items\ItemThrowable.h" > - - 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) - { - } -} ; - - - -