Compare commits

...

166 Commits

Author SHA1 Message Date
sapier
c17133d80a added player link support 2012-01-15 22:41:10 +01:00
sapier
14a64000ea add support for entity linking 2012-01-15 22:22:07 +01:00
sapier
e3122ae727 fix object message type sent 2012-01-15 21:44:51 +01:00
sapier
65ac1d46b3 split content_sao.cpp and content_sao.h to multiple files 2012-01-15 21:35:25 +01:00
sapier
dd73852ce4 split content_cao.cpp file into multiple separate files 2012-01-15 20:55:30 +01:00
sapier
3454e67793 added new entity style irregular_cube 2012-01-15 20:30:26 +01:00
sapier
0c78767754 fixed invalid comment for plant mesh declaration 2012-01-15 20:28:39 +01:00
sapier
f0679969b2 added plantlike luaentity 2012-01-15 20:22:41 +01:00
sapier
285f5a0259 added lua command get_nodes_inside_radius 2012-01-15 20:09:55 +01:00
sapier
71186974fa fixed missing removal in static fix 2012-01-15 20:06:56 +01:00
sapier
525bc8855f added derived object to add linkable object support 2012-01-15 19:55:58 +01:00
sapier
de166e75a1 sao prototype global variables no longer depend on link order to be correctly added to factory 2012-01-15 19:43:31 +01:00
Perttu Ahola
569156b013 Call this 0.4.dev-20120106-1 2012-01-06 20:41:52 +02:00
Perttu Ahola
6d4bc012f0 Fix key change menu a bit 2012-01-06 19:50:40 +02:00
Perttu Ahola
2f5c28aaf1 ObjectRef:setpos() to move player properly (a bit shortcuttish implementation) 2012-01-06 19:17:44 +02:00
Perttu Ahola
4f2c1e36a1 Implement minetest.register_on_dieplayer() 2012-01-06 00:12:33 +02:00
Perttu Ahola
bc743ca7ce Add missing checks to texture caching 2012-01-04 00:37:46 +02:00
Perttu Ahola
f9d7e399b2 Limit range of ABM timer initial value randomization 2012-01-03 13:49:47 +02:00
Perttu Ahola
3e6f824e6c Use free rather than delete for malloc'd memory 2012-01-02 21:42:33 +02:00
Perttu Ahola
6286c555d4 Initialize ABM timer to random value to spread processing 2012-01-02 21:06:38 +02:00
Perttu Ahola
4630281318 Fix ABM trigger chance being often way too high 2012-01-02 20:26:33 +02:00
Perttu Ahola
cd0019acd2 Fix server sending stuff before textures have been sent 2012-01-02 17:44:00 +02:00
Perttu Ahola
e82a76e438 Mark ObjectRef::get_entity_name() deprecated 2012-01-02 17:33:03 +02:00
Perttu Ahola
ab57fbe4ca Add name field to registered entities 2012-01-02 16:26:40 +02:00
Perttu Ahola
56f55ab1af Add ObjectRef:getvelocity(), ObjectRef:setyaw() and ObjectRef:getyaw() 2012-01-02 16:19:52 +02:00
Perttu Ahola
2445cbbbdc Add ObjectRef:get_luaentity() 2012-01-02 16:08:59 +02:00
Perttu Ahola
48131bf988 Call this 0.4.dev-20120102-1 2012-01-02 13:51:43 +02:00
Perttu Ahola
2b9596fe9b Make text area in message dialog a bit larger 2012-01-02 13:34:24 +02:00
Perttu Ahola
0e1f448b61 Texture cache on client (mostly made by sapier) (breaks network compatibility) 2012-01-02 13:31:50 +02:00
Perttu Ahola
ff82b95800 ObjectRef:get_entity_name() and fixing of comments in default/init.lua 2012-01-02 13:12:56 +02:00
Perttu Ahola
49b7055cb3 Make add_entity return a reference to added entity (or nil) 2012-01-02 12:48:25 +02:00
Perttu Ahola
cb88f7b6d4 Clean up InvRef documentation in default/init.lua a bit 2012-01-02 03:18:23 +02:00
Perttu Ahola
9425fb8192 Improve mini Lua reference 2012-01-02 02:59:14 +02:00
Perttu Ahola
e48ccd7943 Add ObjectRef:get_inventory() and add stuff to documentation comments 2012-01-02 02:59:14 +02:00
Perttu Ahola
6be5441176 Working implementation of experimental:luafurnace 2012-01-02 02:59:14 +02:00
Perttu Ahola
d5ba7ebaf0 Random fixes to InvRef related stuff and a broken luafurnace 2012-01-02 02:59:14 +02:00
Perttu Ahola
270a482740 Add InvRef:get_list() and InvRef:set_list() and fix some things (untested) 2012-01-02 02:59:14 +02:00
Perttu Ahola
e0b4890794 Add minetest.get_inventory(location), untested 2012-01-02 02:57:14 +02:00
Perttu Ahola
247e8b6e5d A small robustness addition to ItemStack 2012-01-02 01:49:38 +02:00
Perttu Ahola
b760e2ba23 Rename InvStack to ItemStack 2012-01-02 01:49:38 +02:00
Perttu Ahola
103173fc9b Add InvRef and InvStack (currently untested and unusable) 2012-01-02 01:49:38 +02:00
Perttu Ahola
70ed371d0c Add default: to everything in default/init.lua (...hopefully doesn't break anything) 2012-01-01 21:31:47 +02:00
Perttu Ahola
81d3485109 Fix segfault when generating stuff on world boundaries 2012-01-01 21:01:55 +02:00
Perttu Ahola
7b7b68cdab Correctly pop stuff from the Lua stack in script_load() 2011-12-31 14:41:57 +02:00
Giuseppe Bilotta
135a65e200 Add virtual destructors to abstract classes
IRespawnInitiator and InventoryActions are abstract classes, but they
were missing a virtual destructor. Define it, even if it does nothing
and its absence most likely makes no difference other tha causing
warnings during compile.
2011-12-28 20:50:21 +02:00
Perttu Ahola
123529e5eb Fix mirrored sign texture 2011-12-28 18:29:33 +02:00
Perttu Ahola
e81989a0d8 Add wooden planks to creative inventory 2011-12-28 18:24:09 +02:00
Perttu Ahola
1c15f53318 Add EnvRef:get_objects_inside_radius(pos, radius) 2011-12-28 18:18:08 +02:00
Perttu Ahola
7937813c98 Add get_look_dir(), get_look_pitch() and get_look_yaw() for players 2011-12-28 17:34:07 +02:00
Perttu Ahola
ad4040d982 Fix minetest.env:get_player_by_name(nil) causing segfault and similar things 2011-12-28 16:25:29 +02:00
Perttu Ahola
69579306dd Extend load screen maximum time 2011-12-11 16:52:19 +02:00
Perttu Ahola
bd21f00f0a Add minetest.get_modpath(modname) 2011-12-11 16:49:40 +02:00
Perttu Ahola
012bcbcb48 add_luaentity->add_entity in mods/experimental 2011-12-11 01:52:37 +02:00
Perttu Ahola
e06d4555bf Call this 0.4.dev-20111209-1 2011-12-09 11:36:47 +02:00
Perttu Ahola
abd106bacb Enforce modname naming convention 2011-12-04 18:26:05 +02:00
Perttu Ahola
008de2fb8f Delete unknown LuaEntities when punched 2011-12-04 16:25:27 +02:00
Perttu Ahola
2e67fa3e48 Improve /spawnentity a bit 2011-12-04 16:20:54 +02:00
Perttu Ahola
ea36951bc4 Rename EnvRef:add_luaentity to EnvRef:add_entity 2011-12-04 16:08:37 +02:00
Perttu Ahola
09c48b60bd Add EnvRef:get_node_light(pos, timeofday) 2011-12-04 15:55:37 +02:00
Perttu Ahola
4cc117ddf6 Properly use time_from_last_punch for limiting PvP punch damage 2011-12-04 14:43:01 +02:00
Kahrl
ceaf8edade Use plain IBillboardSceneNode instead of MyBillboardSceneNode (improves
Irrlicht 1.8 compat); also find dungeon master's fireball texture
again; add /spawnentity command
2011-12-04 13:27:30 +02:00
Perttu Ahola
520200d597 Check symlinks with stat() to know if they are directories or not 2011-12-04 13:02:00 +02:00
Perttu Ahola
ab67985d21 Add support for unix filesystems which yield DT_UNKNOWN in dirent->d_type, falling back on stat(). 2011-12-04 12:49:58 +02:00
Perttu Ahola
bc5cc638fc Fix player not dying when beated to death by other player 2011-12-04 03:56:22 +02:00
Perttu Ahola
bff8be8b76 Fix getting two old-style minerals per digged node 2011-12-04 03:47:55 +02:00
Perttu Ahola
3e95b8a158 Determine light_propagates from paramtype 2011-12-04 03:45:02 +02:00
Perttu Ahola
e8539d4dae Add experimental TNT's old name as an alias 2011-12-04 02:16:23 +02:00
Perttu Ahola
1907b31da7 Add furnace to legacy aliases 2011-12-04 02:15:05 +02:00
Perttu Ahola
6145a135bd Make ToolItem and MaterialItem to convert names by aliases at creation time too (necessary for eg. crafting) 2011-12-04 02:12:45 +02:00
Perttu Ahola
97c3bc408b Fix fence name 2011-12-04 02:12:43 +02:00
Perttu Ahola
a00e908f52 Call this 0.4.dev-20111204-1 2011-12-04 01:24:47 +02:00
Perttu Ahola
4ad8891e05 Convert CraftItems directly to the name pointed by alias; necessary due to lua definition table 2011-12-04 01:16:22 +02:00
Perttu Ahola
2b8b2a4f30 Fix wrong checked node names in bucket 2011-12-04 01:15:09 +02:00
Perttu Ahola
5c24450e54 Add some aliases to bucket 2011-12-04 00:51:19 +02:00
Perttu Ahola
3a689a5c4f Don't initialize ItemCAOs with stick.png 2011-12-04 00:45:12 +02:00
Perttu Ahola
44e36d9aad Fix craftitem aliases 2011-12-04 00:44:29 +02:00
Perttu Ahola
62f7f72d20 Move default_treeprop.png to treeprop.png 2011-12-04 00:40:04 +02:00
Perttu Ahola
829c632511 Craftitem aliases 2011-12-04 00:39:20 +02:00
Perttu Ahola
8730dfb1f9 Fix log message in tooldef.cpp 2011-12-04 00:35:08 +02:00
Perttu Ahola
6764365994 Modify a commit in tooldef.cpp and nodedef.cpp 2011-12-04 00:33:05 +02:00
Perttu Ahola
8addbc9655 Tool aliases 2011-12-04 00:22:34 +02:00
Perttu Ahola
658d1a7235 Add serialization for node aliases to let client show inventory images correctly 2011-12-04 00:07:02 +02:00
Perttu Ahola
4b00d4d9d2 Node definition aliases 2011-12-03 23:50:31 +02:00
Perttu Ahola
6a5829788e Even more texture fixing 2011-12-03 22:33:22 +02:00
Perttu Ahola
03074cd23e Rename lump_of_* to *_lump 2011-12-03 22:31:12 +02:00
Perttu Ahola
2620e8eada Fix the previous commit 2011-12-03 21:31:39 +02:00
Perttu Ahola
9b5e676ffa Clean and fix mods/experimental/init.lua 2011-12-03 21:30:54 +02:00
Perttu Ahola
fd1ef11617 More texture naming fixes 2011-12-03 21:22:29 +02:00
Perttu Ahola
9fa567a6ce Rename textures of default mod 2011-12-03 21:10:02 +02:00
Perttu Ahola
fc6c00cbe1 Remove iron apple from default 2011-12-03 20:31:41 +02:00
Perttu Ahola
66f90a6101 Make global names in default mod use good naming convention and move backwards-compatibility definitions to mods/legacy 2011-12-03 20:25:21 +02:00
Perttu Ahola
1fe5c58d56 Rename cookresult_item to cookresult_itemstring 2011-12-03 18:45:04 +02:00
Perttu Ahola
f23616acaf add EnvRef:get_node_or_nil() 2011-12-03 18:37:50 +02:00
Perttu Ahola
7d37913ea4 Add ABM required neighbor check 2011-12-03 18:18:59 +02:00
Perttu Ahola
ac56053c74 Fix bucket texture names 2011-12-03 17:40:58 +02:00
Perttu Ahola
d566ffaa5f Allow digging unknown nodes 2011-12-03 13:56:39 +02:00
Perttu Ahola
d06d7cb9a4 Show infotext for unknown nodes 2011-12-03 13:51:16 +02:00
Perttu Ahola
e494b5d422 Show infotext for unknown items placed on ground 2011-12-03 13:46:19 +02:00
Perttu Ahola
fdf7b3bcdf Call this 0.4.dev-20111203-3 2011-12-03 12:02:45 +02:00
Perttu Ahola
871e6c0c73 On SIGINT in main menu, don't connect before shutting down 2011-12-03 12:02:27 +02:00
Kahrl
392485aa45 inventorycube: use all three specified textures; also moved mesh creation / modification functions to mesh.cpp; in lua, inventorycube is now called minetest.inventorycube 2011-12-03 11:47:37 +02:00
Kahrl
275a348b75 Do not broadcast an empty chat message when someone tries to log in with the wrong password 2011-12-03 11:47:19 +02:00
Kahrl
189689716c Notify player whose password is being changed 2011-12-03 11:47:19 +02:00
Perttu Ahola
3965d432ca Call this 0.4.dev-20111203-2 2011-12-03 11:45:26 +02:00
Perttu Ahola
746b960c0d Note about debug.txt in error message dialog when mod fails to load 2011-12-03 11:44:47 +02:00
Perttu Ahola
760416b81f Change naming convention to be modname:* instead of modname_* (sorry modders!) 2011-12-03 11:41:52 +02:00
Perttu Ahola
1c785c32ef Fix note about run-in-place mod search path in mods/default/init.lua 2011-12-03 04:00:42 +02:00
Perttu Ahola
cd608b1877 Set version 0.4.dev-20111203-1 2011-12-03 03:46:19 +02:00
Perttu Ahola
c6dd75ccfb Add usermods/ to mod search paths and print out the paths at server startup 2011-12-03 03:43:20 +02:00
Perttu Ahola
6b2023dc3e Properly handle mod name conflicts 2011-12-03 03:32:30 +02:00
Perttu Ahola
2f4a92d701 Better mod loading error handling 2011-12-03 03:23:14 +02:00
Perttu Ahola
324c544922 Add world/mods to mod search path 2011-12-03 02:55:54 +02:00
Perttu Ahola
fbbbcf97d8 Remove accidental stupid naming in craftitem example 2011-12-03 02:48:06 +02:00
Perttu Ahola
d96cd236f3 Enforced mod global naming convention and better error reporting 2011-12-03 02:45:55 +02:00
Perttu Ahola
581f950e10 Fix script error reporting a bit 2011-12-02 22:49:54 +02:00
Perttu Ahola
9344816bd6 Fix ActiveObject creation for fast player respawns 2011-12-02 17:30:22 +02:00
Perttu Ahola
67c21fc42f Fix sending of player hp (was sent all the time) 2011-12-02 17:19:42 +02:00
Perttu Ahola
c2d266efc6 Remove unnecessary debug output from mods/default/init.lua 2011-12-02 16:24:56 +02:00
Perttu Ahola
ec1859b095 Show bare hand when no item is selected 2011-12-02 15:20:42 +02:00
Perttu Ahola
bc00cdeb2c Set version to 0.4.dev-20111202-1 2011-12-02 13:00:42 +02:00
Perttu Ahola
3e6e35f383 Fix mod licensing and add a mention about sound licensing in README.txt 2011-12-02 12:58:46 +02:00
Perttu Ahola
b9e8e20c9c Script-defined creative inventory 2011-12-02 12:43:57 +02:00
Perttu Ahola
932988af46 Rename "build" privilege to "interact" (backwards-compatibly, of course) 2011-12-02 12:18:19 +02:00
Perttu Ahola
69bc9224db Rename "NodeItem"/"ToolItem"/"CraftItem" to "node"/"tool"/"craft" 2011-12-02 12:12:07 +02:00
Perttu Ahola
a17efe6e8f Remove obsolete createPickedUpItem() 2011-12-02 11:54:23 +02:00
Perttu Ahola
e8b0722137 Add time_from_last_punch to Lua API 2011-12-02 11:51:41 +02:00
Perttu Ahola
ed128fff26 Add a note about mods being under CC BY-SA 3.0 like textures 2011-12-02 11:40:04 +02:00
Mark Holmquist
a465fd5b99 + middle-click now empties the inventory slot properly 2011-12-02 11:31:10 +02:00
Perttu Ahola
9af0142a36 Add enable_pvp setting 2011-12-02 11:25:47 +02:00
Perttu Ahola
34fd47887e Make unlimited player transfer distance configurable 2011-12-02 11:22:09 +02:00
Perttu Ahola
2dc9a0c724 Fix player double damage 2011-12-02 11:16:51 +02:00
Perttu Ahola
c357985135 Make hitting players make a visual damage flash to the player texture and the screen of the local player 2011-12-02 10:57:40 +02:00
Perttu Ahola
ae2b7f9523 Don't hide players in pitch black (like oerkkis) 2011-12-02 10:45:43 +02:00
Perttu Ahola
5344dec760 Move ServerRemotePlayer to a separate file 2011-12-02 10:44:20 +02:00
Perttu Ahola
89bc306632 Fix /give(me) commands a bit in default mod 2011-12-02 02:17:01 +02:00
Perttu Ahola
dc05b106f2 Fix the previous commit 2011-12-02 02:04:25 +02:00
Perttu Ahola
a416cf7c45 Enforce PLAYER_INVENTORY_SIZE in ObjectRef::l_inventory_set_list 2011-12-02 02:01:46 +02:00
Perttu Ahola
09010410cf Print out PROTOCOL_VERSIONs if server is incompatible with client 2011-12-02 01:24:54 +02:00
Perttu Ahola
f8bbecebf5 Higher default map save and unload interval 2011-12-02 01:20:54 +02:00
Perttu Ahola
9d67037570 Don't send objects or map data before definitions have been sent 2011-12-02 01:18:25 +02:00
Perttu Ahola
e4daa4c065 Make players be again visible from a long distance 2011-12-02 01:08:14 +02:00
Perttu Ahola
08a10b8a6a Remove stuff made obsolete by making players more ActiveObject-like and raise protocol version number by one (because it is not compatible at all anymore) 2011-12-01 23:55:57 +02:00
Perttu Ahola
af32240545 Players are more like objects + related stuff 2011-12-01 23:33:48 +02:00
Perttu Ahola
ee0d3bacbc Player-is-SAO WIP 2011-12-01 18:23:58 +02:00
Perttu Ahola
9dcfa882b1 Fix non-fancy leaves not making faces with water 2011-12-01 14:48:52 +02:00
Perttu Ahola
cb589b1f99 Make non-fancy leaf texture to go in texture atlas too 2011-12-01 14:12:47 +02:00
Perttu Ahola
e6e3eef0ef Add ServerActiveObject::removingFromEnvironment() 2011-12-01 13:22:33 +02:00
Perttu Ahola
0e113a4c81 Remove +"^[forcesingle" from ContentFeatures::setInventoryTexture, because 1) it was not used, 2) if it will be used, it won't need to do that anymore 2011-12-01 13:01:37 +02:00
Perttu Ahola
1da3a8e24b Fix getTextureRaw to always return an image that is not in the texture atlas and fix plain "^[forcesingle" handling 2011-12-01 13:00:27 +02:00
Perttu Ahola
3509714951 Fix loading of legacy MaterialItems (was loaded as a quite random type) 2011-12-01 12:50:32 +02:00
Perttu Ahola
146be1f0b6 Fix texture atlas not being created correctly 2011-12-01 12:43:17 +02:00
Perttu Ahola
223a4f4741 Include the freedesktop.org-standard .desktop file in misc/ to aid package makers 2011-12-01 12:12:48 +02:00
Perttu Ahola
1f1c1790f5 Remove old stuff from misc/ 2011-12-01 12:11:26 +02:00
Kahrl
2ca00fa585 Fix processing of the default_password setting. It is now actually used as the plaintext password for new users. Also add /setpassword and /clearpassword server commands that can be used by admins with the PRIV_PASSWORD privilege, and update the /help message. 2011-12-01 12:06:39 +02:00
Kahrl
1901158b3e Make camera.cpp Irrlicht 1.8-compatible by calling ITexture::lock differently depending on the irrlicht version. 2011-12-01 11:56:06 +02:00
Kahrl
63d3403a20 Wireshark dissector: correct messed up field names 2011-12-01 11:38:06 +02:00
Kahrl
7f7fe444d3 Wireshark dissector: Add TOSERVER_RESPAWN and TOCLIENT_DEATHSCREEN, plus some failed assertion fix (well, hack). 2011-12-01 11:38:06 +02:00
Perttu Ahola
f4272ccf8f Enable simple drag and drop in inventory 2011-12-01 11:32:51 +02:00
Perttu Ahola
4196b0d341 Inventory move-to-slot hilighting 2011-12-01 11:25:55 +02:00
Perttu Ahola
ebc7a36a83 Note in init.lua the methods specific to the "generic" node metadata 2011-12-01 10:55:25 +02:00
Giuseppe Bilotta
aab50cd2cc Fix conditional bug in inventory
A spurious semicolon after the conditional checking for the drop count
to be not higher than the owned count caused the subsequent
    count = getCount()
to be always executed. Fix by removing the extra semicolon.
2011-12-01 10:41:24 +02:00
Giuseppe Bilotta
96c30452f9 Fix structs being declared as classes
Some compilers complain when a class is declared as a struct or vice
versa. Fix by making sure that the correct tag is used both in
declaration and definition.
2011-12-01 10:39:47 +02:00
Perttu Ahola
4d0f227c70 Fix sand to be cookable to glass 2011-12-01 02:56:49 +02:00
Perttu Ahola
50b87c3791 Update version in CMakeLists.txt to 0.4.dev-20111201-1 2011-12-01 02:43:10 +02:00
Perttu Ahola
b6539399f4 Fix deadlock if MeshUpdateThread asks new textures while it is being stopped (happened if texture data was transferred slowly) 2011-12-01 02:41:52 +02:00
Perttu Ahola
8b8ef8acc0 Move NodeMetadata prototype containers to content_nodemeta.cpp to fix them not being filled correctly on some systems and compilers 2011-12-01 01:58:31 +02:00
197 changed files with 12149 additions and 15445 deletions

View File

@@ -10,7 +10,7 @@ project(minetest)
# Also remember to set PROTOCOL_VERSION in clientserver.h when releasing
set(VERSION_MAJOR 0)
set(VERSION_MINOR 4)
set(VERSION_PATCH dev-20111201-0)
set(VERSION_PATCH dev-20120106-1)
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
MESSAGE(STATUS "*** Will build version ${VERSION_STRING} ***")

View File

@@ -195,16 +195,17 @@ cmake %sourcedir% -G "Visual Studio 10" -DIRRLICHT_SOURCE_DIR=%irrlichtpath% -DR
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" PACKAGE.vcxproj /p:Configuration=Release
popd
License of Minetest-c55 textures
--------------------------------
License of Minetest-c55 textures and sounds
-------------------------------------------
This does not apply to texture packs made by others.
This applies to textures and sounds contained in the main Minetest
distribution.
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
http://creativecommons.org/licenses/by-sa/3.0/
License of Minetest-c55
-----------------------
License of Minetest-c55 source code
-----------------------------------
Minetest-c55
Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>

View File

@@ -97,7 +97,6 @@ minetest.register_nodedef_defaults({
post_effect_color = {a=0, r=0, g=0, b=0},
paramtype = "none",
is_ground_content = false,
light_propagates = false,
sunlight_propagates = false,
walkable = true,
pointable = true,
@@ -133,7 +132,6 @@ minetest.register_nodedef_defaults({
minetest.register_node("air", {
drawtype = "airlike",
paramtype = "light",
light_propagates = true,
sunlight_propagates = true,
walkable = false,
pointable = false,
@@ -145,7 +143,6 @@ minetest.register_node("air", {
minetest.register_node("ignore", {
drawtype = "airlike",
paramtype = "none",
light_propagates = false,
sunlight_propagates = false,
walkable = false,
pointable = false,
@@ -156,9 +153,9 @@ minetest.register_node("ignore", {
--
-- stackstring manipulation functions
-- example stackstring: 'CraftItem "apple" 4'
-- example item: {type="CraftItem", name="apple"}
-- example item: {type="ToolItem", name="SteelPick", wear="23272"}
-- example stackstring: 'craft "apple" 4'
-- example item: {type="craft", name="apple"}
-- example item: {type="tool", name="SteelPick", wear="23272"}
--
function stackstring_take_item(stackstring)
@@ -167,13 +164,13 @@ function stackstring_take_item(stackstring)
end
local stacktype = nil
stacktype = string.match(stackstring,
'([%a%d]+Item[%a%d]*)')
if stacktype == "NodeItem" or stacktype == "CraftItem" then
'([%a%d]+)')
if stacktype == "node" or stacktype == "craft" then
local itemtype = nil
local itemname = nil
local itemcount = nil
itemtype, itemname, itemcount = string.match(stackstring,
'([%a%d]+Item[%a%d]*) "([^"]*)" (%d+)')
'([%a%d]+) "([^"]*)" (%d+)')
itemcount = tonumber(itemcount)
if itemcount == 0 then
return '', nil
@@ -183,12 +180,12 @@ function stackstring_take_item(stackstring)
return itemtype.." \""..itemname.."\" "..(itemcount-1),
{type=itemtype, name=itemname}
end
elseif stacktype == "ToolItem" then
elseif stacktype == "tool" then
local itemtype = nil
local itemname = nil
local itemwear = nil
itemtype, itemname, itemwear = string.match(stackstring,
'([%a%d]+Item[%a%d]*) "([^"]*)" (%d+)')
'([%a%d]+) "([^"]*)" (%d+)')
itemwear = tonumber(itemwear)
return '', {type=itemtype, name=itemname, wear=itemwear}
end
@@ -201,17 +198,17 @@ function stackstring_put_item(stackstring, item)
stackstring = stackstring or ''
local stacktype = nil
stacktype = string.match(stackstring,
'([%a%d]+Item[%a%d]*)')
'([%a%d]+)')
stacktype = stacktype or ''
if stacktype ~= '' and stacktype ~= item.type then
return stackstring, false
end
if item.type == "NodeItem" or item.type == "CraftItem" then
if item.type == "node" or item.type == "craft" then
local itemtype = nil
local itemname = nil
local itemcount = nil
itemtype, itemname, itemcount = string.match(stackstring,
'([%a%d]+Item[%a%d]*) "([^"]*)" (%d+)')
'([%a%d]+) "([^"]*)" (%d+)')
itemtype = itemtype or item.type
itemname = itemname or item.name
if itemcount == nil then
@@ -219,7 +216,7 @@ function stackstring_put_item(stackstring, item)
end
itemcount = itemcount + 1
return itemtype.." \""..itemname.."\" "..itemcount, true
elseif item.type == "ToolItem" then
elseif item.type == "tool" then
if stacktype ~= nil then
return stackstring, false
end
@@ -227,7 +224,7 @@ function stackstring_put_item(stackstring, item)
local itemname = nil
local itemwear = nil
itemtype, itemname, itemwear = string.match(stackstring,
'([%a%d]+Item[%a%d]*) "([^"]*)" (%d+)')
'([%a%d]+) "([^"]*)" (%d+)')
itemwear = tonumber(itemwear)
return itemtype.." \""..itemname.."\" "..itemwear, true
end
@@ -253,58 +250,71 @@ function test_stackstring()
local item
local success
stack, item = stackstring_take_item('NodeItem "TNT" 3')
assert(stack == 'NodeItem "TNT" 2')
assert(item.type == 'NodeItem')
stack, item = stackstring_take_item('node "TNT" 3')
assert(stack == 'node "TNT" 2')
assert(item.type == 'node')
assert(item.name == 'TNT')
stack, item = stackstring_take_item('CraftItem "with spaces" 2')
assert(stack == 'CraftItem "with spaces" 1')
assert(item.type == 'CraftItem')
stack, item = stackstring_take_item('craft "with spaces" 2')
assert(stack == 'craft "with spaces" 1')
assert(item.type == 'craft')
assert(item.name == 'with spaces')
stack, item = stackstring_take_item('CraftItem "with spaces" 1')
stack, item = stackstring_take_item('craft "with spaces" 1')
assert(stack == '')
assert(item.type == 'CraftItem')
assert(item.type == 'craft')
assert(item.name == 'with spaces')
stack, item = stackstring_take_item('CraftItem "s8df2kj3" 0')
stack, item = stackstring_take_item('craft "s8df2kj3" 0')
assert(stack == '')
assert(item == nil)
stack, item = stackstring_take_item('ToolItem "With Spaces" 32487')
stack, item = stackstring_take_item('tool "With Spaces" 32487')
assert(stack == '')
assert(item.type == 'ToolItem')
assert(item.type == 'tool')
assert(item.name == 'With Spaces')
assert(item.wear == 32487)
stack, success = stackstring_put_item('NodeItem "With Spaces" 40',
{type='NodeItem', name='With Spaces'})
assert(stack == 'NodeItem "With Spaces" 41')
stack, success = stackstring_put_item('node "With Spaces" 40',
{type='node', name='With Spaces'})
assert(stack == 'node "With Spaces" 41')
assert(success == true)
stack, success = stackstring_put_item('CraftItem "With Spaces" 40',
{type='CraftItem', name='With Spaces'})
assert(stack == 'CraftItem "With Spaces" 41')
stack, success = stackstring_put_item('craft "With Spaces" 40',
{type='craft', name='With Spaces'})
assert(stack == 'craft "With Spaces" 41')
assert(success == true)
stack, success = stackstring_put_item('ToolItem "With Spaces" 32487',
{type='ToolItem', name='With Spaces'})
assert(stack == 'ToolItem "With Spaces" 32487')
stack, success = stackstring_put_item('tool "With Spaces" 32487',
{type='tool', name='With Spaces'})
assert(stack == 'tool "With Spaces" 32487')
assert(success == false)
stack, success = stackstring_put_item('NodeItem "With Spaces" 40',
{type='ToolItem', name='With Spaces'})
assert(stack == 'NodeItem "With Spaces" 40')
stack, success = stackstring_put_item('node "With Spaces" 40',
{type='tool', name='With Spaces'})
assert(stack == 'node "With Spaces" 40')
assert(success == false)
assert(stackstring_put_stackstring('NodeItem "With Spaces" 2',
'NodeItem "With Spaces" 1') == 'NodeItem "With Spaces" 3')
assert(stackstring_put_stackstring('node "With Spaces" 2',
'node "With Spaces" 1') == 'node "With Spaces" 3')
end
test_stackstring()
--
-- craftitem helpers
-- NodeItem helpers
--
minetest.inventorycube = function(img1, img2, img3)
img2 = img2 or img1
img3 = img3 or img1
return "[inventorycube"
.. "{" .. img1:gsub("%^", "&")
.. "{" .. img2:gsub("%^", "&")
.. "{" .. img3:gsub("%^", "&")
end
--
-- CraftItem helpers
--
minetest.craftitem_place_item = function(item, placer, pos)
@@ -312,7 +322,7 @@ minetest.craftitem_place_item = function(item, placer, pos)
--print("item: " .. dump(item))
--print("placer: " .. dump(placer))
--print("pos: " .. dump(pos))
minetest.env:add_item(pos, 'CraftItem "' .. item .. '" 1')
minetest.env:add_item(pos, 'craft "' .. item .. '" 1')
return true
end
@@ -327,6 +337,87 @@ minetest.craftitem_eat = function(hp_change)
end
end
--
-- Default material types
--
function minetest.digprop_constanttime(time)
return {
diggability = "constant",
constant_time = time,
}
end
function minetest.digprop_stonelike(toughness)
return {
diggablity = "normal",
weight = toughness * 5,
crackiness = 1,
crumbliness = -0.1,
cuttability = -0.2,
}
end
function minetest.digprop_dirtlike(toughness)
return {
diggablity = "normal",
weight = toughness * 1.2,
crackiness = 0,
crumbliness = 1.2,
cuttability = -0.4,
}
end
function minetest.digprop_gravellike(toughness)
return {
diggablity = "normal",
weight = toughness * 2,
crackiness = 0.2,
crumbliness = 1.5,
cuttability = -1.0,
}
end
function minetest.digprop_woodlike(toughness)
return {
diggablity = "normal",
weight = toughness * 1.0,
crackiness = 0.75,
crumbliness = -1.0,
cuttability = 1.5,
}
end
function minetest.digprop_leaveslike(toughness)
return {
diggablity = "normal",
weight = toughness * (-0.5),
crackiness = 0,
crumbliness = 0,
cuttability = 2.0,
}
end
function minetest.digprop_glasslike(toughness)
return {
diggablity = "normal",
weight = toughness * 0.1,
crackiness = 2.0,
crumbliness = -1.0,
cuttability = -1.0,
}
end
--
-- Creative inventory
--
minetest.creative_inventory = {}
minetest.add_to_creative_inventory = function(itemstring)
table.insert(minetest.creative_inventory, itemstring)
end
--
-- Callback registration
--
@@ -344,6 +435,7 @@ minetest.registered_on_dignodes, minetest.register_on_dignode = make_registratio
minetest.registered_on_punchnodes, minetest.register_on_punchnode = make_registration()
minetest.registered_on_generateds, minetest.register_on_generated = make_registration()
minetest.registered_on_newplayers, minetest.register_on_newplayer = make_registration()
minetest.registered_on_dieplayers, minetest.register_on_dieplayer = make_registration()
minetest.registered_on_respawnplayers, minetest.register_on_respawnplayer = make_registration()
-- END

View File

@@ -1,12 +1,19 @@
-- bucket (Minetest 0.4 mod)
-- A bucket, which can pick up water and lava
minetest.alias_craftitem("bucket", "bucket:bucket_empty")
minetest.alias_craftitem("bucket_water", "bucket:bucket_water")
minetest.alias_craftitem("bucket_lava", "bucket:bucket_lava")
minetest.register_craft({
output = 'CraftItem "bucket" 1',
output = 'craft "bucket:bucket_empty" 1',
recipe = {
{'CraftItem "steel_ingot"', '', 'CraftItem "steel_ingot"'},
{'', 'CraftItem "steel_ingot"', ''},
{'craft "steel_ingot"', '', 'craft "steel_ingot"'},
{'', 'craft "steel_ingot"', ''},
}
})
minetest.register_craftitem("bucket", {
minetest.register_craftitem("bucket:bucket_empty", {
image = "bucket.png",
stack_max = 1,
liquids_pointable = true,
@@ -14,13 +21,13 @@ minetest.register_craftitem("bucket", {
on_use = function(item, player, pointed_thing)
if pointed_thing.type == "node" then
n = minetest.env:get_node(pointed_thing.under)
if n.name == "water_source" then
if n.name == "default:water_source" then
minetest.env:add_node(pointed_thing.under, {name="air"})
player:add_to_inventory_later('CraftItem "bucket_water" 1')
player:add_to_inventory_later('craft "bucket:bucket_water" 1')
return true
elseif n.name == "lava_source" then
elseif n.name == "default:lava_source" then
minetest.env:add_node(pointed_thing.under, {name="air"})
player:add_to_inventory_later('CraftItem "bucket_lava" 1')
player:add_to_inventory_later('craft "bucket:bucket_lava" 1')
return true
end
end
@@ -28,7 +35,7 @@ minetest.register_craftitem("bucket", {
end,
})
minetest.register_craftitem("bucket_water", {
minetest.register_craftitem("bucket:bucket_water", {
image = "bucket_water.png",
stack_max = 1,
liquids_pointable = true,
@@ -36,21 +43,21 @@ minetest.register_craftitem("bucket_water", {
on_use = function(item, player, pointed_thing)
if pointed_thing.type == "node" then
n = minetest.env:get_node(pointed_thing.under)
if n.name == "water_source" then
if n.name == "default:water_source" then
-- unchanged
elseif n.name == "water_flowing" or n.name == "lava_source" or n.name == "lava_flowing" then
minetest.env:add_node(pointed_thing.under, {name="water_source"})
elseif n.name == "default:water_flowing" or n.name == "default:lava_source" or n.name == "default:lava_flowing" then
minetest.env:add_node(pointed_thing.under, {name="default:water_source"})
else
minetest.env:add_node(pointed_thing.above, {name="water_source"})
minetest.env:add_node(pointed_thing.above, {name="default:water_source"})
end
player:add_to_inventory_later('CraftItem "bucket" 1')
player:add_to_inventory_later('craft "bucket:bucket_empty" 1')
return true
end
return false
end,
})
minetest.register_craftitem("bucket_lava", {
minetest.register_craftitem("bucket:bucket_lava", {
image = "bucket_lava.png",
stack_max = 1,
liquids_pointable = true,
@@ -58,14 +65,14 @@ minetest.register_craftitem("bucket_lava", {
on_use = function(item, player, pointed_thing)
if pointed_thing.type == "node" then
n = minetest.env:get_node(pointed_thing.under)
if n.name == "lava_source" then
if n.name == "default:lava_source" then
-- unchanged
elseif n.name == "water_source" or n.name == "water_flowing" or n.name == "lava_flowing" then
minetest.env:add_node(pointed_thing.under, {name="lava_source"})
elseif n.name == "default:water_source" or n.name == "default:water_flowing" or n.name == "default:lava_flowing" then
minetest.env:add_node(pointed_thing.under, {name="default:lava_source"})
else
minetest.env:add_node(pointed_thing.above, {name="lava_source"})
minetest.env:add_node(pointed_thing.above, {name="default:lava_source"})
end
player:add_to_inventory_later('CraftItem "bucket" 1')
player:add_to_inventory_later('craft "bucket:bucket_empty" 1')
return true
end
return false

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

View File

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 292 B

View File

Before

Width:  |  Height:  |  Size: 597 B

After

Width:  |  Height:  |  Size: 597 B

View File

Before

Width:  |  Height:  |  Size: 604 B

After

Width:  |  Height:  |  Size: 604 B

View File

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 279 B

View File

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 236 B

View File

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 167 B

View File

Before

Width:  |  Height:  |  Size: 224 B

After

Width:  |  Height:  |  Size: 224 B

View File

Before

Width:  |  Height:  |  Size: 151 B

After

Width:  |  Height:  |  Size: 151 B

View File

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 142 B

View File

Before

Width:  |  Height:  |  Size: 613 B

After

Width:  |  Height:  |  Size: 613 B

View File

Before

Width:  |  Height:  |  Size: 249 B

After

Width:  |  Height:  |  Size: 249 B

View File

Before

Width:  |  Height:  |  Size: 210 B

After

Width:  |  Height:  |  Size: 210 B

View File

Before

Width:  |  Height:  |  Size: 118 B

After

Width:  |  Height:  |  Size: 118 B

View File

Before

Width:  |  Height:  |  Size: 933 B

After

Width:  |  Height:  |  Size: 933 B

View File

Before

Width:  |  Height:  |  Size: 830 B

After

Width:  |  Height:  |  Size: 830 B

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 539 B

After

Width:  |  Height:  |  Size: 539 B

View File

Before

Width:  |  Height:  |  Size: 246 B

After

Width:  |  Height:  |  Size: 246 B

View File

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 236 B

View File

Before

Width:  |  Height:  |  Size: 978 B

After

Width:  |  Height:  |  Size: 978 B

View File

Before

Width:  |  Height:  |  Size: 874 B

After

Width:  |  Height:  |  Size: 874 B

View File

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 856 B

View File

Before

Width:  |  Height:  |  Size: 878 B

After

Width:  |  Height:  |  Size: 878 B

View File

Before

Width:  |  Height:  |  Size: 591 B

After

Width:  |  Height:  |  Size: 591 B

View File

Before

Width:  |  Height:  |  Size: 936 B

After

Width:  |  Height:  |  Size: 936 B

View File

Before

Width:  |  Height:  |  Size: 672 B

After

Width:  |  Height:  |  Size: 672 B

View File

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 502 B

View File

Before

Width:  |  Height:  |  Size: 507 B

After

Width:  |  Height:  |  Size: 507 B

View File

Before

Width:  |  Height:  |  Size: 395 B

After

Width:  |  Height:  |  Size: 395 B

View File

Before

Width:  |  Height:  |  Size: 357 B

After

Width:  |  Height:  |  Size: 357 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

View File

Before

Width:  |  Height:  |  Size: 965 B

After

Width:  |  Height:  |  Size: 965 B

View File

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 303 B

View File

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 410 B

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

View File

Before

Width:  |  Height:  |  Size: 260 B

After

Width:  |  Height:  |  Size: 260 B

View File

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 242 B

View File

Before

Width:  |  Height:  |  Size: 366 B

After

Width:  |  Height:  |  Size: 366 B

View File

Before

Width:  |  Height:  |  Size: 507 B

After

Width:  |  Height:  |  Size: 507 B

View File

Before

Width:  |  Height:  |  Size: 555 B

After

Width:  |  Height:  |  Size: 555 B

View File

Before

Width:  |  Height:  |  Size: 545 B

After

Width:  |  Height:  |  Size: 545 B

View File

Before

Width:  |  Height:  |  Size: 542 B

After

Width:  |  Height:  |  Size: 542 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 772 B

After

Width:  |  Height:  |  Size: 772 B

View File

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 502 B

View File

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 233 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 489 B

After

Width:  |  Height:  |  Size: 489 B

View File

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 219 B

View File

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 207 B

View File

Before

Width:  |  Height:  |  Size: 182 B

After

Width:  |  Height:  |  Size: 182 B

View File

Before

Width:  |  Height:  |  Size: 806 B

After

Width:  |  Height:  |  Size: 806 B

View File

Before

Width:  |  Height:  |  Size: 161 B

After

Width:  |  Height:  |  Size: 161 B

View File

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 186 B

View File

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 264 B

View File

Before

Width:  |  Height:  |  Size: 252 B

After

Width:  |  Height:  |  Size: 252 B

View File

Before

Width:  |  Height:  |  Size: 927 B

After

Width:  |  Height:  |  Size: 927 B

View File

Before

Width:  |  Height:  |  Size: 271 B

After

Width:  |  Height:  |  Size: 271 B

View File

Before

Width:  |  Height:  |  Size: 216 B

After

Width:  |  Height:  |  Size: 216 B

View File

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 291 B

View File

Before

Width:  |  Height:  |  Size: 931 B

After

Width:  |  Height:  |  Size: 931 B

View File

Before

Width:  |  Height:  |  Size: 262 B

After

Width:  |  Height:  |  Size: 262 B

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

View File

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 301 B

View File

Before

Width:  |  Height:  |  Size: 927 B

After

Width:  |  Height:  |  Size: 927 B

View File

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 245 B

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

View File

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 255 B

View File

Before

Width:  |  Height:  |  Size: 925 B

After

Width:  |  Height:  |  Size: 925 B

View File

Before

Width:  |  Height:  |  Size: 913 B

After

Width:  |  Height:  |  Size: 913 B

View File

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 917 B

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 518 B

After

Width:  |  Height:  |  Size: 518 B

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

View File

@@ -2,29 +2,46 @@
-- Experimental things
--
-- For testing random stuff
function on_step(dtime)
-- print("experimental on_step")
--[[
objs = minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 10)
for k, obj in pairs(objs) do
name = obj:get_player_name()
if name then
print(name.." at "..dump(obj:getpos()))
print(name.." dir: "..dump(obj:get_look_dir()))
print(name.." pitch: "..dump(obj:get_look_pitch()))
print(name.." yaw: "..dump(obj:get_look_yaw()))
else
print("Some object at "..dump(obj:getpos()))
end
end
--]]
end
minetest.register_globalstep(on_step)
-- An example furnace-thing implemented in Lua
minetest.register_node("luafurnace", {
tile_images = {"lava.png", "furnace_side.png", "furnace_side.png",
"furnace_side.png", "furnace_side.png", "furnace_front.png"},
minetest.register_node("experimental:luafurnace", {
tile_images = {"default_lava.png", "default_furnace_side.png",
"default_furnace_side.png", "default_furnace_side.png",
"default_furnace_side.png", "default_furnace_front.png"},
--inventory_image = "furnace_front.png",
inventory_image = inventorycube("furnace_front.png"),
inventory_image = minetest.inventorycube("default_furnace_front.png"),
paramtype = "facedir_simple",
metadata_name = "generic",
material = digprop_stonelike(3.0),
material = minetest.digprop_stonelike(3.0),
})
minetest.register_on_placenode(function(pos, newnode, placer)
if newnode.name == "luafurnace" then
print("get_meta");
if newnode.name == "experimental:luafurnace" then
local meta = minetest.env:get_meta(pos)
print("inventory_set_list");
meta:inventory_set_list("fuel", {""})
print("inventory_set_list");
meta:inventory_set_list("src", {""})
print("inventory_set_list");
meta:inventory_set_list("dst", {"","","",""})
print("set_inventory_draw_spec");
meta:set_inventory_draw_spec(
"invsize[8,9;]"
.."list[current_name;fuel;2,3;1,1;]"
@@ -34,15 +51,134 @@ minetest.register_on_placenode(function(pos, newnode, placer)
)
local total_cooked = 0;
print("set_string")
meta:set_string("total_cooked", total_cooked)
print("set_infotext");
meta:set_infotext("Lua Furnace: total cooked: "..total_cooked)
end
end)
local get_item_definition = function(item)
if not item then return nil end
if item.type == "node" then
return minetest.registered_nodes[item.name]
elseif item.type == "craft" then
return minetest.registered_craftitems[item.name]
end
end
minetest.register_abm({
nodenames = {"luafurnace"},
nodenames = {"experimental:luafurnace"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.env:get_meta(pos)
for i, name in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
if not meta:get_string(name) then
meta:set_string(name, 0)
end
end
local inv = meta:get_inventory()
local fuelitem = inv:get_stack("fuel", 1):peek_item()
local srcitem = inv:get_stack("src", 1):peek_item()
--print("fuelitem="..dump(fuelitem))
--print("srcitem="..dump(srcitem))
local was_active = false
local src_cooktime = -1
local result_stackstring = nil
if srcitem then
local prop = get_item_definition(srcitem)
if prop and prop.cookresult_itemstring ~= "" then
result_stackstring = prop.cookresult_itemstring
src_cooktime = prop.furnace_cooktime or 3
end
end
print("src_cooktime="..dump(src_cooktime))
print("result_stackstring="..dump(result_stackstring))
if tonumber(meta:get_string("fuel_time")) < tonumber(meta:get_string("fuel_totaltime")) then
was_active = true
meta:set_string("fuel_time", tonumber(meta:get_string("fuel_time")) + 1)
meta:set_string("src_time", tonumber(meta:get_string("src_time")) + 1)
--print("result_stackstring="..dump(result_stackstring))
--print('tonumber(meta:get_string("src_time"))='..dump(tonumber(meta:get_string("src_time"))))
--print("src_cooktime="..dump(src_cooktime))
if result_stackstring and tonumber(meta:get_string("src_time")) >= src_cooktime and src_cooktime >= 0 then
-- Put result in "dst" list
success = inv:autoinsert_stackstring("dst", result_stackstring)
if not success then
print("Could not autoinsert '"..result_stackstring.."'")
end
-- If succeeded, take stuff from "src" list
if success then
srcstack = inv:get_stack("src", 1)
srcstack:take_item()
inv:set_stack("src", 1, srcstack)
end
meta:set_string("src_time", 0)
end
end
if tonumber(meta:get_string("fuel_time")) < tonumber(meta:get_string("fuel_totaltime")) then
meta:set_infotext("Furnace active: "..(tonumber(meta:get_string("fuel_time"))/tonumber(meta:get_string("fuel_totaltime"))*100).."%")
return
end
local srcitem = inv:get_stack("src", 1):peek_item()
local src_cooktime = 0
local result_stackstring = nil
if srcitem then
local prop = get_item_definition(srcitem)
if prop and prop.cookresult_itemstring ~= "" then
result_stackstring = prop.cookresult_itemstring
src_cooktime = prop.furnace_cooktime or 3
end
end
local fuelitem = inv:get_stack("fuel", 1):peek_item()
if not result_stackstring or not fuelitem then
if was_active then
meta:set_infotext("Furnace is empty")
end
return
end
local burntime = -1
if fuelitem then
local prop = get_item_definition(fuelitem)
if prop then
burntime = prop.furnace_burntime or -1
end
end
if burntime <= 0 then
meta:set_infotext("Furnace out of fuel")
return
end
meta:set_string("fuel_totaltime", burntime)
meta:set_string("fuel_time", 0)
local stack = inv:get_stack("fuel", 1)
stack:take_item()
inv:set_stack("fuel", 1, stack)
end,
})
--[[
minetest.register_abm({
nodenames = {"experimental:luafurnace"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
@@ -56,7 +192,7 @@ minetest.register_abm({
_, srcitem = stackstring_take_item(srclist[1])
_, fuelitem = stackstring_take_item(fuellist[1])
if not srcitem or not fuelitem then return end
if fuelitem.type == "NodeItem" then
if fuelitem.type == "node" then
local prop = minetest.registered_nodes[fuelitem.name]
if prop == nil then return end
if prop.furnace_burntime < 0 then return end
@@ -64,7 +200,7 @@ minetest.register_abm({
return
end
local resultstack = nil
if srcitem.type == "NodeItem" then
if srcitem.type == "node" then
local prop = minetest.registered_nodes[srcitem.name]
if prop == nil then return end
if prop.cookresult_item == "" then return end
@@ -95,13 +231,13 @@ minetest.register_abm({
meta:set_infotext("Lua Furnace: total cooked: "..total_cooked)
end,
})
--]]
minetest.register_craft({
output = 'NodeItem "luafurnace" 1',
output = 'node "experimental:luafurnace" 1',
recipe = {
{'NodeItem "cobble"', 'NodeItem "cobble"', 'NodeItem "cobble"'},
{'NodeItem "cobble"', 'NodeItem "cobble"', 'NodeItem "cobble"'},
{'NodeItem "cobble"', 'NodeItem "cobble"', 'NodeItem "cobble"'},
{'node "default:cobble"', 'node "default:cobble"', 'node "default:cobble"'},
{'node "default:cobble"', 'node "default:steel_ingot"', 'node "default:cobble"'},
{'node "default:cobble"', 'node "default:cobble"', 'node "default:cobble"'},
}
})
@@ -110,8 +246,8 @@ minetest.register_craft({
--
--[[
minetest.register_tool("horribletool", {
image = "lava.png",
minetest.register_tool("experimental:horribletool", {
image = "default_lava.png",
basetime = 2.0
dt_weight = 0.2
dt_crackiness = 0.2
@@ -125,16 +261,17 @@ minetest.register_tool("horribletool", {
})
--]]
minetest.register_craft({
output = 'NodeItem "somenode" 4',
--[[minetest.register_craft({
output = 'node "somenode" 4',
recipe = {
{'CraftItem "Stick" 1'},
{'craft "default_tick" 1'},
}
})
minetest.register_node("somenode", {
minetest.register_node("experimental:somenode", {
tile_images = {"lava.png", "mese.png", "stone.png", "grass.png", "cobble.png", "tree_top.png"},
inventory_image = "treeprop.png",
inventory_image = minetest.inventorycube("lava.png", "mese.png", "stone.png"),
--inventory_image = "treeprop.png",
material = {
diggability = "normal",
weight = 0,
@@ -144,37 +281,50 @@ minetest.register_node("somenode", {
flammability = 0
},
metadata_name = "chest",
})
})]]
--
-- TNT (not functional)
--
minetest.register_craft({
output = 'NodeItem "TNT" 4',
output = 'node "experimental:tnt" 4',
recipe = {
{'NodeItem "wood" 1'},
{'CraftItem "lump_of_coal" 1'},
{'NodeItem "wood" 1'}
{'node "default:wood" 1'},
{'craft "default:coal_lump" 1'},
{'node "default:wood" 1'}
}
})
minetest.register_node("TNT", {
tile_images = {"tnt_top.png", "tnt_bottom.png", "tnt_side.png", "tnt_side.png", "tnt_side.png", "tnt_side.png"},
inventory_image = "tnt_side.png",
minetest.register_node("experimental:tnt", {
tile_images = {"default_tnt_top.png", "default_tnt_bottom.png",
"default_tnt_side.png", "default_tnt_side.png",
"default_tnt_side.png", "default_tnt_side.png"},
inventory_image = minetest.inventorycube("default_tnt_top.png",
"default_tnt_side.png", "default_tnt_side.png"),
dug_item = '', -- Get nothing
material = {
diggability = "not",
},
})
minetest.register_on_punchnode(function(p, node)
if node.name == "experimental:tnt" then
minetest.env:remove_node(p)
minetest.env:add_entity(p, "experimental:tnt")
nodeupdate(p)
end
end)
local TNT = {
-- Static definition
physical = true, -- Collides with things
-- weight = 5,
collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
visual = "cube",
textures = {"tnt_top.png","tnt_bottom.png","tnt_side.png","tnt_side.png","tnt_side.png","tnt_side.png"},
textures = {"default_tnt_top.png", "default_tnt_bottom.png",
"default_tnt_side.png", "default_tnt_side.png",
"default_tnt_side.png", "default_tnt_side.png"},
-- Initial value for our timer
timer = 0,
-- Number of punches required to defuse
@@ -213,7 +363,7 @@ function TNT:on_punch(hitter)
self.health = self.health - 1
if self.health <= 0 then
self.object:remove()
hitter:add_to_inventory("NodeItem TNT 1")
hitter:add_to_inventory("node TNT 1")
hitter:set_hp(hitter:get_hp() - 1)
end
end
@@ -225,16 +375,18 @@ function TNT:on_rightclick(clicker)
--self.object:moveto(pos, false)
end
print("TNT dump: "..dump(TNT))
--print("TNT dump: "..dump(TNT))
--print("Registering TNT");
minetest.register_entity("experimental:tnt", TNT)
print("Registering TNT");
minetest.register_entity("TNT", TNT)
-- Add TNT's old name also
minetest.alias_node("TNT", "experimental:tnt")
--
-- A test entity for testing animated and yaw-modulated sprites
--
minetest.register_entity("testentity", {
minetest.register_entity("experimental:testentity", {
-- Static definition
physical = true, -- Collides with things
-- weight = 5,
@@ -259,7 +411,7 @@ minetest.register_entity("testentity", {
on_punch = function(self, hitter)
self.object:remove()
hitter:add_to_inventory('CraftItem testobject1 1')
hitter:add_to_inventory('craft testobject1 1')
end,
})
@@ -280,8 +432,8 @@ minetest.register_on_generated(function(minp, maxp)
end)
-- Example setting get
print("setting max_users = " .. dump(minetest.setting_get("max_users")))
print("setting asdf = " .. dump(minetest.setting_get("asdf")))
--print("setting max_users = " .. dump(minetest.setting_get("max_users")))
--print("setting asdf = " .. dump(minetest.setting_get("asdf")))
minetest.register_on_chat_message(function(name, message)
--[[print("on_chat_message: name="..dump(name).." message="..dump(message))
@@ -395,4 +547,6 @@ minetest.register_abm({
end,
})--]]
print("experimental modpath="..dump(minetest.get_modpath("experimental")))
-- END

View File

@@ -2,11 +2,11 @@ minetest.register_on_newplayer(function(player)
print("on_newplayer")
if minetest.setting_getbool("give_initial_stuff") then
print("giving give_initial_stuff to player")
player:add_to_inventory('ToolItem "SteelPick" 0')
player:add_to_inventory('NodeItem "torch" 99')
player:add_to_inventory('ToolItem "SteelAxe" 0')
player:add_to_inventory('ToolItem "SteelShovel" 0')
player:add_to_inventory('NodeItem "cobble" 99')
player:add_to_inventory('tool "SteelPick" 0')
player:add_to_inventory('node "torch" 99')
player:add_to_inventory('tool "SteelAxe" 0')
player:add_to_inventory('tool "SteelShovel" 0')
player:add_to_inventory('node "cobble" 99')
end
end)

View File

@@ -0,0 +1,2 @@
default

101
data/mods/legacy/init.lua Normal file
View File

@@ -0,0 +1,101 @@
-- legacy (Minetest 0.4 mod)
-- Provides as much backwards-compatibility as feasible
--
-- Aliases to support loading 0.3 and old 0.4 worlds and inventories
--
minetest.alias_node("stone", "default:stone")
minetest.alias_node("dirt_with_grass", "default:dirt_with_grass")
minetest.alias_node("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps")
minetest.alias_node("dirt", "default:dirt")
minetest.alias_node("sand", "default:sand")
minetest.alias_node("gravel", "default:gravel")
minetest.alias_node("sandstone", "default:sandstone")
minetest.alias_node("clay", "default:clay")
minetest.alias_node("brick", "default:brick")
minetest.alias_node("tree", "default:tree")
minetest.alias_node("jungletree", "default:jungletree")
minetest.alias_node("junglegrass", "default:junglegrass")
minetest.alias_node("leaves", "default:leaves")
minetest.alias_node("cactus", "default:cactus")
minetest.alias_node("papyrus", "default:papyrus")
minetest.alias_node("bookshelf", "default:bookshelf")
minetest.alias_node("glass", "default:glass")
minetest.alias_node("wooden_fence", "default:fence_wood")
minetest.alias_node("rail", "default:rail")
minetest.alias_node("ladder", "default:ladder")
minetest.alias_node("wood", "default:wood")
minetest.alias_node("mese", "default:mese")
minetest.alias_node("cloud", "default:cloud")
minetest.alias_node("water_flowing", "default:water_flowing")
minetest.alias_node("water_source", "default:water_source")
minetest.alias_node("lava_flowing", "default:lava_flowing")
minetest.alias_node("lava_source", "default:lava_source")
minetest.alias_node("torch", "default:torch")
minetest.alias_node("sign_wall", "default:sign_wall")
minetest.alias_node("furnace", "default:furnace")
minetest.alias_node("chest", "default:chest")
minetest.alias_node("locked_chest", "default:chest_locked")
minetest.alias_node("cobble", "default:cobble")
minetest.alias_node("mossycobble", "default:mossycobble")
minetest.alias_node("steelblock", "default:steelblock")
minetest.alias_node("nyancat", "default:nyancat")
minetest.alias_node("nyancat_rainbow", "default:nyancat_rainbow")
minetest.alias_node("sapling", "default:sapling")
minetest.alias_node("apple", "default:apple")
minetest.alias_tool("WPick", "default:pick_wood")
minetest.alias_tool("STPick", "default:pick_stone")
minetest.alias_tool("SteelPick", "default:pick_steel")
minetest.alias_tool("MesePick", "default:pick_mese")
minetest.alias_tool("WShovel", "default:shovel_wood")
minetest.alias_tool("STShovel", "default:shovel_stone")
minetest.alias_tool("SteelShovel", "default:shovel_steel")
minetest.alias_tool("WAxe", "default:axe_wood")
minetest.alias_tool("STAxe", "default:axe_stone")
minetest.alias_tool("SteelAxe", "default:axe_steel")
minetest.alias_tool("WSword", "default:sword_wood")
minetest.alias_tool("STSword", "default:sword_stone")
minetest.alias_tool("SteelSword", "default:sword_steel")
minetest.alias_craftitem("Stick", "default:stick")
minetest.alias_craftitem("paper", "default:paper")
minetest.alias_craftitem("book", "default:book")
minetest.alias_craftitem("lump_of_coal", "default:coal_lump")
minetest.alias_craftitem("lump_of_iron", "default:iron_lump")
minetest.alias_craftitem("lump_of_clay", "default:clay_lump")
minetest.alias_craftitem("steel_ingot", "default:steel_ingot")
minetest.alias_craftitem("clay_brick", "default:clay_brick")
minetest.alias_craftitem("scorched_stuff", "default:scorched_stuff")
minetest.alias_craftitem("apple", "default:apple")
--
-- Old items
--
minetest.register_craftitem(":rat", {
image = "rat.png",
cookresult_itemstring = 'craft "cooked_rat" 1',
on_drop = function(item, dropper, pos)
minetest.env:add_rat(pos)
return true
end,
})
minetest.register_craftitem(":cooked_rat", {
image = "cooked_rat.png",
cookresult_itemstring = 'craft "scorched_stuff" 1',
on_place_on_ground = minetest.craftitem_place_item,
on_use = minetest.craftitem_eat(6),
})
minetest.register_craftitem(":firefly", {
image = "firefly.png",
on_drop = function(item, dropper, pos)
minetest.env:add_firefly(pos)
return true
end,
})
-- END

View File

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 207 B

View File

Before

Width:  |  Height:  |  Size: 239 B

After

Width:  |  Height:  |  Size: 239 B

View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Before

Width:  |  Height:  |  Size: 603 B

After

Width:  |  Height:  |  Size: 603 B

View File

Before

Width:  |  Height:  |  Size: 116 B

After

Width:  |  Height:  |  Size: 116 B

View File

Before

Width:  |  Height:  |  Size: 952 B

After

Width:  |  Height:  |  Size: 952 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 250 B

View File

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 341 B

View File

Before

Width:  |  Height:  |  Size: 920 B

After

Width:  |  Height:  |  Size: 920 B

View File

@@ -131,12 +131,14 @@
#default_password =
# Available privileges: build, teleport, settime, privs, shout
#default_privs = build, shout
# Whether players are transferred to client without any range limit
#unlimited_player_transfer_distance = true
# Whether to enable players killing each other
#enable_pvp = true
# Profiler data print interval. #0 = disable.
#profiler_print_interval = 0
#enable_mapgen_debug_info = false
# Player and object positions are sent at intervals specified by this
#objectdata_interval = 0.2
#active_object_send_range_blocks = 3
#active_block_range = 2
#max_simultaneous_block_sends_per_client = 2
@@ -146,8 +148,8 @@
#time_send_interval = 20
# Length of day/night cycle. 72=20min, 360=4min, 1=24hour
#time_speed = 72
#server_unload_unused_data_timeout = 60
#server_map_save_interval = 60
#server_unload_unused_data_timeout = 29
#server_map_save_interval = 5.3
#full_block_send_enable_min_time_from_building = 2.0
# Set to true to enable experimental features or stuff that is tested
# (varies from version to version, usually not useful at all)

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More