From 63611932ebae93620386b26cfa82f7c4552b22ff Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 29 May 2011 21:11:16 +0300 Subject: player passwords and privileges in world/auth.txt --HG-- extra : rebase_source : 7260636295d9068fbeeddf4143c89f2b8a91446c --- src/environment.h | 51 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) (limited to 'src/environment.h') diff --git a/src/environment.h b/src/environment.h index ac290f932..f5cce5933 100644 --- a/src/environment.h +++ b/src/environment.h @@ -112,25 +112,6 @@ public: private: }; -/* - Active block modifier interface -*/ - -class ServerEnvironment; - -class ActiveBlockModifier -{ -public: - ActiveBlockModifier(){}; - virtual ~ActiveBlockModifier(){}; - - virtual u32 getTriggerContentCount(){ return 1;} - virtual u8 getTriggerContent(u32 i) = 0; - virtual float getActiveInterval() = 0; - virtual u32 getActiveChance() = 0; - virtual void triggerEvent(ServerEnvironment *env, v3s16 p) = 0; -}; - /* The server-side environment. @@ -140,6 +121,7 @@ public: #include "serverobject.h" class Server; +class ActiveBlockModifier; class ServerEnvironment : public Environment { @@ -178,6 +160,7 @@ public: /* ActiveObjects + ------------------------------------------- */ ServerActiveObject* getActiveObject(u16 id); @@ -214,6 +197,13 @@ public: */ ActiveObjectMessage getActiveObjectMessage(); + /* + ActiveBlockModifiers + ------------------------------------------- + */ + + void addActiveBlockModifier(ActiveBlockModifier *abm); + private: /* Remove all objects that satisfy (m_removed && m_known_by_count==0) @@ -263,6 +253,29 @@ private: float m_game_time_fraction_counter; }; +/* + Active block modifier interface. + + These are fed into ServerEnvironment at initialization time; + ServerEnvironment handles deleting them. +*/ + +class ActiveBlockModifier +{ +public: + ActiveBlockModifier(){}; + virtual ~ActiveBlockModifier(){}; + + //virtual core::list update(ServerEnvironment *env) = 0; + virtual u32 getTriggerContentCount(){ return 1;} + virtual u8 getTriggerContent(u32 i) = 0; + virtual float getActiveInterval() = 0; + // chance of (1 / return value), 0 is disallowed + virtual u32 getActiveChance() = 0; + // This is called usually at interval for 1/chance of the nodes + virtual void triggerEvent(ServerEnvironment *env, v3s16 p) = 0; +}; + #ifndef SERVER #include "clientobject.h" -- cgit v1.2.3 From bbead93c1a00a1c31956e12c94717f179ac5b84b Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Tue, 31 May 2011 20:02:55 +0300 Subject: Reduced server CPU usage on NodeMetadata step()s. Also furnace now cooks while no players are near it. --- src/environment.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/environment.h') diff --git a/src/environment.h b/src/environment.h index f5cce5933..b4f2a64ca 100644 --- a/src/environment.h +++ b/src/environment.h @@ -246,6 +246,7 @@ private: ActiveBlockList m_active_blocks; IntervalLimiter m_active_blocks_management_interval; IntervalLimiter m_active_blocks_test_interval; + IntervalLimiter m_active_blocks_nodemetadata_interval; // Time from the beginning of the game in seconds. // Incremented in step(). u32 m_game_time; -- cgit v1.2.3 From 9b565b6bc427673437c28518d1f61c13b58be42e Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 5 Jun 2011 18:57:36 +0300 Subject: tried to reduce unnecessary map saving disk i/o a bit --- src/environment.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/environment.h') diff --git a/src/environment.h b/src/environment.h index b4f2a64ca..bb9fb0136 100644 --- a/src/environment.h +++ b/src/environment.h @@ -159,7 +159,7 @@ public: void loadMeta(const std::string &savedir); /* - ActiveObjects + External ActiveObject interface ------------------------------------------- */ @@ -198,13 +198,31 @@ public: ActiveObjectMessage getActiveObjectMessage(); /* - ActiveBlockModifiers + ActiveBlockModifiers (TODO) ------------------------------------------- */ void addActiveBlockModifier(ActiveBlockModifier *abm); private: + + /* + Internal ActiveObject interface + ------------------------------------------- + */ + + /* + Add an active object to the environment. + + Called by addActiveObject. + + Object may be deleted by environment immediately. + If id of object is 0, assigns a free id to it. + Returns the id of the object. + Returns 0 if not added and thus deleted. + */ + u16 addActiveObjectRaw(ServerActiveObject *object, bool set_changed); + /* Remove all objects that satisfy (m_removed && m_known_by_count==0) */ -- cgit v1.2.3 From 7538b4c6201675c566c98b21c8ecddb798a14943 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 25 Jun 2011 04:25:14 +0300 Subject: New map generator added (and SQLite, messed up the commits at that time...) (import from temporary git repo) --- src/environment.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/environment.h') diff --git a/src/environment.h b/src/environment.h index bb9fb0136..eac69d222 100644 --- a/src/environment.h +++ b/src/environment.h @@ -197,6 +197,12 @@ public: */ ActiveObjectMessage getActiveObjectMessage(); + /* + Activate objects and dynamically modify for the dtime determined + from timestamp and additional_dtime + */ + void activateBlock(MapBlock *block, u32 additional_dtime=0); + /* ActiveBlockModifiers (TODO) ------------------------------------------- -- cgit v1.2.3