summaryrefslogtreecommitdiffstats
path: root/source/cClientHandle.cpp
diff options
context:
space:
mode:
authoradmin@omencraft.com <admin@omencraft.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-11-04 06:01:55 +0100
committeradmin@omencraft.com <admin@omencraft.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2011-11-04 06:01:55 +0100
commitd2b1aea018650c570e405b5ebb58de3f5b85054e (patch)
tree9dfbcb6bc841ac1e4639b0d4160019524666a499 /source/cClientHandle.cpp
parentFixed some redstone items and a bug that prevented floats from client to server packets reading correctly on 64 bit linux. (diff)
downloadcuberite-d2b1aea018650c570e405b5ebb58de3f5b85054e.tar
cuberite-d2b1aea018650c570e405b5ebb58de3f5b85054e.tar.gz
cuberite-d2b1aea018650c570e405b5ebb58de3f5b85054e.tar.bz2
cuberite-d2b1aea018650c570e405b5ebb58de3f5b85054e.tar.lz
cuberite-d2b1aea018650c570e405b5ebb58de3f5b85054e.tar.xz
cuberite-d2b1aea018650c570e405b5ebb58de3f5b85054e.tar.zst
cuberite-d2b1aea018650c570e405b5ebb58de3f5b85054e.zip
Diffstat (limited to 'source/cClientHandle.cpp')
-rw-r--r--source/cClientHandle.cpp32
1 files changed, 27 insertions, 5 deletions
diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp
index f384eba77..003f23f55 100644
--- a/source/cClientHandle.cpp
+++ b/source/cClientHandle.cpp
@@ -16,7 +16,7 @@
#include "cStairs.h"
#include "cLadder.h"
#include "cSign.h"
-#include "cRedstoneRepeater.h"
+#include "cRedstone.h"
#include "cBlockToPickup.h"
#include "cMonster.h"
#include "cChatColor.h"
@@ -523,6 +523,16 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
{
if( World->DigBlock( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ, PickupItem ) )
{
+ printf("OldBlock,E_BLOCK_REDSTONE_TORCH_ON: %i,%i\n", OldBlock, E_BLOCK_REDSTONE_TORCH_ON );
+ if (OldBlock == E_BLOCK_REDSTONE_TORCH_ON) {
+ cRedstone Redstone(World);
+ Redstone.cRedstone::ChangeRedstoneTorch( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ, false );
+ }
+ if (OldBlock == E_BLOCK_REDSTONE_TORCH_OFF) {
+ cRedstone Redstone(World);
+ Redstone.cRedstone::ChangeRedstoneTorch( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ, false );
+ }
+
int helditem = m_Player->GetInventory().GetEquippedItem().m_ItemID;
bool itemhasdur = false;
switch(helditem)
@@ -640,7 +650,6 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
bool bPlaceBlock = true;
if( PacketData->m_Direction >= 0 )
{
- bool is_redstone_dust = false;
ENUM_BLOCK_ID BlockID = (ENUM_BLOCK_ID)m_Player->GetWorld()->GetBlock( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ );
switch( BlockID )
{
@@ -746,24 +755,37 @@ void cClientHandle::HandlePacket( cPacket* a_Packet )
break;
char MetaData = (char)Equipped.m_ItemHealth;
- bool is_redstone_dust = false;
switch( PacketData->m_ItemType ) // Special handling for special items
{
case E_BLOCK_TORCH:
MetaData = cTorch::DirectionToMetaData( PacketData->m_Direction );
break;
case E_BLOCK_REDSTONE_TORCH_OFF:
+ {
MetaData = cTorch::DirectionToMetaData( PacketData->m_Direction );
+ //check redstone circuit:
+
+ //if( GetBlock( X, Y+1, Z ) == E_BLOCK_AIR )
+ if( g_BlockTransparent[ (int)m_Player->GetWorld()->GetBlock( PacketData->m_PosX, PacketData->m_PosY+2, PacketData->m_PosZ ) ] == true ) {//if block above is transparent
+ printf("transparent above me\n");
+ } else {
+ printf("transparent not above me\n");
+ }
+
+ cRedstone Redstone(m_Player->GetWorld());
+ Redstone.cRedstone::ChangeRedstoneTorch( PacketData->m_PosX, PacketData->m_PosY+1, PacketData->m_PosZ, true );
+
break;
+ }
case E_BLOCK_REDSTONE_TORCH_ON:
MetaData = cTorch::DirectionToMetaData( PacketData->m_Direction );
break;
case E_ITEM_REDSTONE_DUST:
- is_redstone_dust = true;
+ MetaData = 0;
PacketData->m_ItemType = E_BLOCK_REDSTONE_WIRE;
break;
case E_ITEM_REDSTONE_REPEATER:
- MetaData = cRedstoneRepeater::RotationToMetaData( m_Player->GetRotation() );
+ MetaData = cRedstone::RepeaterRotationToMetaData( m_Player->GetRotation() );
PacketData->m_ItemType = E_BLOCK_REDSTONE_REPEATER_OFF;
break;
case E_BLOCK_COBBLESTONE_STAIRS: