Commit Graph

4401 Commits

Author SHA1 Message Date
sfan5
14aa990cdd Sneak: Fix various problems with sneaking
Sneaking won't actually hover you in the air, releasing shift guarantees not
falling down (same as in MC).
Sneak-jump no longer goes higher than a normal jump (^ was required for this).
Sneaking no longer avoids fall damage.
You can sneak on partial nodes (slabs, sideways slabs) correctly.
Sneaking doesn't "go out" as far anymore (0.29 instead of 0.4).
Can't jump when sneaking out as far as possible (breaks the sneak ladder).
2017-03-16 02:52:59 +00:00
Lars Hofhansl
454483f266 Use true distance for block priority. 2017-03-15 20:30:34 +01:00
red-001
88df9fb5b6 Add get_wielded_item 2017-03-13 23:56:05 +01:00
nerzhul
44ca9c9cb2 [CSM] Add enable_client_modding param (default: false) 2017-03-13 23:56:05 +01:00
red-001
0727bb3ddd [CSM] Add on_punchnode callback 2017-03-13 23:56:05 +01:00
red-001
37df9cb7d7 [CSM] Add get_node and get_node_or_nil 2017-03-13 23:56:05 +01:00
red-001
073f5cf03d [CSM] Add on_dignode callback (#5140) 2017-03-13 23:56:05 +01:00
Loic Blot
ba66fce833 [CSM] storage + fixes 2017-03-13 23:56:05 +01:00
red-001
a50d07d39a [CSM] Improve security for client-sided mods (#5100) 2017-03-13 23:56:05 +01:00
Loïc Blot
92b45b2a18 [CSM] implement client side mod loading (#5123)
* client side mods are located in clientmods/
* move builtin/preview.lua to clientmods/preview/init.lua as a preview mod
* refactor ModConfiguration class to work properly with client and server using child objects
* move some Server constructor mod load code to ModConfiguration to reduce code duplication between client and server
* remove mods.{cpp,h} unused functions
* use UNORDERED_SET instead of std::set in some modspec storages
2017-03-13 23:56:05 +01:00
red-001
c42c53fccf [CSM] Add local formspecs. (#5094) 2017-03-13 23:56:05 +01:00
Loïc Blot
2c19d51409 [CSM] sound_play & sound_stop support + client_lua_api doc (#5096)
* squashed: CSM: Implement register_globalstep
  * Re-use fatal error mechanism from server to disconnect client on CSM error
  * Little client functions cleanups

* squashed: CSM: add core.after function
  * core.after is shared code between client & server
  * ModApiUtil get_us_time feature enabled for client
2017-03-13 23:56:05 +01:00
red-001
d7bc346981 [CSM] Add client-sided chat commands (#5092) 2017-03-13 23:56:05 +01:00
Loïc Blot
9978f5af82 [CSM] Add on_death, on_hp_modification & oh_damage_taken callbacks (#5093)
* Add on_death callback
* Add on_hp_modification & on_damage_taken callbacks
* move preview code to preview.lua
2017-03-13 23:56:05 +01:00
red-001
cb3a61f8db [CSM] Add method that display chat to client-sided lua. (#5089) (#5091)
* squashed: [Client-sided scripting] Don't register functions that don't work. (#5091)
2017-03-13 23:56:05 +01:00
Loic Blot
2efae3ffd7 [CSM] Client side modding
* rename GameScripting to ServerScripting
* Make getBuiltinLuaPath static serverside
* Add on_shutdown callback
* Add on_receiving_chat_message & on_sending_chat_message callbacks
* ScriptApiBase: use IGameDef instead of Server
  This permits to share common attribute between client & server
* Enable mod security in client side modding without conditions
2017-03-13 23:56:05 +01:00
kilbith
c9492b4d37 GUI: Allow texture packs to customize the progress bar (#5368) 2017-03-13 08:07:14 +01:00
Lars Hofhansl
ff80696947 Enable server side occlusion culling by default. 2017-03-11 18:11:19 -08:00
Lars Hofhansl
ba4b704ebf Allow server side occlusion culling. 2017-03-11 18:11:19 -08:00
Auke Kok
6738c7e9a3 Do not increase breath if at full breath.
Prevents the server from sending TOCLIENT_BREATH packets
every 0.5seconds, if there is no reason to.
2017-03-11 17:00:40 -08:00
sfan5
f83d8687a7 database-redis: Support password authentication 2017-03-11 21:39:32 +01:00
paramat
d34f149bdc Climb speed: Increase default setting from 2 to 3 2017-03-11 02:17:16 +00:00
number Zero
25a24c0cdf Minimap: Optimise 2017-03-11 02:15:21 +00:00
Dániel Juhász
ab371cc934 Light calculation: New bulk node lighting code
This commit introduces a new bulk node lighting algorithm to minimize
lighting bugs during l-system tree generation, schematic placement and
non-mapgen-object lua voxelmanip light calculation.

If the block above the changed area is not loaded, it gets loaded to avoid
lighting bugs.
Light is updated as soon as write_to_map is called on a voxel manipulator,
therefore update_map does nothing.
2017-03-11 02:06:18 +00:00
kilbith
2baa191a64 GUI: Convert loading screen's progress bar to image (#5362) 2017-03-10 13:26:24 +01:00
paramat
e10e5fd16c Dungeons: Use 'block' instead of 'brick' for nodebox stairs
Affects only sandstone dungeons. Nodebox stairs made from
'sandstone_block' look better because every step is undivided.
2017-03-05 09:47:03 +00:00
Auke Kok
f1ab42fdff Font: attempt fallback font, abort if no fonts found.
If you happen to have a font_path setting that is incorrect,
minetest will just attempt to start the gui without a valid
font which leads to a segfault later on.

We can attempt to load the fallback font path fairly easy,
but if that fails we should give up with a proper error message
and not a weird segfault later. This forces an abort() if
the fallback fails as well, and prints a useful error
message to the console.
2017-03-05 09:46:52 +00:00
adelcoding1
6de83a2756 FormSpec: Add position and anchor elements (#5284) 2017-03-04 10:46:55 +01:00
paramat
a901a56859 Dungeongen: Add and improve parameters
Add:
Bool for 'only_in_ground'.
Min and max corridor length.
Min and max room size with X, Y, Z components.
Min and max large room size with X, Y, Z components.

'only_in_ground = false' allows core mapgens to create structures
in air and water using dungeongen.
Corridor length parameters replace a fixed random range.
Room size parameters replace the former system where one parameter
'roomsize' was added to fixed random ranges.

All parameters are set for no change to current dungeon behaviour.

Remove some now-redundant and long-unused code.
2017-02-26 06:46:14 +00:00
rubenwardy
2d1fca51e9 Fix wrong meta key in item meta on ItemStack construction 2017-02-22 10:14:12 -08:00
Dániel Juhász
00123ee04d Fixes for colorwallmounted and colorfacedir nodes
Correct node placement prediction for attached colorwallmounted nodes.
Correct placement direction for colorfacedir and colorwallmounted nodes.
Correct detatch mechanism for attached colorwallmounted nodes.
2017-02-18 22:47:24 +00:00
paramat
111e7e1cc8 Voxelmanip: Do not emerge or blit to blocks over map gen limit
Placing a structure that extends into mapblocks that extend past
map_gen_limit causes a crash. For example a sapling growing at the
world edge which adds leaves beyond the edge, or placing a structure
using the lua voxelmanip, or placing a schematic or l-system tree.

Do not run the 'load_if_inexistent' block of code if the mapblock
is over limit, this also marks the mapblock with the flag
VMANIP_BLOCK_DATA_INEXIST which later prevents blitting back those
mapblocks.

This fix therefore uses existing functionality by having the same
effect as the 'load_if_inexistent' bool being false.
2017-02-18 22:47:24 +00:00
red-001
d988f9b769 Use the ARRLEN macro in more places and remove an unused macro. (#5260) 2017-02-18 15:24:49 +01:00
Auke Kok
d0ce27edd8 Revert part of eb49009d023e6e3b5d59a97b8fb5fed5eee83296 (#5230)
This reverts the removal of Droid Sans as fallback font. The
license for this font used to be GPL2. I've updated the font
files to Liberation 2.00, which are SIL, and do not require
us to ship source code.

I've attempted to fix all the attribution and license strings,
and used the strings as provided by redhat for attribution
to make sure they're correct.

Last, I've removed a bunch of executable bits on files that do
not need them.

Fixes #5231
2017-02-16 20:18:22 -08:00
paramat
9aabfd5188 Cavegen: Place correct biome surface in tunnel entrances
Previously in tunnel entrance floors only a single biome 'top' node was
placed and 'filler' nodes were missing.

Place 'top' and 'filler' nodes in tunnel entrance floors with depths
defined by the biome.
In tunnel entrances under rivers 'riverbed' nodes are placed to the
biome-defined depth.
2017-02-16 22:25:14 +00:00
paramat
3955f51253 Objectpos over limit: Avoid crash caused by sector over limit
Reduce the object limit by mapblock size, to avoid objects being
added just inside the map generation limit but in a block and sector
that extend beyond the map generation limit.

Change notification of 'objectpos over limit' from red in-chat ERROR
to in-terminal only WARNING, since this will happen often using mob
mods near the world's edge.
2017-02-16 22:25:07 +00:00
red-001
2dcbc01904 Fix a small regression caused by e2ad76f. 2017-02-16 12:59:19 +01:00
sfan5
a5e4273575 Fix >5 year old PlayerSAO deletion bug
force_delete=true is usually set at shutdown in order to
also remove PlayerSAOs, however when too many objects
per block are detected force_delete is also set to true.
This was intended only for the current loop iteration but
obviously persisted to the next iterations thereby
deleting all other remaining SAOs.
2017-02-15 17:36:47 +01:00
Auke Kok
eb49009d02 FreeType: address font license issues (#5230)
It appears we were shipping font files without license text, and I
had my doubts about the bitmap fonts being usable directly.

This replaces existing TTF fonts with Apache-2.0 licensed fonts from
chome core (Cousine, Arimo, Tinos). Include the full license file
for all three fonts.

The Lucida Sans font bitmap is removed entirely for non-freetype
builds. There is therefore only mono fonts for non-freetype builds.
2017-02-14 01:08:17 -08:00
Dániel Juhász
f17c9c45dc Lighting: Update lighting at block loading
This commit updates mapblocks' light if necessary when they are loaded.
This removes ghost lighting.
2017-02-13 00:05:49 +00:00
paramat
984e063374 Footsteps: Fix offset footstep and shallow water sound bugs
Fix footstep sounds coming from nodes to either side when walking on a
1 node wide row of nodebox slabs such as default:snow.
Fix sand footsteps when swimming in 1 node deep water.

Use a new function 'getFootstepNodePos()' instead of 'getStandingNodePos()'
to avoid using a horizontally-offset 'sneak node' for sounds.

Sound is selected from the node BS * 0.05 below the player's feet, so
that 1/16th slabs will play the slab sound but 1/32nd slabs will not.
If the player is not 'touching ground' the node detection position is
changed to BS * 0.5 below to preserve footstep sounds when landing after
a jump or fall.
2017-02-12 01:52:12 +00:00
paramat
1de08e1961 Plantlike: Fix visual_scale being applied squared
This re-applies 2 commits that were reverted.

Visual_scale was applied twice to plantlike by accident sometime between
2011 and 2013, squaring the requested scale value. Visual_scale is
correctly applied once in it's other uses in signlike and torchlike.

Two lines of code are removed, they also had no effect for the vast
majority of nodes with the default visual_scale of 1.0.
The texture continues to have it's base at ground level.

Send sqrt(visual_scale) to old clients.

Keep compatibility with protocol < 30 clients now that visual_scale
is no longer applied twice to plantlike drawtype and mods are being
updated to a new value.
2017-02-10 17:59:31 +00:00
Craig Robbins
7760948b7c Revert "Plantlike: Fix visual_scale being applied squared (#5115)"
This reverts commit 953cbb3b15997a0e7c7c32af2365cb5046a9e476.
2017-02-10 22:21:49 +10:00
Craig Robbins
7bd3e2bceb Revert "Plantlike visual scale: Send sqrt(visual_scale) to old clients"
This reverts commit cdc538e0a242167cd7031d40670d2d4464b87f2c.
2017-02-10 22:21:23 +10:00
Auke Kok
5707b739f3 Change default nodetimer_interval to 0.2s. (#5193)
We want to reduce the chance that we get lots and lots of node
timers all happening once a second, because we're better off doing
small bits of work as they are available.

Reducing this to 0.2 seconds will greatly reduce the total amount
of nodetimers that elapse at the same instance, while not effecting
total work load. This results in a far better chance of the server
keeping up with work loads.
2017-02-09 08:00:37 +01:00
Lars Hofhansl
3ad68c052b Perform mesh animation only once per frame. 2017-02-09 00:10:41 +00:00
paramat
a5ee7139a5 OpenAL sound: Use a simpler distance model
In createPlayingSoundAt(), AL_ROLLOFF_FACTOR is not set, so it has
the default value of 1.0, this makes the equation of the currently
used AL_EXPONENT_DISTANCE distance model identical to the equation
of the simpler AL_INVERSE_DISTANCE distance model.

Using AL_INVERSE_DISTANCE means an exponent is not processed,
exponents are quite intensive to process.
There is no change in sound attenuation behaviour.

The commented-out AL_ROLLOFF_FACTOR value is removed as it would
now have a different effect if used.
2017-02-09 00:10:35 +00:00
red-001
e2ad76f910 No longer auto-generate a 'guest####' player name when name is empty
You can't join most servers with a 'guest####' player name anyway so
it's only logical to remove them.
2017-02-09 00:05:19 +00:00
Loïc Blot
ef6feca501 Add ModMetadata API (#5131)
* mod can create a ModMetadata object where store its values and retrieve it.
* Modmetadata object can only be fetched at mod loading
* Save when modified using same time as map interval or at server stop
* add helper function to get mod storage path
* ModMetadata has exactly same calls than all every other Metadata
2017-02-08 00:15:55 +01:00
rubenwardy
0680c47d6c Fix incompatibility of ItemStack.to_table() introduced by stack meta 2017-02-07 21:18:17 +00:00