From 01246b27b00c0dbcb811cd168fcc6b6f85991135 Mon Sep 17 00:00:00 2001 From: "admin@omencraft.com" Date: Tue, 1 Nov 2011 17:48:11 +0000 Subject: [PATCH] Players can now place blocks in creative mode. The blocks players select from the creative mode inventory are not stored in the players' inventory. (I kind of like that) git-svn-id: http://mc-server.googlecode.com/svn/trunk@37 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cChunkMap.cpp | 1 + source/cClientHandle.cpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source/cChunkMap.cpp b/source/cChunkMap.cpp index b5a907f09..1cabcd593 100644 --- a/source/cChunkMap.cpp +++ b/source/cChunkMap.cpp @@ -660,6 +660,7 @@ cChunkMap::cChunkLayer* cChunkMap::LoadLayer(int a_LayerX, int a_LayerZ ) short NumChunks = 0; if( fread( &NumChunks, sizeof(NumChunks), 1, f) != 1 ) { LOGERROR("ERROR 3 READING FROM FILE %s", SourceFile); fclose(f); return false; } LOG("Num chunks: %i", NumChunks ); + LOG("Source File: %s", SourceFile ); cChunkLayer* Layer = new cChunkLayer( LAYER_SIZE*LAYER_SIZE ); Layer->m_X = a_LayerX; diff --git a/source/cClientHandle.cpp b/source/cClientHandle.cpp index ab7e66786..4c0cefc3e 100644 --- a/source/cClientHandle.cpp +++ b/source/cClientHandle.cpp @@ -581,7 +581,8 @@ void cClientHandle::HandlePacket( cPacket* a_Packet ) { cPacket_BlockPlace* PacketData = reinterpret_cast(a_Packet); cItem & Equipped = m_Player->GetInventory().GetEquippedItem(); - if( (Equipped.m_ItemID != PacketData->m_ItemType) ) // Not valid + //if( (Equipped.m_ItemID != PacketData->m_ItemType) ) // Not valid + if( (Equipped.m_ItemID != PacketData->m_ItemType) && (cRoot::Get()->GetWorld()->GetGameMode() != 1) ) // Not valid { LOGWARN("Player %s tried to place a block that was not selected! (could indicate bot)", GetUsername() ); break; @@ -592,7 +593,6 @@ void cClientHandle::HandlePacket( cPacket* a_Packet ) if( PacketData->m_Direction > -1 ) { AddDirection( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ, PacketData->m_Direction ); - m_Player->GetWorld()->SendBlockTo( PacketData->m_PosX, PacketData->m_PosY, PacketData->m_PosZ, m_Player ); } break; @@ -721,7 +721,7 @@ void cClientHandle::HandlePacket( cPacket* a_Packet ) if( IsValidBlock( PacketData->m_ItemType) ) { - if( m_Player->GetInventory().RemoveItem( Item ) ) + if( (m_Player->GetInventory().RemoveItem( Item )) || (cRoot::Get()->GetWorld()->GetGameMode() == 1) ) { int X = PacketData->m_PosX; char Y = PacketData->m_PosY;