diff options
-rw-r--r-- | VC2008/MCServer.vcproj | 4 | ||||
-rw-r--r-- | source/Bindings.cpp | 21 | ||||
-rw-r--r-- | source/Bindings.h | 2 | ||||
-rw-r--r-- | source/BlockEntities/DropSpenserEntity.cpp | 20 | ||||
-rw-r--r-- | source/BlockID.h | 23 | ||||
-rw-r--r-- | source/Blocks/BlockHandler.cpp | 6 | ||||
-rw-r--r-- | source/Blocks/BlockHopper.h | 46 | ||||
-rw-r--r-- | source/Defines.h | 12 |
8 files changed, 99 insertions, 35 deletions
diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj index 5effcba67..bbc3cb663 100644 --- a/VC2008/MCServer.vcproj +++ b/VC2008/MCServer.vcproj @@ -1889,6 +1889,10 @@ >
</File>
<File
+ RelativePath="..\source\Blocks\BlockHopper.h"
+ >
+ </File>
+ <File
RelativePath="..\source\blocks\BlockIce.h"
>
</File>
diff --git a/source/Bindings.cpp b/source/Bindings.cpp index f8b645582..a8f600dc7 100644 --- a/source/Bindings.cpp +++ b/source/Bindings.cpp @@ -1,6 +1,6 @@ /* ** Lua binding: AllToLua -** Generated automatically by tolua++-1.0.92 on 06/12/13 09:09:44. +** Generated automatically by tolua++-1.0.92 on 06/12/13 10:17:24. */ #ifndef __cplusplus @@ -26902,13 +26902,12 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S) tolua_constant(tolua_S,"E_META_CHEST_FACING_ZP",E_META_CHEST_FACING_ZP); tolua_constant(tolua_S,"E_META_CHEST_FACING_XM",E_META_CHEST_FACING_XM); tolua_constant(tolua_S,"E_META_CHEST_FACING_XP",E_META_CHEST_FACING_XP); - tolua_constant(tolua_S,"E_META_DISPENSER_FACING_YM",E_META_DISPENSER_FACING_YM); - tolua_constant(tolua_S,"E_META_DISPENSER_FACING_YP",E_META_DISPENSER_FACING_YP); - tolua_constant(tolua_S,"E_META_HOPPER_UNATTACHED",E_META_HOPPER_UNATTACHED); - tolua_constant(tolua_S,"E_META_DISPENSER_FACING_ZM",E_META_DISPENSER_FACING_ZM); - tolua_constant(tolua_S,"E_META_DISPENSER_FACING_ZP",E_META_DISPENSER_FACING_ZP); - tolua_constant(tolua_S,"E_META_DISPENSER_FACING_XM",E_META_DISPENSER_FACING_XM); - tolua_constant(tolua_S,"E_META_DISPENSER_FACING_XP",E_META_DISPENSER_FACING_XP); + tolua_constant(tolua_S,"E_META_DROPSPENSER_FACING_YM",E_META_DROPSPENSER_FACING_YM); + tolua_constant(tolua_S,"E_META_DROPSPENSER_FACING_YP",E_META_DROPSPENSER_FACING_YP); + tolua_constant(tolua_S,"E_META_DROPSPENSER_FACING_ZM",E_META_DROPSPENSER_FACING_ZM); + tolua_constant(tolua_S,"E_META_DROPSPENSER_FACING_ZP",E_META_DROPSPENSER_FACING_ZP); + tolua_constant(tolua_S,"E_META_DROPSPENSER_FACING_XM",E_META_DROPSPENSER_FACING_XM); + tolua_constant(tolua_S,"E_META_DROPSPENSER_FACING_XP",E_META_DROPSPENSER_FACING_XP); tolua_constant(tolua_S,"E_META_DOUBLE_STEP_STONE",E_META_DOUBLE_STEP_STONE); tolua_constant(tolua_S,"E_META_DOUBLE_STEP_SANDSTONE",E_META_DOUBLE_STEP_SANDSTONE); tolua_constant(tolua_S,"E_META_DOUBLE_STEP_WOODEN",E_META_DOUBLE_STEP_WOODEN); @@ -26917,6 +26916,12 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S) tolua_constant(tolua_S,"E_META_DOUBLE_STEP_STONE_BRICK",E_META_DOUBLE_STEP_STONE_BRICK); tolua_constant(tolua_S,"E_META_DOUBLE_STEP_NETHER_BRICK",E_META_DOUBLE_STEP_NETHER_BRICK); tolua_constant(tolua_S,"E_META_DOUBLE_STEP_STONE_SECRET",E_META_DOUBLE_STEP_STONE_SECRET); + tolua_constant(tolua_S,"E_META_HOPPER_FACING_YM",E_META_HOPPER_FACING_YM); + tolua_constant(tolua_S,"E_META_HOPPER_UNATTACHED",E_META_HOPPER_UNATTACHED); + tolua_constant(tolua_S,"E_META_HOPPER_FACING_ZM",E_META_HOPPER_FACING_ZM); + tolua_constant(tolua_S,"E_META_HOPPER_FACING_ZP",E_META_HOPPER_FACING_ZP); + tolua_constant(tolua_S,"E_META_HOPPER_FACING_XM",E_META_HOPPER_FACING_XM); + tolua_constant(tolua_S,"E_META_HOPPER_FACING_XP",E_META_HOPPER_FACING_XP); tolua_constant(tolua_S,"E_META_LEAVES_APPLE",E_META_LEAVES_APPLE); tolua_constant(tolua_S,"E_META_LEAVES_CONIFER",E_META_LEAVES_CONIFER); tolua_constant(tolua_S,"E_META_LEAVES_BIRCH",E_META_LEAVES_BIRCH); diff --git a/source/Bindings.h b/source/Bindings.h index fec4d4f09..348b087aa 100644 --- a/source/Bindings.h +++ b/source/Bindings.h @@ -1,6 +1,6 @@ /* ** Lua binding: AllToLua -** Generated automatically by tolua++-1.0.92 on 06/12/13 09:09:45. +** Generated automatically by tolua++-1.0.92 on 06/12/13 10:17:24. */ /* Exported function */ diff --git a/source/BlockEntities/DropSpenserEntity.cpp b/source/BlockEntities/DropSpenserEntity.cpp index 900ecb172..a9860d812 100644 --- a/source/BlockEntities/DropSpenserEntity.cpp +++ b/source/BlockEntities/DropSpenserEntity.cpp @@ -43,12 +43,12 @@ void cDropSpenserEntity::AddDropSpenserDir(int & a_BlockX, int & a_BlockY, int & {
switch (a_Direction)
{
- case E_META_DISPENSER_FACING_YM: a_BlockY--; return;
- case E_META_DISPENSER_FACING_YP: a_BlockY++; return;
- case E_META_DISPENSER_FACING_ZM: a_BlockZ--; return;
- case E_META_DISPENSER_FACING_ZP: a_BlockZ++; return;
- case E_META_DISPENSER_FACING_XM: a_BlockX--; return;
- case E_META_DISPENSER_FACING_XP: a_BlockX++; return;
+ case E_META_DROPSPENSER_FACING_YM: a_BlockY--; return;
+ case E_META_DROPSPENSER_FACING_YP: a_BlockY++; return;
+ case E_META_DROPSPENSER_FACING_ZM: a_BlockZ--; return;
+ case E_META_DROPSPENSER_FACING_ZP: a_BlockZ++; return;
+ case E_META_DROPSPENSER_FACING_XM: a_BlockX--; return;
+ case E_META_DROPSPENSER_FACING_XP: a_BlockX++; return;
}
LOGWARNING("%s: Unhandled direction: %d", __FUNCTION__, a_Direction);
return;
@@ -89,10 +89,10 @@ void cDropSpenserEntity::DropSpense(cChunk & a_Chunk) int SmokeDir = 0;
switch (Meta)
{
- case E_META_DISPENSER_FACING_XM: SmokeDir = 3; break;
- case E_META_DISPENSER_FACING_XP: SmokeDir = 5; break;
- case E_META_DISPENSER_FACING_ZM: SmokeDir = 1; break;
- case E_META_DISPENSER_FACING_ZP: SmokeDir = 7; break;
+ case E_META_DROPSPENSER_FACING_XM: SmokeDir = 3; break;
+ case E_META_DROPSPENSER_FACING_XP: SmokeDir = 5; break;
+ case E_META_DROPSPENSER_FACING_ZM: SmokeDir = 1; break;
+ case E_META_DROPSPENSER_FACING_ZP: SmokeDir = 7; break;
}
m_World->BroadcastSoundParticleEffect(2000, m_PosX * 8, m_PosY * 8, m_PosZ * 8, SmokeDir);
m_World->BroadcastSoundEffect("random.click", m_PosX * 8, m_PosY * 8, m_PosZ * 8, 1.0f, 1.0f);
diff --git a/source/BlockID.h b/source/BlockID.h index 44d1b3ad1..19dbb29da 100644 --- a/source/BlockID.h +++ b/source/BlockID.h @@ -380,14 +380,13 @@ enum E_META_CHEST_FACING_XM = 4, E_META_CHEST_FACING_XP = 5, - // E_BLOCK_DISPENSER / E_BLOCK_DROPPER / E_BLOCK_HOPPER metas: - E_META_DISPENSER_FACING_YM = 0, - E_META_DISPENSER_FACING_YP = 1, - E_META_HOPPER_UNATTACHED = 1, // Hopper doesn't move items up - E_META_DISPENSER_FACING_ZM = 2, - E_META_DISPENSER_FACING_ZP = 3, - E_META_DISPENSER_FACING_XM = 4, - E_META_DISPENSER_FACING_XP = 5, + // E_BLOCK_DISPENSER / E_BLOCK_DROPPER metas: + E_META_DROPSPENSER_FACING_YM = 0, + E_META_DROPSPENSER_FACING_YP = 1, + E_META_DROPSPENSER_FACING_ZM = 2, + E_META_DROPSPENSER_FACING_ZP = 3, + E_META_DROPSPENSER_FACING_XM = 4, + E_META_DROPSPENSER_FACING_XP = 5, // E_BLOCK_DOUBLE_STEP metas: E_META_DOUBLE_STEP_STONE = 0, @@ -399,6 +398,14 @@ enum E_META_DOUBLE_STEP_NETHER_BRICK = 6, E_META_DOUBLE_STEP_STONE_SECRET = 7, + // E_BLOCK_HOPPER metas: + E_META_HOPPER_FACING_YM = 0, + E_META_HOPPER_UNATTACHED = 1, // Hopper doesn't move items up, there's no YP + E_META_HOPPER_FACING_ZM = 2, + E_META_HOPPER_FACING_ZP = 3, + E_META_HOPPER_FACING_XM = 4, + E_META_HOPPER_FACING_XP = 5, + // E_BLOCK_LEAVES metas: E_META_LEAVES_APPLE = 0, E_META_LEAVES_CONIFER = 1, diff --git a/source/Blocks/BlockHandler.cpp b/source/Blocks/BlockHandler.cpp index e1cc939ab..20f42d0c5 100644 --- a/source/Blocks/BlockHandler.cpp +++ b/source/Blocks/BlockHandler.cpp @@ -58,6 +58,7 @@ #include "BlockCobWeb.h"
#include "BlockTNT.h"
#include "BlockDeadBush.h"
+#include "BlockHopper.h"
@@ -109,6 +110,8 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType) case E_BLOCK_COBBLESTONE_STAIRS: return new cBlockStairsHandler (a_BlockType);
case E_BLOCK_COBWEB: return new cBlockCobWebHandler (a_BlockType);
case E_BLOCK_CROPS: return new cBlockCropsHandler (a_BlockType);
+ case E_BLOCK_DEAD_BUSH: return new cBlockDeadBushHandler (a_BlockType);
+ case E_BLOCK_DETECTOR_RAIL: return new cBlockRailHandler (a_BlockType);
case E_BLOCK_DIAMOND_ORE: return new cBlockOreHandler (a_BlockType);
case E_BLOCK_DIRT: return new cBlockDirtHandler (a_BlockType);
case E_BLOCK_DISPENSER: return new cBlockDropSpenserHandler (a_BlockType);
@@ -127,6 +130,7 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType) case E_BLOCK_GLASS: return new cBlockGlassHandler (a_BlockType);
case E_BLOCK_GRASS: return new cBlockDirtHandler (a_BlockType);
case E_BLOCK_GRAVEL: return new cBlockGravelHandler (a_BlockType);
+ case E_BLOCK_HOPPER: return new cBlockHopperHandler (a_BlockType);
case E_BLOCK_ICE: return new cBlockIceHandler (a_BlockType);
case E_BLOCK_IRON_DOOR: return new cBlockDoorHandler (a_BlockType);
case E_BLOCK_IRON_ORE: return new cBlockOreHandler (a_BlockType);
@@ -150,8 +154,6 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType) case E_BLOCK_RAIL: return new cBlockRailHandler (a_BlockType);
case E_BLOCK_POTATOES: return new cBlockCropsHandler (a_BlockType);
case E_BLOCK_POWERED_RAIL: return new cBlockRailHandler (a_BlockType);
- case E_BLOCK_DEAD_BUSH: return new cBlockDeadBushHandler (a_BlockType);
- case E_BLOCK_DETECTOR_RAIL: return new cBlockRailHandler (a_BlockType);
case E_BLOCK_REDSTONE_ORE: return new cBlockOreHandler (a_BlockType);
case E_BLOCK_REDSTONE_ORE_GLOWING: return new cBlockOreHandler (a_BlockType);
case E_BLOCK_REDSTONE_REPEATER_OFF: return new cBlockRedstoneRepeaterHandler(a_BlockType);
diff --git a/source/Blocks/BlockHopper.h b/source/Blocks/BlockHopper.h new file mode 100644 index 000000000..10f865564 --- /dev/null +++ b/source/Blocks/BlockHopper.h @@ -0,0 +1,46 @@ +
+// BlockHopper.h
+
+// Declares the cBlockHopperHandler class representing the handler for the Hopper block
+
+
+
+
+
+class cBlockHopperHandler :
+ public cBlockEntityHandler
+{
+public:
+ cBlockHopperHandler(BLOCKTYPE a_BlockType)
+ : cBlockEntityHandler(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;
+
+ // Convert the blockface into meta:
+ switch (a_BlockFace)
+ {
+ case BLOCK_FACE_BOTTOM: a_BlockMeta = E_META_HOPPER_FACING_YM; break;
+ case BLOCK_FACE_TOP: a_BlockMeta = E_META_HOPPER_FACING_YM; break;
+ case BLOCK_FACE_EAST: a_BlockMeta = E_META_HOPPER_FACING_XM; break;
+ case BLOCK_FACE_NORTH: a_BlockMeta = E_META_HOPPER_FACING_ZP; break;
+ case BLOCK_FACE_SOUTH: a_BlockMeta = E_META_HOPPER_FACING_ZM; break;
+ case BLOCK_FACE_WEST: a_BlockMeta = E_META_HOPPER_FACING_XP; break;
+ default: a_BlockMeta = E_META_HOPPER_UNATTACHED; break;
+ }
+ return true;
+ }
+} ;
+
+
+
+
diff --git a/source/Defines.h b/source/Defines.h index b76da2f29..f52050a9b 100644 --- a/source/Defines.h +++ b/source/Defines.h @@ -37,12 +37,12 @@ extern bool g_BlockOneHitDig[]; enum { BLOCK_FACE_NONE = -1, // Interacting with no block face - swinging the item in the air - BLOCK_FACE_BOTTOM = 0, // Interacting with the bottom face of the block - BLOCK_FACE_TOP = 1, // Interacting with the top face of the block - BLOCK_FACE_NORTH = 2, // Interacting with the northern face of the block - BLOCK_FACE_SOUTH = 3, // Interacting with the southern face of the block - BLOCK_FACE_WEST = 4, // Interacting with the western face of the block - BLOCK_FACE_EAST = 5, // Interacting with the eastern face of the block + BLOCK_FACE_BOTTOM = 0, // Interacting with the bottom face of the block (YM) + BLOCK_FACE_TOP = 1, // Interacting with the top face of the block (YP) + BLOCK_FACE_NORTH = 2, // Interacting with the northern face of the block (ZP) + BLOCK_FACE_SOUTH = 3, // Interacting with the southern face of the block (ZM) + BLOCK_FACE_WEST = 4, // Interacting with the western face of the block (XP) + BLOCK_FACE_EAST = 5, // Interacting with the eastern face of the block (XM) } ; |