- Neatly placed all emerge related code into a new file, emerge.cpp
- Greatly cleaned up the code in EmergeThread::Thread()
- Reworked Emerge queue. Now an actual std::queue of v3s16 block positions
- Removed the completely unnecessary map of peer ids requesting blocks
i.e., not only the mod with missing dependencies, but also the missing
dependencies itself. (This already used to be the case before the mod
selection gui was added)
Also, mods with unsatisfied dependencies are no longer reported as
mods that could not be found.
This way, plants actually show the real backface on their back side,
i.e., the front face mirrored around the vertical axis, instead of
showing the front face on both sides. This looked weird when the
texture was not symmetrical around the vertical axis.
All uses of operator[] in guiConfigureWorld.cpp have been replaced
with .find() operations.
In some places, operator[] had been called with mod names of "Add-Ons"
or "N/A", which would insert a default-constructed ModSpec into the
list of add-on mods. In other places, the use of operator[] was safe
now, but it probably is safer for future changes to use .find()
everywhere.
Only show enable all / disable all buttons for all add-ons when at
least one add-on is installed. When no add-on ist installed, don't
show any buttons or checkboxes.
Added is_modpack flag to ModSpec to distinguish empty modpacks from
normal mods and check this flag in mod selection gui so that empty
modpacks are not treated like mods that can be enabled or disabled.
settings.h: added function to return all keys used in settings, and a
function to remove a setting
mods.{h,cpp}: added class ModConfiguration that represents a subset of the installed mods.
server.{h,cpp}: server does not load add-on mods that are disabled in
the world.mt file. mods are disabled by a setting of the form
"load_mod_<modname> = false". if no load_mod_<modname> = ... setting
is found, the mod is loaded anyways for backwards compatibilty. server
also complains to errorstream about mods with unstatisfied
dependencies and about mods that are not installed.
guiConfigureWorld.{h,cpp}: shows a treeview of installed add-on mods
and modpacks with little icons in front of their name indicating their
status: a checkmark for enabled mods, a cross for disabled mods, a
question mark for "new" mods
Mods can be enabled/disabled by a checkbox. Mods also show a list of
dependencies and reverse dependencies. double-click on a mod in
dependency or reverse dependency listbox selects the corresponding
mod. Enabling a mod also enables all its dependencies. Disabling a mod
also disables all its reverse dependencies.
For modpacks, show buttons to enable/disable all mods (recursively,
including their dependencies) in it.
Button "Save" saves the current settings to the world.mt file and
returns to the main menu. Button "Cancel" returns to main menu without
saving.
basic keyboard controls (if the proper widget has keyboard focus):
up/down: scroll through tree of mods
left/right: collaps/expand a modpack
space: enable/disable the selected mod
If USE_CURL is set, it also downloads a list from a remote server.
The url of this list is configurable in minetest.conf using the setting "serverlist_url"
The local list of favorite servers is saved in client/serverlist/filename
filename is also configureable using the setting "serverlist_file"
liquid_kind was declared as an u8, but used to hold a content_t value, which is delcared to be a u16.
changing this fixes (at least for me) the problem reported in bug #414.
Previously, when a block was activated, on_timer callbacks where
called with the relative position of the node inside the block,
instead of the absolute position of the node.
Since commit 5a13c49492 when I'm in a new area of the world that hasn't
yet been generated the debug log gets flooded with the following error:
Map::setNode(): Not allowing to place CONTENT_IGNORE while trying to
replace "default:dirt_with_grass" at (729,1,-219) (block (45,0,-14))
This commit fixes that.