summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@hotmail.co.uk>2014-06-15 21:28:08 +0200
committerTiger Wang <ziwei.tiger@hotmail.co.uk>2014-06-15 21:28:08 +0200
commitabbd11be6da261293f2086135e05e9a0659220f2 (patch)
tree249a651c23b504a0ea344087d63a6f9c1061bc27
parentFixed two redstone bugs (diff)
downloadcuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar
cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.gz
cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.bz2
cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.lz
cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.xz
cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.zst
cuberite-abbd11be6da261293f2086135e05e9a0659220f2.zip
-rw-r--r--src/Entities/Player.cpp19
-rw-r--r--src/Entities/Player.h5
2 files changed, 22 insertions, 2 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index feb09b5d2..cffdd71b1 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -22,6 +22,12 @@
#include "inifile/iniFile.h"
#include "json/json.h"
+// 6000 ticks or 5 minutes
+#define PLAYER_INVENTORY_SAVE_INTERVAL 6000
+
+// 1000 = once per second
+#define PLAYER_LIST_TIME_MS 1000
+
@@ -64,6 +70,7 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName)
, m_BowCharge(0)
, m_FloaterID(-1)
, m_Team(NULL)
+ , m_TicksUntilNextSave(PLAYER_INVENTORY_SAVE_INTERVAL)
{
LOGD("Created a player object for \"%s\" @ \"%s\" at %p, ID %d",
a_PlayerName.c_str(), a_Client->GetIPString().c_str(),
@@ -250,7 +257,7 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk)
// Send Player List (Once per m_LastPlayerListTime/1000 ms)
cTimer t1;
- if (m_LastPlayerListTime + cPlayer::PLAYER_LIST_TIME_MS <= t1.GetNowTime())
+ if (m_LastPlayerListTime + PLAYER_LIST_TIME_MS <= t1.GetNowTime())
{
m_World->SendPlayerList(this);
m_LastPlayerListTime = t1.GetNowTime();
@@ -260,6 +267,16 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk)
{
m_LastGroundHeight = (float)GetPosY();
}
+
+ if (m_TicksUntilNextSave == 0)
+ {
+ SaveToDisk();
+ m_TicksUntilNextSave = PLAYER_INVENTORY_SAVE_INTERVAL;
+ }
+ else
+ {
+ m_TicksUntilNextSave--;
+ }
}
diff --git a/src/Entities/Player.h b/src/Entities/Player.h
index 83b9ad593..a9acf6efc 100644
--- a/src/Entities/Player.h
+++ b/src/Entities/Player.h
@@ -461,7 +461,6 @@ protected:
cItem m_DraggingItem;
long long m_LastPlayerListTime;
- static const unsigned short PLAYER_LIST_TIME_MS = 1000; // 1000 = once per second
cClientHandle * m_ClientHandle;
@@ -539,6 +538,10 @@ protected:
Set by a right click on unoccupied bed, unset by a time fast forward or teleport */
bool m_bIsInBed;
+ /** How long till the player's inventory will be saved
+ Default save interval is #defined in PLAYER_INVENTORY_SAVE_INTERVAL */
+ unsigned int m_TicksUntilNextSave;
+
} ; // tolua_export