#include <servermap.h>
Public Member Functions | |
| ServerMap (const std::string &savedir, IGameDef *gamedef, EmergeManager *emerge, MetricsBackend *mb) | |
| ~ServerMap () | |
| MapSector * | createSector (v2s16 p) |
| bool | blockpos_over_mapgen_limit (v3s16 p) |
| bool | initBlockMake (v3s16 blockpos, BlockMakeData *data) |
| copy data from map to prepare for mapgen | |
| void | finishBlockMake (BlockMakeData *data, std::map< v3s16, MapBlock * > *changed_blocks, ServerEnvironment *env) |
| write data back to map after mapgen | |
| void | cancelBlockMake (BlockMakeData *data) |
| MapBlock * | createBlock (v3s16 p) |
| MapBlock * | emergeBlock (v3s16 p, bool create_blank=true) override |
| MapBlock * | getBlockOrEmerge (v3s16 p3d, bool generate) |
| bool | isBlockInQueue (v3s16 pos) |
| void | addNodeAndUpdate (v3s16 p, MapNode n, std::map< v3s16, MapBlock * > &modified_blocks, bool remove_metadata) override |
| void | beginSave () override |
| void | endSave () override |
| void | save (ModifiedState save_level) override |
| void | listAllLoadableBlocks (std::vector< v3s16 > &dst) |
| void | listAllLoadedBlocks (std::vector< v3s16 > &dst) |
| MapgenParams * | getMapgenParams () |
| bool | saveBlock (MapBlock *block) override |
| MapBlock * | loadBlock (v3s16 p) |
| MapBlock * | loadBlock (const std::string &blob, v3s16 p, bool save_after_load=false) |
| Load a block that was already read from disk. | |
| bool | deleteBlock (v3s16 blockpos) override |
| void | deleteDetachedBlocks () |
| void | step () |
| void | updateVManip (v3s16 pos) |
| void | PrintInfo (std::ostream &out) override |
| bool | isSavingEnabled () |
| u64 | getSeed () |
| bool | repairBlockLight (v3s16 blockpos, std::map< v3s16, MapBlock * > *modified_blocks) |
| void | transformLiquids (std::map< v3s16, MapBlock * > &modified_blocks, ServerEnvironment *env) |
| void | transformLiquidsLocal (std::map< v3s16, MapBlock * > &modified_blocks, UniqueQueue< v3s16 > &liquid_queue, ServerEnvironment *env, u32 liquid_loop_max) |
| void | transforming_liquid_add (v3s16 p) |
| Public Member Functions inherited from Map | |
| Map (IGameDef *gamedef) | |
| virtual | ~Map () |
| DISABLE_CLASS_COPY (Map) | |
| void | addEventReceiver (MapEventReceiver *event_receiver) |
| void | removeEventReceiver (MapEventReceiver *event_receiver) |
| void | dispatchEvent (const MapEditEvent &event) |
| MapSector * | getSectorNoGenerateNoLock (v2s16 p2d) |
| MapSector * | getSectorNoGenerate (v2s16 p2d) |
| virtual MapSector * | emergeSector (v2s16 p) |
| MapBlock * | getBlockNoCreate (v3s16 p) |
| MapBlock * | getBlockNoCreateNoEx (v3s16 p) |
| const NodeDefManager * | getNodeDefManager () |
| bool | isValidPosition (v3s16 p) |
| void | setNode (v3s16 p, MapNode n) |
| MapNode | getNode (v3s16 p, bool *is_valid_position=NULL) |
| void | removeNodeAndUpdate (v3s16 p, std::map< v3s16, MapBlock * > &modified_blocks) |
| bool | addNodeWithEvent (v3s16 p, MapNode n, bool remove_metadata=true) |
| bool | removeNodeWithEvent (v3s16 p) |
| virtual bool | maySaveBlocks () |
| void | timerUpdate (float dtime, float unload_timeout, s32 max_loaded_blocks, std::vector< v3s16 > *unloaded_blocks=NULL) |
| void | unloadUnreferencedBlocks (std::vector< v3s16 > *unloaded_blocks=NULL) |
| void | deleteSectors (const std::vector< v2s16 > &list) |
| std::vector< v3s16 > | findNodesWithMetadata (v3s16 p1, v3s16 p2) |
| NodeMetadata * | getNodeMetadata (v3s16 p) |
| bool | setNodeMetadata (v3s16 p, NodeMetadata *meta) |
| Sets metadata for a node. | |
| void | removeNodeMetadata (v3s16 p) |
| NodeTimer | getNodeTimer (v3s16 p) |
| void | setNodeTimer (const NodeTimer &t) |
| void | removeNodeTimer (v3s16 p) |
| template<typename F> | |
| void | forEachNodeInArea (v3s16 minp, v3s16 maxp, F func) |
| bool | isBlockOccluded (MapBlock *block, v3s16 cam_pos_nodes) |
| bool | isBlockOccluded (v3s16 pos_relative, v3s16 cam_pos_nodes, bool simple_check=false) |
Static Public Member Functions | |
| static std::vector< std::string > | getDatabaseBackends () |
| static MapDatabase * | createDatabase (const std::string &name, const std::string &savedir, Settings &conf) |
| static bool | saveBlock (MapBlock *block, MapDatabase *db, int compression_level=-1) |
| static void | deSerializeBlock (MapBlock *block, std::istream &is) |
Public Attributes | |
| MapSettingsManager | settings_mgr |
Protected Member Functions | |
| void | reportMetrics (u64 save_time_us, u32 saved_blocks, u32 all_blocks) override |
| Protected Member Functions inherited from Map | |
| bool | determineAdditionalOcclusionCheck (v3s16 pos_camera, const core::aabbox3d< s16 > &block_bounds, v3s16 &to_check) |
| bool | isOccluded (v3s16 pos_camera, v3s16 pos_target, float step, float stepfac, float start_offset, float end_offset, u32 needed_count) |
Private Attributes | |
| EmergeManager * | m_emerge |
| std::string | m_savedir |
| bool | m_map_saving_enabled |
| int | m_map_compression_level |
| std::set< v3s16 > | m_chunks_in_progress |
| std::vector< std::unique_ptr< MapBlock > > | m_detached_blocks |
| UniqueQueue< v3s16 > | m_transforming_liquid |
| f32 | m_transforming_liquid_loop_count_multiplier = 1.0f |
| u32 | m_unprocessed_count = 0 |
| u64 | m_inc_trending_up_start_time = 0 |
| bool | m_queue_size_timer_started = false |
| bool | m_map_metadata_changed = true |
| MapDatabaseAccessor | m_db |
| MetricGaugePtr | m_loaded_blocks_gauge |
| MetricCounterPtr | m_save_time_counter |
| MetricCounterPtr | m_save_count_counter |
Static Private Attributes | |
| static constexpr v3s16 | EMERGE_EXTRA_BORDER {1, 1, 1} |
Friends | |
| class | ModApiMapgen |
Additional Inherited Members | |
| Protected Attributes inherited from Map | |
| IGameDef * | m_gamedef |
| std::set< MapEventReceiver * > | m_event_receivers |
| std::unordered_map< v2s16, MapSector * > | m_sectors |
| MapSector * | m_sector_cache = nullptr |
| v2s16 | m_sector_cache_p |
| const NodeDefManager * | m_nodedef |
| ServerMap::ServerMap | ( | const std::string & | savedir, |
| IGameDef * | gamedef, | ||
| EmergeManager * | emerge, | ||
| MetricsBackend * | mb ) |
References Map::Map(), MetricsBackend::addCounter(), MetricsBackend::addGauge(), createDatabase(), DIR_DELIM, errorstream, Settings::exists(), g_settings, Settings::get(), m_db, m_emerge, m_loaded_blocks_gauge, m_map_compression_level, m_map_saving_enabled, m_save_count_counter, m_save_time_counter, m_savedir, EmergeManager::map_settings_mgr, rangelim(), Settings::readConfigFile(), settings_mgr, and Settings::updateConfigFile().
| ServerMap::~ServerMap | ( | ) |
References deleteDetachedBlocks(), errorstream, FUNCTION_NAME, infostream, m_db, m_emerge, m_map_saving_enabled, m_savedir, MOD_STATE_WRITE_AT_UNLOAD, save(), and verbosestream.
|
overridevirtual |
Reimplemented from Map.
References Map::addNodeAndUpdate(), CONTENT_AIR, dir(), g_7dirs, MapNode::getContent(), Map::getNode(), Map::m_nodedef, m_transforming_liquid, and p().
|
overridevirtual |
| bool ServerMap::blockpos_over_mapgen_limit | ( | v3s16 | p | ) |
References getMapgenParams(), MAP_BLOCKSIZE, MAX_MAP_GENERATION_LIMIT, p(), and rangelim().
Referenced by initBlockMake().
| void ServerMap::cancelBlockMake | ( | BlockMakeData * | data | ) |
References BlockMakeData::blockpos_max, BlockMakeData::blockpos_min, EMERGE_EXTRA_BORDER, Map::getBlockNoCreateNoEx(), MapBlock::refDrop(), BlockMakeData::vmanip, x, y, and z.
References MapSector::createBlankBlock(), createSector(), MapSector::getBlockNoCreateNoEx(), infostream, and p().
Referenced by initBlockMake().
|
static |
References CONTAINS, errorstream, getDatabaseBackends(), Settings::getNoEx(), infostream, Database::initialized(), sanity_check, and Database::verifyDatabase().
Referenced by ServerMap(), migrate_map_database(), and recompress_map_database().
References blockpos_over_max_limit(), Map::getSectorNoGenerate(), Map::m_gamedef, and Map::m_sectors.
Referenced by createBlock(), emergeBlock(), initBlockMake(), and loadBlock().
|
overridevirtual |
Reimplemented from Map.
References MapSector::detachBlock(), Map::getBlockNoCreateNoEx(), Map::getSectorNoGenerate(), m_db, and m_detached_blocks.
Referenced by ModApiEnv::l_delete_area().
| void ServerMap::deleteDetachedBlocks | ( | ) |
References m_detached_blocks.
Referenced by ~ServerMap(), and step().
|
static |
References MapBlock::deSerialize(), g_profiler, PRECISION_MICRO, readU8(), and SPT_AVG.
Referenced by loadBlock(), and recompress_map_database().
Reimplemented from Map.
References MapSector::createBlankBlock(), createSector(), Map::getBlockNoCreateNoEx(), loadBlock(), and p().
Referenced by Server::findSpawnPos(), initBlockMake(), and repairBlockLight().
|
overridevirtual |
| void ServerMap::finishBlockMake | ( | BlockMakeData * | data, |
| std::map< v3s16, MapBlock * > * | changed_blocks, | ||
| ServerEnvironment * | env ) |
write data back to map after mapgen
| now | current game time |
References MMVManip::blitBackAll(), BlockMakeData::blockpos_max, BlockMakeData::blockpos_min, EMERGE_DBG_OUT, EMERGE_EXTRA_BORDER, UniqueQueue< Value >::empty(), MapBlock::expireIsAirCache(), UniqueQueue< Value >::front(), g_settings, Map::getBlockNoCreateNoEx(), ServerEnvironment::getGameTime(), m_chunks_in_progress, m_emerge, m_transforming_liquid, MOD_REASON_EXPIRE_IS_AIR, MOD_STATE_WRITE_NEEDED, UniqueQueue< Value >::pop_front(), MapBlock::raiseModified(), MapBlock::refDrop(), MapBlock::setGenerated(), MapBlock::setTimestampNoChangedFlag(), BlockMakeData::transforming_liquid, transformLiquidsLocal(), BlockMakeData::vmanip, and warningstream.
References Map::getBlockNoCreateNoEx(), m_emerge, and PEER_ID_INEXISTENT.
|
static |
| MapgenParams * ServerMap::getMapgenParams | ( | ) |
References settings_mgr.
Referenced by blockpos_over_mapgen_limit(), Server::findSpawnPos(), getSeed(), and initBlockMake().
| u64 ServerMap::getSeed | ( | ) |
References getMapgenParams(), and MapgenParams::seed.
Referenced by initBlockMake().
| bool ServerMap::initBlockMake | ( | v3s16 | blockpos, |
| BlockMakeData * | data ) |
copy data from map to prepare for mapgen
References BlockMakeData::blockpos_max, BlockMakeData::blockpos_min, blockpos_over_mapgen_limit(), MapgenParams::chunksize, createBlock(), createSector(), EMERGE_DBG_OUT, EMERGE_EXTRA_BORDER, emergeBlock(), FATAL_ERROR_IF, EmergeManager::getContainingChunk(), getMapgenParams(), getSeed(), MMVManip::initialEmerge(), m_chunks_in_progress, m_emerge, Map::m_nodedef, BlockMakeData::nodedef, p(), MapBlock::refGrab(), BlockMakeData::seed, MapBlock::setIsUnderground(), BlockMakeData::vmanip, x, y, and z.
|
inline |
References m_map_saving_enabled.
| void ServerMap::listAllLoadedBlocks | ( | std::vector< v3s16 > & | dst | ) |
References MapSector::getBlocks(), Map::m_sectors, and p().
Load a block that was already read from disk.
Used by EmergeManager.
References MapSector::createBlankBlockNoInsert(), createSector(), deSerializeBlock(), Map::dispatchEvent(), errorstream, g_profiler, g_settings, MapSector::getBlockNoCreateNoEx(), MapSector::insertBlock(), m_emerge, m_transforming_liquid, MEET_OTHER, PRECISION_MICRO, MapBlock::resetModified(), saveBlock(), ReflowScan::scan(), SPT_AVG, MapEditEvent::type, voxalgo::update_block_border_lighting(), and BaseException::what().
References g_profiler, Map::getBlockNoCreateNoEx(), loadBlock(), and m_db.
Referenced by emergeBlock(), and loadBlock().
|
overridevirtual |
| bool ServerMap::repairBlockLight | ( | v3s16 | blockpos, |
| std::map< v3s16, MapBlock * > * | modified_blocks ) |
Fixes lighting in one map block. May modify other blocks as well, as light can spread out of the specified block. Returns false if the block is not generated (so nothing changed), true otherwise.
References emergeBlock(), MapBlock::isGenerated(), and voxalgo::repair_block_light().
Referenced by ModApiEnv::l_fix_light().
|
overrideprotectedvirtual |
Reimplemented from Map.
References m_loaded_blocks_gauge, m_save_count_counter, and m_save_time_counter.
Referenced by save().
|
overridevirtual |
Reimplemented from Map.
References Profiler::add(), beginSave(), endSave(), MapSector::getBlocks(), porting::getTimeUs(), infostream, m_map_metadata_changed, m_map_saving_enabled, Map::m_sectors, MOD_STATE_CLEAN, Profiler::print(), PrintInfo(), reportMetrics(), saveBlock(), settings_mgr, and warningstream.
Referenced by ~ServerMap().
|
overridevirtual |
Reimplemented from Map.
References m_db, m_map_compression_level, and saveBlock().
Referenced by Client::handleCommand_BlockData(), loadBlock(), save(), and saveBlock().
|
static |
References MapBlock::getPos(), MapBlock::resetModified(), MapDatabase::saveBlock(), SER_FMT_VER_HIGHEST_WRITE, and MapBlock::serialize().
| void ServerMap::step | ( | ) |
| void ServerMap::transforming_liquid_add | ( | v3s16 | p | ) |
| void ServerMap::transformLiquids | ( | std::map< v3s16, MapBlock * > & | modified_blocks, |
| ServerEnvironment * | env ) |
References g_settings, porting::getTimeMs(), infostream, m_inc_trending_up_start_time, m_queue_size_timer_started, m_transforming_liquid, m_unprocessed_count, and transformLiquidsLocal().
| void ServerMap::transformLiquidsLocal | ( | std::map< v3s16, MapBlock * > & | modified_blocks, |
| UniqueQueue< v3s16 > & | liquid_queue, | ||
| ServerEnvironment * | env, | ||
| u32 | liquid_loop_max ) |
References ScriptApiEnv::check_for_falling(), CONTENT_AIR, CONTENT_IGNORE, UniqueQueue< Value >::empty(), ContentFeatures::floats, ContentFeatures::floodable, UniqueQueue< Value >::front(), get_max_liquid_level(), Map::getBlockNoCreateNoEx(), MapNode::getContent(), Map::getNode(), getNodeBlockPos(), ServerEnvironment::getScriptIface(), LIGHTBANK_DAY, LIGHTBANK_NIGHT, liquid_6dirs, ContentFeatures::liquid_alternative_flowing_id, LIQUID_FLOW_DOWN_MASK, LIQUID_FLOWING, LIQUID_LEVEL_MASK, LIQUID_LEVEL_MAX, LIQUID_LEVEL_SOURCE, LIQUID_NONE, LIQUID_SOURCE, ContentFeatures::liquid_type, LiquidType_END, Map::m_gamedef, Map::m_nodedef, NodeNeighbor::n, NEIGHBOR_LOWER, NEIGHBOR_SAME_LEVEL, NEIGHBOR_UPPER, ScriptApiNode::node_on_flood(), ScriptApiEnv::on_liquid_transformed(), NodeNeighbor::p, p(), MapNode::param2, UniqueQueue< Value >::pop_front(), UniqueQueue< Value >::push_back(), MapNode::setContent(), MapNode::setLight(), Map::setNode(), RollbackAction::setSetNode(), NodeNeighbor::t, and voxalgo::update_lighting_nodes().
Referenced by finishBlockMake(), and transformLiquids().
| void ServerMap::updateVManip | ( | v3s16 | pos | ) |
References VoxelArea::contains(), Map::getNode(), idx, VoxelArea::index(), VoxelManipulator::m_area, VoxelManipulator::m_data, m_emerge, VoxelManipulator::m_flags, MMVManip::m_is_dirty, Mapgen::vm, and VOXELFLAG_NO_DATA.
|
friend |
References ModApiMapgen.
Referenced by ModApiMapgen.
|
staticconstexprprivate |
Referenced by cancelBlockMake(), finishBlockMake(), and initBlockMake().
|
private |
Referenced by finishBlockMake(), and initBlockMake().
|
private |
Referenced by ServerMap(), ~ServerMap(), beginSave(), deleteBlock(), endSave(), listAllLoadableBlocks(), loadBlock(), and saveBlock().
|
private |
Referenced by deleteBlock(), and deleteDetachedBlocks().
|
private |
Referenced by ServerMap(), ~ServerMap(), finishBlockMake(), getBlockOrEmerge(), initBlockMake(), isBlockInQueue(), loadBlock(), and updateVManip().
|
private |
Referenced by transformLiquids().
|
private |
Referenced by ServerMap(), and reportMetrics().
|
private |
Referenced by ServerMap(), and saveBlock().
|
private |
Referenced by save().
|
private |
Referenced by ServerMap(), ~ServerMap(), isSavingEnabled(), and save().
|
private |
Referenced by transformLiquids().
|
private |
Referenced by ServerMap(), and reportMetrics().
|
private |
Referenced by ServerMap(), and reportMetrics().
|
private |
Referenced by ServerMap(), and ~ServerMap().
|
private |
Referenced by addNodeAndUpdate(), finishBlockMake(), loadBlock(), transforming_liquid_add(), and transformLiquids().
|
private |
|
private |
Referenced by transformLiquids().
| MapSettingsManager ServerMap::settings_mgr |
Referenced by ServerMap(), getMapgenParams(), and save().