Compare commits

...

290 Commits

Author SHA1 Message Date
sys4-fr 8b88c2c1ec Merge branch 'dev' 2018-08-02 21:07:29 +02:00
sys4-fr dad0d3ad8e Fix world.mt file 2018-08-02 18:49:57 +02:00
sys4-fr c5ac65fba8 Minor changes 2018-08-01 00:59:47 +02:00
sys4-fr 8bc8a84118 Add boost_cart mod 2018-08-01 00:54:47 +02:00
sys4-fr 51eda3ec72 [mesecons_detector] Clean code 2018-07-31 20:22:51 +02:00
sys4-fr 580acda118 [player_detector] Add ability to get detected player name via digilines 2018-07-31 20:06:27 +02:00
sys4-fr b44f6c17cc Fix stairs orientation 2018-07-27 15:31:08 +02:00
sys4-fr 5eebea4d3e Update some mods repositories. 2018-07-26 19:49:13 +02:00
sys4-fr 372b652cad Fix crash when player take damages and wearing black mithril shield. 2018-07-26 17:49:22 +02:00
sys4-fr 11a7c9c644 Add missing black mithril shield 2018-07-25 01:23:11 +02:00
sys4-fr 7b2d847430 Upgrade to work with minetest 0.4.17
- 3d_armor upgrade
- playeranim reconfiguration
- farming_redo upgrade
- Add hazmat_suit mod
- Fix double_chests issue
- Upgrade maidroid
- tweek maidroid_core_morefarming (work with last crops of farming_redo, robot jumping removed)
- various mod upgrades
2018-07-24 13:26:51 +02:00
sys4-fr d5be7a1b71 Update connected_chests mod and make it as a submodule. Fix aliases for compatibility with older ones. 2018-07-22 20:19:10 +02:00
sys4-fr 275559dccc Update 3d_armor and other dependences. 2018-07-22 18:53:57 +02:00
sys4-fr b65e0ede67 Update moreflowers 2018-04-14 14:42:30 +02:00
Sys Quatre 5afa7f4a23 Fix nether guide crash with last minetest backport-0.4 branch 2018-04-01 05:25:24 +02:00
sys4-fr cd38b16f84 Fix remote tracking branch of submodule camera 2018-03-24 12:11:03 +01:00
sys4-fr 4c2d0ac2c0 Update some mods
- cherry_tree
- moreplants
- plantlife_modpack
2018-03-20 00:38:10 +01:00
sys4-fr 6c1ad3ab5a Fix craft of dye:light_grey and decrease bats sound volume 2018-03-10 00:33:32 +01:00
sys4-fr 925285e888 Add recipes for extractor 2018-03-04 04:00:45 +01:00
sys4-fr 17944d6eb2 Optimize size of ambience sounds 2018-03-04 00:34:56 +01:00
sys4-fr b8a77ac823 Add submodule moremesecons 2018-03-03 22:22:23 +01:00
sys4-fr 6b9e173fa7 Upgrade mesecons modpack as a submodule 2018-03-03 22:12:49 +01:00
sys4-fr 52d4e7b590 [issue #24] Update morefarming submodule 2018-03-03 17:41:25 +01:00
sys4-fr 1699c8ceac Change README.md in order to begin personalization of the server 2018-02-19 00:27:50 +01:00
sys4-fr b3628edaa4 Fix farming submodule update 2018-02-18 22:16:46 +01:00
sys4-fr b3b2218d1c Update submodules bonemeal and farming
Fix unknow node because of moretrees:acacia_sapling_ongen removed from moretrees mod. Maked an alias to default:acacia_sapling to fix it.
2018-02-18 21:58:52 +01:00
sys4-fr 4f427231a2 Decrease gain of canadian loom sound 2018-02-18 13:22:08 +01:00
sys4-fr 62df2b20e3 Update submodule camera mod 2018-02-18 12:57:24 +01:00
sys4-fr 4aca6dc15e [issue #23] Fix mithril fishing pole craft
I have unregistered homedecor:cobweb_corner and maked an alias to it with mobs:cobweb
2018-02-18 12:51:42 +01:00
sys4-fr 54546b371a [Issue #22] Fix stair orientation 2018-01-31 21:30:27 +01:00
sys4-fr e26fe66720 Update coloredwood submodule with my version that fixes some things 2018-01-29 23:39:08 +01:00
sys4-fr b89e5b5f37 Change default creeper to a blue version
Creeper explosion produce ice fire from fake_fire mod
2018-01-20 23:12:51 +01:00
sys4-fr c9e36c42d6 Update plantlife_modpack, moretrees and biome_lib as submodules 2018-01-20 23:09:55 +01:00
sys4-fr 42de3cc720 Fix submodules update 2018-01-20 00:36:15 +01:00
sys4-fr c45e1dadb7 Change superquarry behaviour and improve performance
- radius is limited to 8 other than 12
- max depth set to 500 other than 2500
- nodes under non air_block can be digged
2018-01-20 00:12:34 +01:00
sys4-fr 25192785b8 Make changes to get mods compatible with updated unifieddyes
- remove obsolete colormachine mod
- update unifieddyes as submodule
- update bobblocks as submodule
- update coloredwood as submodule
- remove cotton mod
- add unifiedwool as submodule
- update homedecor_modpack as submodule
- update sea modpack as submodule
- update stained_glass as submodule
- add unifiedbricks as submodule
2018-01-19 23:53:52 +01:00
sys4-fr 5f7cd6271e Fix diet support with some food items 2018-01-18 01:25:15 +01:00
sys4-fr 59682e253a Change nether static spawn point to avoid the player to fall into lava 2018-01-17 21:35:15 +01:00
sys4-fr 140daf7008 Fix get bone when digging default:dirt with a chance 1/30
This was removed by nalc maptools customization
2018-01-13 15:59:22 +01:00
sys4-fr 8c48f37eb5 Change mapgen of uranium ore between levels -80 and -28000 2018-01-08 02:29:34 +01:00
sys4-fr e32c9b72b8 Minercantile items are now craftable
Barter shop and bancomatic are craftable by anyone but to administrate the barter shop the player must have the shop privilege. (and ask to get it)
Anyway a non priviligied user can use his barter shop, but it will be limited to sell/bye objects from the General group that is administrated by players with the shop privilege.
2018-01-07 18:28:53 +01:00
sys4-fr b5e8b52218 [Fix Issue #11] Rotten flesh has more uses 2018-01-07 04:02:07 +01:00
sys4-fr 6a6cc58506 [Fix issue #16] Fixed when upgrading darkage mod 2018-01-07 01:05:00 +01:00
sys4-fr 441709ba62 Increase maximum number of players to 10 (previously was 5) 2018-01-06 19:07:40 +01:00
sys4-fr 2869d4e006 [Fix issue #17] Fix faction crash when invoking the faction command : /factions version
To use factions admin command, the player must have the the faction_admin privilege.
2018-01-06 18:51:14 +01:00
sys4-fr d727e7d624 [Fix issue #12] Get scorched_stuff when cooking cooked rat. Also scorched_stuff is of type fuel and can be used to craft Black dye too.
Fix craft from mobs_animal to get ability to cook rat. This craft don't worked until now (Bug)
2017-12-16 22:21:52 +01:00
sys4-fr 92446a8fec [mobs_redo] Update submodule + Fix too much mobs spawning 2017-12-13 22:02:54 +01:00
sys4-fr 4f8bd24cf1 [minetest_game] Upgrade minetest game submodule to branch backport-0.4 2017-12-12 23:25:07 +01:00
sys4-fr cfac0a37c8 Change item_drop mod
Change player speed parameters (come back to normal values)
2017-12-10 15:49:54 +01:00
sys4-fr 3894e98988 Remove unneeded soundset dependencies 2017-12-09 23:59:45 +01:00
sys4-fr d8dd85e361 * Update ambience mod
- Add musics and sounds from original mod wich was removed by MFF
  - Add musics from mpd mod
  This ambience mod add /volume command that display a form to change musics and ambience volume. This is player independant.
* Remove soundset and music mod
* Fix warning caused by undefined global variable in kpgmobs/wolf.lua
2017-12-09 23:29:28 +01:00
sys4-fr 2f1f8e439f [playereffects] Update submodule : Log autosave messages only in verbose mode 2017-12-09 14:08:56 +01:00
sys4-fr 07444bb835 [cherry_tree] Update submodule : Add fuels definitions 2017-12-09 11:53:12 +01:00
sys4-fr 51f55fdaed Improve general server performance
- set active_block_range to 1
  - set remove_far_mobs to false
2017-12-08 23:01:04 +01:00
sys4-fr b732dbe4b5 Fix crash when right-click on turtle
Customize mobs spawning in minetest.conf
2017-12-08 21:12:47 +01:00
sys4-fr 5a5221efaf Update bonemeal submodule
Change mob_horse submodule repository to https://github.com/sys4-fr/mob_horse.git
2017-12-05 02:37:49 +01:00
sys4-fr a22a4e7c3e Fix spawning fregency
Drastically decrease chance to spawn NPCs
2017-12-05 02:14:48 +01:00
sys4-fr d8572b83cf Fix stone_with_coin alias 2017-12-04 21:08:57 +01:00
sys4-fr aeb7701c62 Merge branch 'NALC2' into NALC 2017-12-03 16:09:58 +01:00
sys4-fr 28baf0bfaf Add toolranks support for nether tools 2017-12-03 13:29:55 +01:00
sys4-fr e97ddeba7b Change nether static spawn point 2017-12-03 10:49:36 +01:00
sys4-fr f47becd6af Add missing bucket {acid,sand} textures 2017-12-03 00:58:00 +01:00
sys4-fr 2beba3599e * kpgmobs: update submodule
* pmobs:
  - Disable ninja mob
  - Less spawning chance for npcs and wolves (1/31000 -> 1/51000)
* minetest.conf
  - Set setting remove_far_mobs to true
  - Update setting active_block_range from 1 to 2
2017-12-02 22:09:27 +01:00
sys4-fr 706d03f9a4 Fix carts aliases 2017-12-02 18:36:06 +01:00
sys4-fr 618d5f5daf Update darkage mod as a submodule from davisonio repository
Fix aliases (beds, doors3)
Add lily_pad wich no longer exist in minetest_game
2017-12-02 14:58:14 +01:00
sys4-fr 8b2823374e Fix tnt missing textures
Clay lumps are stackable by 200
Update submodules cherry_tree and moreblocks
2017-12-02 00:33:58 +01:00
sys4 3afbbf3451 Update mobs mod submodule 2017-11-29 23:26:33 +01:00
sys4 d4a2c5e085 - Creeper explosion trigger surrounding nodes with fake fire rather than real fire for avoiding out of control wildfires.
- Increase Creeper explosion radius to 3 and 6 for damage radius.
- Add a custom tnt mod as a replacement of the default one. This mod allow explosions without burning surrounding nodes.
2017-11-29 22:03:09 +01:00
sys4 6923c52f4a Fix MFF doors and doors3 and keys support to it 2017-11-27 00:46:36 +01:00
sys4 97e4cb7eb7 Remove uneeded variable in nalc mod 2017-11-26 08:34:26 +01:00
sys4 b7ae403763 Hide quests HUD by default when player join the game 2017-11-26 08:30:26 +01:00
sys4 80d0e9a6a1 Fix toolranks support of Nyan Shovel 2017-11-26 06:44:12 +01:00
sys4 1649c53471 Add toolranks mod and add its support for Golden and Nyan tools 2017-11-26 06:39:15 +01:00
sys4 635847900d Change snowdrift mod by weather_pack mod as submodule 2017-11-26 05:59:48 +01:00
sys4-fr bcc8cf0157 Merge branch 'master' into NALC2 2017-11-26 03:42:59 +01:00
sys4-fr 144f6a26c9 Merge remote-tracking branch 'upstream/master' 2017-11-26 03:41:39 +01:00
sys4-fr 1aaffa1e5b Remove meshnodes and experience mods because inactive 2017-11-26 03:23:15 +01:00
sys4 541e5142ae Fix alias for sand_flowing 2017-11-26 03:00:22 +01:00
sys4 a55163ae88 * Replace minetestforfun_game by latest minetest_game stable (0.4.16) as a submodule.
- Customizations made by MFF are moved to other mods. This would permit next upgrades to be more easier.
  - Cherry trees moved to cherry_tree mod as a submodule maintained by sys4-fr.
  - Custom MFF beds, boats, buckets, liquid sources, fences, tools, meze and other nodes/craft definitions moved to nalc mod.
  - Move nyancat mod to mods folder because nyancats no longer exist in minetest_game.
* Move colouredstonebricks mod as a submodule
* Move farming redo mod as a submodule
* Move h2omes mod as a submodule
* Add missing mobs_dung and mese_dragon_inv textures
* Move moreblocks mod as a submodule
* Move moreores mod as a submodule
* Move pipeworks mod as a submodule
* Move player_physics mod as a submodule
* Fix unified_inventory mod (depends.txt)
* Remove definitively watershed mod that was never used in NALC
2017-11-25 23:12:26 +01:00
LeMagnesium 12ee8c9dc9
[unified_inventory] Don't leave on enter
- Fix #535
 - Thanks for @crabman77 for pointing out the code, and @minetest-technic team for making the original changes
 - Add the necessary flag in the formspec generator code so that we do not leave the formspec upon pressing enter
2017-11-18 18:38:48 +01:00
sys4-fr 829f043202 Submodules update 2017-11-11 19:56:44 +01:00
sys4 ff9832e7b5 Update food mod into submodule
Add food_sweet, mtfood, diet submodules
2017-11-11 19:44:53 +01:00
sys4 853837fb40 Set creeper radius_damage from 3 to 2
Wolves are hostile now
2017-11-11 18:13:09 +01:00
sys4 6241f4ecaf Change mobs api and add new mobs from (water_mobs, pmobs, kpgmobs, mob_horse) 2017-11-11 17:37:21 +01:00
sys4-fr eb97efc8d6 Merge branch 'NALC2' into NALC 2017-10-28 18:26:19 +02:00
sys4 d3a7d82233 Fix nether mod with >minetest-0.4.15 2017-10-28 18:17:58 +02:00
sys4-fr 8c2d33c84e Merge branch 'NALC2' into NALC 2017-09-24 15:51:50 +02:00
sys4-fr a68ce1dbc9 Disable random_messages, player_inactive and meshnode mods 2017-09-24 15:45:12 +02:00
sys4-fr 65063bc955 Fix nether guide
Add matthieu8fr skin
2017-09-24 14:13:07 +02:00
sys4-fr 0e4047f411 Fix some skins 2017-09-24 12:46:46 +02:00
sys4-fr 547756caca Merge remote-tracking branch 'origin/master' into NALC2 2017-09-24 11:19:59 +02:00
sys4-fr c60e53a3ad Merge remote-tracking branch 'upstream/master' 2017-09-24 11:07:11 +02:00
LeMagnesium 27a7195c52
[default & nether] Update book handling functions
- In sight of MinetestForFun/server-minetestforfun-skyblock#217
 - default/craftitems.lua : Merge changes made to the book and how it is handled ; updates
 - nether/nether/guide.lua : I don't remember ever modifying it but it was there and modified and it worked so wowie
2017-09-06 21:48:27 +02:00
ObaniGemini e13fb99494 Remove other_things (moved to another repo)
This is a step to reorganization
2017-07-23 19:29:20 +02:00
LeMagnesium 7839c16b42 [moretrees] Drop default's j-tree from moreores'
- This way moretrees can generate correctly using its own node, but it drops the normal jungle tree when it's dug
2017-07-20 18:56:35 +02:00
BUISSON-DEBON Quentin 8cf808ea83
update worldedit and fix a possible hack 2017-05-14 22:41:16 +02:00
sys4-fr 62c12cf2dc Merge branch 'NALC2' into NALC 2017-05-05 09:38:00 +02:00
sys4-fr a3c7ec2de4 Update submodule mods/camera 2017-05-05 09:36:37 +02:00
sys4-fr 1a4b5cd2fb Fix map seed to match the real seed used in NALC 2017-05-04 15:24:27 +02:00
sys4-fr 108a3d4de9 Merge branch 'NALC2' into NALC 2017-05-04 14:57:30 +02:00
sys4-fr 99819d55c0 Replace wheather_pack mod by snowdrift 2017-05-04 14:23:42 +02:00
sys4-fr 23e114d609 Merge branch 'NALC2' into NALC 2017-05-03 23:36:38 +02:00
sys4-fr 256292db2d Fix world.mt 2017-05-03 22:55:35 +02:00
sys4-fr f8f897c42a Add camera submodule mod, dev branch modified by me
Add claycrafter submodule mod
2017-05-03 22:36:30 +02:00
sys4-fr c1483ee527 Merge branch 'master' into NALC2 2017-05-03 21:50:25 +02:00
sys4-fr 51d447e17c Merge remote-tracking branch 'upstream/master' 2017-05-03 21:49:34 +02:00
LeMagnesium 9ff9dfd76a
[runes] Undo amulets' mana bonus upon leaveplayer
- Runes: Remove the amulets' mana bonus when a player leaves so that
   mana's maxmana value saved for the player (future basemana) doesn't
   already include an amulet bonus
2017-04-24 13:30:31 +02:00
crabman77 8d2683b94b fix crash si class on_update() not defined
fix wrong stamina value to hunter
remove old call of function, moved to assign api
2017-04-20 02:22:17 +02:00
crabman77 c9b5199e97 update tsm_pyramids, add new chest with timer to refill and remove file to save chest pos used to refill
add abm to replace old chest
add maptools in depends.txt
fix indentations
2017-04-20 00:46:48 +02:00
Darcidride d1a7ed5ee6 Huge update of news.txt
Very later, but here.. sorry :)
2017-04-20 00:18:28 +02:00
LeMagnesium 3035e9660e
[mff_pclasses] Remember to remove hunter bonus
- MFF PClasses : Remove hunter armor bonus upon unassigning
2017-04-20 00:05:26 +02:00
LeMagnesium 1191a57374
[runes] Fix amulets' bonuses not being removed
- Runes : Fix a bug that made the amulets' bonuses in maximum mana
   never disappear even after the amulet(s) had been removed
2017-04-19 23:58:33 +02:00
LeMagnesium 8c0a0a5547
[pclasses & mff_pclasses] Misc. fixes
- PClasses : Fix adventurer to not reset stats
 - MFF PClasses : Fix hunter to flush bonus ownership data upon leaving
   the game
2017-04-19 23:57:30 +02:00
LeMagnesium f6341038af
[mff_pclasses] Stop using asbolute stats values
- Stop using absolute stats values for stamina and manamax when you can
   add/subtract in on_assign and on_unassign
 - Use on_update for hunters to determine whether or not to add the
   sprint bonus from the full reinforced leather armor set
2017-04-19 23:37:33 +02:00
LeMagnesium b0ba6a7956
[pclasses & mff_pclasses] Use implicit on_update
- After executing on_unassigned and on_assigned, implicitly call
   on_update (or add a dummy on_update for assigning if there is none)
2017-04-19 22:05:48 +02:00
crabman77 126ce0d7e4 fix wrong stamina value of wizard class 2017-04-19 21:51:19 +02:00
crabman77 ee58c4930f improve pclasses to fix class stats don't change on equip/unequip/destroy armor 2017-04-19 21:51:16 +02:00
sys4-fr 596787647f Merge branch 'NALC2' into NALC 2017-04-14 23:04:57 +02:00
sys4-fr c244ba612c Merge branch 'master' into NALC2 2017-04-14 23:00:37 +02:00
sys4-fr 7eb4e8cd96 Merge remote-tracking branch 'upstream/master' 2017-04-14 23:00:14 +02:00
sys4-fr e112cd3867 Fix superquarry.lua file 2017-04-14 22:57:44 +02:00
sys4-fr cc86e42a5b Fix nalc mod 2017-04-14 22:44:06 +02:00
sys4-fr ef69f1d88c Add superquarry machine (made by Cyberpangolin) 2017-04-14 22:40:27 +02:00
sys4-fr 4cbd20d9fd Update autocrafter from pipeworks to be digilinized 2017-04-14 22:32:13 +02:00
crabman77 5786374fe3 fix nodes have not footstep sound 2017-04-12 20:34:59 +02:00
sys4-fr d2e504a49d Merge branch 'NALC2' into NALC 2017-04-12 03:28:21 +02:00
sys4-fr 33254934b7 Make technic dusts for silver, tin, mithril to work. 2017-04-12 03:25:52 +02:00
sys4-fr 035d0cc302 Merge branch 'NALC2' into NALC 2017-04-10 03:38:59 +02:00
sys4-fr 1071331ebe Fix player_effects call from witchcraft mod
Reindent code
2017-04-10 03:28:54 +02:00
sys4-fr f44faa23f1 Merge branch 'crabman77-3d_armor_stats' into NALC2 2017-04-10 01:19:21 +02:00
sys4-fr 10b2a8bd70 Merge branch '3d_armor_stats' of https://github.com/crabman77/minetest-minetestforfun-server into crabman77-3d_armor_stats 2017-04-10 01:19:00 +02:00
sys4-fr febb92573b Merge branch 'master' into NALC2 2017-04-10 01:14:51 +02:00
sys4-fr 29cd5df980 Merge remote-tracking branch 'upstream/master' 2017-04-10 01:14:00 +02:00
crabman77 24e1904ffe add stats(speed,jump,gravity) in 3d_armor formspec 2017-04-09 16:12:45 +02:00
crabman77 86f8995530 Merge pull request #532 from sys4-fr/pipeworks_fix_connected_chests
Fix server crash if filter-injector placed on the right of a connected chest is punched
2017-04-09 16:07:47 +02:00
crabman77 f83eb0576b remove old deprecated minetest.env: 2017-04-09 16:03:40 +02:00
crabman77 83d399c0be fix space 2017-04-09 15:57:38 +02:00
crabman77 404bc30091 update witchcraft with new player_physics changes
add stats(speed, jump, gravity) in 3d_armors formspecs
2017-04-09 15:51:57 +02:00
sys4-fr 09d73bb968 Merge branch 'pipeworks_fix_connected_chests' into NALC2 2017-04-09 14:22:58 +02:00
sys4-fr f48bad74e1 improve connected_chests fix for injector 2017-04-09 14:15:22 +02:00
sys4-fr ffe11d70c5 Merge branch 'NALC2' into NALC 2017-04-09 13:29:01 +02:00
sys4-fr 5470c37940 Merge branch 'master' into NALC2 2017-04-09 13:00:29 +02:00
sys4-fr 507576e7da Merge remote-tracking branch 'upstream/master' 2017-04-09 12:57:36 +02:00
sys4-fr 7d66384514 Merge branch 'pipeworks_fix_connected_chests' into NALC2 2017-04-09 12:48:57 +02:00
sys4-fr 5c7d2ea9fa check if fromnode is not nil before apply connected_chests fix 2017-04-09 12:32:03 +02:00
sys4-fr cd1b2e1ba7 Merge submodule unifieddyes into mods directory 2017-04-09 11:09:32 +02:00
sys4-fr a2dd80356d Fix digiline filter injector 2017-04-09 11:02:48 +02:00
sys4-fr 6148ce55b8 Merge branch 'pipeworks_fix_connected_chests' into NALC2 2017-04-09 10:59:20 +02:00
sys4-fr 1a7c63f6bd Fix server crash if filter-injector placed on the right of a connected chest is punched 2017-04-09 03:49:24 +02:00
crabman77 84e858fccf add new mod player_physics and update sprint and 3d_armor to use player_physics 2017-04-07 23:18:55 +02:00
sys4-fr 0d5c914400 Merge branch 'NALC2' into NALC 2017-04-05 15:42:08 +02:00
sys4-fr 195f6173d0 Fix usage of splash potions from witchcraft 2017-04-05 15:36:06 +02:00
sys4-fr 9417e3335d Merge branch 'crabman77-fix_physics' into NALC2 2017-04-05 10:31:58 +02:00
crabman77 78b3ae7cde fix bad physics(conflicts, many mods rewrites physics in step)
fix witchcraft and sprint physics
remove blankspaces
2017-04-04 22:47:29 +02:00
sys4-fr b000b6f2b4 Merge submodule witchcraft into mods directory 2017-04-04 01:34:26 +02:00
sys4-fr 56226213e1 Merge branch 'NALC2' into NALC 2017-04-03 19:11:01 +02:00
sys4-fr aa32feff2c Add cotton mod
Update submodule unifieddyes
2017-04-03 19:02:51 +02:00
sys4-fr d9fe75b0e6 Merge branch 'master' into NALC2 2017-04-03 16:34:56 +02:00
sys4-fr 255064a689 Merge remote-tracking branch 'upstream/master' 2017-04-03 16:29:35 +02:00
crabman77 cfd80c090c add armors definitions (speed, jump) to set physics 2017-04-02 01:17:51 +02:00
sys4-fr ab68b5977c Merge branch 'NALC2' into NALC 2017-03-31 10:01:14 +02:00
sys4-fr be0c34490c Fix usage of technic_armor
Enable ARMOR_HEAL_MULTIPLIER
2017-03-31 09:56:06 +02:00
Darcidride 4c8b68b6f8 Disable is_snow 2017-03-27 15:24:44 +02:00
sys4-fr 90e4a16841 Merge branch 'NALC2' into NALC 2017-03-21 22:43:51 +01:00
sys4-fr 7779f0333a Fix crash if technic mod is loaded and when a player want to move items from his inventory to a locked chest. 2017-03-21 22:29:11 +01:00
sys4-fr 37533eedac Merge branch 'NALC2' into NALC 2017-03-21 18:20:35 +01:00
sys4-fr 7701d61b55 Fix duplication bug when place or remove mesecons receiver 2017-03-21 18:15:58 +01:00
sys4-fr b24a11808a Merge branch 'NALC2' into NALC 2017-03-20 22:38:27 +01:00
sys4-fr 125666db3c Fix crash with witchcraft support 2017-03-20 22:28:22 +01:00
sys4-fr ece1600e19 Fix witchcraft potion creation
Fix witchcraft brewstand use
Disable experience mod
2017-03-20 21:43:17 +01:00
sys4-fr 2955c11094 Merge branch 'NALC2' into NALC 2017-03-20 17:39:42 +01:00
sys4-fr 072e5139eb Update submodules moreflowers and moreplants to their master branch 2017-03-20 17:30:58 +01:00
sys4-fr 1349074fa6 Update submodules moreflowers and moreplants to their dev branch 2017-03-20 16:50:02 +01:00
sys4-fr a76f62fc27 Merge branch 'master' into NALC2 2017-03-18 00:43:55 +01:00
sys4-fr bc0fbc855a Merge branch 'master' of https://github.com/MinetestForFun/server-minetestforfun 2017-03-18 00:25:15 +01:00
crabman77 11d89ab4ad fix light_source warning, register_node function rewrite light_source to LIGHT_MAX(14) when is greater than LIGHT_MAX
fix use of old var LIGHT_MAX to default.LIGHT_MAX
2017-03-17 02:29:53 +01:00
sys4-fr 8abb777026 Merge branch 'NALC2' into NALC 2017-03-16 15:22:15 +01:00
sys4-fr 6b4cc9c12a Add craft recipe for bones:bones with 9 bonemeal:bone
Override craft recipe of witchcraft:shelf
2017-03-16 15:15:38 +01:00
sys4-fr c62560b8ff Add Call on_rightclick in builtin_failling mod into bucket rewrite function (needed by witchcraft) 2017-03-16 14:21:11 +01:00
sys4-fr 4728a5fafd Fix craft recipe of mesecons_microcontroller:microcontroller0000 - Issue https://github.com/MinetestForFun/server-minetestforfun/issues/528 (#530) 2017-03-13 18:32:12 +01:00
sys4-fr d9b60ac39f Merge NALC2 branch
Update server ip
2017-03-12 23:07:03 +01:00
sys4-fr e4aa3a10a3 Fix valleys mapgen customization 2017-03-12 22:55:49 +01:00
sys4-fr 9b5db4e7ea Upgrade unifieddyes 2017-03-12 21:16:50 +01:00
sys4-fr 291b260b0f Merge branch 'NALC' into NALC2 2017-03-12 19:57:57 +01:00
sys4-fr 29b6b9fa74 Enable fire parameter in game minetest.conf 2017-03-12 19:42:50 +01:00
sys4-fr 601048810f Change upgrade script for NALC server 2017-03-12 18:49:58 +01:00
sys4-fr 5ca40e39f2 Change default config for NALC2 server 2017-03-12 18:47:56 +01:00
sys4-fr c990a2bcc8 Add nalc mod (mod that make correction between mods)
Fix world.mt for moreplants
2017-03-12 18:13:21 +01:00
sys4-fr 1db80b9ec5 Change default config files for NotreAmiLeCube Server
Add and activate TNT mod
Activate Fire propagation
Add Technic modpack
Add technic_armor mod
Add bakedclay
Remove burned_clay
Add bonemeal
Add digilines
Add enchanting
Add experience
Add lightning
Add maidroid
Add meshnode
Add morefarming
Add moreflowers
Add moreplants
Add pdisc
Add playeranim
Add playereffects
Change cyberpangolin skin
Add weather_pack
Add witchcraft
2017-03-12 15:39:36 +01:00
sys4-fr 9269a98243 Fix craft recipe of mesecons_microcontroller:microcontroller0000 - Issue https://github.com/MinetestForFun/server-minetestforfun/issues/528 2017-03-12 13:10:56 +01:00
crabman77 6fd2c789a6 fix mobs explode instantly, issue https://github.com/MinetestForFun/server-minetestforfun/issues/509 2017-02-26 23:35:32 +01:00
Gael-de-Sailly 856de65a3f Update mapfix
and make a submodule
2017-02-22 18:44:25 +01:00
crabman77 62fbe19f10 new special spawning,spawn only if there are no others of the same type(limited with max), fix issue https://github.com/MinetestForFun/server-minetestforfun/issues/524 2017-02-21 11:55:37 +01:00
crabman77 03bd2fa529 update submodules irc and fishing 2017-02-21 00:46:17 +01:00
crabman77 cff8ee1aae fix bug if detach player whithout set entity.driver=nil 2017-02-19 18:45:33 +01:00
cessna151 6ce526a30a add irc bot names to forbidden names list 2017-02-02 16:32:42 -05:00
Darcidride 027240d620 Balance the mummy mobs
- Reduce by 2 points the armor
- Reduce by 5 the spawn rate
- Increase the papyrus loots
- Increase the damages taken by lava and light
2017-01-30 18:30:45 +01:00
crabman77 67dcb3f25f remove dropondie and replace by bones mod 2017-01-24 18:40:12 +01:00
crabman77 2cb3a70846 remove armors drop, replaced by bones mod soon
fix crash in unified_inventory, on join if died, detached inventory is nil
2017-01-24 18:31:10 +01:00
crabman77 06a1153d25 add alias to homedecor:wardrobe 2017-01-20 03:59:22 +01:00
crabman77 4e0b1ea022 update submodules
mff_hud (resize texture)
irc_modpack (fix typo)
time_regulation
2017-01-20 03:26:29 +01:00
crabman77 8a0133f3f5 update quest submodule (fix hud issue) 2017-01-18 21:40:12 +01:00
Gael-de-Sailly 50956b5ebf Removed call to that generated trees everywhere 2017-01-14 01:16:26 +01:00
ezam.linux e032b12c1e [u_skins] remove unused preview.blend 2017-01-11 04:04:39 +01:00
crabman77 8f1adf2656 update irc mod_pack 2016-12-27 00:37:06 +01:00
crabman77 cd9228e156 Add some unalowed nicknames, issue https://github.com/MinetestForFun/name_restrictions/issues/1 2016-12-22 22:54:13 +01:00
crabman77 b5e00e7e11 update submodule name_restrictions 2016-12-19 00:28:05 +01:00
crabman77 f4ed738187 fix use node.on_punch when node have pointed_thing (bug book guide and warps cristal) 2016-12-18 23:05:31 +01:00
crabman77 7ccda2ed2d fix texture size "non power of 2" 2016-12-10 22:36:47 +01:00
crabman77 5412da3c19 new setting "is_winter" to active snow when winter and active snow now 2016-12-10 22:34:07 +01:00
cessna151 006592534c Clay gives 4 lumps when dug
fix https://github.com/MinetestForFun/server-minetestforfun-skyblock/issues/196
2016-12-04 17:21:06 -05:00
crabman77 fe67ec4c5d fix textures irrlicht warning: Interlace handling should be turned on when using png_read_image 2016-12-04 15:37:57 +01:00
LeMagnesium b8145c5471
[mobs] Avoid server crash with nan vector values 2016-12-04 14:04:54 +01:00
crabman77 96dea33e89 fix crash when grow trees 2016-12-03 18:52:30 +01:00
crabman77 44a4b66c00 update irc submodule 2016-12-02 23:20:46 +01:00
crabman77 d69eb303d6 disable item_entiy.lua, cause crash and we have already builtin_item 2016-12-02 17:32:14 +01:00
crabman77 971147b48d update irc server name 2016-12-02 17:22:04 +01:00
Darcidride 343d20c5f9 fix a false value for deleted item on ground, 1800sec=30min 2016-11-30 18:56:06 +01:00
crabman77 e3758a1244 convert sounds to 48ko/s 2016-11-30 18:41:12 +01:00
BUISSON-DEBON Quentin c384c8f630
OPS - now set to 30 minutes the timer for deletion of dropped item 2016-11-30 12:37:39 +01:00
BUISSON-DEBON Quentin fd3113c168
set to 30 minutes the time before remove a dropped item 2016-11-30 12:26:13 +01:00
crabman77 bfe1c2d0ad fix Only one enchanted piece of armor is allowed to be placed in the armor slots at one time. 2016-11-22 19:37:06 +01:00
crabman77 7ce1871ef8 fix previews of enchanted armor with xdecor 2016-11-22 19:09:52 +01:00
Darcidride 814f5f2bc4 Fix a duplicated field for areas mod 2016-11-22 17:46:02 +01:00
crabman77 93220352f5 fix local variable 2016-11-19 00:31:20 +01:00
crabman77 8efb1887a5 fix crash with xdecor enchanting armor(if we add xdecor 1 day) 2016-11-18 18:29:42 +01:00
crabman77 4e091cdbd2 fix doors 2016-11-16 05:35:14 +01:00
crabman77 d70edee437 readd param to <= 0.14.4 stable version 2016-11-15 20:35:26 +01:00
LeMagnesium 56494fbb56
Fix doors 2016-11-14 00:27:51 +01:00
LeMagnesium d40a65244b
Update minetestforfun_game, fix maptools 2016-11-10 00:01:34 +01:00
LeMagnesium 783cb0e3d9
Add watchdog scrolls as an experiment on DM drops 2016-11-09 23:50:19 +01:00
Coethium 8a78752659 [Profnsched] lost jobs correction
Modified to replace # when we ant to count items in an array.
Code currently not cleaned after correction.
2016-10-29 16:25:57 +02:00
LeMagnesium 7ddebddee2
[mobs] Uncomment half of attack stop
- ... but only for non-explosive mobs
 - #509 , following the advice of @crabman77
2016-10-06 20:37:20 +02:00
LeMagnesium 327694b4ea
[mobs] Never disable the timer for exploding mobs
- For #509
2016-10-06 20:06:29 +02:00
Darcidride a8a95a6764 Deactivate profnsched
Because freeze the minetest.after
2016-09-30 19:43:12 +02:00
LeMagnesium 21f6ac6818
Create spiky cactus, make the original smoother
- Remove spikes from the standard cactus' side
 - Remove spikes from all cacti's tops, and add a flower
 - Add specific texture for spiky cactus
 - Create spiky cactus and recipes to convert spiky cactus and cactus
 - Move damages from normal cactus to spiky cactus
 - For #500
2016-09-29 21:44:22 +02:00
LeMagnesium 59c4c8e919
[mff_pclasses & pclasses] Enhance showcasing menus
- Remove the labels introduced last time and use the old line-wrapping
   textareas
 - Add showcase screenshots for the four classes presented
 - Add a little map of the spawn and both available class buildings
 - For #473
2016-09-24 15:14:35 +02:00
LeMagnesium 99655796ff
[pclasses & mff_pclasses] Change info menu
- Change info menu from a textarea to label components
 - Make `textify` public, becoming `pclasses.api.textify`
 - Use textify to create label lines
2016-09-22 21:14:43 +02:00
Coethium 0baa0ea091 [Profnsched] update based on discuss of PR #507 2016-09-16 17:43:38 +02:00
Coethium d2b71969e3 [Profnsched] New module (fr)
* Objectif principal : maintenir le temps d'exécution du pas (step) au
plus près du tick rate (dedicated_server_step)
* analyser en temps réel les temps d'execution de certaines fonctions
de module (actuellement uniquement globalstep et minetest.after)
* Décaler, de façon adaptative, l'exécution des modules qui
l'autorisent explicitement en cas de surcharge

... see README for more !
2016-09-16 17:43:38 +02:00
crabman77 b757ba48a3 disable profilerdumper , issue https://github.com/MinetestForFun/server-minetestforfun/issues/512 2016-09-14 19:46:44 +02:00
crabman77 d41b9bcee2 update minercantile submodule 2016-09-08 19:40:32 +02:00
Quentin BUISSON-DEBON 607762d5e4 Add Mese_dragon to death message + add a global message when a group of players kil la Mese Dragon 2016-09-08 12:57:11 +02:00
crabman77 5197306fd1 fix dungeon master sword craft https://github.com/MinetestForFun/server-minetestforfun/issues/511 2016-09-04 19:16:37 +02:00
LeMagnesium d31e5446bf
[lrfurn] Fix global variable. Fix #508
- Us: "But it's okay in Lua to use undefined variables!"
 - Minetest: "Yep. But we don't want that. Now cooperate."
2016-09-01 12:18:24 +02:00
LeMagnesium 83944bf662
[mesecons] Fix two lingering global variables
- For #508
2016-09-01 12:16:35 +02:00
LeMagnesium 996d0c9785
[stacktraceplus] Update for #508 2016-09-01 12:12:22 +02:00
LeMagnesium fc8315b962
[pipeworks] Update and fix global variable 'rules'
- Fix global variable 'rules' in devices.lua for #508
 - Update inventory elements from pipeworks' upstream repository
2016-09-01 11:57:25 +02:00
crabman77 884c804a7d fix bad resize 2016-08-26 20:59:36 +02:00
crabman77 d257bce03c fix pixel in default_sandstone_brick.png texure and resize 256->16 default_sand_normal.png 2016-08-26 20:53:35 +02:00
crabman77 ebb3ebfc70 fix pixels in gravel texture 2016-08-26 19:44:14 +02:00
Dorian Wouters e6fca9a51a
Update [profilerdumper] (bugfix, make it actually run) 2016-08-26 16:16:00 +02:00
Darcidride 4f855367a7 Update minetest.conf 2016-08-26 00:23:47 +02:00
Dorian Wouters 5853fd43b8
Update [name_restrictions], [xban2] (bugfixes) 2016-08-25 23:13:05 +02:00
Dorian Wouters 045a86a687
Update [mysql_auth] 2016-08-25 22:18:42 +02:00
AcidNinja eb079c9660 removed my old nick
And not adding my new as I haven't contributed yet.
2016-08-25 14:19:21 +02:00
crabman77 0b4994cb51 resize shark textures 1024->256 2016-08-24 22:59:05 +02:00
crabman77 5d59bca6fe resize shark textures 1024->256 2016-08-24 22:56:34 +02:00
crabman77 d3ce73e424 update fishing submodule 2016-08-24 19:19:46 +02:00
Darcidride d002753f2d Create forbidden_names_patterns.txt 2016-08-24 10:11:14 +02:00
Darcidride 2c26b64ac5 Update news.txt 2016-08-24 09:59:27 +02:00
Dorian Wouters ab7e8b518d
Update [mysql_auth] 2016-08-23 21:13:54 +02:00
Dorian Wouters dff20937df
Update [mysql_auth] 2016-08-23 17:51:46 +02:00
Dorian Wouters 92d3534591
Update [mysql_auth] 2016-08-23 17:00:41 +02:00
Dorian Wouters 76dcafaf4f
Add [mysql_auth] 2016-08-23 16:25:30 +02:00
Darcidride 7d56a24b2b Add mysql_auth config path 2016-08-23 16:19:47 +02:00
Dorian Wouters 93c51b752d
Move [areas] and [name_restrictions] to a submodule 2016-08-23 15:49:38 +02:00
Dorian Wouters 92cf1513d7
Turn [xban2] into a submodule 2016-08-23 01:42:47 +02:00
crabman77 e26cb9f788 add inventory texture mese dragon 2016-08-22 17:48:39 +02:00
crabman77 ae09d2076e update hudbars, remove old duplicated code/textures (now in mff_hud) 2016-08-22 16:10:28 +02:00
Dorian Wouters ca2357e423
Revert mff_classic 2016-08-21 22:39:12 +02:00
crabman77 694def08e7 fix unknow item and missing var 2016-08-21 22:14:04 +02:00
crabman77 1370754dfb update unified_inventory 2016-08-21 19:26:09 +02:00
Dorian Wouters c00b4ce858
mff_classic: fix nyancat & cherry tree mapgen 2016-08-21 15:27:18 +02:00
Dorian Wouters dcc1873cbe
Move MFF-only craft recipes, craftitems, mapgen to [mff_classic]
Also fixes aliasing...
2016-08-21 13:26:16 +02:00
Dorian Wouters 32ae8aca19
Fix [buckets] w/ acid or sand, make [death_message] work w/ aliases 2016-08-21 12:32:06 +02:00
LeMagnesium 2841c76d60
[irc_modpack] Update 2016-08-21 00:52:18 +02:00
LeMagnesium 6a18c52988
[irc_modpack] Update 2016-08-21 00:35:30 +02:00
LeMagnesium de7e806425
[mff_classic] Fix missing ':' 2016-08-21 00:33:37 +02:00
Dorian Wouters 5f17957058
Move our [default] edits to mff_classic, alias nodes 2016-08-20 21:19:10 +02:00
crabman77 6d5a0d1056 remove old furnace abm, rewrite locked furnace based on new furnace with node timer
fix issue https://github.com/MinetestForFun/server-minetestforfun/issues/478
2016-08-20 18:26:07 +02:00
crabman77 c3bdf8724b added missing textures, change textures name due to replaced carts to boost_carts 2016-08-20 12:06:28 +02:00
Dorian Wouters cd5ffc28d5
Move [stacktraceplus] to mods/ 2016-08-19 16:40:46 +02:00
LeMagnesium ca10667a1f
[rofl] Clean up the mod for #505 2016-08-18 19:10:19 +02:00
Darcidride a868bfe7ea Clean a little the world.mt file
load_mod_rofl = false
Do we need to enable it ?
2016-08-17 00:51:02 +02:00
LeMagnesium 34fc56aecc
[_misc] Use rightclick to place young trees 2016-08-16 21:00:40 +02:00
Coethium 971c17af16 [Hunger] global_step to timer #179 2016-08-16 17:36:37 +02:00
crabman77 41552c9492 fix announce curl timeout 2016-08-16 12:49:47 +02:00
crabman77 374e6b69ac fix crash on undefined function (new in > 0.4.14 stable?) 2016-08-16 12:41:39 +02:00
Coethium 453ea91778 [HUDBars] Only one main loop needed (step timer)
IRC @Mg Comment
2016-08-16 02:07:59 +02:00
5399 changed files with 95143 additions and 224819 deletions

3
.gitignore vendored
View File

@ -6,3 +6,6 @@
*.patch
*.swp
*.diff
#*
*.old
.dir-locals.el

196
.gitmodules vendored Executable file → Normal file
View File

@ -16,9 +16,199 @@
[submodule "mods/minercantile"]
path = mods/minercantile
url = https://github.com/MinetestForFun/minercantile.git
[submodule "minetestforfun_game/mods/stacktraceplus"]
path = minetestforfun_game/mods/stacktraceplus
url = https://github.com/MinetestForFun/stacktraceplus.git
[submodule "mods/profilerdumper"]
path = mods/profilerdumper
url = https://github.com/MinetestForFun/profilerdumper.git
[submodule "mods/xban2"]
path = mods/xban2
url = https://github.com/MinetestForFun/xban2.git
[submodule "mods/areas"]
path = mods/areas
url = https://github.com/MinetestForFun/areas.git
[submodule "mods/name_restrictions"]
path = mods/name_restrictions
url = https://github.com/MinetestForFun/name_restrictions.git
[submodule "mods/mysql_auth"]
path = mods/mysql_auth
url = https://github.com/MinetestForFun/mysql_auth.git
[submodule "mods/mapfix"]
path = mods/mapfix
url = https://github.com/minetest-mods/mapfix.git
[submodule "mods/technic"]
path = mods/technic
url = https://github.com/minetest-technic/technic.git
[submodule "mods/digilines"]
path = mods/digilines
url = https://github.com/minetest-mods/digilines.git
[submodule "mods/maidroid"]
path = mods/maidroid
url = https://github.com/tacigar/maidroid.git
[submodule "mods/pdisc"]
path = mods/pdisc
url = https://github.com/HybridDog/pdisc.git
[submodule "mods/enchanting"]
path = mods/enchanting
url = https://github.com/minetest-mods/enchanting.git
[submodule "mods/playeranim"]
path = mods/playeranim
url = https://github.com/minetest-mods/playeranim.git
[submodule "mods/morefarming"]
path = mods/morefarming
url = https://github.com/sys4-fr/morefarming.git
[submodule "mods/lightning"]
path = mods/lightning
url = https://github.com/minetest-mods/lightning.git
[submodule "mods/moreplants"]
path = mods/moreplants
url = https://github.com/sys4-fr/moreplants.git
branch = master
[submodule "mods/moreflowers"]
path = mods/moreflowers
url = https://github.com/sys4-fr/moreflowers.git
branch = master
[submodule "mods/claycrafter"]
path = mods/claycrafter
url = https://github.com/Dragonop/claycrafter.git
[submodule "mods/kpgmobs"]
path = mods/kpgmobs
url = https://github.com/sys4-fr/mod-kpgmobs.git
branch = nalc
[submodule "mods/diet"]
path = mods/diet
url = https://github.com/sys4-fr/diet.git
[submodule "mods/food"]
path = mods/food
url = https://github.com/sys4-fr/food.git
[submodule "mods/food_sweet"]
path = mods/food_sweet
url = https://github.com/sys4-fr/food_sweet.git
[submodule "mods/mtfoods"]
path = mods/mtfoods
url = https://github.com/sys4-fr/mtfoods.git
[submodule "mods/mobs"]
path = mods/mobs
url = https://github.com/sys4-fr/mobs_redo.git
branch = nalc
[submodule "mods/colouredstonebricks"]
path = mods/colouredstonebricks
url = https://github.com/davisonio/colouredstonebricks.git
[submodule "mods/pipeworks"]
path = mods/pipeworks
url = https://github.com/minetest-mods/pipeworks.git
[submodule "mods/h2omes"]
path = mods/h2omes
url = https://github.com/MinetestForFun/h2omes.git
[submodule "mods/player_physics"]
path = mods/player_physics
url = https://github.com/MinetestForFun/player_physics.git
[submodule "mods/moreores"]
path = mods/moreores
url = https://github.com/minetest-mods/moreores.git
[submodule "mods/stacktraceplus"]
path = mods/stacktraceplus
url = https://github.com/MinetestForFun/stacktraceplus.git
[submodule "mods/cherry_tree"]
path = mods/cherry_tree
url = https://github.com/sys4-fr/cherry_tree.git
[submodule "mods/weather_pack"]
path = mods/weather_pack
url = https://github.com/sys4-fr/weather_pack.git
branch = nalc
[submodule "mods/toolranks"]
path = mods/toolranks
url = https://github.com/lisacvuk/minetest-toolranks.git
[submodule "mods/darkage"]
path = mods/darkage
url = https://github.com/adrido/darkage.git
[submodule "mods/mob_horse"]
path = mods/mob_horse
url = https://github.com/sys4-fr/mob_horse.git
branch = nalc
[submodule "mods/playereffects"]
path = mods/playereffects
url = https://github.com/sys4-fr/playereffects.git
[submodule "mods/item_drop"]
path = mods/item_drop
url = https://github.com/tacotexmex/item_drop.git
[submodule "mods/unifieddyes"]
path = mods/unifieddyes
url = https://github.com/minetest-mods/unifieddyes.git
[submodule "mods/unifiedbricks"]
path = mods/unifiedbricks
url = https://github.com/minetest-mods/unifiedbricks.git
[submodule "mods/bobblocks"]
path = mods/bobblocks
url = https://github.com/rabbibob/BobBlocks.git
[submodule "mods/homedecor_modpack"]
path = mods/homedecor_modpack
url = https://github.com/minetest-mods/homedecor_modpack.git
[submodule "mods/unifiedwool"]
path = mods/unifiedwool
url = https://github.com/MT-Modder/unifiedwool.git
[submodule "mods/biome_lib"]
path = mods/biome_lib
url = https://github.com/minetest-mods/biome_lib.git
[submodule "mods/moretrees"]
path = mods/moretrees
url = https://github.com/minetest-mods/moretrees.git
[submodule "mods/plantlife_modpack"]
path = mods/plantlife_modpack
url = https://github.com/sys4-fr/plantlife_modpack.git
[submodule "mods/moremesecons"]
path = mods/moremesecons
url = https://github.com/minetest-mods/moremesecons.git
[submodule "mods/camera"]
path = mods/camera
url = https://github.com/sys4-fr/camera.git
[submodule "mods/3d_armor"]
path = mods/3d_armor
url = https://github.com/stujones11/minetest-3d_armor.git
[submodule "mods/technic_armor"]
path = mods/technic_armor
url = https://github.com/stujones11/technic_armor.git
[submodule "mods/connected_chests"]
path = mods/connected_chests
url = https://github.com/HybridDog/connected_chests.git
[submodule "minetest_game"]
path = minetest_game
url = https://github.com/minetest/minetest_game
branch = stable-0.4
[submodule "mods/bakedclay"]
path = mods/bakedclay
url = https://notabug.org/TenPlus1/bakedclay.git
[submodule "mods/bonemeal"]
path = mods/bonemeal
url = https://notabug.org/TenPlus1/bonemeal.git
[submodule "mods/sea"]
path = mods/sea
url = https://sys4.fr/gogs/NotreAmiLeCube/sea.git
[submodule "mods/stained_glass"]
path = mods/stained_glass
url = https://gitlab.com/VanessaE/stained_glass.git
[submodule "mods/farming"]
path = mods/farming
url = https://notabug.org/TenPlus1/Farming.git
[submodule "mods/hazmat_suit"]
path = mods/hazmat_suit
url = https://github.com/stujones11/hazmat_suit.git
[submodule "mods/hudbars"]
path = mods/hudbars
url = https://sys4.fr/gogs/NotreAmiLeCube/hudbars.git
[submodule "mods/hbhunger"]
path = mods/hbhunger
url = https://sys4.fr/gogs/NotreAmiLeCube/hbhunger.git
[submodule "mods/mana"]
path = mods/mana
url = https://sys4.fr/gogs/NotreAmiLeCube/mana.git
[submodule "mods/moreblocks"]
path = mods/moreblocks
url = https://sys4.fr/gogs/NotreAmiLeCube/moreblocks.git
[submodule "mods/coloredwood"]
path = mods/coloredwood
url = https://sys4.fr/gogs/NotreAmiLeCube/coloredwood.git
[submodule "mods/mesecons"]
path = mods/mesecons
url = https://sys4.fr/gogs/NotreAmiLeCube/mesecons.git
[submodule "mods/boost_cart"]
path = mods/boost_cart
url = https://sys4.fr/gogs/NotreAmiLeCube/boost_cart.git

View File

@ -1,14 +1,19 @@
MinetestForFun Game server version of MinetestForFun Team
Notre Ami Le Cube Game server by sys4
===================
![banner_classic](http://i.imgur.com/5ADfUeK.png)
![banner_classic](https://i.imgur.com/BVmsQty.png)
You can find here the subgame and the mods of the server MinetestForFun.
You can find here all the files of the server NALC.
If you want help us, don't hesitate and take a look at our issues.
If you want help me, don't hesitate and take a look at my issues.
Contributors
===================
- sys4
> Server hoster, repository owner, server maintenance, ...
Contributors of the original MinetestForFun server that I have forked
===================
- Ombridride - Darcidride - MinetestForFun
> Server hoster, reposity owner.
- LeMagnesium - Mg
@ -37,20 +42,23 @@ Contributors
> Mathematics wizard, broomstick crafter
- dan-g
> Texture creator, who gave us some of [our website](https://xorhub.com/)'s logos and banners
- fabienwang
> Someone whose name we misspelt
- younishd
> Cart fixer
minetestforfun_game sous-jeu et mods
Notre Ami Le Cube serveur de jeux Minetest
===================
Vous pouvez trouver ici le sous-jeu et les mods du serveur MinetestForFun.
Vous pouvez trouver ici tous les fichiers du du serveur NALC.
Si vous voulez nous aider, n'hésitez pas et jetez un coup d'oeil à nos tickets.
Si vous voulez nous aider, n'hésitez pas et jetez un coup d'oeil à mes tickets.
Contributeurs
===================
- sys4
> Hébergeur du serveur, possesseur du dépot, mainteneur du serveur, et bien d'autres...
Contributeurs du serveur original MinetestForFun que j'ai forké
===================
- Ombridride - Darcidride - MinetestForFun
> Hébergeur du serveur, possesseur du dépôt.
- LeMagnesium - Mg
@ -79,7 +87,5 @@ Contributeurs
> Magicien des mathématiques, fabricant de balais volant
- dan-g
> Créateur de textures, qui nous a fait certain des logos et bannières de [notre site](https://xorhub.com/)
- fabienwang
> Quelqu'un dont on a mal écrit le nom
- younishd
> Réparateur de carts

View File

@ -1,6 +1,6 @@
### GENERAL SETTINGS SERVER ###
###############################
name = Darcidride
name = admin
# Logs parameters - 0 = none, 1 = warning, 2 = action, 3 = info, 4 = verbose
debug_log_level = action
# Profiling (mod needed because the minetest cmdline sucks)
@ -14,15 +14,17 @@ enable_damage = true
disallow_empty_password = true
server_dedicated = true
# 1 day-night cycle lasts 24 minutes instead of 20.
time_speed = 60
time_speed = 36
# Slightly higher player limit by default.
max_users = 25
max_users = 10
# Give basics privileges to new players.
default_privs = home, spawn, faction_user
# If true, actions are recorded for rollback
enable_rollback_recording = true
# Desactivate fire
disable_fire = true
# Activate fire
disable_fire = false
# Enable TNT
enable_tnt = true
# Si false, les pseudos des joueurs sont cachés à partir d'une distance de 50 blocs
unlimited_player_transfer_distance = false
# Activated the minimap usage if true
@ -44,61 +46,76 @@ sqlite_synchronous = 0
### SERVER AND PUBLIC INFORMATIONS ###
######################################
server_name = MinetestForFun (Survival & PVP) [FR/EN]
server_description = Classic server hosted by XorHub community(our old name was MinetestForFun Team). This server have a class system(Warrior, Hunter, Wizard) and is highly modded, content-rich, good luck to survive and have fun! [Visit "xorhub.com" for more informations]
motd = Welcome to "MinetestForFun (Survival & PVP) [EN/FR]" server! / Bienvenue sur le serveur "MinetestForFun (Survie & PVP) [FR/EN]" !
server_name = NotreAmiLeCube (Survival & PVP) [FR/EN]
server_description = Server hosted by sys4. This server have a class system(Warrior, Hunter, Wizard) and is highly modded, content-rich, good luck to survive and have fun! [This server is a fork from MinetestForFun Classic]
motd = Welcome to "NotreAmiLeCube (Survival & PVP) [EN/FR]" server! / Bienvenue sur le serveur "NotreAmiLeCube (Survie & PVP) [FR/EN]" !
serverlist_url = servers.minetest.net
server_url = http://xorhub.com/
server_announce = true
server_address = 158.69.114.146
port = 30001
server_url = <URL>
server_announce = false
server_address = <IP>
port = <PORT UDP>
# curl default 5sec but timeout, fix to 15sec
curl_timeout = 15000
### MOVEMENT MODIFICATIONS ###
##############################
# Slightly decreased compared to minetest_next.
movement_acceleration_default = 2.4
#movement_acceleration_default = 2.4
# Same acceleration in air and on the ground, to fix some movement glitches. Also is easier to play.
movement_acceleration_air = 1.2
#movement_acceleration_air = 1.2
# Almost instant acceleration in fast mode for more control.
movement_acceleration_fast = 24
#movement_acceleration_fast = 24
# Walking is 20 % faster than in minetest_game. Makes playing without the "fast" privilege less boring.
movement_speed_walk = 4.8
#movement_speed_walk = 4.8
# Half the speed of walking, just like the animation.
movement_speed_crouch = 2.4
#movement_speed_crouch = 2.4
# 5 times faster than walking.
movement_speed_fast = 24
#movement_speed_fast = 24
# Makes climbing speed faster than rising in the water. Also makes ladders more useful.
movement_speed_climb = 4.8
#movement_speed_climb = 4.8
# Faster movement in liquids. Jumping at the water surface also speeds up swimming.
movement_liquid_fluidity = 1.6 (default = 1)
#movement_liquid_fluidity = 1.6 (default = 1)
# Ralentissement à la surface de l'eau
movement_liquid_fluidity_smooth = 0.5
#movement_liquid_fluidity_smooth = 0.5
# Vitesse à laquelle le joueur coule
movement_liquid_sink = 15
#movement_liquid_sink = 15
# Slightly less gravity.
movement_gravity = 9.5
#movement_gravity = 9.5
# Jump height slightly reduced.
movement_speed_jump = 6.5
#movement_speed_jump = 6.5
# Emplacement du static spawn point
static_spawnpoint = 24,97,-1
static_spawnpoint = 144, 25, 261
# Emplacment du static spawn pour le nether
nether_static_spawnpoint = 43, -20020, -12
nether_static_spawnpoint = 79, -20018, -45
# Désactivation de l'anti-cheat qui fait ce téléporter en arrière si l'on va trop vite
disable_anticheat = true
### WORLD MODIFICATIONS ###
###########################
# A chosen map seed for a new map, leave empty for random
fixed_map_seed = 13107546752813893513
#fixed_map_seed = 13107546752813893513
fixed_map_seed = 1681440164076556961
# Enable dungeons on new worlds.
mg_flags = trees, caves, dungeons
mg_flags = trees, caves, dungeons, decorations
# Enable jungles on new worlds, disable biome blend and mud flow (faster, looks better).
mgv6_spflags = jungles, nobiomeblend, nomudflow
# Less deserts, more beaches.
mgv6_freq_desert = 0.6
mgv6_freq_beach = -0.15
# Needed for the LUA mapgen "Watershed"
mg_name = singlenode
#mgv6_freq_desert = 0.6
#mgv6_freq_beach = -0.15
# Tweeked "valleys" mapgen
mg_biome_np_heat = 50, 50, (350,350,350), 5349, 3, 0.5, 2.0
mg_biome_np_humidity = 50, 50, (350,350,350), 842, 3, 0.5, 2.0
mg_name = valleys
mg_valleys_spflags = altitude_chill,humid_rivers
mgvalleys_altitude_chill = 90
mgvalleys_large_cave_depth = -33
mgvalleys_lava_features = 0
mgvalleys_massive_cave_depth = -256
mgvalleys_river_depth = 4
mgvalleys_river_size = 5
mgvalleys_water_features = 0
mgvalleys_cave_width = 0.09
### MODS PARAMETERS ###
#######################
@ -106,8 +123,89 @@ mg_name = singlenode
give_initial_stuff = true
# AREAS MOD
areas.self_protection = true
areas.self_protection_max_size = {x=50, y=100, z=50}
areas.self_protection_max_areas = 10
areas.self_protection_max_size = {x=128, y=128, z=128}
areas.self_protection_max_areas = 30
# MOBS
remove_far_mobs = false
# MOBS custom spawn chance and number
mobs_animal:bee = 9000,2
mobs_animal:bunny = 15000,2
mobs_animal:chicken = 15000,2
mobs_animal:cow = 15000,2
mobs_animal:goat = 20000,2
mobs_animal:kitten = 122000,2
mobs_animal:penguin = 20000,2
mobs_animal:rat = 15000,2
mobs_animal:sheep_white = 15000,2
mobs_animal:pumba = 15000,2
pmobs:npc = 500000,1
pmobs:npc_female = 500000,1
pmobs:wolf = 100000,1
pmobs:yeti = 7000,2
kpgmobs:deer = 51000,1
kpgmobs:jeraf = 51000,1
kpgmobs:medved = 100000,1
creeper:creeper = 25000,2
mob_horse:horse = 60000,1
mobs_turtles:turtle = 30000,1
mobs_turtles:seaturtle = 30000,1
# Armor Configuration
# -------------------
# Set false to disable individual armor materials.
armor_material_wood = true
armor_material_cactus = true
armor_material_steel = true
armor_material_bronze = true
armor_material_diamond = true
armor_material_gold = true
armor_material_mithril = true
armor_material_crystal = false
armor_material_reinforcedleather = true
armor_material_hardenedleather = true
armor_material_blackmithril = true
# Increase this if you get initialization glitches when a player first joins.
armor_init_delay = 1
# Number of initialization attempts.
# Use in conjunction with armor_init_delay if initialization problems persist.
armor_init_times = 1
# Increase this if armor is not getting into bones due to server lag.
armor_bones_delay = 1
# How often player armor items are updated.
armor_update_time = 1
# Drop armor when a player dies.
# Uses bones mod if present, otherwise items are dropped around the player.
armor_drop = true
# Pulverise armor when a player dies, overrides armor_drop.
armor_destroy = false
# You can use this to increase or decrease overall armor effectiveness,
# eg: level_multiplier = 0.5 will reduce armor level by half.
armor_level_multiplier = 1
# You can use this to increase or decrease overall armor healing,
# eg: armor_heal_multiplier = 0 will disable healing altogether.
armor_heal_multiplier = 1
# Enable water protection (periodically restores breath when activated)
armor_water_protect = true
# Enable fire protection (defaults true if using ethereal mod)
armor_fire_protect = true
# Enable punch damage effects.
armor_punch_damage = true
# Enable migration of old armor inventories
armor_migrate_old_inventory = true
# DROPONDIE MOD - si false, les sacs des joueurs sont vidées à leurs mort
keepInventory = false
# RANDOM_MESSAGES MOD - paramétrage de l'interval entre deux messages, 30min actuellement
@ -121,7 +219,7 @@ mesecon.overheat_max = 60
mapfix_default_size = 40
mapfix_max_size = 50
mapfix_delay = 5
# TIME REGULATION - Disabled by default
# TIME REGULATION - turned off by default
disable_time_regulation = true
# Tweak the mapgen chunksize (16 per 16 nodes, default is "5"), will be applied on many mods
chunksize = 3
@ -129,17 +227,36 @@ chunksize = 3
mesecon.blinky_plant_interval = 7
# Set default mana regeneration to 3
mana_default_regen = 3
# HUDBARS
hudbars_sorting = health=0, mana=1, satiation=2, sprint=3, breath=4, armor=5
hudbars_tick = 0.4
hudbars_start_offset_left_y = -100
hudbars_start_offset_right_y = -100
# Mysql Auth, config file path
#mysql_auth.cfgfile = /home/quentinbd/mysql_auth/mff-classic_config
# CHRISTMAS_CRAFT, active snow when winter(december/january)
is_winter = false
### IRC CHAT ###
################
# For when '*inchra.net' is down
irc.server = digitalaudioconcepts.com
irc.channel = #minetestforfun
irc.interval = 2.0
irc.nick = MFF-Bot
#irc.server = irc.inchra.chat
#irc.channel = #minetestforfun
#irc.interval = 2.0
#irc.nick = MFF-Bot
#irc.password = #vide car aucun mdp pour le channel
secure.trusted_mods = irc, snow, stacktraceplus
irc.debug = false
irc.disable_auto_connect = false
irc.disable_auto_join = false
irc.send_join_part = true
#irc.debug = false
#irc.disable_auto_connect = false
#irc.disable_auto_join = false
#irc.send_join_part = true
## Player Anim ##
player_model_version = default_character_v2
# item_drop
enable_item_drop = false
enable_item_pickup_key = false
enable_item_pickup = true
item_pickup_radius = 0.75
#item_pickup_keytype = Sneak

1
minetest_game Submodule

@ -0,0 +1 @@
Subproject commit d6a66860af6fc39957d8e947824b9c56c3686b8e

View File

@ -1,9 +0,0 @@
## Generic ignorable patterns and files
*~
.*.swp
*bak*
tags
*.vim
## Files related to minetest development cycle
*.patch

View File

@ -1,53 +0,0 @@
Minetest Game [minetest_game]
=============================
The main subgame for the Minetest engine
========================================
To use this subgame with the Minetest engine, insert this repository as
/games/minetest_game
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.
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
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!)
License of source code
----------------------
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
See README.txt in each mod directory for information about other authors.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License of media (textures and sounds)
--------------------------------------
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
See README.txt in each mod directory for information about other authors.
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

View File

@ -1 +0,0 @@
name = MinetestForFun Game

View File

@ -1,487 +0,0 @@
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.
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
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
)
Beds API
--------
beds.register_bed(
"beds:bed", -- Bed name
def -- See [#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
###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"}
}
}
Doors API
---------
The doors mod allows modders to register custom doors and trapdoors.
`doors.register_door(name, def)`
* 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 ObjecRef 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
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)
###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]
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_plant(name, Plant definition)`
* Register a new growing plant, see [#Plant definition]
###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
--------
`on_burn(pos)`
* Called when fire attempts to remove a burning node.
* `pos` Position of the burning node.
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 = 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.
`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]
`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
Xpanes API
----------
Creates panes that automatically connect to each other
`xpanes.register_pane(subname, def)`
* `subname`: used for nodename. Result: "xpanes:subname" and "xpanes:subname_{2..15}"
* `def`: See [#Pane definition]
###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"
| tnt:gunpowder_burning | "gunpowder"
Example:
If you want to add a new rail type and want it to connect with default:rail,
add `connect_to_raillike=minetest.raillike_group("rail")` into the `groups` table
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 constants
-----------------
`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)`
* 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.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_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
###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.
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.
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
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
Base color groups:
* `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`
The whole unifieddyes palette as groups:
* `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`
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'},
})
###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
Trees
-----
* `default.grow_tree(pos, is_apple_tree)`
* Grows a mgv6 tree or apple tree 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 904 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

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

View File

@ -1,40 +0,0 @@
# 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
# 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 standard fire should be disabled ('basic flame' nodes will disappear)
# 'permanent flame' nodes will remain with either setting
#disable_fire = false
# Whether steel tools, torches and cobblestone should be given to new players
#give_initial_stuff = false
# Whether the TNT mod should be enabled
#enable_tnt = <true in singleplayer, false in multiplayer>
# The radius of a TNT explosion
#tnt_radius = 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

View File

@ -1,30 +0,0 @@
Minetest Game mod: beds
=======================
by BlockMen (c) 2014-2015
Version: 1.1.1
About
~~~~~
This mod adds a bed to Minetest which allows to skip the night. To sleep rightclick the bed, if playing
in singleplayer mode the night gets skipped imideatly. If playing on server you get shown how many other
players are in bed too. If all players are sleeping the night gets skipped aswell. Also the night skip can be forced
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
---------------------------------------
(c) Copyright BlockMen (2014-2015)
This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the Do What The Fuck You Want
To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details.

View File

@ -1,113 +0,0 @@
function beds.register_bed(name, def)
minetest.register_node(name .. "_bottom", {
description = def.description,
inventory_image = def.inventory_image,
wield_image = def.wield_image,
drawtype = "nodebox",
tiles = def.tiles.bottom,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
stack_max = 1,
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 1},
sounds = default.node_sound_wood_defaults(),
node_box = {
type = "fixed",
fixed = def.nodebox.bottom,
},
selection_box = {
type = "fixed",
fixed = def.selectionbox,
},
after_place_node = function(pos, placer, itemstack)
local n = minetest.get_node_or_nil(pos)
if not n or not n.param2 then
minetest.remove_node(pos)
return true
end
local dir = minetest.facedir_to_dir(n.param2)
local p = vector.add(pos, dir)
local n2 = minetest.get_node_or_nil(p)
local def = n2 and minetest.registered_items[n2.name]
if not def or not def.buildable_to then
minetest.remove_node(pos)
return true
end
minetest.set_node(p, {name = n.name:gsub("%_bottom", "_top"), param2 = n.param2})
return false
end,
on_destruct = function(pos)
local n = minetest.get_node_or_nil(pos)
if not n then return end
local dir = minetest.facedir_to_dir(n.param2)
local p = vector.add(pos, dir)
local n2 = minetest.get_node(p)
if minetest.get_item_group(n2.name, "bed") == 2 and n.param2 == n2.param2 then
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,
on_rotate = function(pos, node, user, mode, new_param2)
local dir = minetest.facedir_to_dir(node.param2)
local p = vector.add(pos, dir)
local node2 = minetest.get_node_or_nil(p)
if not node2 or not minetest.get_item_group(node2.name, "bed") == 2 or
not node.param2 == node2.param2 then
return false
end
if minetest.is_protected(p, user:get_player_name()) then
minetest.record_protection_violation(p, user:get_player_name())
return false
end
if mode ~= screwdriver.ROTATE_FACE then
return false
end
local newp = vector.add(pos, minetest.facedir_to_dir(new_param2))
local node3 = minetest.get_node_or_nil(newp)
local def = node3 and minetest.registered_nodes[node3.name]
if not def or not def.buildable_to then
return false
end
if minetest.is_protected(newp, user:get_player_name()) then
minetest.record_protection_violation(newp, user:get_player_name())
return false
end
node.param2 = new_param2
minetest.swap_node(pos, node)
minetest.remove_node(p)
minetest.set_node(newp, {name = node.name:gsub("%_bottom", "_top"), param2 = new_param2})
return true
end,
})
minetest.register_node(name .. "_top", {
drawtype = "nodebox",
tiles = def.tiles.top,
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,
},
})
minetest.register_alias(name, name .. "_bottom")
-- register recipe
minetest.register_craft({
output = name,
recipe = def.recipe
})
end

View File

@ -1,92 +0,0 @@
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"},
},
})
-- 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
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")

View File

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

View File

@ -1,271 +0,0 @@
local pi = math.pi
local player_in_bed = 0
local is_sp = minetest.is_singleplayer()
local enable_respawn = minetest.setting_getbool("enable_bed_respawn")
if enable_respawn == nil then
enable_respawn = true
end
-- helper functions
local function get_look_yaw(pos)
local n = minetest.get_node(pos)
if n.param2 == 1 then
return pi/2, n.param2
elseif n.param2 == 3 then
return -pi/2, n.param2
elseif n.param2 == 0 then
return pi, n.param2
else
return 0, 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
players = minetest.get_connected_players()
end
for n, player in ipairs(players) do
local name = player:get_player_name()
if not in_bed[name] then
return false
end
end
return #players > 0
end
local function lay_down(player, pos, bed_pos, state, skip)
local name = player:get_player_name()
local hud_flags = player:hud_get_flags()
if not player or not name then
return
end
-- stand up
if state ~= nil and not state then
local p = beds.pos[name] or nil
if beds.player[name] ~= nil then
beds.player[name] = nil
player_in_bed = player_in_bed - 1
end
-- skip here to prevent sending player specific changes (used for leaving players)
if skip then
return
end
if p then
player:setpos(p)
end
-- physics, eye_offset, etc
player:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})
player:set_look_yaw(math.random(1, 180)/100)
default.player_attached[name] = false
player:set_physics_override(1, 1, 1)
hud_flags.wielditem = true
default.player_set_animation(player, "stand" , 30)
-- lay down
else
beds.player[name] = 1
beds.pos[name] = pos
player_in_bed = player_in_bed + 1
-- physics, eye_offset, etc
player:set_eye_offset({x=0,y=-13,z=0}, {x=0,y=0,z=0})
local yaw, param2 = get_look_yaw(bed_pos)
player:set_look_yaw(yaw)
local dir = minetest.facedir_to_dir(param2)
local p = {x=bed_pos.x+dir.x/2,y=bed_pos.y,z=bed_pos.z+dir.z/2}
player:set_physics_override(0, 0, 0)
player:setpos(p)
default.player_attached[name] = true
hud_flags.wielditem = false
default.player_set_animation(player, "lay" , 0)
end
player:hud_set_flags(hud_flags)
end
local function update_formspecs(finished)
local ges = #minetest.get_connected_players()
local form_n = ""
local is_majority = (ges/2) < player_in_bed
if finished then
form_n = beds.formspec ..
"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
form_n = form_n ..
"button_exit[2,8;4,0.75;force;Force night skip]"
end
end
for name,_ in pairs(beds.player) do
minetest.show_formspec(name, "beds_form", form_n)
end
end
-- public functions
function beds.kick_players()
for name,_ in pairs(beds.player) do
local player = minetest.get_player_by_name(name)
lay_down(player, nil, nil, false)
end
end
function beds.skip_night()
minetest.set_timeofday(0.23)
beds.set_spawns()
end
function beds.on_rightclick(pos, player)
local name = player:get_player_name()
local ppos = player:getpos()
local tod = minetest.get_timeofday()
if tod > 0.2 and tod < 0.805 then
if beds.player[name] then
lay_down(player, nil, nil, false)
end
minetest.chat_send_player(name, "You can only sleep at night.")
return
end
-- move to bed
if not beds.player[name] then
lay_down(player, ppos, pos)
else
lay_down(player, nil, nil, false)
end
if not is_sp then
update_formspecs(false)
end
-- skip the night and let all players stand up
if check_in_beds() then
minetest.after(2, function()
if not is_sp then
update_formspecs(is_night_skip_enabled())
end
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
end
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
if not enable_respawn then
return false
end
local name = player:get_player_name()
local pos = beds.spawn[name] or nil
if pos then
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
end)
end
end)
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "beds_form" then
return
end
if fields.quit or fields.leave then
lay_down(player, nil, nil, false)
update_formspecs(false)
end
if fields.force then
update_formspecs(is_night_skip_enabled())
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
end
end
end)

View File

@ -1,16 +0,0 @@
beds = {}
beds.player = {}
beds.pos = {}
beds.spawn = {}
beds.formspec = "size[8,15;true]"..
"bgcolor[#080808BB; true]"..
"button_exit[2,12;4,0.75;leave;Leave Bed]"
local modpath = minetest.get_modpath("beds")
-- load files
dofile(modpath.."/functions.lua")
dofile(modpath.."/api.lua")
dofile(modpath.."/beds.lua")
dofile(modpath.."/spawns.lua")

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

View File

@ -1,60 +0,0 @@
local world_path = minetest.get_worldpath()
local org_file = world_path .. "/beds_spawns"
local file = world_path .. "/beds_spawns"
local bkwd = false
-- check for PA's beds mod spawns
local cf = io.open(world_path .. "/beds_player_spawns", "r")
if cf ~= nil then
io.close(cf)
file = world_path .. "/beds_player_spawns"
bkwd = true
end
function beds.read_spawns()
local spawns = beds.spawn
local input = io.open(file, "r")
if input and not bkwd then
repeat
local x = input:read("*n")
if x == nil then
break
end
local y = input:read("*n")
local z = input:read("*n")
local name = input:read("*l")
spawns[name:sub(2)] = {x = x, y = y, z = z}
until input:read(0) == nil
io.close(input)
elseif input and bkwd then
beds.spawn = minetest.deserialize(input:read("*all"))
input:close()
beds.save_spawns()
os.rename(file, file .. ".backup")
file = org_file
else
spawns = {}
end
end
function beds.save_spawns()
if not beds.spawn then
return
end
local output = io.open(org_file, "w")
for i, v in pairs(beds.spawn) do
output:write(v.x.." "..v.y.." "..v.z.." "..i.."\n")
end
io.close(output)
end
function beds.set_spawns()
for name,_ in pairs(beds.player) do
local player = minetest.get_player_by_name(name)
local p = player:getpos()
beds.spawn[name] = p
end
beds.save_spawns()
end
beds.read_spawns()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 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

View File

@ -1,16 +0,0 @@
Minetest Game mod: boats
========================
by PilzAdam
License of source code:
-----------------------
WTFPL
License of media (textures and sounds):
---------------------------------------
WTFPL
Authors of media files:
-----------------------
textures: Zeg9
model: thetoon and Zeg9, modified by PavelS(SokolovPavel)

View File

@ -1,335 +0,0 @@
--
-- Helper functions
--
boats = {}
function boats.is_water(pos)
local nn = minetest.get_node(pos).name
return minetest.get_item_group(nn, "water") ~= 0
end
function boats.get_sign(i)
if i == 0 then
return 0
else
return i / math.abs(i)
end
end
function boats.get_velocity(v, yaw, y)
local x = -math.sin(yaw) * v
local z = math.cos(yaw) * v
return {x = x, y = y, z = z}
end
function boats.get_v(v)
return math.sqrt(v.x ^ 2 + v.z ^ 2)
end
function boats.on_rightclick(self, clicker)
if not clicker or not clicker:is_player() then
return
end
local name = clicker:get_player_name()
if self.driver and clicker == self.driver then
self.driver = nil
clicker:set_detach()
default.player_attached[name] = false
default.player_set_animation(clicker, "stand" , 30)
local pos = clicker:getpos()
pos = {x = pos.x, y = pos.y + 0.2, z = pos.z}
minetest.after(0.1, function()
clicker:setpos(pos)
end)
elseif not self.driver then
local attach = clicker:get_attach()
if attach and attach:get_luaentity() then
local luaentity = attach:get_luaentity()
if luaentity.driver then
luaentity.driver = nil
end
end
clicker:set_detach()
end
self.driver = clicker
clicker:set_attach(self.object, "", {x = 0, y = 11, z = -3}, {x = 0, y = 0, z = 0})
default.player_attached[name] = true
minetest.after(0.2, function()
default.player_set_animation(clicker, "sit" , 30)
end)
self.object:setyaw(clicker:get_look_yaw() - math.pi / 2)
end
function boats.on_activate(self, staticdata, dtime_s)
self.object:set_armor_groups({immortal = 1})
if staticdata then
self.v = tonumber(staticdata)
end
self.last_v = self.v
end
function boats.get_staticdata(self)
return tostring(self.v)
end
function boats.on_punch(self, puncher)
if not puncher or not puncher:is_player() or self.removed then
return
end
if self.driver and puncher == self.driver then
self.driver = nil
puncher:set_detach()
default.player_attached[puncher:get_player_name()] = false
end
if not self.driver then
self.removed = true
-- delay remove to ensure player is detached
minetest.after(0.1, function()
self.object:remove()
end)
if not minetest.setting_getbool("creative_mode") then
local inv = puncher:get_inventory()
if inv:room_for_item("main", "boats:" .. self.parameters.name) then
inv:add_item("main", "boats:" .. self.parameters.name)
else
minetest.add_item(self.object:getpos(), "boats:" .. self.parameters.name)
end
end
end
end
function boats.on_step(self, dtime)
self.v = boats.get_v(self.object:getvelocity()) * boats.get_sign(self.v)
if self.driver then
local ctrl = self.driver:get_player_control()
local yaw = self.object:getyaw()
if ctrl.up then
self.v = self.v + self.parameters.controls.up or 0.1
elseif ctrl.down then
self.v = self.v - self.parameters.controls.down or 0.08
end
if ctrl.left then
if self.v < 0 then
self.object:setyaw(yaw - (1 + dtime) * (0.03 * (self.parameters.controls.rotate or 1)))
else
self.object:setyaw(yaw + (1 + dtime) * (0.03 * (self.parameters.controls.rotate or 1)))
end
elseif ctrl.right then
if self.v < 0 then
self.object:setyaw(yaw + (1 + dtime) * (0.03 * (self.parameters.controls.rotate or 1)))
else
self.object:setyaw(yaw - (1 + dtime) * (0.03 * (self.parameters.controls.rotate or 1)))
end
end
end
local velo = self.object:getvelocity()
if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
self.object:setpos(self.object:getpos())
return
end
local s = boats.get_sign(self.v)
self.v = self.v - 0.02 * s
if s ~= boats.get_sign(self.v) then
self.object:setvelocity({x = 0, y = 0, z = 0})
self.v = 0
return
end
if math.abs(self.v) > 4.5 then
self.v = 4.5 * boats.get_sign(self.v)
end
local p = self.object:getpos()
p.y = p.y - 0.5
local new_velo = {x = 0, y = 0, z = 0}
local new_acce = {x = 0, y = 0, z = 0}
if not boats.is_water(p) then
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
if (not nodedef) or nodedef.walkable then
self.v = 0
new_acce = {x = 0, y = 1, z = 0}
else
new_acce = {x = 0, y = -9.8, z = 0} -- freefall in air -9.81
end
new_velo = boats.get_velocity(self.v, self.object:getyaw(),
self.object:getvelocity().y)
self.object:setpos(self.object:getpos())
else
p.y = p.y + 1
if boats.is_water(p) then
local y = self.object:getvelocity().y
if y >= 4.5 then
y = 4.5
elseif y < 0 then
new_acce = {x = 0, y = 20, z = 0}
else
new_acce = {x = 0, y = 5, z = 0}
end
new_velo = boats.get_velocity(self.v, self.object:getyaw(), y)
self.object:setpos(self.object:getpos())
else
new_acce = {x = 0, y = 0, z = 0}
if math.abs(self.object:getvelocity().y) < 1 then
local pos = self.object:getpos()
pos.y = math.floor(pos.y) + 0.5
self.object:setpos(pos)
new_velo = boats.get_velocity(self.v, self.object:getyaw(), 0)
else
new_velo = boats.get_velocity(self.v, self.object:getyaw(),
self.object:getvelocity().y)
self.object:setpos(self.object:getpos())
end
end
end
self.object:setvelocity(new_velo)
self.object:setacceleration(new_acce)
end
boats.register_boat = function(parameters)
minetest.register_entity("boats:" .. parameters.name, {
physical = true,
collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5},
visual = "mesh",
mesh = "boat.obj",
textures = {parameters.texture or "default_wood.png"},
parameters = parameters,
driver = nil,
v = 0,
last_v = 0,
removed = false,
on_rightclick = boats.on_rightclick,
on_activate = boats.on_activate,
get_staticdata = boats.get_staticdata,
on_punch = boats.on_punch,
on_step = boats.on_step
})
minetest.register_craftitem("boats:" .. parameters.name, {
description = parameters.description or "Boat",
inventory_image = "boats_" .. parameters.name .. "_inventory.png",
wield_image = "boats_" .. parameters.name .. "_wield.png",
wield_scale = {x = 2, y = 2, z = 1},
liquids_pointable = true,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return
end
if not boats.is_water(pointed_thing.under) then
return
end
pointed_thing.under.y = pointed_thing.under.y + 0.5
minetest.add_entity(pointed_thing.under, "boats:"..parameters.name)
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return itemstack
end,
})
end
boats.register_boat({
name = "boat",
texture = "default_wood.png",
controls = {
up = 0.1,
down = 0.08,
rotate = 0.75
},
description = "Boat"
})
boats.register_boat({
name = "race",
texture = "default_gravel.png",
controls = {
up = 0.2,
down = 0.18,
rotate = 1
},
description = "Race boat"
})
boats.register_boat({
name = "expert_race",
texture = "default_desert_stone.png",
controls = {
up = 0.25,
down = 0.25,
rotate = 4
},
description = "Expert race boat"
})
boats.register_boat({
name = "water",
texture = "default_water.png",
controls = {
up = 0.3,
down = 0.24,
rotate = 4
},
description = "Water boat"
})
boats.register_boat({
name = "moon",
texture = "boats_moon.png",
controls = {
up = 0.5,
down = 0.1,
rotate = 8
},
description = "Moon boat"
})
-- Craft registrations
minetest.register_craft({
output = "boats:moon",
recipe = {
{"default:obsidian", "", "default:obsidian"},
{"default:dirt", "default:leaves", "default:dirt"},
},
})
minetest.register_craft({
output = "boats:expert_race",
recipe = {
{"default:desert_stone", "", "default:desert_stone"},
{"default:desert_stone", "default:mese", "default:desert_stone"},
},
})
minetest.register_craft({
output = "boats:race",
recipe = {
{"default:gravel", "", "default:gravel"},
{"default:gravel", "default:steelblock", "default:gravel"},
},
})
minetest.register_craft({
output = "boats:water",
recipe = {
{"default:glass", "", "default:glass"},
{"default:glass", "bucket:bucket_water", "default:glass"},
},
})
minetest.register_craft({
output = "boats:boat",
recipe = {
{"", "", "" },
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
},
})

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

View File

@ -1,26 +0,0 @@
Minetest Game mod: bucket
=========================
License of source code:
-----------------------
Copyright (C) 2011-2012 Kahrl <kahrl@gmx.net>
Copyright (C) 2011-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
http://www.gnu.org/licenses/lgpl-2.1.html
License of media (textures and sounds)
--------------------------------------
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
http://creativecommons.org/licenses/by-sa/3.0/
Authors of media files
-----------------------
Everything not listed in here:
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>

View File

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

View File

@ -1,221 +0,0 @@
-- Minetest 0.4 mod: bucket
-- See README.txt for licensing and other information.
minetest.register_alias("bucket", "bucket:bucket_empty")
minetest.register_alias("bucket_water", "bucket:bucket_water")
minetest.register_alias("bucket_acid", "bucket:bucket_acid")
minetest.register_alias("bucket_lava", "bucket:bucket_lava")
minetest.register_craft({
output = 'bucket:bucket_empty 1',
recipe = {
{'group:ingot', '', 'group:ingot'},
{'', 'group:ingot', ''},
}
})
bucket = {}
bucket.liquids = {}
local function check_protection(pos, name, text)
if minetest.is_protected(pos, name) then
minetest.log("action", (name ~= "" and name or "A mod")
.. " tried to " .. text
.. " at protected position "
.. minetest.pos_to_string(pos)
.. " with a bucket")
minetest.record_protection_violation(pos, name)
return true
end
return false
end
-- Register a new liquid
-- source = name of the source node
-- flowing = name of the flowing node
-- itemname = name of the new bucket item (or nil if liquid is not takeable)
-- inventory_image = texture of the new bucket item (ignored if itemname == nil)
-- name = text description of the bucket item
-- groups = (optional) groups of the bucket item, for example {water_bucket = 1}
-- This function can be called from any mod (that depends on bucket).
function bucket.register_liquid(source, flowing, itemname, inventory_image, name, groups)
bucket.liquids[source] = {
source = source,
flowing = flowing,
itemname = itemname,
}
bucket.liquids[flowing] = bucket.liquids[source]
if itemname ~= nil then
minetest.register_craftitem(itemname, {
description = name,
inventory_image = inventory_image,
stack_max = 1,
liquids_pointable = true,
groups = groups,
on_place = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= "node" then
return
end
local node = minetest.get_node_or_nil(pointed_thing.under)
local ndef
if node then
ndef = minetest.registered_nodes[node.name]
end
-- Call on_rightclick if the pointed node defines it
if ndef and ndef.on_rightclick and
user and not user:get_player_control().sneak then
return ndef.on_rightclick(
pointed_thing.under,
node, user,
itemstack) or itemstack
end
local place_liquid = function(pos, node, source, flowing)
if check_protection(pos,
user and user:get_player_name() or "",
"place "..source) then
return
end
minetest.add_node(pos, {name=source})
end
-- Check if pointing to a buildable node
if ndef and ndef.buildable_to then
-- buildable; replace the node
place_liquid(pointed_thing.under, node,
source, flowing)
else
-- not buildable to; place the liquid above
-- check if the node above can be replaced
local node = minetest.get_node_or_nil(pointed_thing.above)
if node and minetest.registered_nodes[node.name].buildable_to then
place_liquid(pointed_thing.above,
node, source,
flowing)
else
-- do not remove the bucket with the liquid
return
end
end
return {name="bucket:bucket_empty"}
end
})
end
end
-- Empty Bucket code by Casimir.
minetest.register_craftitem("bucket:bucket_empty", {
description = "Empty Bucket",
inventory_image = "bucket.png",
stack_max = 99,
liquids_pointable = true,
on_use = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= "node" then
return
end
-- Check if pointing to a liquid source
local node = minetest.get_node(pointed_thing.under)
local liquiddef = bucket.liquids[node.name]
local item_count = user:get_wielded_item():get_count()
if liquiddef ~= nil
and liquiddef.itemname ~= nil
and node.name == liquiddef.source then
if check_protection(pointed_thing.under,
user:get_player_name(),
"take ".. node.name) then
return
end
-- default set to return filled bucket
local giving_back = liquiddef.itemname
-- check if holding more than 1 empty bucket
if item_count > 1 then
-- if space in inventory add filled bucked, otherwise drop as item
local inv = user:get_inventory()
if inv:room_for_item("main", {name=liquiddef.itemname}) then
inv:add_item("main", liquiddef.itemname)
else
local pos = user:getpos()
pos.y = math.floor(pos.y + 0.5)
core.add_item(pos, liquiddef.itemname)
end
-- set to return empty buckets minus 1
giving_back = "bucket:bucket_empty "..tostring(item_count-1)
end
minetest.add_node(pointed_thing.under, {name="air"})
return ItemStack(giving_back)
end
end,
})
bucket.register_liquid(
"default:water_source",
"default:water_flowing",
"bucket:bucket_water",
"bucket_water.png",
"Water Bucket",
{water_bucket = 1, not_in_creative_inventory = 1}
)
bucket.register_liquid(
"default:river_water_source",
"default:river_water_flowing",
"bucket:bucket_river_water",
"bucket_river_water.png",
"River Water Bucket",
{water_bucket = 1, not_in_creative_inventory = 1}
)
bucket.register_liquid(
"default:lava_source",
"default:lava_flowing",
"bucket:bucket_lava",
"bucket_lava.png",
"Lava Bucket"
)
bucket.register_liquid(
"default:acid_source",
"default:acid_flowing",
"bucket:bucket_acid",
"bucket_acid.png",
"Acid Bucket",
{not_in_creative_inventory = 1}
)
bucket.register_liquid(
"default:sand_source",
"default:sand_flowing",
"bucket:bucket_sand",
"bucket_sand.png",
"Sand Bucket",
{not_in_creative_inventory = 1}
)
minetest.register_craft({
type = "fuel",
recipe = "bucket:bucket_lava",
burntime = 60,
replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}},
})
minetest.register_craft({
output = "bucket:bucket_sand",
recipe = {
{"group:sand"},
{"group:sand"},
{"bucket:bucket_water"},
},
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

View File

@ -1,23 +0,0 @@
Minetest Game mod: creative
===========================
Implements creative mode.
Switch on by using the "creative_mode" setting.
Registered items that
- have a description, and
- do not have the group not_in_creative_inventory
are added to the creative inventory.
License of source code and media files:
---------------------------------------
Copyright (C) 2012 Perttu Ahola (celeron55) <celeron55@gmail.com>
Copyright (C) 2016 Jean-Patrick G. (kilbith) <jeanpatrick.guerrero@gmail.com>
This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the Do What The Fuck You Want
To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details.

View File

@ -1 +0,0 @@
default

View File

@ -1,257 +0,0 @@
-- minetest/creative/init.lua
creative = {}
local player_inventory = {}
-- Create detached creative inventory after loading all mods
creative.init_creative_inventory = function(player)
local player_name = player:get_player_name()
player_inventory[player_name] = {}
player_inventory[player_name].size = 0
player_inventory[player_name].filter = ""
player_inventory[player_name].start_i = 1
player_inventory[player_name].tab_id = 2
minetest.create_detached_inventory("creative_" .. player_name, {
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
if minetest.setting_getbool("creative_mode") and not to_list == "main" then
return count
else
return 0
end
end,
allow_put = function(inv, listname, index, stack, player)
return 0
end,
allow_take = function(inv, listname, index, stack, player)
if minetest.setting_getbool("creative_mode") then
return -1
else
return 0
end
end,
on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
end,
on_put = function(inv, listname, index, stack, player)
end,
on_take = function(inv, listname, index, stack, player)
local player_name, stack_name = player:get_player_name(), stack:get_name()
--print(player_name .. " takes item from creative inventory; listname = " .. listname .. ", index = " .. index .. ", stack = " .. dump(stack:to_table()))
if stack then
minetest.log("action", player_name .. " takes " .. stack_name .. " from creative inventory")
--print("Stack name: " .. stack_name .. ", Stack count: " .. stack:get_count())
end
end,
})
creative.update_creative_inventory(player_name)
--print("creative inventory size: " .. player_inventory[player_name].size)
end
local function tab_category(tab_id)
local id_category = {
nil, -- Reserved for crafting tab.
minetest.registered_items,
minetest.registered_nodes,
minetest.registered_tools,
minetest.registered_craftitems
}
-- If index out of range, show default ("All") page.
return id_category[tab_id] or id_category[2]
end
function creative.update_creative_inventory(player_name)
local creative_list = {}
local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name})
local inv = player_inventory[player_name]
for name, def in pairs(tab_category(inv.tab_id)) do
if not (def.groups.not_in_creative_inventory == 1) and
def.description and def.description ~= "" and
(def.name:find(inv.filter, 1, true) or
def.description:lower():find(inv.filter, 1, true)) then
creative_list[#creative_list+1] = name
end
end
table.sort(creative_list)
player_inv:set_size("main", #creative_list)
player_inv:set_list("main", creative_list)
inv.size = #creative_list
end
-- Create the trash field
local trash = minetest.create_detached_inventory("creative_trash", {
-- Allow the stack to be placed and remove it in on_put()
-- This allows the creative inventory to restore the stack
allow_put = function(inv, listname, index, stack, player)
if minetest.setting_getbool("creative_mode") then
return stack:get_count()
else
return 0
end
end,
on_put = function(inv, listname)
inv:set_list(listname, {})
end,
})
trash:set_size("main", 1)
creative.set_creative_formspec = function(player, start_i)
local player_name = player:get_player_name()
local inv = player_inventory[player_name]
local pagenum = math.floor(start_i / (3*8) + 1)
local pagemax = math.ceil(inv.size / (3*8))
player:set_inventory_formspec([[
size[8,8.6]
image[4.06,3.4;0.8,0.8;creative_trash_icon.png]
list[current_player;main;0,4.7;8,1;]
list[current_player;main;0,5.85;8,3;8]
list[detached:creative_trash;main;4,3.3;1,1;]
listring[]
tablecolumns[color;text;color;text]
tableoptions[background=#00000000;highlight=#00000000;border=false]
button[5.4,3.2;0.8,0.9;creative_prev;<]
button[7.25,3.2;0.8,0.9;creative_next;>]
button[2.1,3.4;0.8,0.5;creative_search;?]
button[2.75,3.4;0.8,0.5;creative_clear;X]
tooltip[creative_search;Search]
tooltip[creative_clear;Reset]
listring[current_player;main]
]] ..
"field[0.3,3.5;2.2,1;creative_filter;;" .. inv.filter .. "]" ..
"listring[detached:creative_" .. player_name .. ";main]" ..
"tabheader[0,0;creative_tabs;Crafting,All,Nodes,Tools,Items;" .. tostring(inv.tab_id) .. ";true;false]" ..
"list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" ..
"table[6.05,3.35;1.15,0.5;pagenum;#FFFF00," .. tostring(pagenum) .. ",#FFFFFF,/ " .. tostring(pagemax) .. "]" ..
default.get_hotbar_bg(0,4.7) ..
default.gui_bg .. default.gui_bg_img .. default.gui_slots
)
end
creative.set_crafting_formspec = function(player)
player:set_inventory_formspec([[
size[8,8.6]
list[current_player;craft;2,0.75;3,3;]
list[current_player;craftpreview;6,1.75;1,1;]
list[current_player;main;0,4.7;8,1;]
list[current_player;main;0,5.85;8,3;8]
list[detached:creative_trash;main;0,2.75;1,1;]
image[0.06,2.85;0.8,0.8;creative_trash_icon.png]
image[5,1.75;1,1;gui_furnace_arrow_bg.png^[transformR270]
tabheader[0,0;creative_tabs;Crafting,All,Nodes,Tools,Items;1;true;false]
listring[current_player;main]
listring[current_player;craft]
]] ..
default.get_hotbar_bg(0,4.7) ..
default.gui_bg .. default.gui_bg_img .. default.gui_slots
)
end
minetest.register_on_joinplayer(function(player)
-- If in creative mode, modify player's inventory forms
if not minetest.setting_getbool("creative_mode") then
return
end
creative.init_creative_inventory(player)
creative.set_creative_formspec(player, 0)
end)
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "" or not minetest.setting_getbool("creative_mode") then
return
end
local player_name = player:get_player_name()
local inv = player_inventory[player_name]
if fields.quit then
if inv.tab_id == 1 then
creative.set_crafting_formspec(player)
end
elseif fields.creative_tabs then
local tab = tonumber(fields.creative_tabs)
inv.tab_id = tab
if tab == 1 then
creative.set_crafting_formspec(player)
else
creative.update_creative_inventory(player_name)
creative.set_creative_formspec(player, 0)
end
elseif fields.creative_clear then
inv.filter = ""
creative.update_creative_inventory(player_name)
creative.set_creative_formspec(player, 0)
elseif fields.creative_search then
inv.filter = fields.creative_filter:lower()
creative.update_creative_inventory(player_name)
creative.set_creative_formspec(player, 0)
else
local formspec = player:get_inventory_formspec()
local start_i = formspec:match("list%[.-" .. player_name .. ";.-;(%d+)%]")
start_i = tonumber(start_i) or 0
if fields.creative_prev then
start_i = start_i - 3*8
if start_i < 0 then
start_i = inv.size - (inv.size % (3*8))
if inv.size == start_i then
start_i = math.max(0, inv.size - (3*8))
end
end
elseif fields.creative_next then
start_i = start_i + 3*8
if start_i >= inv.size then
start_i = 0
end
end
creative.set_creative_formspec(player, start_i)
end
end)
if minetest.setting_getbool("creative_mode") then
local digtime = 0.5
local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 3}
minetest.register_item(":", {
type = "none",
wield_image = "wieldhand.png",
wield_scale = {x = 1, y = 1, z = 2.5},
range = 10,
tool_capabilities = {
full_punch_interval = 0.5,
max_drop_level = 3,
groupcaps = {
crumbly = caps,
cracky = caps,
snappy = caps,
choppy = caps,
oddly_breakable_by_hand = caps,
},
damage_groups = {fleshy = 10},
}
})
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
return
end)
function minetest.handle_node_drops(pos, drops, digger)
if not digger or not digger:is_player() then
return
end
local inv = digger:get_inventory()
if inv then
for _, item in ipairs(drops) do
item = ItemStack(item):get_name()
if not inv:contains_item("main", item) then
inv:add_item("main", item)
end
end
end
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

View File

@ -1,236 +0,0 @@
Minetest Game mod: default
==========================
License of source code:
-----------------------
Copyright (C) 2011-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
http://www.gnu.org/licenses/lgpl-2.1.html
License of media (textures and sounds)
--------------------------------------
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
http://creativecommons.org/licenses/by-sa/3.0/
Authors of media files
-----------------------
Everything not listed in here:
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
Cisoun's WTFPL texture pack:
default_jungletree.png
default_lava.png
default_leaves.png
default_sapling.png
default_stone.png
default_tree.png
default_tree_top.png
default_water.png
Cisoun's conifers mod (WTFPL):
default_pine_needles.png
Originating from G4JC's Almost MC Texture Pack:
default_torch.png
default_torch_on_ceiling.png
default_torch_on_floor.png
VanessaE's animated torches (WTFPL):
default_torch_animated.png
default_torch_on_ceiling_animated.png
default_torch_on_floor_animated.png
default_torch_on_floor.png
RealBadAngel's animated water (WTFPL):
default_water_source_animated.png
default_water_flowing_animated.png
VanessaE (WTFPL):
default_nc_back.png
default_nc_front.png
default_nc_rb.png
default_nc_side.png
default_desert_sand.png
default_desert_stone.png
default_sand.png
default_mese_crystal.png
default_mese_crystal_fragment.png
Calinou (CC BY-SA):
default_brick.png
default_papyrus.png
default_mineral_copper.png
default_glass_detail.png
default_tool_goldsword.png
MirceaKitsune (WTFPL):
character.x
Jordach (CC BY-SA 3.0):
character.png
PilzAdam (WTFPL):
default_jungleleaves.png
default_junglesapling.png
default_obsidian_glass.png
default_obsidian_shard.png
default_mineral_gold.png
default_snowball.png
jojoa1997 (WTFPL):
default_obsidian.png
InfinityProject (WTFPL):
default_mineral_diamond.png
Splizard (CC BY-SA 3.0):
default_snow.png
default_snow_side.png
default_pine_sapling.png
Zeg9 (CC BY-SA 3.0):
default_coal_block.png
default_steel_block.png
default_copper_block.png
default_bronze_block.png
default_gold_block.png
paramat (CC BY-SA 3.0):
wieldhand.png -- Copied from character.png by Jordach (CC BY-SA 3.0)
default_pinetree.png
default_pinetree_top.png
default_pinewood.png
default_acacia_leaves.png
default_acacia_sapling.png
default_acacia_tree.png
default_acacia_tree_top.png
default_acacia_wood.png
default_junglewood.png
default_jungletree_top.png
default_sandstone_brick.png
default_obsidian_brick.png
default_stone_brick.png
default_desert_stone_brick.png
default_sandstone_block.png
default_obsidian_block.png
default_stone_block.png
default_desert_stone_block.png
default_river_water.png
default_river_water_source_animated.png
default_river_water_flowing_animated.png
default_dry_grass.png
default_dry_grass_side.png
default_dry_grass_*.png
default_grass.png
default_grass_side.png
default_snow_side.png
default_mese_block.png
brunob.santos (CC BY-SA 4.0):
default_desert_cobble.png
BlockMen (CC BY-SA 3.0):
default_wood.png
default_clay_brick.png
default_iron_ingot.png
default_gold_ingot.png
default_tool_steelsword.png
default_diamond.png
default_book.png
default_tool_*.png
default_lava_source_animated.png
default_lava_flowing_animated.png
default_stick.png
default_chest_front.png
default_chest_lock.png
default_chest_side.png
default_chest_top.png
default_mineral_mese.png
default_meselamp.png
bubble.png
heart.png
gui_*.png
sofar (CC BY-SA 3.0):
default_book_written.png, based on default_book.png
default_aspen_sapling
default_aspen_leaves
default_aspen_tree
default_aspen_tree_top, derived from default_pine_tree_top (by paramat)
default_aspen_wood, derived from default_pine_wood (by paramat)
sofar (WTFPL):
default_gravel.png -- Derived from Gambit's PixelBOX texture pack light gravel
Neuromancer (CC BY-SA 2.0):
default_cobble.png, based on texture by Brane praefect
default_mossycobble.png, based on texture by Brane praefect
Neuromancer (CC BY-SA 3.0):
default_dirt.png
default_furnace_*.png
Gambit (WTFPL):
default_bronze_ingot.png
default_copper_ingot.png
default_copper_lump.png
default_iron_lump.png
default_gold_lump.png
default_clay_lump.png
default_coal.png
default_grass_*.png
default_paper.png
default_diamond_block.png
default_ladder_steel.png
default_sign_wall_wood.png
default_flint.png
asl97 (WTFPL):
default_ice.png
KevDoy (CC BY-SA 3.0)
heart.png
Glass breaking sounds (CC BY 3.0):
1: http://www.freesound.org/people/cmusounddesign/sounds/71947/
2: http://www.freesound.org/people/Tomlija/sounds/97669/
3: http://www.freesound.org/people/lsprice/sounds/88808/
Mito551 (sounds) (CC BY-SA):
default_dig_choppy.ogg
default_dig_cracky.ogg
default_dig_crumbly.1.ogg
default_dig_crumbly.2.ogg
default_dig_dig_immediate.ogg
default_dig_oddly_breakable_by_hand.ogg
default_dug_node.1.ogg
default_dug_node.2.ogg
default_grass_footstep.1.ogg
default_grass_footstep.2.ogg
default_grass_footstep.3.ogg
default_gravel_footstep.1.ogg
default_gravel_footstep.2.ogg
default_gravel_footstep.3.ogg
default_gravel_footstep.4.ogg
default_grass_footstep.1.ogg
default_place_node.1.ogg
default_place_node.2.ogg
default_place_node.3.ogg
default_place_node_hard.1.ogg
default_place_node_hard.2.ogg
default_snow_footstep.1.ogg
default_snow_footstep.2.ogg
default_hard_footstep.1.ogg
default_hard_footstep.2.ogg
default_hard_footstep.3.ogg
default_sand_footstep.1.ogg
default_sand_footstep.2.ogg
default_wood_footstep.1.ogg
default_wood_footstep.2.ogg
default_dirt_footstep.1.ogg
default_dirt_footstep.2.ogg
default_glass_footstep.ogg

View File

@ -1,102 +0,0 @@
-- mods/default/aliases.lua
-- Aliases to support loading worlds using nodes following the old naming convention
-- These can also be helpful when using chat commands, for example /giveme
minetest.register_alias("stone", "default:stone")
minetest.register_alias("stone_with_coal", "default:stone_with_coal")
minetest.register_alias("stone_with_iron", "default:stone_with_iron")
minetest.register_alias("dirt_with_grass", "default:dirt_with_grass")
minetest.register_alias("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps")
minetest.register_alias("dirt", "default:dirt")
minetest.register_alias("sand", "default:sand")
minetest.register_alias("gravel", "default:gravel")
minetest.register_alias("sandstone", "default:sandstone")
minetest.register_alias("clay", "default:clay")
minetest.register_alias("brick", "default:brick")
minetest.register_alias("tree", "default:tree")
minetest.register_alias("jungletree", "default:jungletree")
minetest.register_alias("junglegrass", "default:junglegrass")
minetest.register_alias("leaves", "default:leaves")
minetest.register_alias("cactus", "default:cactus")
minetest.register_alias("papyrus", "default:papyrus")
minetest.register_alias("bookshelf", "default:bookshelf")
minetest.register_alias("glass", "default:glass")
minetest.register_alias("wooden_fence", "default:fence_wood")
minetest.register_alias("rail", "default:rail")
minetest.register_alias("ladder", "default:ladder_wood")
minetest.register_alias("wood", "default:wood")
minetest.register_alias("mese", "default:mese")
minetest.register_alias("cloud", "default:cloud")
minetest.register_alias("water_flowing", "default:water_flowing")
minetest.register_alias("water_source", "default:water_source")
minetest.register_alias("lava_flowing", "default:lava_flowing")
minetest.register_alias("lava_source", "default:lava_source")
minetest.register_alias("torch", "default:torch")
minetest.register_alias("sign_wall", "default:sign_wall_wood")
minetest.register_alias("furnace", "default:furnace")
minetest.register_alias("chest", "default:chest")
minetest.register_alias("locked_chest", "default:chest_locked")
minetest.register_alias("cobble", "default:cobble")
minetest.register_alias("mossycobble", "default:mossycobble")
minetest.register_alias("steelblock", "default:steelblock")
minetest.register_alias("nyancat", "default:nyancat")
minetest.register_alias("nyancat_rainbow", "default:nyancat_rainbow")
minetest.register_alias("sapling", "default:sapling")
minetest.register_alias("apple", "default:apple")
minetest.register_alias("WPick", "default:pick_wood")
minetest.register_alias("STPick", "default:pick_stone")
minetest.register_alias("SteelPick", "default:pick_steel")
minetest.register_alias("MesePick", "default:pick_mese")
minetest.register_alias("WShovel", "default:shovel_wood")
minetest.register_alias("STShovel", "default:shovel_stone")
minetest.register_alias("SteelShovel", "default:shovel_steel")
minetest.register_alias("WAxe", "default:axe_wood")
minetest.register_alias("STAxe", "default:axe_stone")
minetest.register_alias("SteelAxe", "default:axe_steel")
minetest.register_alias("WSword", "default:sword_wood")
minetest.register_alias("STSword", "default:sword_stone")
minetest.register_alias("SteelSword", "default:sword_steel")
minetest.register_alias("Stick", "default:stick")
minetest.register_alias("paper", "default:paper")
minetest.register_alias("book", "default:book")
minetest.register_alias("lump_of_coal", "default:coal_lump")
minetest.register_alias("lump_of_iron", "default:iron_lump")
minetest.register_alias("lump_of_clay", "default:clay_lump")
minetest.register_alias("steel_ingot", "default:steel_ingot")
minetest.register_alias("clay_brick", "default:clay_brick")
minetest.register_alias("snow", "default:snow")
-- 'mese_block' was used for a while for the block form of mese
minetest.register_alias("default:mese_block", "default:mese")
-- Aliases for corrected pine node names
minetest.register_alias("default:pinetree", "default:pine_tree")
minetest.register_alias("default:pinewood", "default:pine_wood")
minetest.register_alias("default:ladder", "default:ladder_wood")
minetest.register_alias("default:sign_wall", "default:sign_wall_wood")
-- Those lines are for moreores integration
minetest.register_alias("moreores:pick_silver", "default:pick_silver")
minetest.register_alias("moreores:pick_mithril", "default:pick_mithril")
minetest.register_alias("moreores:shovel_silver", "default:shovel_silver")
minetest.register_alias("moreores:shovel_mithril", "default:shovel_mithril")
minetest.register_alias("moreores:axe_silver", "default:axe_silver")
minetest.register_alias("moreores:axe_mithril", "default:axe_mithril")
minetest.register_alias("moreores:sword_silver", "default:sword_silver")
minetest.register_alias("moreores:sword_mithril", "default:sword_mithril")
minetest.register_alias("moreores:mineral_silver", "default:stone_with_silver")
minetest.register_alias("moreores:mineral_tin", "default:stone_with_tin")
minetest.register_alias("moreores:mineral_mithril", "default:stone_with_mithril")
minetest.register_alias("moreores:mithril_ingot", "default:mithril_ingot")
minetest.register_alias("moreores:silver_ingot", "default:silver_ingot")
minetest.register_alias("moreores:tin_ingot", "default:tin_ingot")
minetest.register_alias("moreores:mithril_lump", "default:mithril_lump")
minetest.register_alias("moreores:silver_lump", "default:silver_lump")
minetest.register_alias("moreores:tin_lump", "default:tin_lump")
minetest.register_alias("moreores:mithril_block", "default:mithrilblock")
minetest.register_alias("moreores:silver_block", "default:silverblock")
minetest.register_alias("moreores:tin_block", "default:tinblock")

File diff suppressed because it is too large Load Diff

View File

@ -1,293 +0,0 @@
-- mods/default/craftitems.lua
minetest.register_craftitem("default:stick", {
description = "Stick",
stack_max = 1000,
inventory_image = "default_stick.png",
groups = {stick = 1},
})
minetest.register_craftitem("default:paper", {
description = "Paper",
inventory_image = "default_paper.png",
})
local lpp = 14 -- Lines per book's page
local function book_on_use(itemstack, user)
local player_name = user:get_player_name()
local data = minetest.deserialize(itemstack:get_metadata())
local title, text, owner = "", "", player_name
local page, page_max, lines, string = 1, 1, {}, ""
if data then
title = data.title
text = data.text
owner = data.owner
for str in (text .. "\n"):gmatch("([^\n]*)[\n]") do
lines[#lines+1] = str
end
if data.page then
page = data.page
page_max = data.page_max
for i = ((lpp * page) - lpp) + 1, lpp * page do
if not lines[i] then break end
string = string .. lines[i] .. "\n"
end
end
end
local formspec
if owner == player_name then
formspec = "size[8,8]" .. default.gui_bg ..
default.gui_bg_img ..
"field[0.5,1;7.5,0;title;Title:;" ..
minetest.formspec_escape(title) .. "]" ..
"textarea[0.5,1.5;7.5,7;text;Contents:;" ..
minetest.formspec_escape(text) .. "]" ..
"button_exit[2.5,7.5;3,1;save;Save]"
else
formspec = "size[8,8]" .. default.gui_bg ..
default.gui_bg_img ..
"label[0.5,0.5;by " .. owner .. "]" ..
"tablecolumns[color;text]" ..
"tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
"table[0.4,0;7,0.5;title;#FFFF00," .. minetest.formspec_escape(title) .. "]" ..
"textarea[0.5,1.5;7.5,7;;" ..
minetest.formspec_escape(string ~= "" and string or text) .. ";]" ..
"button[2.4,7.6;0.8,0.8;book_prev;<]" ..
"label[3.2,7.7;Page " .. page .. " of " .. page_max .. "]" ..
"button[4.9,7.6;0.8,0.8;book_next;>]"
end
minetest.show_formspec(player_name, "default:book", formspec)
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "default:book" then return end
local inv = player:get_inventory()
local stack = player:get_wielded_item()
if fields.save and fields.title ~= "" and fields.text ~= "" then
local new_stack, data
if stack:get_name() ~= "default:book_written" then
local count = stack:get_count()
if count == 1 then
stack:set_name("default:book_written")
else
stack:set_count(count - 1)
new_stack = ItemStack("default:book_written")
end
else
data = minetest.deserialize(stack:get_metadata())
end
if not data then data = {} end
data.title = fields.title
data.text = fields.text
data.text_len = #data.text
data.page = 1
data.page_max = math.ceil((#data.text:gsub("[^\n]", "") + 1) / lpp)
data.owner = player:get_player_name()
local data_str = minetest.serialize(data)
if new_stack then
new_stack:set_metadata(data_str)
if inv:room_for_item("main", new_stack) then
inv:add_item("main", new_stack)
else
minetest.add_item(player:getpos(), new_stack)
end
else
stack:set_metadata(data_str)
end
elseif fields.book_next or fields.book_prev then
local data = minetest.deserialize(stack:get_metadata())
if not data.page then return end
if fields.book_next then
data.page = data.page + 1
if data.page > data.page_max then
data.page = 1
end
else
data.page = data.page - 1
if data.page == 0 then
data.page = data.page_max
end
end
local data_str = minetest.serialize(data)
stack:set_metadata(data_str)
book_on_use(stack, player)
end
player:set_wielded_item(stack)
end)
minetest.register_craftitem("default:book", {
description = "Book",
inventory_image = "default_book.png",
groups = {book = 1},
on_use = book_on_use,
})
minetest.register_craftitem("default:book_written", {
description = "Book With Text",
inventory_image = "default_book_written.png",
groups = {book = 1, not_in_creative_inventory = 1},
stack_max = 1,
on_use = book_on_use,
})
minetest.register_craft({
type = "shapeless",
output = "default:book_written",
recipe = {"default:book", "default:book_written"}
})
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if itemstack:get_name() ~= "default:book_written" then
return
end
local original
local index
for i = 1, player:get_inventory():get_size("craft") do
if old_craft_grid[i]:get_name() == "default:book_written" then
original = old_craft_grid[i]
index = i
end
end
if not original then
return
end
local copymeta = original:get_metadata()
-- copy of the book held by player's mouse cursor
itemstack:set_metadata(copymeta)
-- put the book with metadata back in the craft grid
craft_inv:set_stack("craft", index, original)
end)
minetest.register_craftitem("default:coal_lump", {
description = "Coal Lump",
inventory_image = "default_coal_lump.png",
groups = {coal = 1}
})
minetest.register_craftitem("default:iron_lump", {
description = "Iron Lump",
inventory_image = "default_iron_lump.png",
})
minetest.register_craftitem("default:copper_lump", {
description = "Copper Lump",
inventory_image = "default_copper_lump.png",
})
minetest.register_craftitem("default:tin_lump", {
description = "Tin Lump",
inventory_image = "default_tin_lump.png",
})
minetest.register_craftitem("default:silver_lump", {
description = "Silver Lump",
inventory_image = "default_silver_lump.png",
})
minetest.register_craftitem("default:mese_crystal", {
description = "Mese Crystal",
inventory_image = "default_mese_crystal.png",
})
minetest.register_craftitem("default:gold_lump", {
description = "Gold Lump",
inventory_image = "default_gold_lump.png",
})
minetest.register_craftitem("default:mithril_lump", {
description = "Mithril Lump",
inventory_image = "default_mithril_lump.png",
})
minetest.register_craftitem("default:diamond", {
description = "Diamond",
inventory_image = "default_diamond.png",
})
minetest.register_craftitem("default:clay_lump", {
description = "Clay Lump",
stack_max = 200,
inventory_image = "default_clay_lump.png",
})
minetest.register_craftitem("default:steel_ingot", {
description = "Steel Ingot",
inventory_image = "default_steel_ingot.png",
groups = {ingot = 1},
})
minetest.register_craftitem("default:copper_ingot", {
description = "Copper Ingot",
inventory_image = "default_copper_ingot.png",
groups = {ingot = 1},
})
minetest.register_craftitem("default:tin_ingot", {
description = "Tin Ingot",
inventory_image = "default_tin_ingot.png",
groups = {ingot = 1},
})
minetest.register_craftitem("default:bronze_ingot", {
description = "Bronze Ingot",
inventory_image = "default_bronze_ingot.png",
groups = {ingot = 1},
})
minetest.register_craftitem("default:silver_ingot", {
description = "Silver Ingot",
inventory_image = "default_silver_ingot.png",
groups = {ingot = 1},
})
minetest.register_craftitem("default:gold_ingot", {
description = "Gold Ingot",
groups = {ingot = 1},
inventory_image = "default_gold_ingot.png"
})
minetest.register_craftitem("default:mese_crystal_fragment", {
description = "Mese Crystal Fragment",
inventory_image = "default_mese_crystal_fragment.png",
})
minetest.register_craftitem("default:mithril_ingot", {
description = "Mithril Ingot",
groups = {ingot = 1},
inventory_image = "default_mithril_ingot.png",
})
minetest.register_craftitem("default:clay_brick", {
description = "Clay Brick",
inventory_image = "default_clay_brick.png",
})
minetest.register_craftitem("default:scorched_stuff", {
description = "Scorched Stuff",
inventory_image = "default_scorched_stuff.png",
})
minetest.register_craftitem("default:obsidian_shard", {
description = "Obsidian Shard",
inventory_image = "default_obsidian_shard.png",
})
minetest.register_craftitem("default:flint", {
description = "Flint",
inventory_image = "default_flint.png"
})

View File

@ -1 +0,0 @@
_misc_init?

View File

@ -1,536 +0,0 @@
-- mods/default/functions.lua
--
-- Sounds
--
function default.node_sound_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "", gain = 1.0}
table.dug = table.dug or
{name = "default_dug_node", gain = 0.25}
table.place = table.place or
{name = "default_place_node_hard", gain = 1.0}
return table
end
function default.node_sound_stone_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_hard_footstep", gain = 0.5}
table.dug = table.dug or
{name = "default_hard_footstep", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_dirt_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_dirt_footstep", gain = 1.0}
table.dug = table.dug or
{name = "default_dirt_footstep", gain = 1.5}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_sand_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_sand_footstep", gain = 0.12}
table.dug = table.dug or
{name = "default_sand_footstep", gain = 0.24}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_gravel_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_gravel_footstep", gain = 0.5}
table.dug = table.dug or
{name = "default_gravel_footstep", gain = 1.0}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_wood_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_wood_footstep", gain = 0.5}
table.dug = table.dug or
{name = "default_wood_footstep", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_leaves_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_grass_footstep", gain = 0.35}
table.dug = table.dug or
{name = "default_grass_footstep", gain = 0.7}
table.dig = table.dig or
{name = "default_dig_crumbly", gain = 0.4}
table.place = table.place or
{name = "default_place_node", gain = 1.0}
default.node_sound_defaults(table)
return table
end
function default.node_sound_glass_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name = "default_glass_footstep", gain = 0.5}
table.dug = table.dug or
{name = "default_break_glass", gain = 1.0}
default.node_sound_defaults(table)
return table
end
--
-- Lavacooling
--
default.cool_lava = function(pos, node)
if node.name == "default:lava_source" then
minetest.set_node(pos, {name = "default:obsidian"})
else -- Lava flowing
minetest.set_node(pos, {name = "default:stone"})
end
minetest.sound_play("default_cool_lava",
{pos = pos, max_hear_distance = 16, gain = 0.25})
end
minetest.register_abm({
label = "Lava cooling",
nodenames = {"default:lava_source", "default:lava_flowing"},
neighbors = {"group:water"},
interval = 1,
chance = 1,
catch_up = false,
action = function(...)
default.cool_lava(...)
end,
})
--
-- optimized helper to put all items in an inventory into a drops list
--
function default.get_inventory_drops(pos, inventory, drops)
local inv = minetest.get_meta(pos):get_inventory()
local n = #drops
for i = 1, inv:get_size(inventory) do
local stack = inv:get_stack(inventory, i)
if stack:get_count() > 0 then
drops[n+1] = stack:to_table()
n = n + 1
end
end
end
--
-- Papyrus and cactus growing
--
-- wrapping the functions in abm action is necessary to make overriding them possible
function default.grow_cactus(pos, node)
if node.param2 >= 4 then
return
end
pos.y = pos.y - 1
local name = minetest.get_node(pos).name --MFF
if minetest.get_item_group(name, "sand") == 0 and name ~= "default:dirt_with_dry_grass" then --MFF
return
end
pos.y = pos.y + 1
local height = 0
while node.name == "default:cactus" and height < 4 do
height = height + 1
pos.y = pos.y + 1
node = minetest.get_node(pos)
end
if height == 4 or node.name ~= "air" then
return
end
minetest.set_node(pos, {name = "default:cactus"})
return true
end
function default.grow_papyrus(pos, node)
pos.y = pos.y - 1
local name = minetest.get_node(pos).name
if name ~= "default:dirt_with_grass" and name ~= "default:dirt" and name ~= "default:sand" and name ~= "default:desert_sand" then --MFF
return
end
if not minetest.find_node_near(pos, 3, {"group:water"}) then
return
end
pos.y = pos.y + 1
local height = 0
while node.name == "default:papyrus" and height < 4 do
height = height + 1
pos.y = pos.y + 1
node = minetest.get_node(pos)
end
if height == 4 or node.name ~= "air" then
return
end
minetest.set_node(pos, {name = "default:papyrus"})
return true
end
minetest.register_abm({
label = "Grow cactus",
nodenames = {"default:cactus"},
neighbors = {"group:sand", "default:dirt_with_dry_grass"}, --MFF
interval = 12,
chance = 83,
action = function(...)
default.grow_cactus(...)
end
})
minetest.register_abm({
label = "Grow papyrus",
nodenames = {"default:papyrus"},
neighbors = {"default:dirt", "default:dirt_with_grass", "default:sand", "default:desert_sand"}, --MFF
interval = 14,
chance = 71,
action = function(...)
default.grow_papyrus(...)
end
})
--
-- dig upwards
--
function default.dig_up(pos, node, digger)
if digger == nil then return end
local np = {x = pos.x, y = pos.y + 1, z = pos.z}
local nn = minetest.get_node(np)
if nn.name == node.name then
minetest.node_dig(np, nn, digger)
end
end
--
-- Fence registration helper
--
function default.register_fence(name, def)
minetest.register_craft({
output = name .. " 4",
recipe = {
{ def.material, 'group:stick', def.material },
{ def.material, 'group:stick', def.material },
}
})
local fence_texture = "default_fence_overlay.png^" .. def.texture ..
"^default_fence_overlay.png^[makealpha:255,126,126"
-- Allow almost everything to be overridden
local default_fields = {
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "connected",
fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}},
-- connect_top =
-- connect_bottom =
connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
{-1/16,-5/16,-1/2,1/16,-3/16,-1/8}},
connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16},
{-1/2,-5/16,-1/16,-1/8,-3/16,1/16}},
connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2},
{-1/16,-5/16,1/8,1/16,-3/16,1/2}},
connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16},
{1/8,-5/16,-1/16,1/2,-3/16,1/16}},
},
connects_to = {"group:fence", "group:wood", "group:tree"},
inventory_image = fence_texture,
wield_image = fence_texture,
tiles = {def.texture},
sunlight_propagates = true,
is_ground_content = false,
groups = {},
}
for k, v in pairs(default_fields) do
if not def[k] then
def[k] = v
end
end
-- Always add to the fence group, even if no group provided
def.groups.fence = 1
def.texture = nil
def.material = nil
minetest.register_node(name, def)
end
--
-- Leafdecay
--
default.leafdecay_trunk_cache = {}
default.leafdecay_enable_cache = true
-- Spread the load of finding trunks
default.leafdecay_trunk_find_allow_accumulator = 0
minetest.register_globalstep(function(dtime)
local finds_per_second = 5000
default.leafdecay_trunk_find_allow_accumulator =
math.floor(dtime * finds_per_second)
end)
default.after_place_leaves = function(pos, placer, itemstack, pointed_thing)
if placer and not placer:get_player_control().sneak then
local node = minetest.get_node(pos)
node.param2 = 1
minetest.set_node(pos, node)
end
end
minetest.register_abm({
label = "Leaf decay",
nodenames = {"group:leafdecay"},
neighbors = {"air", "group:liquid"},
-- A low interval and a high inverse chance spreads the load
interval = 2,
chance = 5,
action = function(p0, node, _, _)
--print("leafdecay ABM at "..p0.x..", "..p0.y..", "..p0.z..")")
local do_preserve = false
local d = minetest.registered_nodes[node.name].groups.leafdecay
if not d or d == 0 then
--print("not groups.leafdecay")
return
end
local n0 = minetest.get_node(p0)
if n0.param2 ~= 0 then
--print("param2 ~= 0")
return
end
local p0_hash = nil
if default.leafdecay_enable_cache then
p0_hash = minetest.hash_node_position(p0)
local trunkp = default.leafdecay_trunk_cache[p0_hash]
if trunkp then
local n = minetest.get_node(trunkp)
local reg = minetest.registered_nodes[n.name]
-- Assume ignore is a trunk, to make the thing
-- work at the border of the active area
if n.name == "ignore" or (reg and reg.groups.tree and
reg.groups.tree ~= 0) then
--print("cached trunk still exists")
return
end
--print("cached trunk is invalid")
-- Cache is invalid
table.remove(default.leafdecay_trunk_cache, p0_hash)
end
end
if default.leafdecay_trunk_find_allow_accumulator <= 0 then
return
end
default.leafdecay_trunk_find_allow_accumulator =
default.leafdecay_trunk_find_allow_accumulator - 1
-- Assume ignore is a trunk, to make the thing
-- work at the border of the active area
local p1
if n0.name == "moretrees:palm_leaves" then
p1 = minetest.find_node_near(p0, d, {"ignore", "moretrees:palm_trunk"})
else
p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"})
end
if p1 then
do_preserve = true
if default.leafdecay_enable_cache then
--print("caching trunk")
-- Cache the trunk
default.leafdecay_trunk_cache[p0_hash] = p1
end
end
if not do_preserve then
-- Drop stuff other than the node itself
local itemstacks = minetest.get_node_drops(n0.name)
for _, itemname in ipairs(itemstacks) do
if minetest.get_item_group(n0.name, "leafdecay_drop") ~= 0 or
itemname ~= n0.name then
local p_drop = {
x = p0.x - 0.5 + math.random(),
y = p0.y - 0.5 + math.random(),
z = p0.z - 0.5 + math.random(),
}
minetest.add_item(p_drop, itemname)
end
end
-- Remove node
minetest.remove_node(p0)
nodeupdate(p0)
end
end
})
--
-- Convert dirt to something that fits the environment
--
minetest.register_abm({
label = "Grass spread",
nodenames = {"default:dirt"},
neighbors = {
"default:dirt_with_grass",
"default:dirt_with_dry_grass",
"default:dirt_with_snow",
"group:grass",
"group:dry_grass",
"default:snow",
},
interval = 6,
chance = 67,
catch_up = false,
action = function(pos, node)
-- Most likely case, half the time it's too dark for this.
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
if (minetest.get_node_light(above) or 0) < 13 then
return
end
-- Look for likely neighbors.
local p2 = minetest.find_node_near(pos, 1, {"default:dirt_with_grass",
"default:dirt_with_dry_grass", "default:dirt_with_snow"})
if p2 then
-- But the node needs to be under air in this case.
local n2 = minetest.get_node(above)
if n2 and n2.name == "air" then
local n3 = minetest.get_node(p2)
minetest.set_node(pos, {name = n3.name})
return
end
end
-- Anything on top?
local n2 = minetest.get_node(above)
if not n2 then
return
end
local name = n2.name
-- Snow check is cheapest, so comes first.
if name == "default:snow" then
minetest.set_node(pos, {name = "default:dirt_with_snow"})
-- Most likely case first.
elseif minetest.get_item_group(name, "grass") ~= 0 then
minetest.set_node(pos, {name = "default:dirt_with_grass"})
elseif minetest.get_item_group(name, "dry_grass") ~= 0 then
minetest.set_node(pos, {name = "default:dirt_with_dry_grass"})
end
end
})
--
-- Grass and dry grass removed in darkness
--
minetest.register_abm({
label = "Grass covered",
nodenames = {
"default:dirt_with_grass",
"default:dirt_with_dry_grass",
"default:dirt_with_snow",
},
interval = 8,
chance = 50,
catch_up = false,
action = function(pos, node)
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
local name = minetest.get_node(above).name
local nodedef = minetest.registered_nodes[name]
if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or
nodedef.paramtype == "light") and
nodedef.liquidtype == "none") then
minetest.set_node(pos, {name = "default:dirt"})
end
end
})
--
-- Moss growth on cobble near water
--
minetest.register_abm({
label = "Moss growth",
nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble"},
neighbors = {"group:water"},
interval = 16,
chance = 200,
catch_up = false,
action = function(pos, node)
if node.name == "default:cobble" then
minetest.set_node(pos, {name = "default:mossycobble"})
elseif node.name == "stairs:slab_cobble" then
minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2})
elseif node.name == "stairs:stair_cobble" then
minetest.set_node(pos, {name = "stairs:stair_mossycobble", param2 = node.param2})
end
end
})
--
-- Checks if specified volume intersects a protected volume
--
function default.intersects_protection(minp, maxp, player_name, interval)
-- 'interval' is the largest allowed interval for the 3D lattice of checks
-- Compute the optimal float step 'd' for each axis so that all corners and
-- borders are checked. 'd' will be smaller or equal to 'interval'.
-- Subtracting 1e-4 ensures that the max co-ordinate will be reached by the
-- for loop (which might otherwise not be the case due to rounding errors).
local d = {}
for _, c in pairs({"x", "y", "z"}) do
if maxp[c] > minp[c] then
d[c] = (maxp[c] - minp[c]) / math.ceil((maxp[c] - minp[c]) / interval) - 1e-4
elseif maxp[c] == minp[c] then
d[c] = 1 -- Any value larger than 0 to avoid division by zero
else -- maxp[c] < minp[c], print error and treat as protection intersected
minetest.log("error", "maxp < minp in 'default.intersects_protection()'")
return true
end
end
for zf = minp.z, maxp.z, d.z do
local z = math.floor(zf + 0.5)
for yf = minp.y, maxp.y, d.y do
local y = math.floor(yf + 0.5)
for xf = minp.x, maxp.x, d.x do
local x = math.floor(xf + 0.5)
if minetest.is_protected({x = x, y = y, z = z}, player_name) then
return true
end
end
end
end
return false
end

View File

@ -1,728 +0,0 @@
--
-- Formspecs
--
local function active_formspec(fuel_percent, item_percent)
local formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.75,0.5;1,1;]"..
"list[current_name;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:"..
(100-fuel_percent)..":default_furnace_fire_fg.png]"..
"image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_furnace_arrow_fg.png^[transformR270]"..
"list[current_name;dst;4.75,0.96;2,2;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[current_name;dst]"..
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
return formspec
end
local inactive_formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.75,0.5;1,1;]"..
"list[current_name;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;default_furnace_fire_bg.png]"..
"image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
"list[current_name;dst;4.75,0.96;2,2;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[current_name;dst]"..
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
--
-- Node callback functions that are the same for active and inactive furnace
--
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", "Furnace is empty")
end
return stack:get_count()
else
return 0
end
elseif listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
local function furnace_node_timer(pos, elapsed)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local fuellist = inv:get_list("fuel")
--
-- Cooking
--
-- Check if we have cookable content
local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
local cookable = true
if cooked.time == 0 then
cookable = false
end
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The furnace is currently active and has enough fuel
fuel_time = fuel_time + 1
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + 1
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = 0
end
end
end
else
-- Furnace ran out of fuel
if cookable then
-- We need to get new fuel
local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
fuel_time = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
fuel_totaltime = fuel.time
fuel_time = 0
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
fuel_time = 0
src_time = 0
end
end
--
-- Update formspec, infotext and node
--
local formspec = inactive_formspec
local item_state
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooked.time * 100)
item_state = item_percent .. "%"
else
if srclist[1]:is_empty() then
item_state = "Empty"
else
item_state = "Not cookable"
end
end
local fuel_state = "Empty"
local active = "inactive "
local result = false
if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then
active = "active "
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = fuel_percent .. "%"
formspec = active_formspec(fuel_percent, item_percent)
swap_node(pos, "default:furnace_active")
-- make sure timer restarts automatically
result = true
else
if not fuellist[1]:is_empty() then
fuel_state = "0%"
end
swap_node(pos, "default:furnace")
-- stop timer on the inactive furnace
local timer = minetest.get_node_timer(pos)
timer:stop()
end
local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")"
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
return result
end
--
-- Node definitions
--
minetest.register_node("default:furnace", {
description = "Furnace",
tiles = {
"default_furnace_top.png", "default_furnace_bottom.png",
"default_furnace_side.png", "default_furnace_side.png",
"default_furnace_side.png", "default_furnace_front.png"
},
paramtype2 = "facedir",
groups = {cracky=2},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
can_dig = can_dig,
on_timer = furnace_node_timer,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", inactive_formspec)
local inv = meta:get_inventory()
inv:set_size('src', 1)
inv:set_size('fuel', 1)
inv:set_size('dst', 4)
end,
on_metadata_inventory_move = function(pos)
local timer = minetest.get_node_timer(pos)
timer:start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether furnace can burn or not.
local timer = minetest.get_node_timer(pos)
timer:start(1.0)
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "src", drops)
default.get_inventory_drops(pos, "fuel", drops)
default.get_inventory_drops(pos, "dst", drops)
drops[#drops+1] = "default:furnace"
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
minetest.register_node("default:furnace_active", {
description = "Furnace",
tiles = {
"default_furnace_top.png", "default_furnace_bottom.png",
"default_furnace_side.png", "default_furnace_side.png",
"default_furnace_side.png",
{
image = "default_furnace_front_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}
},
paramtype2 = "facedir",
light_source = 8,
drop = "default:furnace",
groups = {cracky=2, not_in_creative_inventory=1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
on_timer = furnace_node_timer,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
-- Locked Furnace thanks to kotolegokot:
local function has_locked_furnace_privilege(meta, player)
if player:get_player_name() ~= meta:get_string("owner") and player:get_player_name() ~= minetest.setting_get("name") then
return false
end
return true
end
minetest.register_node("default:furnace_locked", {
description = "Locked Furnace",
tiles = {"default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png",
"default_furnace_side.png", "default_furnace_side.png", "default_furnace_lock.png"},
paramtype2 = "facedir",
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("infotext", "Locked Furnace (owned by " .. placer:get_player_name() .. ")")
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", inactive_formspec)
meta:set_string("infotext", "Locked Furnace")
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", 4)
end,
can_dig = can_dig,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
})
minetest.register_node("default:furnace_locked_active", {
description = "Locked Furnace (active)",
tiles = {
"default_furnace_top.png",
"default_furnace_bottom.png",
"default_furnace_side.png",
"default_furnace_side.png",
"default_furnace_side.png",
{
image = "default_furnace_lock_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1
},
}
},
paramtype2 = "facedir",
light_source = 9,
drop = "default:furnace_locked",
groups = {cracky = 2, not_in_creative_inventory = 1},
sounds = default.node_sound_stone_defaults(),
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("owner", "Locked Furnace (owned by " .. player:get_player_name() .. ")")
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", inactive_formspec)
meta:set_string("infotext", "Locked Furnace");
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", 4)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
if not inv:is_empty("fuel") then
return false
elseif not inv:is_empty("dst") then
return false
elseif not inv:is_empty("src") then
return false
end
return true
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
})
--
-- ABM
--
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
minetest.register_abm({
nodenames = {"default:furnace", "default:furnace_active"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
--
-- Inizialize inventory
--
local inv = meta:get_inventory()
for listname, size in pairs({
src = 1,
fuel = 1,
dst = 4,
}) do
if inv:get_size(listname) ~= size then
inv:set_size(listname, size)
end
end
local srclist = inv:get_list("src")
local fuellist = inv:get_list("fuel")
local dstlist = inv:get_list("dst")
--
-- Cooking
--
-- Check if we have cookable content
local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
local cookable = true
if cooked.time == 0 then
cookable = false
end
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The furnace is currently active and has enough fuel
fuel_time = fuel_time + 1
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + 1
if src_time >= cooked.time then
-- Place result in dst list if possible
if inv:room_for_item("dst", cooked.item) then
inv:add_item("dst", cooked.item)
inv:set_stack("src", 1, aftercooked.items[1])
src_time = 0
end
end
end
else
-- Furnace ran out of fuel
if cookable then
-- We need to get new fuel
local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
if fuel.time == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
fuel_time = 0
src_time = 0
else
-- Take fuel from fuel list
inv:set_stack("fuel", 1, afterfuel.items[1])
fuel_totaltime = fuel.time
fuel_time = 0
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
fuel_time = 0
src_time = 0
end
end
--
-- Update formspec, infotext and node
--
local formspec = inactive_formspec
local item_state = ""
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooked.time * 100)
item_state = item_percent .. "%"
else
if srclist[1]:is_empty() then
item_state = "Empty"
else
item_state = "Not cookable"
end
end
local fuel_state = "Empty"
local active = "inactive "
if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then
active = "active "
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = fuel_percent .. "%"
formspec = active_formspec(fuel_percent, item_percent)
swap_node(pos, "default:furnace_active")
else
if not fuellist[1]:is_empty() then
fuel_state = "0%"
end
swap_node(pos, "default:furnace")
end
local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")"
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
end,
})
minetest.register_abm({
nodenames = {"default:furnace_locked","default:furnace_locked_active"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos)
for i, name in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
if meta:get_string(name) == "" then
meta:set_float(name, 0.0)
end
end
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local cooked = nil
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
local was_active = false
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
was_active = true
meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
meta:set_float("src_time", meta:get_float("src_time") + 1)
if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
-- check if there's room for output in "dst" list
if inv:room_for_item("dst",cooked.item) then
-- Put result in "dst" list
inv:add_item("dst", cooked.item)
-- take stuff from "src" list
local srcstack = inv:get_stack("src", 1)
srcstack:take_item()
inv:set_stack("src", 1, srcstack)
else
-- print("Could not insert " .. cooked.item .. ".")
end
meta:set_string("src_time", 0)
end
end
local item_percent = 0
if cooked then
item_percent = meta:get_float("src_time") * 100 / cooked.time
end
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext","Furnace active: " .. percent .. " % (owned by "..meta:get_string("owner") .. ")")
swap_node(pos,"default:furnace_locked_active")
meta:set_string("formspec", active_formspec(percent, item_percent))
return
end
local fuel = nil
local cooked = nil
local fuellist = inv:get_list("fuel")
local srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
if fuellist then
fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
end
if fuel.time <= 0 then
meta:set_string("infotext","Locked Furnace is out of fuel (owned by "..meta:get_string("owner")..")")
swap_node(pos,"default:furnace_locked")
meta:set_string("formspec", inactive_formspec)
return
end
if cooked.item:is_empty() then
if was_active then
meta:set_string("infotext","Locked Furnace is empty (owned by "..meta:get_string("owner")..")")
swap_node(pos,"default:furnace_locked")
meta:set_string("formspec", inactive_formspec)
end
return
end
meta:set_string("fuel_totaltime", fuel.time)
meta:set_string("fuel_time", 0)
local stack = inv:get_stack("fuel", 1)
stack:take_item()
inv:set_stack("fuel", 1, stack)
end,
})

View File

@ -1,48 +0,0 @@
-- Minetest 0.4 mod: default
-- See README.txt for licensing and other information.
-- The API documentation in here was moved into game_api.txt
-- Definitions made by this mod that other mods can use too
default = {}
default.LIGHT_MAX = 14
-- GUI related stuff
default.gui_bg = "bgcolor[#080808BB;true]"
default.gui_bg_img = "background[5,5;1,1;gui_formbg.png;true]"
default.gui_slots = "listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]"
function default.get_hotbar_bg(x,y)
local out = ""
for i=0,7,1 do
out = out .."image["..x+i..","..y..";1,1;gui_hb_bg.png]"
end
return out
end
default.gui_survival_form = "size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"list[current_player;craft;1.75,0.5;3,3;]"..
"list[current_player;craftpreview;5.75,1.5;1,1;]"..
"image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
"listring[current_player;main]"..
"listring[current_player;craft]"..
default.get_hotbar_bg(0,4.25)
-- Load files
dofile(minetest.get_modpath("default").."/functions.lua")
dofile(minetest.get_modpath("default").."/trees.lua")
dofile(minetest.get_modpath("default").."/nodes.lua")
dofile(minetest.get_modpath("default").."/furnace.lua")
dofile(minetest.get_modpath("default").."/tools.lua")
dofile(minetest.get_modpath("default").."/craftitems.lua")
dofile(minetest.get_modpath("default").."/crafting.lua")
dofile(minetest.get_modpath("default").."/mapgen.lua")
dofile(minetest.get_modpath("default").."/player.lua")
dofile(minetest.get_modpath("default").."/aliases.lua")
dofile(minetest.get_modpath("default").."/legacy.lua")

View File

@ -1,25 +0,0 @@
-- mods/default/legacy.lua
-- Horrible crap to support old code registering falling nodes
-- Don't use this and never do what this does, it's completely wrong!
-- (More specifically, the client and the C++ code doesn't get the group)
function default.register_falling_node(nodename, texture)
minetest.log("error", debug.traceback())
minetest.log('error', "WARNING: default.register_falling_node is deprecated")
if minetest.registered_nodes[nodename] then
minetest.registered_nodes[nodename].groups.falling_node = 1
end
end
function default.spawn_falling_node(p, nodename)
spawn_falling_node(p, nodename)
end
-- Liquids
WATER_ALPHA = minetest.registered_nodes["default:water_source"].alpha
WATER_VISC = minetest.registered_nodes["default:water_source"].liquid_viscosity
LAVA_VISC = minetest.registered_nodes["default:lava_source"].liquid_viscosity
LIGHT_MAX = default.LIGHT_MAX
-- Formspecs
default.gui_suvival_form = default.gui_survival_form

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,159 +0,0 @@
-- Minetest 0.4 mod: player
-- See README.txt for licensing and other information.
-- Player animation blending
-- Note: This is currently broken due to a bug in Irrlicht, leave at 0
local animation_blend = 0
default.registered_player_models = { }
-- Local for speed.
local models = default.registered_player_models
function default.player_register_model(name, def)
models[name] = def
end
-- Default player appearance
default.player_register_model("character.b3d", {
animation_speed = 30,
textures = {"character.png", },
animations = {
-- Standard animations.
stand = { x= 0, y= 79, },
lay = { x=162, y=166, },
walk = { x=168, y=187, },
mine = { x=189, y=198, },
walk_mine = { x=200, y=219, },
-- Extra animations (not currently used by the game).
sit = { x= 81, y=160, },
},
})
-- Player stats and animations
local player_model = {}
local player_textures = {}
local player_anim = {}
local player_sneak = {}
default.player_attached = {}
function default.player_get_animation(player)
local name = player:get_player_name()
return {
model = player_model[name],
textures = player_textures[name],
animation = player_anim[name],
}
end
-- Called when a player's appearance needs to be updated
function default.player_set_model(player, model_name)
local name = player:get_player_name()
local model = models[model_name]
if model then
if player_model[name] == model_name then
return
end
player:set_properties({
mesh = model_name,
textures = player_textures[name] or model.textures,
visual = "mesh",
visual_size = model.visual_size or {x=1, y=1},
})
default.player_set_animation(player, "stand")
else
player:set_properties({
textures = { "player.png", "player_back.png", },
visual = "upright_sprite",
})
end
player_model[name] = model_name
end
function default.player_set_textures(player, textures)
local name = player:get_player_name()
player_textures[name] = textures
player:set_properties({textures = textures,})
end
function default.player_set_animation(player, anim_name, speed)
local name = player:get_player_name()
if player_anim[name] == anim_name then
return
end
local model = player_model[name] and models[player_model[name]]
if not (model and model.animations[anim_name]) then
return
end
local anim = model.animations[anim_name]
player_anim[name] = anim_name
player:set_animation(anim, speed or model.animation_speed, animation_blend)
end
-- Update appearance when the player joins
minetest.register_on_joinplayer(function(player)
default.player_attached[player:get_player_name()] = false
default.player_set_model(player, "character.b3d")
player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30)
-- set GUI
if not minetest.setting_getbool("creative_mode") then
player:set_inventory_formspec(default.gui_survival_form)
end
player:hud_set_hotbar_image("gui_hotbar.png")
player:hud_set_hotbar_selected_image("gui_hotbar_selected.png")
end)
minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name()
player_model[name] = nil
player_anim[name] = nil
player_textures[name] = nil
end)
-- Localize for better performance.
local player_set_animation = default.player_set_animation
local player_attached = default.player_attached
-- Check each player and apply animations
minetest.register_globalstep(function(dtime)
for _, player in pairs(minetest.get_connected_players()) do
local name = player:get_player_name()
local model_name = player_model[name]
local model = model_name and models[model_name]
if model and not player_attached[name] then
local controls = player:get_player_control()
local walking = false
local animation_speed_mod = model.animation_speed or 30
-- Determine if the player is walking
if controls.up or controls.down or controls.left or controls.right then
walking = true
end
-- Determine if the player is sneaking, and reduce animation speed if so
if controls.sneak then
animation_speed_mod = animation_speed_mod / 2
end
-- Apply animations based on what the player is doing
if player:get_hp() == 0 then
player_set_animation(player, "lay")
elseif walking then
if player_sneak[name] ~= controls.sneak then
player_anim[name] = nil
player_sneak[name] = controls.sneak
end
if controls.LMB then
player_set_animation(player, "walk_mine", animation_speed_mod)
else
player_set_animation(player, "walk", animation_speed_mod)
end
elseif controls.LMB then
player_set_animation(player, "mine")
else
player_set_animation(player, "stand", animation_speed_mod)
end
end
end
end)

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