Merge branch 'master' into redstone
This commit is contained in:
@@ -52,7 +52,10 @@ public:
|
||||
static NIBBLETYPE RotationToMetaData(double a_Rotation)
|
||||
{
|
||||
a_Rotation += 180 + (180 / 4); // So its not aligned with axis
|
||||
if (a_Rotation > 360) a_Rotation -= 360;
|
||||
if (a_Rotation > 360)
|
||||
{
|
||||
a_Rotation -= 360;
|
||||
}
|
||||
|
||||
a_Rotation = (a_Rotation / 360) * 4;
|
||||
|
||||
|
||||
@@ -145,7 +145,10 @@ NIBBLETYPE cBlockDoorHandler::MetaMirrorXY(NIBBLETYPE a_Meta)
|
||||
// in only the bottom tile while the hinge position is in the top tile. This function only operates on one tile at a time,
|
||||
// so the function can only see either the hinge position or orientation, but not both, at any given time. The class itself
|
||||
// needs extra datamembers.
|
||||
if (a_Meta & 0x08) return a_Meta;
|
||||
if (a_Meta & 0x08)
|
||||
{
|
||||
return a_Meta;
|
||||
}
|
||||
|
||||
// Holds open/closed meta data. 0x0C == 1100.
|
||||
NIBBLETYPE OtherMeta = a_Meta & 0x0C;
|
||||
@@ -173,7 +176,10 @@ NIBBLETYPE cBlockDoorHandler::MetaMirrorYZ(NIBBLETYPE a_Meta)
|
||||
// so the function can only see either the hinge position or orientation, but not both, at any given time.The class itself
|
||||
// needs extra datamembers.
|
||||
|
||||
if (a_Meta & 0x08) return a_Meta;
|
||||
if (a_Meta & 0x08)
|
||||
{
|
||||
return a_Meta;
|
||||
}
|
||||
|
||||
// Holds open/closed meta data. 0x0C == 1100.
|
||||
NIBBLETYPE OtherMeta = a_Meta & 0x0C;
|
||||
|
||||
@@ -19,6 +19,18 @@ public:
|
||||
}
|
||||
|
||||
|
||||
virtual void OnUse(cChunkInterface & a_ChunkInterface, cWorldInterface & a_WorldInterface, cPlayer *a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override
|
||||
{
|
||||
a_ChunkInterface.UseBlockEntity(a_Player, a_BlockX, a_BlockY, a_BlockZ);
|
||||
}
|
||||
|
||||
|
||||
virtual bool IsUseable() override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
virtual void ConvertToPickups(cItems & a_Pickups, NIBBLETYPE a_BlockMeta) override
|
||||
{
|
||||
// No pickups
|
||||
|
||||
+72
-16
@@ -151,13 +151,21 @@ public:
|
||||
Neighbors[6] = (IsUnstable(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ - 1) || !IsNotConnected(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ, BLOCK_FACE_NORTH, E_PURE_NONE));
|
||||
Neighbors[7] = (IsUnstable(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ + 1) || !IsNotConnected(a_ChunkInterface, a_BlockX, a_BlockY + 1, a_BlockZ, BLOCK_FACE_SOUTH, E_PURE_NONE));
|
||||
if (IsUnstable(a_ChunkInterface, a_BlockX + 1, a_BlockY - 1, a_BlockZ) || !IsNotConnected(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ, BLOCK_FACE_EAST))
|
||||
{
|
||||
Neighbors[0] = true;
|
||||
}
|
||||
if (IsUnstable(a_ChunkInterface, a_BlockX - 1, a_BlockY - 1, a_BlockZ) || !IsNotConnected(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ, BLOCK_FACE_WEST))
|
||||
{
|
||||
Neighbors[1] = true;
|
||||
}
|
||||
if (IsUnstable(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ - 1) || !IsNotConnected(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ, BLOCK_FACE_NORTH))
|
||||
{
|
||||
Neighbors[2] = true;
|
||||
}
|
||||
if (IsUnstable(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ + 1) || !IsNotConnected(a_ChunkInterface, a_BlockX, a_BlockY - 1, a_BlockZ, BLOCK_FACE_SOUTH))
|
||||
{
|
||||
Neighbors[3] = true;
|
||||
}
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
if (Neighbors[i])
|
||||
@@ -167,12 +175,30 @@ public:
|
||||
}
|
||||
if (RailsCnt == 1)
|
||||
{
|
||||
if (Neighbors[7]) return E_META_RAIL_ASCEND_ZP;
|
||||
else if (Neighbors[6]) return E_META_RAIL_ASCEND_ZM;
|
||||
else if (Neighbors[5]) return E_META_RAIL_ASCEND_XM;
|
||||
else if (Neighbors[4]) return E_META_RAIL_ASCEND_XP;
|
||||
else if (Neighbors[0] || Neighbors[1]) return E_META_RAIL_XM_XP;
|
||||
else if (Neighbors[2] || Neighbors[3]) return E_META_RAIL_ZM_ZP;
|
||||
if (Neighbors[7])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_ZP;
|
||||
}
|
||||
else if (Neighbors[6])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_ZM;
|
||||
}
|
||||
else if (Neighbors[5])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_XM;
|
||||
}
|
||||
else if (Neighbors[4])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_XP;
|
||||
}
|
||||
else if (Neighbors[0] || Neighbors[1])
|
||||
{
|
||||
return E_META_RAIL_XM_XP;
|
||||
}
|
||||
else if (Neighbors[2] || Neighbors[3])
|
||||
{
|
||||
return E_META_RAIL_ZM_ZP;
|
||||
}
|
||||
ASSERT(!"Weird neighbor count");
|
||||
return Meta;
|
||||
}
|
||||
@@ -185,16 +211,46 @@ public:
|
||||
}
|
||||
if (RailsCnt > 1)
|
||||
{
|
||||
if (Neighbors[3] && Neighbors[0] && CanThisRailCurve()) return E_META_RAIL_CURVED_ZP_XP;
|
||||
else if (Neighbors[3] && Neighbors[1] && CanThisRailCurve()) return E_META_RAIL_CURVED_ZP_XM;
|
||||
else if (Neighbors[2] && Neighbors[0] && CanThisRailCurve()) return E_META_RAIL_CURVED_ZM_XP;
|
||||
else if (Neighbors[2] && Neighbors[1] && CanThisRailCurve()) return E_META_RAIL_CURVED_ZM_XM;
|
||||
else if (Neighbors[7] && Neighbors[2]) return E_META_RAIL_ASCEND_ZP;
|
||||
else if (Neighbors[3] && Neighbors[6]) return E_META_RAIL_ASCEND_ZM;
|
||||
else if (Neighbors[5] && Neighbors[0]) return E_META_RAIL_ASCEND_XM;
|
||||
else if (Neighbors[4] && Neighbors[1]) return E_META_RAIL_ASCEND_XP;
|
||||
else if (Neighbors[0] && Neighbors[1]) return E_META_RAIL_XM_XP;
|
||||
else if (Neighbors[2] && Neighbors[3]) return E_META_RAIL_ZM_ZP;
|
||||
if (Neighbors[3] && Neighbors[0] && CanThisRailCurve())
|
||||
{
|
||||
return E_META_RAIL_CURVED_ZP_XP;
|
||||
}
|
||||
else if (Neighbors[3] && Neighbors[1] && CanThisRailCurve())
|
||||
{
|
||||
return E_META_RAIL_CURVED_ZP_XM;
|
||||
}
|
||||
else if (Neighbors[2] && Neighbors[0] && CanThisRailCurve())
|
||||
{
|
||||
return E_META_RAIL_CURVED_ZM_XP;
|
||||
}
|
||||
else if (Neighbors[2] && Neighbors[1] && CanThisRailCurve())
|
||||
{
|
||||
return E_META_RAIL_CURVED_ZM_XM;
|
||||
}
|
||||
else if (Neighbors[7] && Neighbors[2])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_ZP;
|
||||
}
|
||||
else if (Neighbors[3] && Neighbors[6])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_ZM;
|
||||
}
|
||||
else if (Neighbors[5] && Neighbors[0])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_XM;
|
||||
}
|
||||
else if (Neighbors[4] && Neighbors[1])
|
||||
{
|
||||
return E_META_RAIL_ASCEND_XP;
|
||||
}
|
||||
else if (Neighbors[0] && Neighbors[1])
|
||||
{
|
||||
return E_META_RAIL_XM_XP;
|
||||
}
|
||||
else if (Neighbors[2] && Neighbors[3])
|
||||
{
|
||||
return E_META_RAIL_ZM_ZP;
|
||||
}
|
||||
|
||||
if (CanThisRailCurve())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user