From 3869f76cc23c6ed1df1ad4f6de9c2561f95e08f0 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sun, 8 Feb 2015 21:21:48 +0000 Subject: Handle client 'leave bed' request * Fixes #1728 --- src/World.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/World.cpp') diff --git a/src/World.cpp b/src/World.cpp index 474f77b81..0f3740877 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -47,6 +47,7 @@ #include "Generating/Trees.h" #include "Bindings/PluginManager.h" #include "Blocks/BlockHandler.h" +#include "Blocks/BlockBed.cpp" #include "Tracer.h" @@ -3578,7 +3579,7 @@ void cWorld::cTaskUnloadUnusedChunks::Run(cWorld & a_World) //////////////////////////////////////////////////////////////////////////////// -// cWorld::cTaskSendBlockTo +// cWorld::cTaskSendBlockToAllPlayers cWorld::cTaskSendBlockToAllPlayers::cTaskSendBlockToAllPlayers(std::vector & a_SendQueue) : m_SendQueue(a_SendQueue) @@ -3620,6 +3621,30 @@ void cWorld::cTaskSendBlockToAllPlayers::Run(cWorld & a_World) +//////////////////////////////////////////////////////////////////////////////// +// cWorld::cTaskSendBlockToAllPlayers + +cWorld::cTaskTryAwakeSleepingPlayers::cTaskTryAwakeSleepingPlayers(const Vector3i & a_Position, cChunkInterface & a_ChunkInterface) : + m_Position(a_Position), + m_ChunkInterface(a_ChunkInterface) +{ +} + +void cWorld::cTaskTryAwakeSleepingPlayers::Run(cWorld & a_World) +{ + cTimeFastForwardTester Tester; + if (a_World.ForEachPlayer(Tester)) + { + cPlayerBedStateUnsetter Unsetter(m_Position, m_ChunkInterface); + a_World.ForEachPlayer(Unsetter); + a_World.SetTimeOfDay(0); + } +} + + + + + //////////////////////////////////////////////////////////////////////////////// // cWorld::cChunkGeneratorCallbacks: -- cgit v1.2.3