10#include <unordered_set>
11#include <unordered_map>
52 u32 active_object_count, u32 active_object_count_wider){};
69 std::vector<std::vector<ActiveABM>*>
m_aabms;
83 void apply(
MapBlock *block,
int &blocks_scanned,
int &abms_run,
int &blocks_cached);
90#define LBM_NAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyz0123456789_:"
107 const std::unordered_set<v3s16> &positions,
float dtime_s) {};
114 typedef std::unordered_map<content_t, lbm_vector>
lbm_map;
150 u32 stamp,
float dtime_s);
162 std::unordered_map<std::string, LoadingBlockModifierDef *>
m_lbm_defs;
169 static std::unordered_map<std::string, u32>
Definition blockmodifier.h:66
~ABMHandler()
Definition blockmodifier.cpp:105
ABMHandler(std::vector< ABMWithState > &abms, float dtime_s, ServerEnvironment *env, bool use_timers)
Definition blockmodifier.cpp:40
std::vector< std::vector< ActiveABM > * > m_aabms
Definition blockmodifier.h:69
void apply(MapBlock *block, int &blocks_scanned, int &abms_run, int &blocks_cached)
Definition blockmodifier.cpp:134
static u32 countObjects(MapBlock *block, ServerMap *map, u32 &wider)
Definition blockmodifier.cpp:111
ServerEnvironment * m_env
Definition blockmodifier.h:67
Definition blockmodifier.h:26
virtual ~ActiveBlockModifier()=default
virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n, u32 active_object_count, u32 active_object_count_wider)
Definition blockmodifier.h:51
virtual const std::vector< std::string > & getRequiredNeighbors() const =0
virtual bool getSimpleCatchUp()=0
virtual const std::vector< std::string > & getTriggerContents() const =0
virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n)
Definition blockmodifier.h:50
ActiveBlockModifier()=default
virtual u32 getTriggerChance()=0
virtual const std::vector< std::string > & getWithoutNeighbors() const =0
virtual float getTriggerInterval()=0
Definition blockmodifier.h:111
void addLBM(LoadingBlockModifierDef *lbm_def, IGameDef *gamedef)
Definition blockmodifier.cpp:275
bool empty() const
Definition blockmodifier.h:120
lbm_vector lbm_list
Definition blockmodifier.h:128
const lbm_map::mapped_type * lookup(content_t c) const
Definition blockmodifier.cpp:307
DISABLE_CLASS_COPY(LBMContentMapping)
LBMContentMapping()=default
ALLOW_CLASS_MOVE(LBMContentMapping)
const lbm_vector & getList() const
Definition blockmodifier.h:119
~LBMContentMapping()
Definition blockmodifier.cpp:268
lbm_map map
Definition blockmodifier.h:129
std::unordered_map< content_t, lbm_vector > lbm_map
Definition blockmodifier.h:114
std::vector< LoadingBlockModifierDef * > lbm_vector
Definition blockmodifier.h:113
Definition blockmodifier.h:133
static std::unordered_map< std::string, u32 > parseIntroductionTimesString(const std::string ×)
Definition blockmodifier.cpp:424
lbm_lookup_map m_lbm_lookup
Definition blockmodifier.h:166
void addLBMDef(LoadingBlockModifierDef *lbm_def)
Definition blockmodifier.cpp:323
void applyLBMs(ServerEnvironment *env, MapBlock *block, u32 stamp, float dtime_s)
Definition blockmodifier.cpp:465
std::string createIntroductionTimesString()
Definition blockmodifier.cpp:402
~LBMManager()
Definition blockmodifier.cpp:315
std::map< u32, LBMContentMapping > lbm_lookup_map
Definition blockmodifier.h:153
lbm_lookup_map::const_iterator getLBMsIntroducedAfter(u32 time)
Definition blockmodifier.h:175
bool m_query_mode
Definition blockmodifier.h:158
void loadIntroductionTimes(const std::string ×, IGameDef *gamedef, u32 now)
Definition blockmodifier.cpp:342
std::unordered_map< std::string, LoadingBlockModifierDef * > m_lbm_defs
Definition blockmodifier.h:162
Definition serverenvironment.h:113
Definition servermap.h:43
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
u16 content_t
Definition mapnode.h:21
Definition blockmodifier.h:56
ABMWithState(ActiveBlockModifier *abm_)
Definition blockmodifier.cpp:18
float timer
Definition blockmodifier.h:58
ActiveBlockModifier * abm
Definition blockmodifier.h:57
Definition blockmodifier.cpp:30
Definition blockmodifier.h:93
std::string name
Definition blockmodifier.h:96
bool run_at_every_load
Definition blockmodifier.h:97
virtual ~LoadingBlockModifierDef()=default
std::vector< std::string > trigger_contents
Definition blockmodifier.h:95
virtual void trigger(ServerEnvironment *env, MapBlock *block, const std::unordered_set< v3s16 > &positions, float dtime_s)
Called to invoke LBM.
Definition blockmodifier.h:106
static std::string p(std::string path)
Definition test_filesys.cpp:64