183 Commits

Author SHA1 Message Date
Perttu Ahola
84355b3f5f Smooth day-night transitions 2012-12-02 18:02:45 +02:00
Matthew I
056d277f53 Add shutdown hook interface to Lua API
Scripts can call minetest.register_on_shutdown() to register a
shutdown hook.

Document that minetest.register_on_shutdown() callbacks may not be run

If the server crashes, it is unlikely that callbacks registered using
minetest.register_on_shutdown() will be called.
2012-11-30 19:26:51 +02:00
MirceaKitsune
60a331fe32 RealBadAngel's patch which allows the lua api to read pressed player keys. This should make it possible to change the player's animation based on what he is doing
Correct lua api version number

Always update animations and attachments after the entity is added to scene client side. Fixes animations not being applied in client initialization for some reason. Attachments should be re-tested now just to be safe.

Fix a segmentation fault caused by reaching materials that didn't exist in a loop for setting texture
2012-11-25 19:14:24 +02:00
MirceaKitsune
348ceb211f A bunch of fixes
No longer hide players who are dead. With models, a death animation should be used instead

Some changes requested by celeron55

Rename a lot of things in the code, and use better lua api function names

Minor code corrections

Bump protocol version up, since the models / animations / attachments code creates new client<->server messages
2012-11-25 19:14:24 +02:00
MirceaKitsune
987a4e06dc Update attachments at the ending of the addToScene function for parents. And with this... *drum roll* Client-side attachments are at last functional and stick visibly.
Fix the last segmentation fault (apparently). So far attachments seem to be fully functional, although removing the parent causes children to go to origin 0,0,0 and possibly still cause such a fault (though this should already be addressed)

Fix a bug in falling code where entities get stuck

Also check if the parent has been removed server-side, and detach the child if so. Fixes children going to origin 0,0,0 when their parent is removed.

Unset all attachment properties when permanently detaching (on both the client and server). Also store less data we don't need

Create a separate function for detaching, and also update lua api documentation

When a child is detached, update its position from the server to clients. This WILL cause it to get positioned slightly differently client side, as the server attachment system only copies parent origin and knows not about mesh / bone transformation. This prevents different clients seeing the object detached in different spots which is most correct

Update the position of attached players to clients. An attached player will see himself move, but this is currently VERY ugly and laggy as it is done by the server (it probably must stay this way too)

Use a different approach for locally attached players. This allows for smooth positio transitions to work, as well at the player turning around freely. Still buggy however
2012-11-25 19:14:24 +02:00
MirceaKitsune
e80d34b44a Complete the attachment framework.
The child ID can now be checked against the parent ID in content_cao.cpp so the parent can be detected. Actual attachment code to come

Divide attachment system between server attachments and client attachments, neither coded right now. As explained in the code comment:

// Attachments need to be handled on both the server and client.
// If we attach only on the server, models (which are client-side)
// can't be read so we don't know the origin and orientation of bones.
// If we attach only on the client, the real position of attachments is
// not updated and you can't click them for example.
2012-11-25 18:14:15 +02:00
MirceaKitsune
3eaa0a2ace Framework for the attachment system, new object property which allows changing the color and alpha of mesh materials
New object property which allows changing the color and alpha of mesh materials. Due to the current lighting systems it doesn't work yet, but the full implementation is there

Framework for the attachment system, with no actual functionality yet

Send bone and player object to the setAttachment function in content_sao.cpp, but we need a way to translate it there and send it to the client

I will also want position and rotation offsets to be possible to apply to attachments

Network object ID from server to client. This will be used to identify the parent client-side and know what to attach to
2012-11-25 18:14:15 +02:00
MirceaKitsune
8548860fec Get the new animation framework properly working
Store start and end frames as v2f

Also move bone animations to their own function instead of object properties
2012-11-25 18:14:15 +02:00
MirceaKitsune
664c7ff455 Joint positioning and rotation code, and fix a problem related to their lua API
Attempt to move the animation system to a more correct implementation, rather than using object properties. Incomplete and breaks functionality
2012-11-25 18:14:15 +02:00
MirceaKitsune
4e83886061 Allow the LUA API to set animations to meshes as well as the animation speed. Also update animations only when needed.
Support for animation blending, though for some reason it doesn't work.

Don't enable animation transitions by default for many reaosons

Object property to store individual bone positions. LUA can specify a bone name followed by a bone position. No functionality yet. Bone rotation to be added in the following commit

Same system for bone rotation, plus a few other things I missed
2012-11-25 18:14:15 +02:00
MirceaKitsune
0d72b91382 Add a subfolder for models and transfer models from server to client
(obj, md2 and md3 are currently allowed)

Get rid of the texture string and use the existing textures array. Segmented meshes have multiple materials, and this will allow us to texture each. Do not switch to this commit yet!

If a texture string is left empty in LUA, don't modify that material. Useful so a script can change specific textures without affecting others
2012-11-25 18:14:15 +02:00
MirceaKitsune
4576c01cb0 Properly read the mesh from LUA.
Players can now be set to meshes using the following test script:

function switch_player_visual()
		prop = {
			mesh="player.obj",
			texture="player.png",
			visual="mesh",
		}
	for _, obj in pairs(minetest.get_connected_players()) do
		obj:set_properties(prop)
	end
	minetest.after(1.0, switch_player_visual)
end
minetest.after(1.0, switch_player_visual)
2012-11-25 18:14:14 +02:00
PilzAdam
b7200968fb Merge pull request #243 from xyzz/liquid_renewable
Add liquid_renewable property, allow non-renewable liquids.
2012-11-03 12:34:44 -07:00
Perttu Ahola
06850bceac Add dtime_s to entity activation 2012-09-09 17:12:29 +03:00
Perttu Ahola
61ea35ecb9 Fix ObjectRef:punch() 2012-09-09 12:05:38 +03:00
Ilya Zhuravlev
0933c02893 Add liquid_renewable property. 2012-09-07 20:48:12 +04:00
Ilya Zhuravlev
d7cc000a0c Add InventoryList width property & allow custom crafting grids. 2012-09-01 10:01:41 +03:00
Matthew I
72434bfb6a Add ban management routines to Lua API
Those functions are:
 * minetest.get_ban_list()
 * minetest.get_ban_description(ip_or_name)
 * minetest.ban_player(name)
 * minetest.unban_player_or_ip(ip_or_name)
2012-08-12 16:45:58 +03:00
Matthew I
cf6e79e220 Extend Lua API in order to implement chat commands
minetest.get_server_status()
minetest.request_shutdown()
EnvRef:clear_objects()
2012-08-12 16:44:55 +03:00
Matthew I
32b064eb21 Allow digging of unknown nodes
This allows the removal of nodes with unknown types.
get_item_callback() (C++) would fail if a node has an unknown type.  Now it
will try using the callback from minetest.nodedef_default in this case.
Also, minetest.node_dig() (Lua) was altered to always allow digging when
the node definition is empty (i.e. unknown node).
2012-08-12 16:04:18 +03:00
Perttu Ahola
610559f194 Handle max<min in LuaPseudoRandom::l_next() 2012-07-27 19:03:15 +03:00
Perttu Ahola
3303470fbc Experimental-ish rollback functionality 2012-07-27 02:27:18 +03:00
Perttu Ahola
a1d678f021 Improve inventory callbacks a bit 2012-07-25 15:39:39 +03:00
Perttu Ahola
4183fdbe70 Remove special handling of creative mode 2012-07-25 14:07:45 +03:00
Perttu Ahola
1b2ae34ed4 Detached inventory callbacks and reworked node metadata callbacks 2012-07-25 02:36:54 +03:00
Perttu Ahola
c2cb98c1a6 Detached inventories 2012-07-24 20:57:17 +03:00
darkrose
e5bebe42e9 Implement node timers 2012-07-23 08:18:37 +03:00
Perttu Ahola
243d9fb7d6 minetest.register_on_player_receive_fields() 2012-07-22 17:40:48 +03:00
Matthew I
b320cc2d74 Add minetest.get_modnames() to Lua API 2012-07-22 13:36:03 +03:00
Perttu Ahola
4da1705e81 Fix typo in scriptapi.cpp in minetest.get_craft_recipe() 2012-07-21 15:32:46 +03:00
darkrose
8e9ae4a20f Check for table type when reading groups from Lua 2012-07-21 02:35:45 +03:00
darkrose
b556ef87cb Add minetest.get_craft_recipe() 2012-07-21 02:33:22 +03:00
Perttu Ahola
7564aae27e Allow defining player's inventory form in Lua 2012-07-19 14:09:16 +03:00
Perttu Ahola
13c106cfd1 Fix /builtin/misc.lua:47: attempt to call method 'is_player' (a nil value) 2012-06-19 00:50:07 +03:00
Kahrl
05d8ea0ebb Custom boxy nodes (stairs, slabs) and collision changes 2012-06-17 16:34:39 +03:00
Perttu Ahola
ec937ecdd8 Properly and efficiently use split utility headers 2012-06-17 02:40:36 +03:00
Perttu Ahola
bb0e71078d Fix "Node placement prediction failed for (places __default) - Name not known" 2012-06-16 22:45:35 +03:00
Perttu Ahola
92b131d6d1 Node texture animation 2012-06-16 16:47:28 +03:00
Perttu Ahola
3946557a18 Node placement client-side prediction 2012-06-10 12:46:48 +03:00
Kahrl
d8c8d223ac Allow replacements in cooking and fuel recipes 2012-06-06 00:22:34 +03:00
Perttu Ahola
2068ff4505 Add after_destruct and cache the existence of on_construct, on_destruct and after_destruct for quick skipping when a node does not have them 2012-06-05 23:51:37 +03:00
Perttu Ahola
d27ed7becb place_node, dig_node and punch_node; an in-game tester tool; remove old code 2012-06-05 23:10:07 +03:00
Perttu Ahola
e70b6545b1 Switch the license to be LGPLv2/later, with small parts still remaining as GPLv2/later, by agreement of major contributors 2012-06-05 18:54:07 +03:00
darkrose
6272bf0521 Add InvRef:is_empty(listname) and make chests/furnaces not diggable if not empty in minimal game 2012-06-03 22:31:02 +03:00
Perttu Ahola
2b6e1d9378 Add ObjRef:is_player() and modify ObjRef:get_player_name() to always return a string to aid better inter-object compatibility of code that assumes objects to be players 2012-06-03 22:31:01 +03:00
Perttu Ahola
7a4ddfed3a minetest.get_craft_result 2012-06-03 22:31:01 +03:00
Perttu Ahola
be0c9426b8 NodeMetaRef:{to,from}_table and lua_api.txt additions 2012-06-03 22:31:01 +03:00
Perttu Ahola
242091e336 on_metadata_inventory_{move,offer,take} 2012-06-03 22:31:01 +03:00
Perttu Ahola
42c7767361 Implement sign using form field protocol 2012-06-03 22:31:01 +03:00
Perttu Ahola
51e31bf486 Add node on_construct, on_destruct callbacks and update lua_api.txt 2012-06-03 22:31:00 +03:00