41 #define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff
47 #define MOD_REASON_INITIAL (1 << 0)
48 #define MOD_REASON_REALLOCATE (1 << 1)
49 #define MOD_REASON_SET_IS_UNDERGROUND (1 << 2)
50 #define MOD_REASON_SET_LIGHTING_COMPLETE (1 << 3)
51 #define MOD_REASON_SET_GENERATED (1 << 4)
52 #define MOD_REASON_SET_NODE (1 << 5)
53 #define MOD_REASON_SET_NODE_NO_CHECK (1 << 6)
54 #define MOD_REASON_SET_TIMESTAMP (1 << 7)
55 #define MOD_REASON_REPORT_META_CHANGE (1 << 8)
56 #define MOD_REASON_CLEAR_ALL_OBJECTS (1 << 9)
57 #define MOD_REASON_BLOCK_EXPIRED (1 << 10)
58 #define MOD_REASON_ADD_ACTIVE_OBJECT_RAW (1 << 11)
59 #define MOD_REASON_REMOVE_OBJECTS_REMOVE (1 << 12)
60 #define MOD_REASON_REMOVE_OBJECTS_DEACTIVATE (1 << 13)
61 #define MOD_REASON_TOO_MANY_OBJECTS (1 << 14)
62 #define MOD_REASON_STATIC_DATA_ADDED (1 << 15)
63 #define MOD_REASON_STATIC_DATA_REMOVED (1 << 16)
64 #define MOD_REASON_STATIC_DATA_CHANGED (1 << 17)
65 #define MOD_REASON_EXPIRE_DAYNIGHTDIFF (1 << 18)
66 #define MOD_REASON_VMANIP (1 << 19)
67 #define MOD_REASON_UNKNOWN (1 << 20)
260 if (!*valid_position)
268 return getNode(
p.X,
p.Y,
p.Z, valid_position);
297 *valid_position =
data !=
nullptr;
298 if (!*valid_position)
476 void serialize(std::ostream &os, u8 version,
bool disk,
int compression_level);
479 void deSerialize(std::istream &is, u8 version,
bool disk);
619 return p.X < -max_limit_bs ||
620 p.X > max_limit_bs ||
621 p.Y < -max_limit_bs ||
622 p.Y > max_limit_bs ||
623 p.Z < -max_limit_bs ||
630 return p.X < -max_limit_bp ||
631 p.X > max_limit_bp ||
632 p.Y < -max_limit_bp ||
633 p.Y > max_limit_bp ||
634 p.Z < -max_limit_bp ||
Definition: exceptions.h:118
Definition: mapblock_mesh.h:86
Definition: mapblock.h:74
bool is_underground
Definition: mapblock.h:575
Map * m_parent
Definition: mapblock.h:539
s16 getGroundLevel(v2s16 p2d)
Definition: mapblock.cpp:221
u16 getLightingComplete()
Definition: mapblock.h:174
bool getIsUnderground()
Definition: mapblock.h:155
MapNode getNodeNoCheck(v3s16 p, bool *valid_position)
Definition: mapblock.h:304
float m_usage_timer
Definition: mapblock.h:605
bool m_day_night_differs
Definition: mapblock.h:588
void incrementUsageTimer(float dtime)
Definition: mapblock.h:416
void raiseModified(u32 mod, u32 reason=MOD_REASON_UNKNOWN)
Definition: mapblock.h:107
u32 m_disk_timestamp
Definition: mapblock.h:599
bool isValidPosition(s16 x, s16 y, s16 z)
Definition: mapblock.h:243
MapBlockMesh * mesh
Definition: mapblock.h:513
MapNode * getData()
Definition: mapblock.h:99
void setTimestamp(u32 time)
Definition: mapblock.h:386
v3s16 getPos()
Definition: mapblock.h:221
static const u32 ystride
Definition: mapblock.h:520
void clearNodeTimers()
Definition: mapblock.h:464
void setTimestampNoChangedFlag(u32 time)
Definition: mapblock.h:392
u32 getModified()
Definition: mapblock.h:121
MapNode getNodeNoEx(v3s16 p)
Definition: mapblock.h:271
v3s16 m_pos_relative
Definition: mapblock.h:549
u32 m_timestamp
Definition: mapblock.h:597
v3s16 m_pos
Definition: mapblock.h:541
void reallocate()
Definition: mapblock.h:89
void setGenerated(bool b)
Definition: mapblock.h:209
NodeMetadataList m_node_metadata
Definition: mapblock.h:516
bool isLightingComplete(LightBank bank, u8 direction)
Definition: mapblock.h:195
MapBlock(Map *parent, v3s16 pos, IGameDef *gamedef, bool dummy=false)
Definition: mapblock.cpp:69
MapNode getNode(s16 x, s16 y, s16 z, bool *valid_position)
Definition: mapblock.h:256
u32 m_modified_reason
Definition: mapblock.h:565
v3s16 getPosRelative()
Definition: mapblock.h:226
float getUsageTimer()
Definition: mapblock.h:421
bool isGenerated()
Definition: mapblock.h:204
void setNodeNoCheck(s16 x, s16 y, s16 z, MapNode &n)
Definition: mapblock.h:325
Map * getParent()
Definition: mapblock.h:84
bool m_generated
Definition: mapblock.h:591
static const u32 nodecount
Definition: mapblock.h:523
NodeTimer getNodeTimer(const v3s16 &p)
Definition: mapblock.h:449
bool getDayNightDiff()
Definition: mapblock.h:359
u32 m_modified
Definition: mapblock.h:564
void resetModified()
Definition: mapblock.h:133
void setNode(v3s16 p, MapNode &n)
Definition: mapblock.h:286
void copyTo(VoxelManipulator &dst)
Definition: mapblock.cpp:137
static const u32 zstride
Definition: mapblock.h:521
void actuallyUpdateDayNightDiff()
Definition: mapblock.cpp:157
std::unordered_set< content_t > contents
Definition: mapblock.h:527
const MapNode & getNodeUnsafe(v3s16 &p)
Definition: mapblock.h:320
MapNode * data
Definition: mapblock.h:557
void serialize(std::ostream &os, u8 version, bool disk, int compression_level)
Serialization.
Definition: mapblock.cpp:358
void deSerialize_pre22(std::istream &is, u8 version, bool disk)
Definition: mapblock.cpp:575
void removeNodeTimer(const v3s16 &p)
Definition: mapblock.h:454
void refDrop()
Definition: mapblock.h:435
StaticObjectList m_static_objects
Definition: mapblock.h:518
bool isValidPositionParent(v3s16 p)
Definition: mapblock.cpp:91
MapNode getNode(v3s16 p, bool *valid_position)
Definition: mapblock.h:266
bool isValidPosition(v3s16 p)
Definition: mapblock.h:251
core::aabbox3d< s16 > getBox()
Definition: mapblock.h:231
bool contents_cached
Definition: mapblock.h:529
bool m_day_night_differs_expired
Definition: mapblock.h:589
u32 getDiskTimestamp()
Definition: mapblock.h:402
u16 m_lighting_complete
Definition: mapblock.h:585
u32 getTimestamp()
Definition: mapblock.h:397
std::string getModifiedReasonString()
Definition: mapblock.cpp:115
MapNode getNodeParent(v3s16 p, bool *is_valid_position=NULL)
Definition: mapblock.cpp:100
void setLightingComplete(u16 newflags)
Definition: mapblock.h:166
void setNodeNoCheck(v3s16 p, MapNode &n)
Definition: mapblock.h:334
void expireDayNightDiff()
Definition: mapblock.cpp:210
MapNode & getNodeRef(v3s16 &p)
Definition: mapblock.h:502
void deSerialize(std::istream &is, u8 version, bool disk)
Definition: mapblock.cpp:452
void resetUsageTimer()
Definition: mapblock.h:411
int m_refcount
Definition: mapblock.h:611
void setLightingComplete(LightBank bank, u8 direction, bool is_complete)
Definition: mapblock.h:179
MapNode getNodeNoCheck(s16 x, s16 y, s16 z, bool *valid_position)
Definition: mapblock.h:295
void setNode(s16 x, s16 y, s16 z, MapNode &n)
Definition: mapblock.h:277
void deSerializeNetworkSpecific(std::istream &is)
Definition: mapblock.cpp:557
const MapNode & getNodeUnsafe(s16 x, s16 y, s16 z)
Definition: mapblock.h:315
void copyFrom(VoxelManipulator &dst)
Definition: mapblock.cpp:147
void refGrab()
Definition: mapblock.h:430
void setIsUnderground(bool a_is_underground)
Definition: mapblock.h:160
int refGet()
Definition: mapblock.h:440
u32 getModifiedReason()
Definition: mapblock.h:126
void serializeNetworkSpecific(std::ostream &os)
Definition: mapblock.cpp:443
~MapBlock()
Definition: mapblock.cpp:79
void unDummify()
Definition: mapblock.h:148
bool do_not_cache_contents
Definition: mapblock.h:531
void setNodeTimer(const NodeTimer &t)
Definition: mapblock.h:459
bool isDummy()
Definition: mapblock.h:143
NodeTimerList m_node_timers
Definition: mapblock.h:517
MapNode & getNodeRef(s16 x, s16 y, s16 z)
Definition: mapblock.h:494
IGameDef * m_gamedef
Definition: mapblock.h:551
Definition: nodetimer.h:58
void remove(v3s16 p)
Definition: nodetimer.h:77
void set(const NodeTimer &timer)
Definition: nodetimer.h:109
NodeTimer get(const v3s16 &p)
Definition: nodetimer.h:67
void clear()
Definition: nodetimer.h:114
Definition: nodetimer.h:36
Definition: staticobject.h:45
#define BS
Definition: constants.h:74
#define MAP_BLOCKSIZE
Definition: constants.h:77
#define MAX_MAP_GENERATION_LIMIT
Definition: constants.h:67
core::vector2d< s16 > v2s16
Definition: irr_v2d.h:27
core::vector3d< s16 > v3s16
Definition: irr_v3d.h:28
core::vector3df v3f
Definition: irr_v3d.h:26
#define MOD_REASON_UNKNOWN
Definition: mapblock.h:67
#define MOD_REASON_SET_GENERATED
Definition: mapblock.h:51
#define MOD_REASON_REALLOCATE
Definition: mapblock.h:48
std::vector< MapBlock * > MapBlockVect
Definition: mapblock.h:614
#define MOD_REASON_SET_LIGHTING_COMPLETE
Definition: mapblock.h:50
v3s16 getNodeBlockPos(const v3s16 &p)
Definition: mapblock.h:641
bool objectpos_over_limit(v3f p)
Definition: mapblock.h:616
std::string analyze_block(MapBlock *block)
Definition: mapblock.cpp:786
void getNodeBlockPosWithOffset(const v3s16 &p, v3s16 &block, v3s16 &offset)
Definition: mapblock.h:646
#define MOD_REASON_INITIAL
Definition: mapblock.h:47
#define MOD_REASON_SET_NODE
Definition: mapblock.h:52
#define BLOCK_TIMESTAMP_UNDEFINED
Definition: mapblock.h:41
#define MOD_REASON_SET_IS_UNDERGROUND
Definition: mapblock.h:49
#define MOD_REASON_SET_TIMESTAMP
Definition: mapblock.h:54
bool blockpos_over_max_limit(v3s16 p)
Definition: mapblock.h:627
#define MOD_REASON_SET_NODE_NO_CHECK
Definition: mapblock.h:53
#define CONTENT_IGNORE
Definition: mapnode.h:71
LightBank
Definition: mapnode.h:74
@ LIGHTBANK_NIGHT
Definition: mapnode.h:76
@ MOD_STATE_WRITE_AT_UNLOAD
Definition: modifiedstate.h:28
@ MOD_STATE_CLEAN
Definition: modifiedstate.h:25
@ MOD_STATE_WRITE_NEEDED
Definition: modifiedstate.h:31
u8 direction
Definition: voxelalgorithms.cpp:39
s16 getContainerPos(s16 p, s16 d)
Definition: numeric.h:40
void getContainerPosWithOffset(s16 p, s16 d, s16 &container, s16 &offset)
Definition: numeric.h:79
Definition: mapnode.h:118
std::string p(std::string path)
Definition: test_filepath.cpp:59