Adds several new ways that the plantlike drawtype mesh can be changed.
This requires paramtype2 = "meshoptions" to be set in the node
definition. The drawtype for these nodes should be "plantlike".
These modifications are all done using param2. This field is now
a complex bitfield that allows some or more of the combinations to
be chosen, and the mesh draw code will choose the options based as
neeeded for each plantlike node.
bit layout:
bits 0, 1 and 2 (values 0x1 through 0x7) are for choosing the plant
mesh shape:
0 - ordinary plantlike plant ("x" shaped)
1 - ordinary plant, but rotated 45 degrees ("+" shaped)
2 - a plant with 3 faces ("*" shaped)
3 - a plant with 4 faces ("#" shaped)
4 - a plant with 4 faces ("#" shaped, leaning outwards)
5 through 7 are unused and reserved for future mesh shapes.
bit 3 (0x8) causes the plant to be randomly offset in the x,z
plane. The plant should fall within the 1x1x1 nodebox if regularly
sized.
bit 4 (0x10) causes the plant mesh to grow by sqrt(2), and will cause
the plant mesh to fill out 1x1x1, and appear slightly larger. Texture
makers will want to make their plant texture 23x16 pixels to have the
best visual fit in 1x1x1 size.
bit 5 (0x20) causes each face of the plant to have a slight negative
Y offset in position, descending up to 0.125 downwards into the node
below. Because this is per face, this causes the plant model to be
less symmetric.
bit 6 (0x40) through bit 7 (0x80) are unused and reserved for
future use.
!(https://youtu.be/qWuI664krsI)
Disable the ability to connect to old servers by default to
improve password security.
If people still want to connect to old (0.4.12 and earlier)
servers, they can flip the send_pre_v25_init setting.
Add the ability to detect if we've tried to connect
to a server which only supports the pre v25 init protocol,
and show an apropriate error message. Most times the error
will already be catched at the serverlist level, the
detection mechanism only acts as last resort, because the
"Connection timed out" error message that would be shown
otherwise would be very confusing.
Automatic "fixing" of this condition is not desired,
as it would allow for downgrade attacks.
As already 161 of the 167 servers on the serverlist
support the new srp based auth protocol (> 96%),
the breakage should be minimal.
Follow up of commit
af30183124 "Add option to not send pre v25 init packet"
Also change the pessimistic assumption of masterlist
server versions to optimistic, in order to avoid buggy
behaviour (favourites not in the serverlist would be
denied to connect to, etc).
Fixes#4446: a syntax error that happens if something else (such as
<iomanip> or <locale> in certain libstdc++ versions) includes
<libintl.h> later, which contains a function declaration for gettext
that gets mangled by the macro.
See the added comment in gettext.h and the discussion in #4446/#4452
for details.
Avoids unreachable code linter warning by moving generation code
(of minetest.conf.example and settings_translation_file.cpp)
out of dlg_settings_advanced.
Due to passing the settings, also it avoids reading the settings file twice.
Instead of activating the code by changing the active if-clauses,
its activation is now done by uncommenting the loadfile() statement.
If compiling according to a C++ version before C++11, then define
std::to_string ourselves.
Add a to_wstring version as well
As std::to_string() for floating point types uses %.6f as floating
point format converter, instead of %G, it needs special care.
To preserve ftos() behavior (which is expected to use the %G format
converter), it no longer uses to_string().
If a mod is disabled, or upgraded without sufficient backward compatibility,
then entities it has put into the world become unknown, and continue moving
around, but are completely unrecognisable.
This change allows the player to see their type, and therefore which mod is
or was responsible.
previously function used tonumber which returned float
this caused errors in large numbers and resulted in
obj-def-handlers being invalid when retrived from lua tables in c
* Move included json code to jsoncpp subdirectory
This is needed to avoid having to specify the minetest src directory
as a system include when fixing the json includes.
* Fix json includes
They used "", so that the compiler searches the project's directory
first. The result was that when compiling with a system jsoncpp,
the project's own version of json.h was still included, instead of
the system version.
The includes now use <>, so a system location, or one specified with
'-Ilocation' is searched only.
* Fix for jsoncpp deprecated function warning
When compiling with a newer version of jsoncpp (and
ENABLE_SYSTEM_JSONCPP=true), jsoncpp emits a warning
about a deprecated function that minetest uses.
This fallback to std::map & std::set for older compilers
Use UNORDERED_SET as an example in decoration and ore biome sets
Use UNORDERED_MAP as an example in nameidmapping
Fix height check comparison from '>=' to '>'.
Fix getHeight() for schematic decorations to account for
'deco place center y' flag and for how normal placement
sinks schematic 1 node into the ground.
Jungletrees were not being placed at y = 46, y = 47 despite
having an acceptable 16 nodes of height above ground surface.
When the 'flat' and 'trees' flags were moved into mgv6_spflags they
were left in mg_flags in an attempt to support old mgv6 worlds. However
their appearence in mg_flags causes confusion, also, later, old-world
support was found to be broken for mgv6 worlds with 'notrees'.
This commit cleans up the mess and comes a month after a thread warning
of the change, and explaining the required action, was posted in the
news subforum. Only old mgv6 worlds with 'flat' or 'notrees' are
affected, a small minority of worlds, the required action being
correctly setting these flags in mgv6_spflags.
Disable a section of the 'map settings manager' unit test which is to
be changed as it is causing problems for pull requests.
l_request_insecure_environment didn't ignore all whitespace in the
secure.trusted_mods config option.
Replaces std::remove with std::remove_if and the isspace function.
* Update README.txt
As of Ubuntu 16.10, libpng12-dev is replaced with libpng12-0, since libpng12-0 is available in 16.04 repositories, I think that needed to be changed.
Also I changed 'git-core' to 'git' for fedora users, keep it consistent with the ubuntu/debian instructions.
* Update README.txt
Instead of trying to manually parse the output of 'git show' which can be different across different git configurations, properly use the 'git rev-parse' command that is intended for this purpose.
This little update is due to a packaging problem when uploading on play store. They don't permit to re upload an APK with same version code.
This case was a fail on openssl packaged version which was old and rejected by Google but they don't remove the APK then i should increase the version code to permit having it on play store
core.check_player_privs accepts as first argument a name or player object, but just tested for a string.
This caused crashes inside builtin, when being passed any unexpected types.
This provides a better (duck-typing like) test, better error reporting.
Use the setting "profiler.load" to enable profiling.
Other settings can be found in settingtypes.txt.
* /profiler print [filter] - report statistics to in-game console
* /profiler dump [filter] - report statistics to STDOUT and debug.txt
* /profiler save [format [filter]] - saves statistics to a file in your worldpath
* txt (default) - same treetable format as used by the dump and print commands
* csv - ready for spreadsheet import
* json - useful for adhoc D3 visualizations
* json_pretty - line wrapped and intended json for humans
* lua - serialized lua table of the profile-data, for adhoc scripts
* /profiler reset - reset all gathered profile data.
This can be helpful to discard of any startup measurements that often spike during loading or to get more useful min-values.
[filter] allows limiting the output of the data via substring/pattern matching against the modname.
Note: Serialized data structures might be subject to change with changed or added measurements.
csv might be the most stable, due to flat structure.
Changes to the previous version include:
* Updated and extended API monitoring
* Correct calculation of average (mean) values (undistorted by idleness)
* Reduce instrumentation overhead.
* Fix crashes related to missing parameters for the future and occasional DIV/0's.
* Prevent issues caused by timetravel (overflow, timejump, NTP corrections)
* Prevent modname clashes with internal names.
* Measure each instrumentation individually and label based on registration order.
* Labeling of ABM's and LBM's for easier classification.
Giving several ABM's or LBM's the same label will treat them as one.
Missing labels will be autogenerated based on name or registration order.
* Configurable instrumentation and reporting. Skip e.g. builtin if you don't need it.
* Profile the profiler to measure instrumentation overhead.