207 Commits

Author SHA1 Message Date
2392842948 Fire: Slow down fire spread and reduce lua load
Increase chance value of ABMs
Disable ignition from a distance
Only detect neighbouring extinguishing nodes
Fix code style issues and add comments
2015-08-20 04:09:22 +01:00
3740efb393 New normalmaps for some nodes 2015-08-19 03:24:45 +01:00
835ca02be5 Add tiling info for grass nodes 2015-08-19 00:59:22 +01:00
99d0442cc9 Boats: Fix sinking through boat when detaching
By CProgrammerRU
Also, by paramat:
Slightly raise base of collision box
Improve code style
2015-08-18 22:35:16 +01:00
b24049950e Default: New stone brick and desert stone brick textures 2015-08-17 21:59:43 +01:00
86dab909ed Default: Change to 'pixelbox2' long grass textures by Gambit 2015-08-17 03:58:34 +01:00
ffcb3d6356 Stairs: Add aliases needed due to new pine wood name 2015-08-16 00:31:41 +01:00
c7b9e734ff Default: New grass textures, new footprint overlay texture 2015-08-15 21:19:39 +01:00
450543f782 Stairs: Add straw and metal blocks
Make replace ABM optional, disabled by default
2015-08-14 23:23:41 +01:00
b7a1426b42 Default: New darker jungletree_top and junglewood textures 2015-08-14 19:15:33 +01:00
408ee69fb8 Flowers: Add sporeless mushrooms and edit drops 2015-08-14 01:34:35 +01:00
35de5241f4 Fixed invalid check. This fixes minetest/minetest_game#609 2015-08-11 18:56:15 +02:00
be4dd6479d Default: Rename pine tree nodes, textures and mapgen aliases 2015-08-10 09:19:02 +01:00
7066a6a0dd Tweak mushroom drops
-> Don't always drop the main mushroom (allowed endless spore generation loop before)
-> Drop less spores, before you got lots of spores
2015-08-10 01:03:15 +02:00
6194f9ffea Default/trees: Combine sapling ABMs into one ABM 2015-08-09 05:52:46 +01:00
47c7b0b187 Mushrooms: Rename spore nodes. Single ABM for mushroom growing
Code re-arranged and clarified
2015-08-07 19:07:48 +01:00
0a3bf5b220 Biomes: Tune v5/v7 biomes and v5/v6/v7 mushroom distribution
More complex distribution of dry grasses
Remove water below glacier rivers
Gravel as glacier seabed
Do not force-place acacia root
Tune acacia tree density
Match mgv5/v7 mushrooms to tree density
Spawn mgv6 mushrooms by trees
2015-08-07 17:13:33 +01:00
14ee61ab92 Fix mese block alias
It should alias the old name (mese_block) to the new/current name (mese) rather than the other way round.
2015-08-04 01:02:01 +01:00
f7f178ce03 Stairs: Lengthen interval of replace abm 2015-08-04 01:01:40 +01:00
547a7b3304 Default/functions: Reduce lavacooling ABM/sound overload 2015-08-04 01:01:25 +01:00
8d1eef025d Flowers: Make mushrooms farmable using spores 2015-08-04 01:00:47 +01:00
84de5f0f40 Add biomes for mgv5 and mgv7 2015-07-30 01:19:12 +01:00
cbea61e8dd Default: Thicker snow nodebox 2015-07-29 01:18:30 +01:00
2885ae6018 Default: Add papyrus schematic 2015-07-28 02:27:45 +01:00
cf781ee218 Default: New appletree schematic with tuned apple chance 2015-07-27 05:06:32 +01:00
252dffce78 Default/mapgen: Disable nyancats in singlenode mapgen 2015-07-27 05:05:50 +01:00
83c2a88c91 Flowers: Keep mushrooms above water level 2015-07-24 21:56:16 +01:00
e7def5d4e6 Default: Add improved mgv5/mgv7 tree schematics 2015-07-24 00:59:44 +01:00
ec68283812 Stairs: Register acacia wood stair and slab 2015-07-23 05:14:43 +01:00
bc4d0c1344 Flowers: Add mushrooms to mgv6 2015-07-23 05:14:32 +01:00
e2033025b0 Default: Add biome API tree schematics and enable growing by sapling ABMs 2015-07-20 22:56:35 +01:00
da9789e3ce Fix not_in_creative_inventory
Update
2015-07-17 20:53:55 +01:00
26866e4c21 Grant multiple tiles on stairs model 2015-07-17 20:53:32 +01:00
0cf4fd4c18 Add mushrooms 2015-07-17 10:12:00 +02:00
2ddbf68e31 Better default stone normalmap, sharpened a bit 2015-07-14 14:53:13 +02:00
0c5f6dabc0 Add new texture for leaves, jungle leaves and style simple 2015-07-13 03:17:26 +01:00
fdae2832bb Default: New ice texture by Gambit and asl97 2015-07-13 00:45:38 +01:00
6843ddb814 Default: Add savanna nodes, textures, crafting and fuels 2015-07-12 22:41:59 +01:00
166b1c623a Add some normalmaps with heightmap in alpha channel 2015-07-12 12:24:02 +02:00
jp
e8cafeb3e7 Improved diamond block texture (from #548) 2015-07-12 12:06:38 +02:00
8a7af21e3a Improved stairs model, v2 2015-07-11 00:22:18 +01:00
407b32e04c Improved stairs model 2015-07-09 21:35:53 +01:00
f3f8b22698 Convert stairs in meshnode 2015-07-08 19:07:22 +01:00
585b2bc22e Default/trees: Add checks for air/ignore/needles to pinetree trunk
Speed optimise: Trunk placing, add_pine_needles, add_snow
2015-07-05 15:23:55 +01:00
0914e595c7 Default/mapgen: Add missing spaces 2015-07-01 08:34:25 +01:00
7361eb5e05 Add the listring functionality c977fbd928 2015-06-23 19:17:57 +02:00
44ac020f28 Fix node placing sound being heard on left channel only 2015-06-22 18:33:15 +02:00
e15fde1624 Fix is_ground_content settings for nodes
Remove line if set to the default of 'true'
2015-06-18 02:25:02 +01:00
15ef8b0995 Fix bookshelf's allow_metadata_inventory_move (check if item belongs to "book" group instead of checking if it is "default:book") 2015-06-17 18:33:54 +02:00
d8dd9332ed Improved Iron Bar texture 2015-06-14 11:34:52 +02:00
c4fb5bd385 Bucket: Register river water bucket, add texture
Add groups to registration and use water_bucket group
2015-06-14 01:18:14 +01:00
f09ae11e89 Add patch files to gitignore 2015-06-09 22:01:25 +02:00
8b4a92ef2d word-wrap book text
This change word-wraps text when reading a book.
2015-06-08 16:29:44 +02:00
f92d49feff Default/functions: Fix cactus growing by rotation again. Cleanup code 2015-06-08 00:32:40 +01:00
64fa8e6be5 Make books writable 2015-06-07 15:57:29 +02:00
0aebf864d1 Add gunpowder trails
Uses group “connect_to_raillike”
2015-06-07 14:27:18 +02:00
016fa0da40 Default/functions: Fix cacti not growing when rotation is 1-3 2015-06-07 04:39:25 +01:00
7786f7f8b1 Default/nodes: Match river_water post_effect_colour hue to that of new texture 2015-06-07 04:39:02 +01:00
6919d43d02 Remove deprecated ore generation code 2015-06-07 04:38:52 +01:00
01ad09036b Improved flowers' registration system - Specific nodeboxes, - Color groups - All datas were put into a table then unpacked for add_simple_flower 2015-06-06 14:51:25 +02:00
638add603f Simplified flowers' registration - Created a new local function to register flowers 2015-06-06 14:51:25 +02:00
750f9575af Improve water post effect color 2015-06-06 14:13:01 +02:00
40e2b945e3 Default: New obsidian brick texture. Add river water textures 2015-06-02 01:13:34 +01:00
03b51e8c8f Default: New sandstone brick texture 2015-05-31 05:55:12 +01:00
a4d056e493 Make some common nodes let light pass through 2015-05-14 17:34:17 +02:00
23a37e5e79 Apples give 2 HP instead of 1 HP, bread gives 5 HP instead of 4 HP 2015-05-14 17:33:10 +02:00
300b14078f Give 24 rails per craft instead of 15 2015-05-14 17:28:30 +02:00
eae3740d85 Fix missing argument for on_rotate 2015-05-14 16:07:19 +02:00
3669ca0a83 Make beds not skip night if nobody is online 2015-05-14 14:41:26 +02:00
46c6154444 Make doors not depend on screwdriver. 2015-05-14 14:24:14 +02:00
2824562dc9 Add screwdriver callbacks, and code them for doors and beds 2015-05-14 10:24:56 +02:00
852b337916 Use connect_to_raillike for rail
Used value: 2
2015-05-14 10:19:07 +02:00
dd34dffa45 Default/mapgen: Add sandstone alias for sandstone biome detection 2015-05-12 23:31:38 +01:00
aaa6c260cd Copy pos before giving it to on_blast because it can modify it; also remove a debug print that had nothing to do here 2015-05-12 21:03:02 +02:00
81259e9fcc De-duplicate code in doors mod in make_on_blast 2015-05-12 20:55:46 +02:00
4bd1094619 Fix problems with TNT 2015-05-12 16:53:04 +02:00
8bc8dd64c5 Make TNT respect on_blast, implement on_blast for some nodes
Implemented nodes:
- Steel Door: Ignores explosion
- Locked Chest: Ignores explosion
- Fire: Ignores explosion
- TNT: Starts burning
- Burning TNT: Explodes immediately
- Gunpowder: Starts burning
- Burning Gunpowder: Ignores explosion
2015-05-12 16:32:52 +02:00
ab4485f824 Default/mapgen: Add mapgen aliases for sandstone brick and sandstone brick stair, to enable sandstone dungeons 2015-05-12 16:23:09 +02:00
fa1b4d0d44 Default/nodes: Increase meselamp light level to light_max (14) 2015-05-11 22:50:44 +01:00
055157d084 Default/mapgen: Make register function selection compatible with future mapgens 2015-05-11 05:37:04 +01:00
fe3c5a7090 allow overriding papyrus and cactus grow functions
dont grow cactus on a lying one

use minetest.get_node 2 times less

do a bit what ShadowNinja wrote

add comment

return true if the plant is set
2015-04-27 01:09:32 +01:00
d0070f2b1a Default/mapgen: Add dry shrub to mgv6 tundra 2015-04-23 06:28:49 +01:00
c570f9f494 Default/mapgen: Add alias for river water source 2015-04-19 04:00:46 +01:00
f8c8047a52 Default: Add river_water nodes 2015-04-19 02:27:06 +01:00
f49faadc19 Minetest.conf: Move mapgen flags to engine .conf 2015-04-14 02:32:06 +01:00
fe7a982343 Default/nodes: Make water, lava and ice is_ground_content = false 2015-04-06 01:43:17 +01:00
87468eb6fc Default/mapgen: Fix missing num_spawn_by = 1 line for papyrus 2015-04-05 01:37:14 +01:00
4a7a51a46e Default/mapgen.lua: Remove ores absheight flags. Add aliases for mgv6 snow biomes 2015-03-30 00:21:47 +01:00
Rui
9c15ebccab Add max_hear_distance for fire 2015-03-29 21:35:03 +02:00
525f467057 Slow down fire spread a bit 2015-03-29 21:25:46 +02:00
820a97e397 Add Meselamps
- Mese glows
- Glass + Mese = Meselamp
- New mese mineral texture
2015-03-29 21:17:53 +02:00
jp
3f2e35e827 Add vessels shelf 2015-03-29 21:00:32 +02:00
ccb4b925ed default/mapgen.lua: Register mgv6 decorations
Organise and cleanup code
2015-03-27 00:29:44 +00:00
21c874ab52 flowers/mapgen.lua: Remove unnecessary double quotation marks 2015-03-25 22:03:53 +00:00
8a8712e4a3 flowers/mapgen.lua: Register flower decorations for mgv6 2015-03-25 21:28:15 +00:00
9eb9502209 Optimize boat model 2015-03-21 17:28:36 +01:00
a192f9fc78 default/mapgen.lua: Update biomes for new biome API
Register blob ores in mgv6 to replace addDirtGravelBlobs
Combine ores and blobs functions
2015-03-17 07:46:45 +00:00
794a436d86 Fix bucket code indentation 2015-03-07 21:26:55 -05:00
41837e6193 Fix beds respawn settings check 2015-03-06 19:29:16 +01:00
86e0e4b2bf Remove undeclared writing variable 2015-03-06 11:49:22 +01:00
2a6050e552 Add option to disable bed respawn, better recipe for fancy bed 2015-03-06 10:46:05 +01:00
e604d8d7f3 Remove dupe aliases (fixes #438) 2015-02-28 22:49:32 +01:00
5a2aab855f Make some tools dig faster 2015-02-28 22:44:31 +01:00
jp
f86ac2fdff Optimize textures and model (use *.b3d instead *.x) 2015-02-28 22:33:19 +01:00
df35360372 Make empty buckets stackable 2015-02-28 22:15:46 +01:00
3e912f7b85 Add reverse recipes for hoes
- Adds material for crafting (keeps def.recipe compatibility)
- Fix two typos in api documentation
2015-02-28 22:05:07 +01:00
ea7b04a712 Use only red and white wool for beds 2015-02-24 21:55:14 +01:00
edb02e9d33 Add beds 2015-02-24 20:59:04 +01:00
3b526a7276 mapgen.lua: Add dirt/sand/gravel blob ores for mgv5/mgv7
Create register ores function. Select and order functions per mapgen
Use blob ore for clay. Update ore height_min/max to y_min/max
Tune flower amount
2015-02-22 01:34:35 +00:00
03c00a831d Clean up trapdoors code and make them more flexible, so custom trapdoors
can be registered by other mods
2015-02-14 00:48:28 +01:00
60520b8032 Fix download URL 2015-02-12 22:25:07 +01:00
a9137e8c21 Fix typo in survival formspec & create legacy file 2015-02-12 22:18:22 +01:00
Tim
75ea7e3160 Bones mod fixes
1. don't delete protected nodes, 2. time out in loaded chunks, 3. don't crash when dying in certain nodes (like default doors or sign_lib signs)
2015-02-12 22:10:15 +01:00
047ecea3a2 Make trapdoor better visible when held in the hand
Screenshots at: https://github.com/minetest/minetest_game/issues/411
2015-02-12 16:51:32 +01:00
5518c277f3 Textures Update 2015-01-25 10:48:42 +01:00
4468015cbe Fix typo for obsidian glass door texture
I think that was just a typo?
2015-01-24 20:40:08 +01:00
0755a8fa05 Mossycobble fixes 2015-01-24 20:36:37 +01:00
5d8b2442ce Add straw 2015-01-17 16:30:31 +01:00
6157982787 Follow naming convention of textures and sounds in doors 2015-01-17 16:05:23 +01:00
07dcae7258 Add fancy inventory for bones 2015-01-17 16:05:19 +01:00
d546a5a1fa Return to original water sink speed for player 2015-01-11 11:27:08 +01:00
3689bdad75 Fix typo in water_flowing tile animation Also add missing commas and use non-deprecated field-names 2015-01-10 15:47:30 +01:00
4ce47528e1 Clarify comment in default:grass_1 2015-01-10 15:47:30 +01:00
2edfb55c29 Restructure default/nodes.lua 2015-01-10 15:47:30 +01:00
d1e715ebac Add tree growing functions to game_api.txt 2015-01-10 15:47:30 +01:00
c654c9fd11 Remove weird constants in default 2015-01-10 15:47:30 +01:00
2c0f716a13 Remove useless, empty callbacks 2015-01-10 15:47:29 +01:00
64bf6c1b89 Add crafting grid result arrow to creative inventory 2015-01-10 15:32:16 +01:00
047bfb9ad1 Simple biomes for mgv5/mgv7. Uses get_mapgen_params 2015-01-10 15:32:16 +01:00
cab01b6694 Add Obsidian / Obsidian Brick stairs & slabs 2015-01-10 15:32:16 +01:00
554d15fadb Change furnace fire icons 2015-01-10 15:16:41 +01:00
a9ac480dcd Set number of screwdriver uses to 200 2014-12-21 22:36:20 +01:00
1237bc3a4b Don't override param2 bits that are not used for rotation in screwdriver 2014-12-20 13:06:53 +01:00
854415fd33 Fix typo in furnace.lua 2014-12-13 12:52:47 +01:00
99cfe73bbf Give 4 obsidianbrick for 4 obsidian 2014-12-12 17:15:48 +01:00
697b39d40d Only allow rotating nodes that could be dug 2014-12-12 16:14:25 +01:00
2b7ca68805 Cleanup
* Remove unused variables
* Fix wearing out of screwdriver
* Move magic numbers into constants
* Scale down texture
2014-12-12 16:14:25 +01:00
bd24c15db4 Screwdriver rewrite 2014-12-12 16:14:24 +01:00
69614dc20d Pinetree (by sfan5, from mg mapgen) lua generation and sapling ABM. Add checks for ignore to other trees 2014-12-12 16:11:42 +01:00
75dfcdb1e7 Add 3D signs 2014-12-12 16:10:30 +01:00
c332081e81 Add white to the crack texture
This makes the crack stand out better on dark textures,
like obsidian and black wool.
2014-12-12 16:06:55 +01:00
608e51f16d Add obsidianbrick
use Zeg9`s texture
2014-12-12 16:04:27 +01:00
b0fb180e4d Use an overlay over default_dirt.png for soil 2014-12-07 19:46:23 +01:00
2ebd6b3839 Correct node definitons for pine saplings and pine needles 2014-12-07 11:57:37 +01:00
5a06de184c Rewrite furnace
* Move furnace related code into furnace.lua
* Move duplicated code into functions
* Rewrite ABM:
	* Easier to follow strcuture (no returns in the middle)
	* No unnecessary calls to get_craft_result
	* Split logic and "visual feedback" (a bit)
	* Fewer calls to meta:set and meta:get
	* Better feedback on the current state of the furnace
2014-12-06 21:18:02 +01:00
957f94534b Remove remains of finite liquids from bucket mod
This reverts commit 79856c914d.
2014-12-06 20:58:03 +01:00
4ec4672f01 Remove remains of weather 2014-12-06 20:58:03 +01:00
954d64afdc Add a minetest.conf.example with all available settings 2014-12-06 20:56:52 +01:00
ef0eb4d435 Move doc for dyes to game_api.txt 2014-12-06 20:54:53 +01:00
11a7b88434 Fix visibility of global/local dye tables 2014-12-06 20:54:02 +01:00
9ec33f34f1 Set param2 to 1 if player places leaves 2014-12-06 20:36:20 +01:00
2c2edfad04 Move leafdecay doc to game_api.txt 2014-12-06 20:36:20 +01:00
22dd46dcc6 Dont dry out soil if unloaded blocks are nearby 2014-12-06 11:54:56 +01:00
20f938e44a Allow the group book to be placed into bookshelfs 2014-12-06 11:46:04 +01:00
fd34872de8 Fix possible stacking of books in bookshelf
Original author: @MT-Modder
2014-12-06 11:43:07 +01:00
31edc5a9ff Add all saplings to group sapling 2014-12-03 17:26:01 +01:00
19bdcb26f6 Add missing groups to pine sapling 2014-12-03 17:26:01 +01:00
5b7db48372 Fix various fire sound bugs 2014-12-03 16:59:36 +01:00
128f0adb24 Fix some undeclared global variables 2014-11-30 18:02:33 +01:00
6fb072e5ff Pine tree, pine needles, pine sapling and pinewood nodes, including textures by Splizard and Cisoun 2014-11-30 17:47:02 +01:00
8007c142de Added the new door textures 2014-11-30 17:34:35 +01:00
e707ba3cf1 Fix leaked globals. 2014-11-29 18:03:18 +01:00
6680a51988 New ladder texture 2014-11-23 11:54:40 +01:00
3bf3249d71 Fix leaking globals in flowers and default mapgen.lua
Signed-off-by: Craig Robbins <kde.psych@gmail.com>
2014-11-22 00:24:49 +10:00
e71b71c1a9 Default and flowers: only run on-generated functions in mgv6. Remove indev ore definitions 2014-11-16 19:38:04 +01:00
a90338d40d New flower textures 2014-11-08 23:45:18 +01:00
929559fe85 Revert "Fix fire blocking sunlight"
This reverts commit dcce6e9795.
2014-11-08 23:25:40 +01:00
c41762d211 New grass(plant) and leaves textures 2014-11-08 22:54:00 +01:00
f06d4b8547 Vessels: new textures 2014-11-08 17:39:52 +01:00
dcce6e9795 Fix fire blocking sunlight 2014-11-04 16:17:56 -05:00
d57cb0a110 Boats mod improve y motion. Smaller collision box. Reverse turn with negative velocity only. Smooth turning. Enable underwater higher acceleration 2014-10-29 10:54:39 +00:00
ba8cbbcdbd Add new ore blocks textures 2014-10-05 08:49:55 +02:00
56cc4191ca Tweak some textures, new chest texture 2014-10-03 11:29:17 +02:00
6532978a58 Add improved grass textures by @Philipbenr (slightly modified), fixes #323 2014-10-03 11:29:10 +02:00
349a63ed14 Allow only boat driver to be detached from boat (fixes #276) 2014-10-03 03:20:31 +02:00
7f44a49d99 Use new optional framed glasslike drawtype 2014-10-02 11:51:47 +02:00
5047540db2 Make new textures fit existing style 2014-09-27 20:33:17 +02:00
9dfaab7f20 Some new textures (natural beauty texturepack) 2014-09-27 20:10:58 +02:00
8fe62ea7f6 Use new firelike drawtype 2014-09-21 22:25:00 +02:00
c4969665e7 Fix dye stuff, fixes #243 2014-09-16 19:40:50 +02:00
9670c27161 Clean up treegen code 2014-09-16 18:38:11 +02:00
c32957f942 Enable dungeons by default 2014-09-16 18:26:32 +02:00
c95cd8414b Fix xpanes API 2014-09-16 17:11:54 +02:00
cc2573acdf Remove API from player.lua
It's now in game_api.txt
2014-09-16 17:07:43 +02:00
44dc611088 Fix farming unloaded node crash 2014-09-06 20:36:40 -04:00
49a8ddc822 Make sand and some leaves sounds quieter 2014-08-22 11:52:51 +02:00
11c04e984d Localize player_attached 2014-08-21 16:49:30 +02:00
ef1f66a64e Fix some farming stuff 2014-08-21 16:48:48 +02:00
a1aee9a68f Fix door hardness detection for open/close sounds 2014-08-07 13:47:01 +02:00
Jat
5dbc738dbd Add API doors : Sound for door open and close. 2014-08-07 12:42:37 +02:00
5b5aa493b5 Fix boat flying up and some tweaks 2014-08-07 12:27:40 +02:00
6967232619 Fix TNT init for undefined enable_tnt setting 2014-07-25 23:29:44 -04:00
263b6f2fdf Show filled buckets in creative inventory 2014-07-24 13:41:17 +02:00
0ca4520cc2 Rewrite TNT 2014-07-22 12:05:40 -04:00
ea3fcdd077 Pair door with door of any type
Mirror the setup of a door placed next to any door, not just next to
a door of the same type.  This is particularly useful where there are
multiple door types that have the same appearance, but one wants the
doors of a pair to have different behaviour in some other respect.
2014-07-22 13:41:32 +02:00
820e48badc Make open trapdoor climbable
When a trapdoor is mounted upside down, to make its top surface flush
with the floor above when closed, it is necessary to have some way to
climb through the trapdoor node when it's open.  Making it climbable
like a ladder satisfies this need.  It is somewhat realistic, as a real
trapdoor can have a ladder segment mounted on one face.  When the trapdoor
is mounted in its default orientation, making the bottom surface flush
with the ceiling below when closed, the climbability when open is not
strictly necessary, but is still a convenience.
2014-07-22 13:04:45 +02:00
c39b9b29de Improve message about screwdriver control
The message to "hold shift" makes an unwarranted assumption about the
user's keybindings.  Messages from the server should refer to a key's
game function, rather than its extragame identity.
2014-07-22 13:04:20 +02:00
a8ad9bfc9d Consistently use group:stick in tool recipes
The left-handed recipes for axes were using default:stick instead of
the group:stick used by all other tool recipes.
2014-07-22 13:03:45 +02:00
d4c24a30e9 Retain sign text when editing is aborted by <esc> 2014-07-22 13:00:20 +02:00
c8845e8d44 Fix desert_sand_soil dropping itself, and changed the descriptions 2014-07-22 12:56:20 +02:00
5175897cdc Alias string to cotton
Cotton plants used to drop strings, now they drop farming:cotton. Some mods (namely, throwing) still use farming:string, therefore we need farming:string to be equal farming:cotton.
2014-07-13 20:04:14 +02:00
c521cb06bf Better ingot textures 2014-07-13 19:37:01 +02:00
3180bdfe6c Add protection to TNT (by @tenplus1) 2014-07-13 19:24:57 +02:00
c993e14084 Add spaces around operators in boat mod code, fix a problem with boat staticdata, fix a crash that can occur with boat going over unknown nodes. 2014-07-09 09:47:51 +02:00
955f3cf310 Fix crafting recipe for iron bars 2014-07-08 19:10:55 +02:00
814c17631d Fix jump-stacking 2014-07-08 16:50:06 +02:00
ca7f6bb97a Convert spaces to tabs and add unknown node checks to xpanes 2014-07-06 21:49:47 -04:00
951 changed files with 4550 additions and 14744 deletions

27
.gitignore vendored Executable file → Normal file
View File

@ -1,22 +1,9 @@
## Files related to minetest development cycle
/*.patch
# GNU Patch reject file
*.rej
## Editors and Development environments
## Generic ignorable patterns and files
*~
*.swp
*.bak*
*.orig
# Vim
.*.swp
*bak*
tags
*.vim
# Kate
.*.kate-swp
.swp.*
# Eclipse (LDT)
.project
.settings/
.buildpath
.metadata
# Idea IDE
.idea/*
## Files related to minetest development cycle
*.patch

29
README.txt Executable file → Normal file
View File

@ -1,24 +1,23 @@
Minetest Game [minetest_game]
=============================
The main subgame for the Minetest engine
========================================
The main game for the Minetest game engine [minetest_game]
==========================================================
To use this subgame with the Minetest engine, insert this repository as
/games/minetest_game
To use this game with Minetest, insert this repository as
/games/minetest_game
in the Minetest Engine.
The Minetest engine can be found in:
https://github.com/minetest/minetest/
The Minetest Engine can be found in:
https://github.com/minetest/minetest/
Compatibility
--------------
The Minetest Game github master HEAD is generally compatible with the github
master HEAD of the Minetest engine.
The minetest_game github master HEAD is generally compatible with the github
master HEAD of minetest.
Additionally, when the Minetest engine is tagged to be a certain version (eg.
0.4.10), Minetest Game is tagged with the version too.
Additionally, when the minetest engine is tagged to be a certain version (eg.
0.4.10), minetest_game is tagged with the version too.
When stable releases are made, Minetest Game is packaged and made available in
http://minetest.net/download
When stable releases are made, minetest_game is packaged and made available in
http://minetest.net/download
and in case the repository has grown too much, it may be reset. In that sense,
this is not a "real" git repository. (Package maintainers please note!)
@ -50,4 +49,4 @@ Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
http://creativecommons.org/licenses/by-sa/3.0/
License of menu/header.png
Copyright (C) 2015 paramat CC BY-SA 3.0
Copyright (C) 2013 BlockMen CC BY-3.0

2
game.conf Executable file → Normal file
View File

@ -1 +1 @@
name = MinetestForFun Game
name = Minetest

788
game_api.txt Executable file → Normal file
View File

@ -1,459 +1,224 @@
Minetest Game API
=================
minetest_game API
======================
GitHub Repo: https://github.com/minetest/minetest_game
Introduction
------------
The Minetest Game subgame offers multiple new possibilities in addition to the Minetest engine's built-in API,
allowing you to add new plants to farming mod, buckets for new liquids, new stairs and custom panes.
The minetest_game gamemode offers multiple new possibilities in addition to Minetest's built-in API, allowing you to
add new plants to farming mod, buckets for new liquids, new stairs and custom panes.
For information on the Minetest API, visit https://github.com/minetest/minetest/blob/master/doc/lua_api.txt
Please note:
* [XYZ] refers to a section the Minetest API
* [#ABC] refers to a section in this document
* [pos] refers to a position table `{x = -5, y = 0, z = 200}`
[XYZ] refers to a section the Minetest API
[#ABC] refers to a section in this document
^ Explanation for line above
Bucket API
----------
The bucket API allows registering new types of buckets for non-default liquids.
bucket.register_liquid(
"default:lava_source", -- name of the source node
"default:lava_flowing", -- name of the flowing node
"bucket:bucket_lava", -- name of the new bucket item (or nil if liquid is not takeable)
"bucket_lava.png", -- texture of the new bucket item (ignored if itemname == nil)
"Lava Bucket", -- text description of the bucket item
{lava_bucket = 1}, -- groups of the bucket item, OPTIONAL
false -- force-renew, OPTIONAL. Force the liquid source to renew if it has
-- a source neighbour, even if defined as 'liquid_renewable = false'.
-- Needed to avoid creating holes in sloping rivers.
"default:lava_source", -- Source node name
"default:lava_flowing", -- Flowing node name
"bucket:bucket_lava", -- Name to be used for bucket
"bucket_lava.png", -- Bucket texture (for wielditem and inventory_image)
"Lava Bucket" -- Bucket description
)
The filled bucket item is returned to the player that uses an empty bucket pointing to the given liquid source.
When punching with an empty bucket pointing to an entity or a non-liquid node, the on_punch of the entity or node will be triggered.
Beds API
--------
beds.register_bed(
"beds:bed", -- Bed name
def -- See [#Bed definition]
"beds:bed", -- Bed name
def: See [#Bed definition] -- Bed definition
)
* `beds.read_spawns() ` Returns a table containing players respawn positions
* `beds.kick_players()` Forces all players to leave bed
* `beds.skip_night()` Sets world time to morning and saves respawn position of all players currently sleeping
beds.read_spawns() -- returns a table containing players respawn positions
beds.kick_players() -- forces all players to leave bed
beds.skip_night() -- sets world time to morning and saves respawn position of all players currently sleeping
### Bed definition
{
description = "Simple Bed",
inventory_image = "beds_bed.png",
wield_image = "beds_bed.png",
tiles = {
bottom = {'Tile definition'}, -- the tiles of the bottom part of the bed.
top = {Tile definition} -- the tiles of the bottom part of the bed.
},
nodebox = {
bottom = 'regular nodebox', -- bottom part of bed (see [Node boxes])
top = 'regular nodebox', -- top part of bed (see [Node boxes])
},
selectionbox = 'regular nodebox', -- for both nodeboxes (see [Node boxes])
recipe = { -- Craft recipe
{"group:wool", "group:wool", "group:wool"},
{"group:wood", "group:wood", "group:wood"}
}
#Bed definition
---------------
{
description = "Simple Bed",
inventory_image = "beds_bed.png",
wield_image = "beds_bed.png",
tiles = {
bottom = {[Tile definition],
^ the tiles of the bottom part of the bed
},
top = {[Tile definition],
^ the tiles of the bottom part of the bed
}
},
nodebox = {
bottom = regular nodebox, see [Node boxes], -- bottm part of bed
top = regular nodebox, see [Node boxes], -- top part of bed
},
selectionbox = regular nodebox, see [Node boxes], -- for both nodeboxes
recipe = { -- Craft recipe
{"group:wool", "group:wool", "group:wool"},
{"group:wood", "group:wood", "group:wood"}
}
Creative API
------------
A global string called `creative.formspec_add` was added which allows mods to add additional formspec elements onto the default creative inventory formspec to be drawn after each update.
}
Doors API
---------
The doors mod allows modders to register custom doors and trapdoors.
`doors.register_door(name, def)`
doors.register_door(name, def)
^ name: "Door name"
^ def: See [#Door definition]
-> Registers new door
* Registers new door
* `name` Name for door
* `def` See [#Door definition]
`doors.register_trapdoor(name, def)`
* Registers new trapdoor
* `name` Name for trapdoor
* `def` See [#Trapdoor definition]
`doors.register_fencegate(name, def)`
* Registers new fence gate
* `name` Name for fence gate
* `def` See [#Fence gate definition]
`doors.get(pos)`
* `pos` A position as a table, e.g `{x = 1, y = 1, z = 1}`
* Returns an ObjectRef to a door, or nil if the position does not contain a door
### Methods
:open(player) -- Open the door object, returns if door was opened
:close(player) -- Close the door object, returns if door was closed
:toggle(player) -- Toggle the door state, returns if state was toggled
:state() -- returns the door state, true = open, false = closed
the "player" parameter can be omitted in all methods. If passed then
the usual permission checks will be performed to make sure the player
has the permissions needed to open this door. If omitted then no
permission checks are performed.
### Door definition
doors.register_trapdoor(name, def)
^ name: "Trapdoor name"
^ def: See [#Trapdoor definition]
-> Registers new trapdoor
#Door definition
----------------
{
description = "Door description",
inventory_image = "mod_door_inv.png",
groups = {choppy = 2},
tiles = {"mod_door.png"}, -- UV map.
recipe = craftrecipe,
sounds = default.node_sound_wood_defaults(), -- optional
sound_open = sound play for open door, -- optional
sound_close = sound play for close door, -- optional
protected = false, -- If true, only placer can open the door (locked for others)
groups = {group = 1},
tiles_bottom: [Tile definition],
^ the tiles of the bottom part of the door {front, side}
tiles_top: [Tile definition],
^ the tiles of the bottom part of the door {front, side}
node_box_bottom = regular nodebox, see [Node boxes], OPTIONAL,
node_box_top = regular nodebox, see [Node boxes], OPTIONAL,
selection_box_bottom = regular nodebox, see [Node boxes], OPTIONAL,
selection_box_top = regular nodebox, see [Node boxes], OPTIONAL,
sound_open_door = sound play for open door, OPTIONAL,
sound_close_door = sound play for close door, OPTIONAL,
only_placer_can_open = true/false,
^ If true, only placer can open the door (locked for others)
}
### Trapdoor definition
description = "Trapdoor description",
inventory_image = "mod_trapdoor_inv.png",
groups = {choppy = 2},
tile_front = "doors_trapdoor.png", -- the texture for the front and back of the trapdoor
tile_side = "doors_trapdoor_side.png", -- the tiles of the four side parts of the trapdoor
sounds = default.node_sound_wood_defaults(), -- optional
sound_open = sound play for open door, -- optional
sound_close = sound play for close door, -- optional
protected = false, -- If true, only placer can open the door (locked for others)
### Fence gate definition
description = "Wooden Fence Gate",
texture = "default_wood.png",
material = "default:wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(), -- optional
Fence API
---------
Allows creation of new fences with "fencelike" drawtype.
`default.register_fence(name, item definition)`
Registers a new fence. Custom fields texture and material are required, as
are name and description. The rest is optional. You can pass most normal
nodedef fields here except drawtype. The fence group will always be added
for this node.
### fence definition
name = "default:fence_wood",
description = "Wooden Fence",
texture = "default_wood.png",
material = "default:wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
Walls API
---------
The walls API allows easy addition of stone auto-connecting wall nodes.
walls.register(name, desc, texture, mat, sounds)
^ name = "walls:stone_wall". Node name.
^ desc = "A Stone wall"
^ texture = "default_stone.png"
^ mat = "default:stone". Used to auto-generate crafting recipe.
^ sounds = sounds: see [#Default sounds]
#Trapdoor definition
----------------
{
tile_front = "doors_trapdoor.png",
^ the texture for the front and back of the trapdoor
tile_side: "doors_trapdoor_side.png",
^ the tiles of the four side parts of the trapdoor
sound_open = sound to play when opening the trapdoor, OPTIONAL,
sound_close = sound to play when closing the trapdoor, OPTIONAL,
-> You can add any other node definition properties for minetest.register_node,
such as wield_image, inventory_image, sounds, groups, description, ...
Only node_box, selection_box, tiles, drop, drawtype, paramtype, paramtype2, on_rightclick
will be overwritten by the trapdoor registration function
}
Farming API
-----------
The farming API allows you to easily register plants and hoes.
`farming.register_hoe(name, hoe definition)`
* Register a new hoe, see [#hoe definition]
farming.register_hoe(name, hoe definition)
-> Register a new hoe, see [#hoe definition]
`farming.register_plant(name, Plant definition)`
* Register a new growing plant, see [#Plant definition]
farming.register_plant(name, Plant definition)
-> Register a new growing plant, see [#Plant definition]
`farming.registered_plants[name] = definition`
* Table of registered plants, indexed by plant name
### Hoe Definition
{
description = "", -- Description for tooltip
inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image
max_uses = 30, -- Uses until destroyed
material = "", -- Material for recipes
recipe = { -- Craft recipe, if material isn't used
{"air", "air", "air"},
{"", "group:stick"},
{"", "group:stick"},
}
#Hoe Definition
---------------
{
description = "", -- Description for tooltip
inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image
max_uses = 30, -- Uses until destroyed
material = "", -- Material for recipes
recipe = { -- Craft recipe, if material isn't used
{"air", "air", "air"},
{"", "group:stick"},
{"", "group:stick"},
}
}
### Plant definition
{
description = "", -- Description of seed item
inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image
steps = 8, -- How many steps the plant has to grow, until it can be harvested
-- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
minlight = 13, -- Minimum light to grow
maxlight = default.LIGHT_MAX -- Maximum light to grow
}
Fire API
--------
New node def property:
`on_burn(pos)`
* Called when fire attempts to remove a burning node.
* `pos` Position of the burning node.
`on_ignite(pos, igniter)`
* Called when Flint and steel (or a mod defined ignitor) is used on a node.
Defining it may prevent the default action (spawning flames) from triggering.
* `pos` Position of the ignited node.
* `igniter` Player that used the tool, when available.
Give Initial Stuff API
----------------------
`give_initial_stuff.give(player)`
^ Give initial stuff to "player"
`give_initial_stuff.add(stack)`
^ Add item to the initial stuff
^ Stack can be an ItemStack or a item name eg: "default:dirt 99"
^ Can be called after the game has loaded
`give_initial_stuff.clear()`
^ Removes all items from the initial stuff
^ Can be called after the game has loaded
`give_initial_stuff.get_list()`
^ returns list of item stacks
`give_initial_stuff.set_list(list)`
^ List of initial items with numeric indices.
`give_initial_stuff.add_from_csv(str)`
^ str is a comma separated list of initial stuff
^ Adds items to the list of items to be given
Nyancat API
-----------
`nyancat.place(pos, facedir, length)`
^ Place a cat at `pos` facing `facedir` with tail length `length`
Only accepts facedir 0-3, if facedir > 3 then it will be interpreted as facedir = 0
`nyancat.generate(minp, maxp, seed)`
^ Called by `minetest.register_on_generated`. To disable nyancat generation,
you can redefine nyancat.generate() to be an empty function
TNT API
----------
`tnt.register_tnt(definition)`
^ Register a new type of tnt.
* `name` The name of the node. If no prefix is given `tnt` is used.
* `description` A description for your TNT.
* `radius` The radius within which the TNT can destroy nodes. The default is 3.
* `damage_radius` The radius within which the TNT can damage players and mobs. By default it is twice the `radius`.
* `disable_drops` Disable drops. By default it is set to false.
* `ignore_protection` Don't check `minetest.is_protected` before removing a node.
* `ignore_on_blast` Don't call `on_blast` even if a node has one.
* `tiles` Textures for node
* `side` Side tiles. By default the name of the tnt with a suffix of `_side.png`.
* `top` Top tile. By default the name of the tnt with a suffix of `_top.png`.
* `bottom` Bottom tile. By default the name of the tnt with a suffix of `_bottom.png`.
* `burning` Top tile when lit. By default the name of the tnt with a suffix of `_top_burning_animated.png".
`tnt.boom(position, definition)`
^ Create an explosion.
* `position` The center of explosion.
* `definition` The TNT definion as passed to `tnt.register`
`tnt.burn(position, [nodename])`
^ Ignite TNT at position, nodename isn't required unless already known.
To make dropping items from node inventories easier, you can use the
following helper function from 'default':
default.get_inventory_drops(pos, inventory, drops)
^ Return drops from node inventory "inventory" in drops.
* `pos` - the node position
* `inventory` - the name of the inventory (string)
* `drops` - an initialized list
The function returns no values. The drops are returned in the `drops`
parameter, and drops is not reinitialized so you can call it several
times in a row to add more inventory items to it.
`on_blast` callbacks:
Both nodedefs and entitydefs can provide an `on_blast()` callback
`nodedef.on_blast(pos, intensity)`
^ Allow drop and node removal overriding
* `pos` - node position
* `intensity` - TNT explosion measure. larger or equal to 1.0
^ Should return a list of drops (e.g. {"default:stone"})
^ Should perform node removal itself. If callback exists in the nodedef
^ then the TNT code will not destroy this node.
`entitydef.on_blast(luaobj, damage)`
^ Allow TNT effects on entities to be overridden
* `luaobj` - LuaEntityRef of the entity
* `damage` - suggested HP damage value
^ Should return a list of (bool do_damage, bool do_knockback, table drops)
* `do_damage` - if true then TNT mod wil damage the entity
* `do_knockback` - if true then TNT mod will knock the entity away
* `drops` - a list of drops, e.g. {"wool:red"}
#Plant definition
-----------------
{
description = "", -- Description of seed item
inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image
steps = 8, -- How many steps the plant has to grow, until it can be harvested
^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
minlight = 13, -- Minimum light to grow
maxlight = default.LIGHT_MAX -- Maximum light to grow
}
Screwdriver API
---------------
The screwdriver API allows you to control a node's behaviour when a screwdriver is used on it.
To use it, add the `on_screwdriver` function to the node definition.
`on_rotate(pos, node, user, mode, new_param2)`
* `pos` Position of the node that the screwdriver is being used on
* `node` that node
* `user` The player who used the screwdriver
* `mode` screwdriver.ROTATE_FACE or screwdriver.ROTATE_AXIS
* `new_param2` the new value of param2 that would have been set if on_rotate wasn't there
* return value: false to disallow rotation, nil to keep default behaviour, true to allow
it but to indicate that changed have already been made (so the screwdriver will wear out)
* use `on_rotate = false` to always disallow rotation
* use `on_rotate = screwdriver.rotate_simple` to allow only face rotation
Sethome API
-----------
The sethome API adds three global functions to allow mods to read a players home position,
set a players home position and teleport a player to home position.
`sethome.get(name)`
* `name` Player who's home position you wish to get
* return value: false if no player home coords exist, position table if true
`sethome.set(name, pos)`
* `name` Player who's home position you wish to set
* `pos` Position table containing coords of home position
* return value: false if unable to set and save new home position, otherwise true
`sethome.go(name)`
* `name` Player you wish to teleport to their home position
* return value: false if player cannot be sent home, otherwise true
To use it, add the on_screwdriver function to the node definition.
on_rotate(pos, node, user, mode, new_param2)
^ pos: position of the node that the screwdriver is being used on
^ node: that node
^ user: the player who used the screwdriver
^ mode: screwdriver.ROTATE_FACE or screwdriver.ROTATE_AXIS
^ new_param2: the new value of param2 that would have been set if on_rotate wasn't there
^ return value: false to disallow rotation, nil to keep default behaviour, true to allow
it but to indicate that changed have already been made (so the screwdriver will wear out)
^ use on_rotate = screwdriver.disallow to always disallow rotation
^ use on_rotate = screwdriver.rotate_simple to allow only face rotation
Stairs API
----------
The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those
delivered with Minetest Game, to keep them compatible with other mods.
delivered with minetest_game, to keep them compatible with other mods.
`stairs.register_stair(subname, recipeitem, groups, images, description, sounds)`
stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
-> Registers a stair.
-> subname: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
-> recipeitem: Item used in the craft recipe, e.g. "default:cobble"
-> groups: see [Known damage and digging time defining groups]
-> images: see [Tile definition]
-> description: used for the description field in the stair's definition
-> sounds: see [#Default sounds]
* Registers a stair.
* `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
* `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil`
* `groups`: see [Known damage and digging time defining groups]
* `images`: see [Tile definition]
* `description`: used for the description field in the stair's definition
* `sounds`: see [#Default sounds]
stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
-> Registers a slabs
-> subname: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
-> recipeitem: Item used in the craft recipe, e.g. "default:cobble"
-> groups: see [Known damage and digging time defining groups]
-> images: see [Tile definition]
-> description: used for the description field in the stair's definition
-> sounds: see [#Default sounds]
`stairs.register_slab(subname, recipeitem, groups, images, description, sounds)`
* Registers a slabs
* `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
* `recipeitem`: Item used in the craft recipe, e.g. "default:cobble"
* `groups`: see [Known damage and digging time defining groups]
* `images`: see [Tile definition]
* `description`: used for the description field in the stair's definition
* `sounds`: see [#Default sounds]
`stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)`
* A wrapper for stairs.register_stair and stairs.register_slab
* Uses almost the same arguments as stairs.register_stair
* `desc_stair`: Description for stair node
* `desc_slab`: Description for slab node
stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)
-> A wrapper for stairs.register_stair and stairs.register_slab
-> Uses almost the same arguments as stairs.register_stair
-> desc_stair: Description for stair node
-> desc_slab: Description for slab node
Xpanes API
----------
Creates panes that automatically connect to each other
`xpanes.register_pane(subname, def)`
xpanes.register_pane(subname, def)
-> subname: used for nodename. Result: "xpanes:subname" and "xpanes:subname_{2..15}"
-> def: See [#Pane definition]
* `subname`: used for nodename. Result: "xpanes:subname" and "xpanes:subname_{2..15}"
* `def`: See [#Pane definition]
### Pane definition
{
textures = {"texture for sides", (unused), "texture for top and bottom"}, -- More tiles aren't supported
groups = {group = rating}, -- Uses the known node groups, see [Known damage and digging time defining groups]
sounds = SoundSpec, -- See [#Default sounds]
recipe = {{"","","","","","","","",""}}, -- Recipe field only
}
#Pane definition
----------------
{
textures = {"texture_Bottom_top", "texture_left_right", "texture_front_back"},
^ More tiles aren't supported
groups = {group = rating},
^ Uses the known node groups, see [Known damage and digging time defining groups]
sounds = SoundSpec,
^ See [#Default sounds]
recipe = {{"","","","","","","","",""}},
^ Recipe field only
}
Raillike definitions
--------------------
The following nodes use the group `connect_to_raillike` and will only connect to
raillike nodes within this group and the same group value.
Use `minetest.raillike_group(<Name>)` to get the group value.
| Node type | Raillike group name
|-----------------------|---------------------
| default:rail | "rail"
| tnt:gunpowder | "gunpowder"
| Node type | Raillike group name
+-----------------------+----------------------------------
| default:rail | "rail"
| tnt:gunpowder | "gunpowder"
| tnt:gunpowder_burning | "gunpowder"
Example:
@ -464,189 +229,156 @@ of your node.
Default sounds
--------------
Sounds inside the default table can be used within the sounds field of node definitions.
* `default.node_sound_defaults()`
* `default.node_sound_stone_defaults()`
* `default.node_sound_dirt_defaults()`
* `default.node_sound_sand_defaults()`
* `default.node_sound_wood_defaults()`
* `default.node_sound_leaves_defaults()`
* `default.node_sound_glass_defaults()`
* `default.node_sound_metal_defaults()`
default.node_sound_defaults()
default.node_sound_stone_defaults()
default.node_sound_dirt_defaults()
default.node_sound_sand_defaults()
default.node_sound_wood_defaults()
default.node_sound_leaves_defaults()
default.node_sound_glass_defaults()
Default constants
-----------------
`default.LIGHT_MAX` The maximum light level (see [Node definition] light_source)
default.LIGHT_MAX
^ The maximum light level (see [Node definition] light_source)
Player API
----------
The player API can register player models and update the player's appearence
`default.player_register_model(name, def)`
default.player_register_model(name, def)
^ Register a new model to be used by players.
-> name: model filename such as "character.x", "foo.b3d", etc.
-> def: See [#Model definition]
* Register a new model to be used by players.
* name: model filename such as "character.x", "foo.b3d", etc.
* def: See [#Model definition]
default.registered_player_models[name]
^ Get a model's definition
-> see [#Model definition]
`default.registered_player_models[name]`
default.player_set_model(player, model_name)
^ Change a player's model
-> player: PlayerRef
-> model_name: model registered with player_register_model()
* Get a model's definition
* see [#Model definition]
default.player_set_animation(player, anim_name [, speed])
^ Applies an animation to a player
-> anim_name: name of the animation.
-> speed: frames per second. If nil, default from the model is used
`default.player_set_model(player, model_name)`
* Change a player's model
* `player`: PlayerRef
* `model_name`: model registered with player_register_model()
`default.player_set_animation(player, anim_name [, speed])`
* Applies an animation to a player
* anim_name: name of the animation.
* speed: frames per second. If nil, default from the model is used
`default.player_set_textures(player, textures)`
* Sets player textures
* `player`: PlayerRef
* `textures`: array of textures, If `textures` is nil, the default textures from the model def are used
default.player_set_textures(player, textures)
^ Sets player textures
-> player: PlayerRef
-> textures: array of textures
^ If <textures> is nil, the default textures from the model def are used
default.player_get_animation(player)
^ Returns a table containing fields "model", "textures" and "animation".
^ Any of the fields of the returned table may be nil.
-> player: PlayerRef
* Returns a table containing fields `model`, `textures` and `animation`.
* Any of the fields of the returned table may be nil.
* player: PlayerRef
### Model Definition
{
animation_speed = 30, -- Default animation speed, in FPS.
textures = {"character.png", }, -- Default array of textures.
visual_size = {x = 1, y = 1}, -- Used to scale the model.
animations = {
-- <anim_name> = {x = <start_frame>, y = <end_frame>},
foo = {x = 0, y = 19},
bar = {x = 20, y = 39},
Model Definition
----------------
{
animation_speed = 30, -- Default animation speed, in FPS.
textures = {"character.png", }, -- Default array of textures.
visual_size = {x=1, y=1,}, -- Used to scale the model.
animations = {
-- <anim_name> = { x=<start_frame>, y=<end_frame>, },
foo = { x= 0, y=19, },
bar = { x=20, y=39, },
-- ...
},
}
},
}
Leafdecay
---------
To enable leaf decay for a node, add it to the "leafdecay" group.
To enable leaf decay for a node, add it to the `leafdecay` group.
The rating of the group determines how far from a node in the group `tree`
The rating of the group determines how far from a node in the group "tree"
the node can be without decaying.
If `param2` of the node is ~= 0, the node will always be preserved. Thus, if
the player places a node of that kind, you will want to set `param2 = 1` or so.
If param2 of the node is ~= 0, the node will always be preserved. Thus, if
the player places a node of that kind, you will want to set param2=1 or so.
The function `default.after_place_leaves` can be set as `after_place_node of a node`
The function default.after_place_leaves can be set as after_place_node of a node
to set param2 to 1 if the player places the node (should not be used for nodes
that use param2 otherwise (e.g. facedir)).
If the node is in the `leafdecay_drop` group then it will always be dropped as an
If the node is in the leafdecay_drop group then it will always be dropped as an
item.
Dyes
----
To make recipes that will work with any dye ever made by anybody, define
them based on groups. You can select any group of groups, based on your need for
amount of colors.
### Color groups
#Color groups
-------------
Base color groups:
- basecolor_white
- basecolor_grey
- basecolor_black
- basecolor_red
- basecolor_yellow
- basecolor_green
- basecolor_cyan
- basecolor_blue
- basecolor_magenta
* `basecolor_white`
* `basecolor_grey`
* `basecolor_black`
* `basecolor_red`
* `basecolor_yellow`
* `basecolor_green`
* `basecolor_cyan`
* `basecolor_blue`
* `basecolor_magenta`
Extended color groups ( * means also base color )
* `excolor_white` *
* `excolor_lightgrey`
* `excolor_grey` *
* `excolor_darkgrey`
* `excolor_black` *
* `excolor_red` *
* `excolor_orange`
* `excolor_yellow` *
* `excolor_lime`
* `excolor_green` *
* `excolor_aqua`
* `excolor_cyan` *
* `excolor_sky_blue`
* `excolor_blue` *
* `excolor_violet`
* `excolor_magenta` *
* `excolor_red_violet`
Extended color groups (* = equal to a base color):
* excolor_white
- excolor_lightgrey
* excolor_grey
- excolor_darkgrey
* excolor_black
* excolor_red
- excolor_orange
* excolor_yellow
- excolor_lime
* excolor_green
- excolor_aqua
* excolor_cyan
- excolor_sky_blue
* excolor_blue
- excolor_violet
* excolor_magenta
- excolor_red_violet
The whole unifieddyes palette as groups:
* `unicolor_<excolor>`
- unicolor_<excolor>
For the following, no white/grey/black is allowed:
* `unicolor_medium_<excolor>`
* `unicolor_dark_<excolor>`
* `unicolor_light_<excolor>`
* `unicolor_<excolor>_s50`
* `unicolor_medium_<excolor>_s50`
* `unicolor_dark_<excolor>_s50`
- unicolor_medium_<excolor>
- unicolor_dark_<excolor>
- unicolor_light_<excolor>
- unicolor_<excolor>_s50
- unicolor_medium_<excolor>_s50
- unicolor_dark_<excolor>_s50
Example of one shapeless recipe using a color group:
minetest.register_craft({
type = "shapeless",
output = '<mod>:item_yellow',
recipe = {'<mod>:item_no_color', 'group:basecolor_yellow'},
})
minetest.register_craft({
type = "shapeless",
output = '<mod>:item_yellow',
recipe = {'<mod>:item_no_color', 'group:basecolor_yellow'},
})
#Color lists
------------
dye.basecolors
^ Array containing the names of available base colors
### Color lists
* `dye.basecolors` are an array containing the names of available base colors
* `dye.excolors` are an array containing the names of the available extended colors
dye.excolors
^ Array containing the names of the available extended colors
Trees
-----
default.grow_tree(pos, is_apple_tree)
^ Grows a tree or apple tree at pos
* `default.grow_tree(pos, is_apple_tree)`
* Grows a mgv6 tree or apple tree at pos
default.grow_jungle_tree(pos)
^ Grows a jungletree at pos
* `default.grow_jungle_tree(pos)`
* Grows a mgv6 jungletree at pos
* `default.grow_pine_tree(pos)`
* Grows a mgv6 pinetree at pos
* `default.grow_new_apple_tree(pos)`
* Grows a new design apple tree at pos
* `default.grow_new_jungle_tree(pos)`
* Grows a new design jungle tree at pos
* `default.grow_new_pine_tree(pos)`
* Grows a new design pine tree at pos
* `default.grow_new_acacia_tree(pos)`
* Grows a new design acacia tree at pos
* `default.grow_new_aspen_tree(pos)`
* Grows a new design aspen tree at pos
* `default.grow_new_snowy_pine_tree(pos)`
* Grows a new design snowy pine tree at pos
default.grow_pine_tree(pos)
^ Grows a pinetree at pos

Binary file not shown.

Before

Width:  |  Height:  |  Size: 904 B

After

Width:  |  Height:  |  Size: 79 KiB

0
menu/icon.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

3
minetest.conf Executable file → Normal file
View File

@ -1,3 +0,0 @@
# Enable jungles on new worlds, disable biome blend and mud flow (faster, looks better).
mgv6_spflags = jungles, nobiomeblend, nomudflow
disable_fire = true

31
minetest.conf.example Executable file → Normal file
View File

@ -1,32 +1,21 @@
# This file contains settings of Minetest Game that can be changed in minetest.conf
# This file contains settings of minetest_game that can be changed in
# minetest.conf
#
# By default, all the settings are commented and not functional.
# Uncomment settings by removing the preceding #.
# Whether creative mode (fast digging of all blocks, unlimited resources) should be enabled
#creative_mode = false
# Sets the behaviour of the inventory items when a player dies.
# "bones": Store all items inside a bone node but drop items if inside protected area
# "drop": Drop all items on the ground
# "keep": Player keeps all items
#bones_mode = "bones"
# The time in seconds after which the bones of a dead player can be looted by everyone
# 0 to disable
#share_bones_time = 1200
# How much earlier the bones of a dead player can be looted by
# everyone if the player dies in a protected area they don't own.
# 0 to disable. By default it is "share_bones_time" divide by four.
#share_bones_time_early = 300
# Whether fire should be disabled (all fire nodes will instantly disappear)
#disable_fire = false
# Whether fire should be enabled. If disabled, 'basic flame' nodes will disappear.
# 'permanent flame' nodes will remain with either setting.
#enable_fire = true
# Whether the stuff in initial_stuff should be given to new players
# Whether steel tools, torches and cobblestone should be given to new players
#give_initial_stuff = false
#initial_stuff = default:pick_steel,default:axe_steel,default:shovel_steel,default:torch 99,default:cobble 99
# Whether the TNT mod should be enabled
#enable_tnt = <true in singleplayer, false in multiplayer>
@ -37,11 +26,3 @@
# Enable the stairs mod ABM that replaces the old 'upside down'
# stair and slab nodes in old maps with the new param2 versions.
#enable_stairs_replace_abm = false
# Whether you allow respawning in beds
# Default value is true
#enable_bed_respawn = true
# Whether players can skip night by sleeping
# Default value is true
#enable_bed_night_skip = true

View File

@ -1,9 +0,0 @@
----------------------------------------
-- Server Misc Mod - pre-default init --
----------------------------------------
local cwd = minetest.get_modpath(minetest.get_current_modname())
-- Inventory refill function override
-- see https://github.com/MinetestForFun/server-minetestforfun/issues/462
dofile(cwd.."/inventory_rotate_node.lua")

View File

@ -1,22 +0,0 @@
--rewrite function minetest.rotate_node(itemstack, placer, pointed_thing) to refill inventory
local old_rotate_node = minetest.rotate_node
function minetest.rotate_node(itemstack, placer, pointed_thing)
local stack_name = itemstack:get_name()
local ret = old_rotate_node(itemstack, placer, pointed_thing)
if ret:get_count() == 0 and not minetest.setting_getbool("creative_mode") then
local index = placer:get_wield_index()
local inv = placer:get_inventory()
if inv:get_list("main") then
for i, stack in ipairs(inv:get_list("main")) do
if i ~= index and stack:get_name() == stack_name then
ret:add_item(stack)
stack:clear()
inv:set_stack("main", i, stack)
minetest.log("action", "Inventory Tweaks: refilled stack("..stack_name..") of " .. placer:get_player_name())
break
end
end
end
end
return ret
end

18
mods/beds/Changelog.txt Normal file
View File

@ -0,0 +1,18 @@
1.0.1 beta
----------
- Add backwards compatibility with PilzAdam's beds mod
- Fix placement
- Fix small bugs
- Prevent possible crash
1.1
---
- Add fancy bed model (based on jp's model)
- Add API to register beds
- Allow players always to detach from bed (by donat-b)
- If more than 50% of players want sleep they can skip the night
- Don't show sleep dialog in singleplayer
1.1.1
-----
- Prevent possbile crash by trying to reposition leaving players

7
mods/beds/README.txt Executable file → Normal file
View File

@ -1,5 +1,5 @@
Minetest Game mod: beds
=======================
Minetest mod "Beds"
===================
by BlockMen (c) 2014-2015
Version: 1.1.1
@ -14,8 +14,7 @@ if more than 50% of the players are lying in bed and use this option.
Another feature is a controled respawning. If you have slept in bed (not just lying in it) your respawn point
is set to the beds location and you will respawn there after death.
You can disable the respawn at beds by setting "enable_bed_respawn = false" in minetest.conf
You can also disable the night skip feature by setting "enable_bed_night_skip = false" in minetest.conf or by using
the /set command ingame.
License of source code, textures: WTFPL

14
mods/beds/api.lua Executable file → Normal file
View File

@ -18,6 +18,7 @@ function beds.register_bed(name, def)
selection_box = {
type = "fixed",
fixed = def.selectionbox,
},
after_place_node = function(pos, placer, itemstack)
local n = minetest.get_node_or_nil(pos)
@ -35,7 +36,7 @@ function beds.register_bed(name, def)
end
minetest.set_node(p, {name = n.name:gsub("%_bottom", "_top"), param2 = n.param2})
return false
end,
end,
on_destruct = function(pos)
local n = minetest.get_node_or_nil(pos)
if not n then return end
@ -46,12 +47,6 @@ function beds.register_bed(name, def)
minetest.remove_node(p)
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local name = digger:get_player_name()
if not name or name == "" then return end
beds.spawn[name] = nil
beds.save_spawns()
end,
on_rightclick = function(pos, node, clicker)
beds.on_rightclick(pos, clicker)
end,
@ -94,13 +89,16 @@ function beds.register_bed(name, def)
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
pointable = false,
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 2},
sounds = default.node_sound_wood_defaults(),
node_box = {
type = "fixed",
fixed = def.nodebox.top,
},
selection_box = {
type = "fixed",
fixed = {0, 0, 0, 0, 0, 0},
},
})
minetest.register_alias(name, name .. "_bottom")

176
mods/beds/beds.lua Executable file → Normal file
View File

@ -1,92 +1,88 @@
for _, colour in pairs({"red", "white", "black", "blue", "green"}) do-- fancy shaped bed
beds.register_bed("beds:fancy_bed_" .. colour, {
description = "Fancy Bed (" .. colour .. ")",
inventory_image = "beds_bed_fancy_" .. colour .. ".png",
wield_image = "beds_bed_fancy_" .. colour .. ".png",
tiles = {
bottom = {
"beds_bed_top1_" .. colour .. ".png",
"default_wood.png",
"beds_bed_side1_" .. colour .. ".png",
"beds_bed_side1_" .. colour .. ".png^[transformFX",
"default_wood.png",
"beds_bed_foot_" .. colour .. ".png",
},
top = {
"beds_bed_top2_" .. colour .. ".png",
"default_wood.png",
"beds_bed_side2_" .. colour .. ".png",
"beds_bed_side2_" .. colour .. ".png^[transformFX",
"beds_bed_head.png",
"default_wood.png",
}
},
nodebox = {
bottom = {
{-0.5, -0.5, -0.5, -0.375, -0.065, -0.4375},
{0.375, -0.5, -0.5, 0.5, -0.065, -0.4375},
{-0.5, -0.375, -0.5, 0.5, -0.125, -0.4375},
{-0.5, -0.375, -0.5, -0.4375, -0.125, 0.5},
{0.4375, -0.375, -0.5, 0.5, -0.125, 0.5},
{-0.4375, -0.3125, -0.4375, 0.4375, -0.0625, 0.5},
},
top = {
{-0.5, -0.5, 0.4375, -0.375, 0.1875, 0.5},
{0.375, -0.5, 0.4375, 0.5, 0.1875, 0.5},
{-0.5, 0, 0.4375, 0.5, 0.125, 0.5},
{-0.5, -0.375, 0.4375, 0.5, -0.125, 0.5},
{-0.5, -0.375, -0.5, -0.4375, -0.125, 0.5},
{0.4375, -0.375, -0.5, 0.5, -0.125, 0.5},
{-0.4375, -0.3125, -0.5, 0.4375, -0.0625, 0.4375},
}
},
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5},
recipe = {
{"", "", "group:stick"},
{"wool:" .. colour, "wool:" .. colour, "wool:white"},
{"group:wood", "group:wood", "group:wood"},
},
})
-- fancy shaped bed
beds.register_bed("beds:fancy_bed", {
description = "Fancy Bed",
inventory_image = "beds_bed_fancy.png",
wield_image = "beds_bed_fancy.png",
tiles = {
bottom = {
"beds_bed_top1.png",
"default_wood.png",
"beds_bed_side1.png",
"beds_bed_side1.png^[transformFX",
"default_wood.png",
"beds_bed_foot.png",
},
top = {
"beds_bed_top2.png",
"default_wood.png",
"beds_bed_side2.png",
"beds_bed_side2.png^[transformFX",
"beds_bed_head.png",
"default_wood.png",
}
},
nodebox = {
bottom = {
{-0.5, -0.5, -0.5, -0.375, -0.065, -0.4375},
{0.375, -0.5, -0.5, 0.5, -0.065, -0.4375},
{-0.5, -0.375, -0.5, 0.5, -0.125, -0.4375},
{-0.5, -0.375, -0.5, -0.4375, -0.125, 0.5},
{0.4375, -0.375, -0.5, 0.5, -0.125, 0.5},
{-0.4375, -0.3125, -0.4375, 0.4375, -0.0625, 0.5},
},
top = {
{-0.5, -0.5, 0.4375, -0.375, 0.1875, 0.5},
{0.375, -0.5, 0.4375, 0.5, 0.1875, 0.5},
{-0.5, 0, 0.4375, 0.5, 0.125, 0.5},
{-0.5, -0.375, 0.4375, 0.5, -0.125, 0.5},
{-0.5, -0.375, -0.5, -0.4375, -0.125, 0.5},
{0.4375, -0.375, -0.5, 0.5, -0.125, 0.5},
{-0.4375, -0.3125, -0.5, 0.4375, -0.0625, 0.4375},
}
},
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5},
recipe = {
{"", "", "group:stick"},
{"wool:red", "wool:red", "wool:white"},
{"group:wood", "group:wood", "group:wood"},
},
})
-- simple shaped bed
beds.register_bed("beds:bed_" .. colour, {
description = "Simple Bed (" .. colour .. ")",
inventory_image = "beds_bed_" .. colour .. ".png",
wield_image = "beds_bed_" .. colour .. ".png",
tiles = {
bottom = {
"beds_bed_top_bottom_" .. colour .. ".png^[transformR90",
"default_wood.png",
"beds_bed_side_bottom_r_" .. colour .. ".png",
"beds_bed_side_bottom_r_" .. colour .. ".png^[transformfx",
"beds_transparent.png",
"beds_bed_side_bottom_" .. colour .. ".png"
},
top = {
"beds_bed_top_top_" .. colour .. ".png^[transformR90",
"default_wood.png",
"beds_bed_side_top_r_" .. colour .. ".png",
"beds_bed_side_top_r_" .. colour .. ".png^[transformfx",
"beds_bed_side_top.png",
"beds_transparent.png",
}
},
nodebox = {
bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
},
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5},
recipe = {
{"wool:" .. colour, "wool:" .. colour, "wool:white"},
{"group:wood", "group:wood", "group:wood"}
},
})
end
-- simple shaped bed
beds.register_bed("beds:bed", {
description = "Simple Bed",
inventory_image = "beds_bed.png",
wield_image = "beds_bed.png",
tiles = {
bottom = {
"beds_bed_top_bottom.png^[transformR90",
"default_wood.png",
"beds_bed_side_bottom_r.png",
"beds_bed_side_bottom_r.png^[transformfx",
"beds_transparent.png",
"beds_bed_side_bottom.png"
},
top = {
"beds_bed_top_top.png^[transformR90",
"default_wood.png",
"beds_bed_side_top_r.png",
"beds_bed_side_top_r.png^[transformfx",
"beds_bed_side_top.png",
"beds_transparent.png",
}
},
nodebox = {
bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
},
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5},
recipe = {
{"wool:red", "wool:red", "wool:white"},
{"group:wood", "group:wood", "group:wood"}
},
minetest.register_alias("beds:bed", "beds:bed_red")
minetest.register_alias("beds:fancy_bed", "beds:fancy_bed_red")
minetest.register_alias("beds:bed_bottom", "beds:bed_red_bottom")
minetest.register_alias("beds:bed_top", "beds:bed_red_top")
minetest.register_alias("beds:fancy_bed_top", "beds:fancy_bed_red_top")
minetest.register_alias("beds:fancy_bed_bottom", "beds:fancy_bed_red_bottom")
})
-- aliases for PA's beds mod
minetest.register_alias("beds:bed_bottom_red", "beds:bed_bottom")
minetest.register_alias("beds:bed_top_red", "beds:bed_top")

1
mods/beds/depends.txt Executable file → Normal file
View File

@ -1,3 +1,2 @@
default
wool
areas

96
mods/beds/functions.lua Executable file → Normal file
View File

@ -1,4 +1,3 @@
local pi = math.pi
local player_in_bed = 0
local is_sp = minetest.is_singleplayer()
local enable_respawn = minetest.setting_getbool("enable_bed_respawn")
@ -12,24 +11,16 @@ end
local function get_look_yaw(pos)
local n = minetest.get_node(pos)
if n.param2 == 1 then
return pi/2, n.param2
return 7.9, n.param2
elseif n.param2 == 3 then
return -pi/2, n.param2
return 4.75, n.param2
elseif n.param2 == 0 then
return pi, n.param2
return 3.15, n.param2
else
return 0, n.param2
return 6.28, n.param2
end
end
local function is_night_skip_enabled()
local enable_night_skip = minetest.setting_getbool("enable_bed_night_skip")
if enable_night_skip == nil then
enable_night_skip = true
end
return enable_night_skip
end
local function check_in_beds(players)
local in_bed = beds.player
if not players then
@ -65,7 +56,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
if skip then
return
end
if p then
if p then
player:setpos(p)
end
@ -109,8 +100,8 @@ local function update_formspecs(finished)
"label[2.7,11; Good morning.]"
else
form_n = beds.formspec ..
"label[2.2,11;"..tostring(player_in_bed).." of "..tostring(ges).." players are in bed]"
if is_majority and is_night_skip_enabled() then
"label[2.2,11;"..tostring(player_in_bed).." of "..tostring(ges).." players are in bed]"
if is_majority then
form_n = form_n ..
"button_exit[2,8;4,0.75;force;Force night skip]"
end
@ -163,46 +154,24 @@ function beds.on_rightclick(pos, player)
-- skip the night and let all players stand up
if check_in_beds() then
minetest.after(2, function()
beds.skip_night()
if not is_sp then
update_formspecs(is_night_skip_enabled())
end
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
update_formspecs(true)
end
beds.kick_players()
end)
end
end
-- callbacks
--[[ --MFF (Crabman) It's useless to read each join player, read only once at load. function moved/called in spawn.lua
minetest.register_on_joinplayer(function(player)
beds.read_spawns()
end)
--]]
local dead_players = {}
local have_areas_mod = false
if (minetest.get_modpath("areas") ~= nil) and areas.getSpawn then
have_areas_mod = true
end
local function teleport_player(player, clear)
local name = player:get_player_name()
if not name or name == "" then return false end
if have_areas_mod and dead_players[name] ~= nil then
local pos = areas:getSpawn(dead_players[name])
if clear then
dead_players[name] = nil
end
if pos then
player:setpos(pos)
return true
end
end
-- respawn player at bed if enabled and valid position is found
minetest.register_on_respawnplayer(function(player)
if not enable_respawn then
return false
end
@ -212,42 +181,17 @@ local function teleport_player(player, clear)
player:setpos(pos)
return true
end
--if not areas or bed spawnpoint, tp to the spawn
local spawn = minetest.string_to_pos(minetest.setting_get("static_spawnpoint") or "0,0,0")
player:setpos(spawn)
return false
end
minetest.register_on_dieplayer(function(player)
local name = player:get_player_name()
if not name or name == "" then return end
if have_areas_mod then
local pos = player:getpos()
if pos then
dead_players[name] = pos
end
end
minetest.after(0.20, teleport_player, player) -- tp after all others on_dieplayer callback otherwise their pos is wrong
end)
-- respawn player at bed if enabled and valid position is found
minetest.register_on_respawnplayer(function(player)
return teleport_player(player, true)
end)
minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name()
lay_down(player, nil, nil, false, true)
beds.player[name] = nil
if check_in_beds() then
minetest.after(2, function()
update_formspecs(is_night_skip_enabled())
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
end
beds.skip_night()
update_formspecs(true)
beds.kick_players()
end)
end
end)
@ -262,10 +206,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
if fields.force then
update_formspecs(is_night_skip_enabled())
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
end
beds.skip_night()
update_formspecs(true)
beds.kick_players()
end
end)

0
mods/beds/init.lua Executable file → Normal file
View File

View File

@ -1,160 +0,0 @@
# Blender v2.69 (sub 0) OBJ File: ''
# www.blender.org
mtllib fancy_bed.mtl
o mattress_Mattress_nodebox-6_none.001_fancy_bed.png.001
v 0.437500 -0.312500 -0.437501
v 0.437500 -0.062500 -0.437501
v 0.437500 -0.062500 1.437499
v 0.437500 -0.312500 1.437499
v -0.437500 -0.312500 -0.437501
v -0.437500 -0.312500 1.437499
v -0.437500 -0.062500 1.437499
v -0.437500 -0.062500 -0.437501
v 0.437500 -0.176793 -0.437501
v -0.437500 -0.176793 -0.437501
vt 0.000171 0.499972
vt 0.000161 0.000182
vt 0.999791 0.000253
vt 0.999873 0.500022
vt 0.749576 0.000208
vt 0.749876 0.499854
vt 0.999848 0.999750
vt 0.000152 0.999750
vt 0.749276 0.130648
vt 0.000112 0.130648
g mattress_Mattress_nodebox-6_none.001_fancy_bed.png.001_none.001_fancy_bed.png.001
usemtl none.001_fancy_bed.png.001
s off
f 1/1 2/2 3/3 4/4
f 5/2 6/3 7/4 8/1
f 4/5 3/2 7/1 6/6
f 1/1 4/4 6/7 5/8
f 2/1 8/2 7/3 3/4
f 8/2 2/5 9/9 10/10
o wood_structure_Wood_structure_nodebox-4.001_none.002
v 0.374999 -0.375000 1.437499
v 0.374999 -0.125000 1.437499
v 0.374999 -0.125000 1.499999
v 0.374999 -0.375000 1.499999
v -0.374999 -0.375000 1.437499
v -0.374999 -0.375000 1.499999
v -0.374999 -0.125000 1.499999
v -0.374999 -0.125000 1.437499
v -0.375000 -0.500000 1.437499
v -0.375000 0.187500 1.437499
v -0.375000 0.187500 1.499999
v -0.375000 -0.500000 1.499999
v -0.500000 -0.500000 1.437499
v -0.500000 -0.500000 1.499999
v -0.500000 0.187500 1.499999
v -0.500000 0.187500 1.437499
v -0.437500 -0.375000 -0.437501
v -0.437500 -0.125000 -0.437501
v -0.437500 -0.125000 1.437498
v -0.437500 -0.375000 1.437498
v -0.500000 -0.375000 -0.437501
v -0.500000 -0.375000 1.437498
v -0.500000 -0.125000 1.437498
v -0.500000 -0.125000 -0.437501
v 0.375001 -0.000000 1.437499
v 0.375001 0.125000 1.437499
v 0.375001 0.125000 1.499999
v 0.375001 -0.000000 1.499999
v -0.375001 -0.000000 1.437499
v -0.375001 -0.000000 1.499999
v -0.375001 0.125000 1.499999
v -0.375001 0.125000 1.437499
v 0.500000 -0.500000 1.437499
v 0.500000 0.187500 1.437499
v 0.500000 0.187500 1.499999
v 0.500000 -0.500000 1.499999
v 0.375000 -0.500000 1.437499
v 0.375000 -0.500000 1.499999
v 0.375000 0.187500 1.499999
v 0.375000 0.187500 1.437499
v 0.500000 -0.375000 -0.437501
v 0.500000 -0.125000 -0.437501
v 0.500000 -0.125000 1.437499
v 0.500000 -0.375000 1.437499
v 0.437500 -0.375000 -0.437501
v 0.437500 -0.375000 1.437499
v 0.437500 -0.125000 1.437499
v 0.437500 -0.125000 -0.437501
v -0.375000 -0.500000 -0.500000
v -0.375000 -0.065000 -0.500000
v -0.375000 -0.065000 -0.437500
v -0.375000 -0.500000 -0.437500
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.437500
v -0.500000 -0.065000 -0.437500
v -0.500000 -0.065000 -0.500000
v 0.375006 -0.375000 -0.500000
v 0.375006 -0.125000 -0.500000
v 0.375006 -0.125000 -0.437500
v 0.375006 -0.375000 -0.437500
v -0.375006 -0.375000 -0.500000
v -0.375006 -0.375000 -0.437500
v -0.375006 -0.125000 -0.437500
v -0.375006 -0.125000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.065000 -0.500000
v 0.500000 -0.065000 -0.437500
v 0.500000 -0.500000 -0.437500
v 0.375000 -0.500000 -0.500000
v 0.375000 -0.500000 -0.437500
v 0.375000 -0.065000 -0.437500
v 0.375000 -0.065000 -0.500000
vt 0.377610 0.378205
vt 0.622484 0.378175
vt 0.622515 0.623120
vt 0.377671 0.623151
g wood_structure_Wood_structure_nodebox-4.001_none.002_none.002
usemtl none.002
s off
f 59/11 60/12 61/13 62/14
f 63/14 64/11 65/12 66/13
f 59/11 63/14 66/13 60/12
f 62/14 61/13 65/12 64/11
f 59/11 62/14 64/13 63/12
f 60/12 66/11 65/14 61/13
f 67/11 71/12 74/13 68/14
f 70/14 69/11 73/12 72/13
f 67/11 70/12 72/13 71/14
f 68/11 74/12 73/13 69/14
f 75/11 76/12 77/13 78/14
f 79/14 80/11 81/12 82/13
f 75/14 79/11 82/12 76/13
f 78/11 77/12 81/13 80/14
f 75/11 78/12 80/13 79/14
f 76/11 82/12 81/13 77/14
g wood_structure_Wood_structure_nodebox-4.001_none.002_none.003
usemtl none.003
f 15/11 16/12 17/13 18/14
f 11/13 15/14 18/11 12/12
f 14/14 13/11 17/12 16/13
f 11/14 14/11 16/12 15/13
f 12/11 18/12 17/13 13/14
f 19/11 20/12 21/13 22/14
f 23/14 24/11 25/12 26/13
f 19/14 23/11 26/12 20/13
f 22/11 21/12 25/13 24/14
f 19/11 22/12 24/13 23/14
f 20/11 26/12 25/13 21/14
f 27/14 28/11 29/12 30/13
f 31/11 32/12 33/13 34/14
f 27/11 30/12 32/13 31/14
f 28/14 34/11 33/12 29/13
f 35/11 39/12 42/13 36/14
f 38/14 37/11 41/12 40/13
f 35/14 38/11 40/12 39/13
f 36/11 42/12 41/13 37/14
f 43/11 44/12 45/13 46/14
f 47/14 48/11 49/12 50/13
f 43/14 47/11 50/12 44/13
f 46/11 45/12 49/13 48/14
f 43/11 46/12 48/13 47/14
f 44/11 50/12 49/13 45/14
f 51/14 52/11 53/12 54/13
f 55/13 56/14 57/11 58/12
f 51/11 54/12 56/13 55/14
f 52/14 58/11 57/12 53/13

View File

@ -1,32 +0,0 @@
# Blender v2.69 (sub 0) OBJ File: ''
# www.blender.org
mtllib simple_bed.mtl
o Simple_Bed
v 0.500000 -0.500000 -0.500000
v 0.500000 0.060000 -0.500000
v 0.500000 0.060000 1.500000
v 0.500000 -0.500000 1.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 1.500000
v -0.500000 0.060000 1.500000
v -0.500000 0.060000 -0.500000
vt 0.000112 0.780442
vt 0.000110 0.999969
vt 0.780324 0.999889
vt 0.780377 0.780471
vt 0.780636 0.390284
vt 0.999906 0.780382
vt 0.999906 0.390284
vt 0.780636 0.000047
vt 0.999906 0.000094
vt 0.390235 0.780320
vt 0.390235 0.000071
vt 0.000142 0.000142
usemtl none.002
s off
f 1/1 2/2 3/3 4/4
f 5/1 6/4 7/3 8/2
f 1/5 5/4 8/6 2/7
f 4/8 3/9 7/7 6/5
f 1/8 4/4 6/10 5/11
f 2/11 8/12 7/1 3/10

2
mods/beds/spawns.lua Executable file → Normal file
View File

@ -56,5 +56,3 @@ function beds.set_spawns()
end
beds.save_spawns()
end
beds.read_spawns()

View File

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 B

View File

Before

Width:  |  Height:  |  Size: 537 B

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

View File

Before

Width:  |  Height:  |  Size: 390 B

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 523 B

BIN
mods/beds/textures/beds_bed_head.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 B

View File

Before

Width:  |  Height:  |  Size: 537 B

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 B

BIN
mods/beds/textures/beds_bed_side_top.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 B

View File

Before

Width:  |  Height:  |  Size: 616 B

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 573 B

View File

Before

Width:  |  Height:  |  Size: 495 B

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

View File

Before

Width:  |  Height:  |  Size: 556 B

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

BIN
mods/beds/textures/beds_transparent.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 B

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

6
mods/boats/README.txt Executable file → Normal file
View File

@ -1,6 +1,6 @@
Minetest Game mod: boats
========================
by PilzAdam
Minetest 0.4 mod: boats
=======================
by PilzAdam, slightly modified for NeXt
License of source code:
-----------------------

0
mods/boats/depends.txt Executable file → Normal file
View File

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