Compare commits

...

410 Commits

Author SHA1 Message Date
FaceDeer 9c1cc9e141 Merge pull request 'Merge master into my fork' (#2) from MineClone2/MineClone2:master into master
Reviewed-on: #2
2022-09-02 01:05:45 +00:00
cora b552548b4e Merge pull request 'Add setting for bookshelf inventories' (#2613) from bookshelf_inv_setting into master
Reviewed-on: MineClone2/MineClone2#2613
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-01 21:00:32 +00:00
cora 1ddc1abb97 Add setting for bookshelf inventories 2022-09-01 12:10:12 +02:00
cora eed52b69a2 Merge pull request 'Fixed Bookshelf Close Gui Issue' (#2611) from fix_bookshelf_issue into master
Reviewed-on: MineClone2/MineClone2#2611
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-01 09:47:59 +00:00
PrairieWind 574267446e Merge branch 'master' into fix_bookshelf_issue 2022-08-31 22:37:46 +00:00
PrairieWind 3aae2b6d96 Fixed Bookshelf close gui issue 2022-08-31 13:51:38 -06:00
PrairieWind 2bfca18377 Merge pull request 'fix translation and update french translation -master' (#2588) from 3raven/MineClone2-french:master into master
Reviewed-on: MineClone2/MineClone2#2588
Reviewed-by: cora <cora@noreply.git.minetest.land>
Reviewed-by: AFCMS <afcm.contact@gmail.com>
2022-08-31 18:49:32 +00:00
3raven 5329e70df9 Merge branch 'master' into master 2022-08-31 17:04:43 +00:00
cora 7c686c8b79 Merge pull request 'Added Formspec to Bookshelf' (#2603) from bookshelf_inventory into master
Reviewed-on: MineClone2/MineClone2#2603
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-31 10:02:57 +00:00
PrairieWind 2eab947d84 Added container group to Bookshelf 2022-08-30 17:41:52 -06:00
PrairieWind 8bcf80422d Added Formspec to Bookshelf 2022-08-30 21:36:27 +00:00
cora 6b7b2c74ed Merge pull request 'Fix Chest on top floor of Pillager Outpost' (#2608) from fix_outpost_chest into master
Reviewed-on: MineClone2/MineClone2#2608
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-30 21:05:58 +00:00
PrairieWind 0c6cbc9e99 Chest on top floor of Pillager Outpost now works. 2022-08-30 23:04:43 +02:00
cora 9b2306151a Merge pull request 'Add golem summoning for villagers' (#2606) from villagers_spawn_golem into master
Reviewed-on: MineClone2/MineClone2#2606
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-08-30 21:02:57 +00:00
cora 93cccaa264 Allow spawning on water 2022-08-30 22:58:55 +02:00
cora b067111e71 Add golem summoning for villagers 2022-08-30 22:01:18 +02:00
cora 34c7246e4a Merge pull request 'Mob group spawning fixes' (#2605) from spawning_fixes into master
Reviewed-on: MineClone2/MineClone2#2605
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-08-30 19:58:47 +00:00
cora 77e11713d3 Remove superfluous bed check for villagers 2022-08-30 21:52:47 +02:00
cora 2f0ca063e9 Make monsters less likely to spawn in groups 2022-08-30 21:52:47 +02:00
cora 0aa4e0a395 Don't spawn creeper in groups 2022-08-30 21:52:47 +02:00
cora 3993cddfc6 Check for conditions on each group spawn 2022-08-30 21:52:47 +02:00
cora 961c9bd3c9 Merge pull request 'Make zombie babies have big heads' (#2596) from zombies into master
Reviewed-on: MineClone2/MineClone2#2596
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-30 19:22:19 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 d7253e8b3b Remove saved visual_size 2022-08-30 07:47:29 -05:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 9d08f8662d Make zombie babies have big heads 2022-08-30 07:47:29 -05:00
FaceDeer be36022249 Merge pull request 'Update from master' (#1) from MineClone2/MineClone2:master into master
Reviewed-on: #1
2022-08-29 07:16:32 +00:00
FaceDeer e1bf4081dd since registered_generators was a table, not an array, table.sort was having no effect and so priority was being ignored. Generators were being run in an arbitrary order.
I discovered this when I attempted to register an lvm in a mod that was intended to run after "main", to modify clay that the main mapgen lvm adds to the world. It wasn't finding any clay because priority was being ignored and it was running before "main" was.
2022-08-28 22:11:02 -06:00
cora 1f2b70cb85 Merge pull request 'Fix crash when using flint and steel on creeper' (#2598) from fix_flint_and_creeper into master
Reviewed-on: MineClone2/MineClone2#2598
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-28 19:12:21 +00:00
cora 683ace0748 Fix crash when using flint and steel on creeper 2022-08-28 21:10:48 +02:00
cora 7ac2c30622 Merge pull request 'Fix crash with itementity and unloaded nodes' (#2600) from fix_item_crash into master
Reviewed-on: MineClone2/MineClone2#2600
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-28 19:10:08 +00:00
cora 2b2ba47aed Fix crash with itementity and unloaded nodes 2022-08-28 21:08:17 +02:00
cora 7a6a84b2a2 Merge pull request 'Fix a couple of warnings in grindstone' (#2601) from fix_grindstone_warnings into master
Reviewed-on: MineClone2/MineClone2#2601
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-28 19:07:17 +00:00
cora c158be848d Grindstone: Fix indentation 2022-08-28 15:06:06 +02:00
cora 5520f81404 Fix grindston warnings 2022-08-28 15:02:02 +02:00
cora d75fdec8f0 Merge pull request 'Fix ender particle spam with particlespammers' (#2593) from fix_enderparticles into master
Reviewed-on: MineClone2/MineClone2#2593
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-26 20:02:52 +00:00
cora 94f07c2b3d Fix ender particle spam with particlespammers 2022-08-26 21:53:27 +02:00
cora a93bf3bf53 Merge pull request 'Make items not drop into blocks on playerdeath' (#2592) from fix_death_drop into master
Reviewed-on: MineClone2/MineClone2#2592
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-26 19:31:13 +00:00
cora 0a45486304 Make items not drop into blocks on playerdeath 2022-08-26 02:32:16 +02:00
cora 0385dd7cab Merge pull request 'Fix enchanted tools not being properly upgraded' (#2586) from fix_netherite_upgrade into master
Reviewed-on: MineClone2/MineClone2#2586
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-25 09:51:06 +00:00
cora 05979ed690 Fix enchanted tools not being properly upgraded 2022-08-25 11:31:08 +02:00
cora 35f064511d Merge pull request 'Fix tropical fish crash (#2583)' (#2587) from fix_tropical_fish_textures into master
Reviewed-on: MineClone2/MineClone2#2587
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-24 09:01:04 +00:00
3raven 1a405b291a Mise à jour de 'mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr' 2022-08-24 05:39:45 +00:00
3raven 0d23a89713 Mise à jour de 'mods/MAPGEN/mcl_villages/locale/template.txt' 2022-08-24 05:39:11 +00:00
3raven 561396f4e6 Mise à jour de 'mods/MAPGEN/mcl_villages/init.lua' 2022-08-24 05:38:30 +00:00
3raven 5621250c07 Mise à jour de 'mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr' 2022-08-24 05:28:22 +00:00
3raven d93a4cc457 Mise à jour de 'mods/ITEMS/mcl_crimson/init.lua' 2022-08-24 05:26:09 +00:00
3raven ef02c82767 Mise à jour de 'mods/ITEMS/mcl_blackstone/init.lua' 2022-08-24 05:19:54 +00:00
3raven b02daff1c9 Mise à jour de 'mods/ITEMS/mcl_mangrove/init.lua' 2022-08-24 05:02:18 +00:00
3raven bb5aea08ef Mise à jour de 'mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr' 2022-08-24 04:57:18 +00:00
3raven d6d70757a3 Mise à jour de 'mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr' 2022-08-24 04:56:58 +00:00
3raven ec91be347a Mise à jour de 'mods/MAPGEN/mcl_villages/locale/template.txt' 2022-08-24 04:56:32 +00:00
3raven 2d377dc539 Mise à jour de 'mods/MAPGEN/mcl_villages/init.lua' 2022-08-24 04:55:04 +00:00
3raven 17a5526bd2 Mise à jour de 'mods/MAPGEN/mcl_villages/init.lua' 2022-08-24 04:54:04 +00:00
3raven eb37b49604 Transférer les fichiers vers 'mods/MAPGEN/mcl_villages/locale' 2022-08-24 04:50:59 +00:00
3raven 0556a3c9bf Ajouter 'mods/MAPGEN/mcl_villages/locale/template.txt' 2022-08-24 04:49:08 +00:00
3raven 2ebc43ab77 Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/template.txt' 2022-08-24 04:46:42 +00:00
3raven ed30ea5a3d Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr' 2022-08-24 04:46:23 +00:00
3raven 07fa161ffd Mise à jour de 'mods/ITEMS/mcl_blackstone/init.lua' 2022-08-24 04:43:59 +00:00
3raven 2993d180fb Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/template.txt' 2022-08-24 04:42:35 +00:00
3raven cd2f103215 Mise à jour de 'mods/ITEMS/mcl_blackstone/init.lua' 2022-08-24 04:38:50 +00:00
3raven 7a67555889 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-24 04:09:11 +00:00
3raven e442d225e5 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-24 04:05:11 +00:00
3raven 3dcd301ed5 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/template.txt' 2022-08-24 04:02:57 +00:00
3raven 32c834c1d6 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-24 04:02:26 +00:00
3raven 071ae27fcc Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-24 03:59:20 +00:00
3raven 1a86c3d3b0 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-24 03:54:58 +00:00
3raven 49ac1bc260 Mise à jour de 'mods/ITEMS/mcl_raw_ores/init.lua' 2022-08-24 03:44:05 +00:00
3raven 207c6bf639 Mise à jour de 'mods/ITEMS/mcl_grindstone/locale/mcl_grindstone.fr.tr' 2022-08-24 03:40:26 +00:00
3raven b48f1c07f7 Mise à jour de 'mods/ITEMS/mcl_grindstone/locale/template.txt' 2022-08-24 03:39:49 +00:00
3raven 8a6c2f2850 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/template.txt' 2022-08-24 03:24:24 +00:00
3raven b53b363a9a Mise à jour de 'mods/ITEMS/mcl_mangrove/init.lua' 2022-08-24 03:12:09 +00:00
3raven 64fc1d0c14 Mise à jour de 'mods/ITEMS/mcl_mangrove/init.lua' 2022-08-24 03:07:35 +00:00
3raven 0207b9c6fd Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr' 2022-08-24 02:57:52 +00:00
3raven 89f29da54c Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/template.txt' 2022-08-24 02:55:47 +00:00
3raven d2720253ff Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr' 2022-08-24 02:53:09 +00:00
3raven a8c273f801 Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr' 2022-08-24 02:52:18 +00:00
3raven 27c8adb40a Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/template.txt' 2022-08-24 02:51:08 +00:00
3raven 7c63b77ee5 Mise à jour de 'mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr' 2022-08-24 02:31:53 +00:00
3raven 99b304b2f3 Mise à jour de 'mods/ITEMS/mcl_stairs/locale/template.txt' 2022-08-24 02:30:17 +00:00
3raven cfb2ad01c6 Vérifiez la prochaine fois 2022-08-24 02:25:15 +00:00
3raven bb47b5068e Mise à jour de 'mods/ITEMS/mcl_core/locale/mcl_core.fr.tr' 2022-08-24 02:21:04 +00:00
3raven 6884d93e17 Mise à jour de 'mods/ITEMS/mcl_core/locale/template.txt' 2022-08-24 02:16:51 +00:00
3raven 7545c3aaf3 Mise à jour de 'mods/ITEMS/mcl_core/locale/template.txt' 2022-08-24 02:13:14 +00:00
3raven 0d011b34ce Mise à jour de 'mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr' 2022-08-24 02:05:49 +00:00
3raven af482de67e Mise à jour de 'mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr' 2022-08-24 02:05:31 +00:00
3raven c3b35c3436 Mise à jour de 'mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr' 2022-08-24 02:05:13 +00:00
3raven 838ad5b031 Mise à jour de 'mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr' 2022-08-24 02:04:55 +00:00
3raven 967889e657 Mise à jour de 'mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.ru.tr' 2022-08-24 02:04:36 +00:00
3raven 9e2cbbf44e Mise à jour de 'mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt' 2022-08-24 02:04:13 +00:00
3raven 187dcfb9e7 Transférer les fichiers vers 'mods/ITEMS/mcl_raw_ores/locale' 2022-08-24 02:02:24 +00:00
3raven b8594a6f5d Ajouter 'mods/ITEMS/mcl_raw_ores/locale/template.txt' 2022-08-24 02:02:02 +00:00
3raven d9f15b461c Mise à jour de 'mods/ENTITIES/mobs_mc/locale/template.txt' 2022-08-24 01:57:26 +00:00
3raven 052b44fe8d Mise à jour de 'mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr' 2022-08-24 01:57:08 +00:00
3raven 9a9c950917 Mise à jour de 'mods/ITEMS/mcl_crimson/locale/mcl_crimson.fr.tr' 2022-08-24 01:36:44 +00:00
3raven d1331ec544 Mise à jour de 'mods/ITEMS/mcl_crimson/locale/template.txt' 2022-08-24 01:26:48 +00:00
3raven 5f7e056411 Mise à jour de 'mods/ITEMS/mcl_crimson/locale/mcl_crimson.fr.tr' 2022-08-24 01:26:09 +00:00
3raven 037aa6de5f Mise à jour de 'mods/ITEMS/mcl_crimson/locale/template.txt' 2022-08-24 01:18:19 +00:00
3raven f2da4c5d36 Transférer les fichiers vers 'mods/ITEMS/mcl_nether/locale' 2022-08-24 01:04:50 +00:00
cora ccfbc7da14 Make sure math.random gets a >0 argument 2022-08-24 03:01:32 +02:00
3raven d88277e6b4 Mise à jour de 'mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr' 2022-08-24 00:56:11 +00:00
cora 6d336ee879 Fix tropical fish empty texture array 2022-08-24 02:55:15 +02:00
3raven caf8790a57 Mise à jour de 'mods/ITEMS/mcl_bows/locale/template.txt' 2022-08-24 00:54:29 +00:00
3raven 959fcffff1 Mise à jour de 'mods/ITEMS/mcl_bows/crossbow.lua' 2022-08-24 00:51:15 +00:00
3raven 215cb26425 Mise à jour de 'mods/ITEMS/mcl_bows/crossbow.lua' 2022-08-24 00:49:17 +00:00
3raven 994774489e Transférer les fichiers vers 'mods/ITEMS/mcl_tools/locale' 2022-08-24 00:40:09 +00:00
3raven d2821cf571 Transférer les fichiers vers 'mods/ITEMS/mcl_tools/locale' 2022-08-24 00:39:29 +00:00
3raven b081a4144e Mise à jour de 'mods/ITEMS/mcl_campfires/locale/mcl_campfires.fr.tr' 2022-08-24 00:24:40 +00:00
3raven 6433a25ca7 Transférer les fichiers vers 'mods/ITEMS/mcl_campfires/locale' 2022-08-24 00:24:01 +00:00
3raven 54d3ceea3c Mise à jour de 'mods/ITEMS/mcl_campfires/locale/template.txt' 2022-08-24 00:23:10 +00:00
3raven dfe1a9292e Ajouter 'mods/ITEMS/mcl_campfires/locale/template.txt' 2022-08-24 00:22:17 +00:00
3raven 245b6a9b5e Supprimer 'mods/ITEMS/mcl_campfires/local/template.txt' 2022-08-24 00:21:38 +00:00
3raven d0454c150d Supprimer 'mods/ITEMS/mcl_campfires/local/mcl_campfire.fr.tr' 2022-08-24 00:21:28 +00:00
3raven d6eb1e5249 Mise à jour de 'mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr' 2022-08-24 00:20:04 +00:00
3raven 7d9d300ad2 Mise à jour de 'mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr' 2022-08-24 00:19:46 +00:00
3raven a50539b3d7 Mise à jour de 'mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr' 2022-08-24 00:19:29 +00:00
3raven 7711a5aac6 Mise à jour de 'mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.zh_TW.tr' 2022-08-24 00:19:09 +00:00
3raven 14bab9263a Mise à jour de 'mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr' 2022-08-24 00:18:47 +00:00
3raven 4c17481c64 Mise à jour de 'mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr' 2022-08-24 00:18:29 +00:00
3raven b99fca17b1 pay attention moron 2022-08-24 00:18:07 +00:00
3raven 9167804230 Mise à jour de 'mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr' 2022-08-24 00:16:40 +00:00
3raven 3a214bb354 Mise à jour de 'mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr' 2022-08-24 00:09:50 +00:00
3raven 9acdc37692 Mise à jour de 'mods/ITEMS/mcl_compass/locale/template.txt' 2022-08-24 00:09:26 +00:00
3raven 2faf27ac4e Mise à jour de 'mods/ITEMS/mcl_stonecutter/locale/mcl_stonecutter.fr.tr' 2022-08-24 00:07:16 +00:00
3raven aa7a88a0ec Mise à jour de 'mods/ITEMS/mcl_stonecutter/locale/template.txt' 2022-08-24 00:06:42 +00:00
3raven 2ee8d31ede Ajouter 'mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.fr.tr' 2022-08-24 00:05:14 +00:00
3raven 26ea38e922 Mise à jour de 'mods/ITEMS/mcl_smithing_table/locale/template.txt' 2022-08-24 00:03:12 +00:00
3raven 05902f7933 Mise à jour de 'mods/ITEMS/mcl_smithing_table/locale/template.txt' 2022-08-24 00:02:01 +00:00
3raven 2ea56cda72 Supprimer 'mods/ITEMS/mcl_smithing_table/locale/mcl_anvils.ru.tr' 2022-08-24 00:01:32 +00:00
3raven d5f90fb716 Supprimer 'mods/ITEMS/mcl_smithing_table/locale/mcl_anvils.fr.tr' 2022-08-24 00:01:23 +00:00
3raven 59bee3c391 seriously 2022-08-24 00:01:10 +00:00
3raven d1376c89f3 dont do this 2022-08-24 00:00:53 +00:00
3raven 8eacc9ef94 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/template.txt' 2022-08-23 23:55:56 +00:00
3raven 07f5cde5d7 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-23 23:55:32 +00:00
3raven 13750fe332 Mise à jour de 'mods/ITEMS/mcl_mud/locale/template.txt' 2022-08-23 23:55:04 +00:00
3raven 8aacb265a6 Mise à jour de 'mods/ITEMS/mcl_mud/locale/mcl_mud.fr.tr' 2022-08-23 23:54:46 +00:00
3raven 5391020925 Mise à jour de 'mods/ITEMS/mcl_enchanting/locale/template.txt' 2022-08-23 23:51:28 +00:00
3raven 2b077a2cbc Mise à jour de 'mods/ITEMS/mcl_armor/locale/template.txt' 2022-08-23 23:44:36 +00:00
3raven 2082205286 Mise à jour de 'mods/ITEMS/mcl_armor/locale/mcl_armor.fr.tr' 2022-08-23 23:43:34 +00:00
3raven 8d1c889d8d Mise à jour de 'mods/ITEMS/mcl_armor/locale/template.txt' 2022-08-23 23:40:29 +00:00
3raven 0da484e58e Mise à jour de 'mods/ITEMS/mcl_bells/locale/template.txt' 2022-08-23 23:26:26 +00:00
3raven 0933f08316 Mise à jour de 'mods/ITEMS/mcl_bells/locale/mcl_bells.fr.tr' 2022-08-23 23:26:06 +00:00
3raven a66e1992f3 Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr' 2022-08-23 23:11:46 +00:00
3raven 376c9912be Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/template.txt' 2022-08-23 23:11:08 +00:00
3raven b7c6e7801f Mise à jour de 'mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr' 2022-08-23 23:09:37 +00:00
3raven 157c29effa Mise à jour de 'mods/ENTITIES/mcl_boats/locale/template.txt' 2022-08-23 23:09:06 +00:00
3raven df3db39ca7 Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr' 2022-08-23 23:00:26 +00:00
3raven 70317ecc72 Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/template.txt' 2022-08-23 23:00:00 +00:00
3raven 9c4654f8ef Mise à jour de 'mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr' 2022-08-23 22:59:44 +00:00
3raven 38318180b8 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-23 21:39:16 +00:00
3raven 6da876b573 Mise à jour de 'mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr' 2022-08-23 21:34:57 +00:00
3raven ea412309f5 correction 2022-08-23 21:33:18 +00:00
3raven 9f2651d56e Mise à jour de 'mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr' 2022-08-23 21:24:47 +00:00
3raven 296ba5ccc6 Mise à jour de 'mods/ITEMS/mcl_walls/locale/template.txt' 2022-08-23 21:24:14 +00:00
3raven 6102bf7813 Mise à jour de 'mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr' 2022-08-23 21:23:01 +00:00
3raven 8dbe41bd4f Mise à jour de 'mods/ITEMS/mcl_mud/locale/mcl_mud.fr.tr' 2022-08-23 21:21:09 +00:00
3raven 80488f65ad Ajouter 'mods/ITEMS/mcl_mud/locale/mcl_mud.fr.tr' 2022-08-23 21:16:28 +00:00
3raven 846f1ace23 Ajouter 'mods/ITEMS/mcl_mud/locale/template.txt' 2022-08-23 21:15:36 +00:00
3raven 556fe6c7e2 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-23 21:10:55 +00:00
3raven f1a1b4d59c Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-23 21:07:25 +00:00
3raven 478c99ec26 Ajouter 'mods/ITEMS/mcl_mangrove/locale/mcl_mangrove.fr.tr' 2022-08-23 20:57:53 +00:00
3raven fb7207b926 Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/template.txt' 2022-08-23 20:57:00 +00:00
3raven 60c220c33e Mise à jour de 'mods/ITEMS/mcl_mangrove/locale/template.txt' 2022-08-23 20:47:30 +00:00
3raven 27a172ab00 Ajouter 'mods/ITEMS/mcl_mangrove/locale/template.txt' 2022-08-23 20:47:03 +00:00
3raven 9b471f6e5c Supprimer 'mods/ITEMS/mcl_mangrove/template.txt' 2022-08-23 20:46:40 +00:00
3raven 0957c1b3c4 Mise à jour de 'mods/ITEMS/mcl_mangrove/template.txt' 2022-08-23 20:45:40 +00:00
3raven 7c771ad702 Mise à jour de 'mods/ITEMS/mcl_mangrove/init.lua' 2022-08-23 20:45:02 +00:00
3raven 0e69ef9156 Ajouter 'mods/ITEMS/mcl_mangrove/template.txt' 2022-08-23 20:42:56 +00:00
3raven 24d2d3abaf Ajouter 'mods/ITEMS/mcl_fletching_table/locale/mcl_fletching_table.fr.tr' 2022-08-23 20:27:25 +00:00
3raven f1900c251f Ajouter 'mods/ITEMS/mcl_fletching_table/locale/template.txt' 2022-08-23 20:26:42 +00:00
3raven acb4bbc3c9 Ajouter 'mods/ITEMS/mcl_cartography_table/locale/mcl_cartography_table.fr.tr' 2022-08-23 20:24:31 +00:00
3raven c9e9395c65 Ajouter 'mods/ITEMS/mcl_cartography_table/locale/template.txt' 2022-08-23 20:23:49 +00:00
3raven d4afc7a5e9 Mise à jour de 'mods/ITEMS/mcl_campfires/local/mcl_campfire.fr.tr' 2022-08-23 20:21:36 +00:00
3raven cba4e5a79d Ajouter 'mods/ITEMS/mcl_campfires/local/mcl_campfire.fr.tr' 2022-08-23 20:19:05 +00:00
3raven 1ed33ad5c7 Ajouter 'mods/ITEMS/mcl_smoker/locale/mcl_smoker.fr.tr' 2022-08-23 20:14:24 +00:00
3raven abc71a8217 Ajouter 'mods/ITEMS/mcl_smoker/locale/template.txt' 2022-08-23 20:13:39 +00:00
3raven 17b8f98279 Ajouter 'mods/ITEMS/mcl_blast_furnace/locale/mcl_blast_furnace.fr.tr' 2022-08-23 20:11:11 +00:00
3raven 64dbc4b128 Ajouter 'mods/ITEMS/mcl_blast_furnace/locale/template.txt' 2022-08-23 20:10:28 +00:00
3raven 20c92b274a Supprimer 'mods/ITEMS/mcl_blast_furnace/locale/template.text' 2022-08-23 20:09:47 +00:00
3raven 541cb4dccc Ajouter 'mods/ITEMS/mcl_blast_furnace/locale/template.text' 2022-08-23 20:09:22 +00:00
cora 26a4b3d895 Merge pull request 'Remove image stack wieldview' (#2333) from MrRar/MineClone2:wieldview into master
Reviewed-on: MineClone2/MineClone2#2333
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-23 20:06:38 +00:00
3raven 703abde07f Correction, remove google trad style 2022-08-23 20:05:38 +00:00
3raven abea853243 Ajouter 'mods/ITEMS/mcl_loom/locale/mcl_loom.fr.tr' 2022-08-23 20:00:59 +00:00
3raven 960a090b44 from mcl5 2022-08-23 20:00:16 +00:00
3raven 957d7ea877 Ajouter 'mods/ITEMS/mcl_loom/locale/template.txt' 2022-08-23 19:59:19 +00:00
3raven ae5f263a54 Mise à jour de 'README_locale/README.fr.md' 2022-08-23 19:55:35 +00:00
3raven ceb57f526d Mise à jour de 'README_locale/README.fr.md' 2022-08-23 19:55:16 +00:00
3raven 8b857a5a52 Mise à jour de 'README_locale/README.fr.md' 2022-08-23 19:42:17 +00:00
3raven b3afaefe36 Mise à jour de 'README_locale/README.fr.md' 2022-08-23 19:25:13 +00:00
3raven e114c40491 Mise à jour de 'README_locale/README.fr.md' 2022-08-23 18:38:59 +00:00
3raven 7fc5c4fd71 Mise à jour de 'README_locale/README.fr.md' 2022-08-23 18:14:38 +00:00
3raven 31c2607c3e Mise à jour de 'README_locale/README.fr.md' 2022-08-23 17:29:30 +00:00
3raven 85118346aa Ajouter 'README_locale/README.fr.md' 2022-08-23 17:00:49 +00:00
3raven 3d580a3976 Mise à jour de 'mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr' 2022-08-23 16:34:03 +00:00
3raven 576dbcd804 Mise à jour de 'mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr' 2022-08-23 16:26:16 +00:00
3raven ab3e56d2f7 Match template 2022-08-23 16:20:44 +00:00
3raven 5dfb64dcc9 Remove doublon 2022-08-23 16:10:26 +00:00
3raven 9648edb173 Doublon 2022-08-23 16:04:55 +00:00
3raven adcb2b8c19 Complete & correct translation 2022-08-23 15:38:09 +00:00
3raven 0f06868c5f Add translation 2022-08-23 15:24:56 +00:00
3raven 10e09baeaa Match template 2022-08-23 15:20:32 +00:00
3raven 1d64a7bdad Mise à jour de 'mods/ENVIRONMENT/lightning/locale/lightning.fr.tr' 2022-08-23 15:15:41 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 71cfa67c7d Fix wieldview in MT 5.6 2022-08-23 10:11:21 -05:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 60f3d4b74c set_attach: remove default parameters 2022-08-23 10:08:22 -05:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 ba55e4286f Remove image stack wieldview: code review improvment 2022-08-23 10:08:22 -05:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 587f9be4d7 Remove image stack wieldview 2022-08-23 10:08:22 -05:00
3raven 1e8ddf3ab8 Add translations 2022-08-23 03:41:51 +00:00
3raven 541501fd70 Complete translation 2022-08-23 03:22:51 +00:00
3raven f1bb05d353 Complete translation 2022-08-23 03:16:23 +00:00
3raven 6013dec4bb Complete translation 2022-08-23 03:14:30 +00:00
3raven 57d0b29bf5 Add translation 2022-08-23 03:13:32 +00:00
3raven bfbfff189c Add translation 2022-08-23 03:11:27 +00:00
3raven 1116b53ba8 Add translations 2022-08-23 02:58:53 +00:00
3raven 24a73fb66c Add translations 2022-08-23 02:56:31 +00:00
3raven 02622fc04b Add translation 2022-08-23 02:54:10 +00:00
3raven 593c34e183 Add translation 2022-08-23 02:39:57 +00:00
3raven bedd6cd333 Add translations 2022-08-23 02:33:27 +00:00
3raven b939f14a6e Add translations 2022-08-23 02:30:10 +00:00
3raven 8014e84ac0 Add translations 2022-08-23 02:21:36 +00:00
3raven 3aa7ea993d Add translations 2022-08-23 02:18:02 +00:00
3raven 54201da15f Add translation 2022-08-23 02:05:57 +00:00
3raven 118ceb9bf3 Add an reorder translations 2022-08-23 01:52:15 +00:00
3raven 79d19d8a47 Add translations 2022-08-23 00:36:08 +00:00
3raven d3a94e8089 Add missing translations + changes for cohesion 2022-08-23 00:21:38 +00:00
3raven b15575469a Add translation 2022-08-22 22:15:37 +00:00
3raven cd9dde40d9 Add translation 2022-08-22 22:06:56 +00:00
3raven 09e6eabdca create the file 2022-08-22 22:02:18 +00:00
3raven 71424aa5fb update+corrections 2022-08-22 21:54:28 +00:00
3raven 632001af3e update 2022-08-22 21:41:55 +00:00
cora 5d33dc94db Merge pull request 'Fix regression of item movement in water transport streams.' (#2579) from fix_itemflow_regression into master
Reviewed-on: MineClone2/MineClone2#2579
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-19 21:48:27 +00:00
MysticTempest 6cbedd408e Fix regression of item movement in water transport streams. 2022-08-19 06:53:26 -05:00
cora 4032cbe943 Merge pull request 'Parrot mobimitate: Use proper keyset for randomisation' (#2574) from fix_parrot_crash into master
Reviewed-on: MineClone2/MineClone2#2574
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-18 21:53:34 +00:00
cora 544c6cbdb3 Use proper keyset for randomisation 2022-08-18 23:49:27 +02:00
PrairieWind 0cd2c3993f Merge pull request 'Added Grindstone Translation Template' (#2577) from grindstone_tr_template into master
Reviewed-on: MineClone2/MineClone2#2577
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-18 21:10:16 +00:00
PrairieWind 2e5503c12f Added Grindstone Translation Template 2022-08-18 15:03:59 -06:00
cora b0999d89b1 Merge pull request 'Adds grindstone functionality' (#2576) from ChrisPHP/MineClone2:grindstone_gui into master
Reviewed-on: MineClone2/MineClone2#2576
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-18 20:45:25 +00:00
Chris Page 652632a83d Updated mod.conf description 2022-08-18 20:37:22 +01:00
Chris Page af0f16f4ac Transfers custom name for books now 2022-08-18 20:25:43 +01:00
Chris Page 183830e0a6 Merge branch 'master' into grindstone_gui 2022-08-18 19:59:30 +01:00
Chris Page 9580fdb81b Added enchanted book to disenchant and drop items when destroyed 2022-08-18 19:45:30 +01:00
Chris Page 58d36d4596 Added xp earnt from disenchanting, code comments and updated item description 2022-08-17 21:47:00 +01:00
Chris Page 91a318ac4e Added name and curse transfer 2022-08-16 22:06:49 +01:00
cora 36c933dd5c Merge pull request 'Pillagers' (#2545) from pillagers into master
Reviewed-on: MineClone2/MineClone2#2545
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-15 23:58:17 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 181eb96c6d Fix up pillagers 2022-08-16 01:53:42 +02:00
PrairieWind 092b746b0b Add Pillager and Evoker Spawning to Pillager Outpost 2022-08-16 01:53:42 +02:00
PrairieAstronomer 24939326c4 Fixed the pillager so he shoots, along with the animation 2022-08-16 01:53:42 +02:00
PrairieAstronomer a48664b8b3 Changed mobs to mcl_mobs in some spots 2022-08-16 01:53:42 +02:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 d7e950ab7b Pillagers: spawn with loaded crossbow 2022-08-16 01:53:42 +02:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 dd96dd097c Basic Pillagers 2022-08-16 01:53:42 +02:00
chmodsayshello 4b2e084c81 Merge pull request 'Update ingame credits' (#2571) from credit_update into master
Reviewed-on: MineClone2/MineClone2#2571
Reviewed-by: Nicu <kneekoo@noreply.git.minetest.land>
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-08-15 18:17:04 +00:00
chmodsayshello 7ee38fef83 update credits (again) 2022-08-15 14:08:59 +00:00
cora 281e7273ef Merge pull request 'Fix 'spawn_in_group_min' warning' (#2567) from spawn_in_group_warning into master
Reviewed-on: MineClone2/MineClone2#2567
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-15 10:01:38 +00:00
cora f27b2d9714 Fix 'spawn_in_group_min' warning 2022-08-15 11:58:39 +02:00
cora 8666677ef2 Merge pull request 'Log player position on death' (#2568) from log_player_deathpos into master
Reviewed-on: MineClone2/MineClone2#2568
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-15 09:57:58 +00:00
cora ba35f19f71 Log player position on death
So people can find their items easier
2022-08-15 11:57:11 +02:00
cora c0edc00789 Merge pull request 'make endermen TP out of sunlight' (#2563) from endermen_suntp into master
Reviewed-on: MineClone2/MineClone2#2563
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-14 20:18:30 +00:00
cora fba63c4721 Merge branch 'master' into endermen_suntp 2022-08-14 20:15:38 +00:00
Chris Page d6a30cacc6 Added grindstone functionality support 2022-08-14 16:49:35 +01:00
cora cb83c34b52 Merge pull request 'registration of mapgen node functions was overwriting previously registered mapgen functions' (#2565) from FaceDeer/MineClone2:master into master
Reviewed-on: MineClone2/MineClone2#2565
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-14 09:38:17 +00:00
FaceDeer 1a09b5c132 fixing registration of node functions
"#registered_generators" was attempting to count a non-array table and was always returning 0. So every node function registered was named "mod_1" and overwrote each other in that index.

also, "nodes" wasn't counting node_functions, it was counting lvm_functions.
2022-08-14 01:11:30 -06:00
cora ecd1d13b43 Endermen TP out of sunlight
If not attacking a player endermen randomly tp around until they
find a spot that is not in direct sunlight
2022-08-13 23:23:01 +02:00
Chris Page a356be5f76 Merge pull request 'Merge with master.' (#1) from MineClone2/MineClone2:master into master
Reviewed-on: ChrisPHP/MineClone2#1
2022-08-13 10:14:27 +00:00
cora 77cb2277cd Merge pull request 'variable in mcl_beacons gets reinitalized for no reason' (#2562) from minor_beacon_codestyle_fix into master
Reviewed-on: MineClone2/MineClone2#2562
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-13 09:56:53 +00:00
chmodsayshello 21324aa0a5 variable in mcl_beacons gets reinitalized for no reason 2022-08-13 11:54:34 +02:00
cora b07652d6ca Merge pull request 'elytra physics overhaul' (#2511) from SumianVoice/MineClone2_c:elytra-overhaul into master
Reviewed-on: MineClone2/MineClone2#2511
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-13 09:52:21 +00:00
cora f48f158f50 Merge pull request 'Set version to 0.79 indev' (#2560) from release_0.78 into master
Reviewed-on: MineClone2/MineClone2#2560
2022-08-13 09:10:15 +00:00
cora 3cfa8a848b Set version to 0.79 indev 2022-08-13 03:14:29 +00:00
cora 9231ce0754 Merge pull request 'Release 0.78' (#2559) from release_0.78 into master
Reviewed-on: MineClone2/MineClone2#2559
2022-08-13 02:58:57 +00:00
cora 2290968ce9 Set version to 0.78 2022-08-13 04:55:20 +02:00
cora e8f39deede Update credits 2022-08-13 04:55:10 +02:00
cora f7ffa6f700 Merge pull request 'Fix villagers positional sounds' (#2556) from villager_sounds into master
Reviewed-on: MineClone2/MineClone2#2556
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-12 22:53:21 +00:00
cora 3620db7c14 Add objectref to villager sound_play for pos sound 2022-08-13 00:47:46 +02:00
cora 68d5a81b1c Villager sounds -> mono 2022-08-13 00:47:46 +02:00
cora 2d35292bc3 Merge pull request 'Enable shadows and waving liquids when supported (5.6)' (#2555) from shadows_waving into master
Reviewed-on: MineClone2/MineClone2#2555
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-12 22:07:55 +00:00
cora 7be8ab2c1c Send shadows to client if server supports it 2022-08-13 00:04:44 +02:00
cora 442fefebf2 Waving water 2022-08-13 00:04:44 +02:00
cora 0debaf12c0 Merge pull request '[heads] heads may now be placed on ceilings, upside down' (#2558) from heads_ceiling into master
Reviewed-on: MineClone2/MineClone2#2558
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-12 21:39:14 +00:00
iliekprogrammar 7482f84929
[heads] heads may now be placed on ceilings, upside down 2022-08-13 02:44:47 +08:00
cora 1bc082ee4f Merge pull request 'Fix items floating into the air under rare circumstances' (#2553) from fix_item_floating into master
Reviewed-on: MineClone2/MineClone2#2553
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-12 13:18:10 +00:00
Sumyjkl 16c9a83a96 fix items floating into the air under rare circumstances 2022-08-12 21:46:17 +10:00
Sumyjkl 307140b9a4 still over it 2022-08-12 13:03:11 +10:00
Sumyjkl 6cab000b2a fix merge conflict 2022-08-12 12:57:21 +10:00
Sumyjkl c36fd90965 Merge remote-tracking branch 'refs/remotes/mclmaster/master'
Conflicts:
	mods/PLAYER/mcl_playerplus/init.lua
2022-08-12 12:55:50 +10:00
Sumyjkl 97472becfc I'm over it. 2022-08-12 02:26:22 +10:00
cora c001d307f2 Merge pull request 'Swimming collides with ice properly (clean version of #2536)' (#2551) from ice_coll_fix_clean into master
Reviewed-on: MineClone2/MineClone2#2551
2022-08-11 13:39:38 +00:00
opfromthestart f0837bdee6 Swimming collides with ice properly 2022-08-11 15:35:40 +02:00
cora 435df92cf9 Merge pull request 'Parrot fixes' (#2549) from parrot_fixes into master
Reviewed-on: MineClone2/MineClone2#2549
2022-08-11 12:39:16 +00:00
cora 374e30b4a5 stay on players shoulder in when flying in creative 2022-08-11 14:32:58 +02:00
cora 6101de8d68 Fix parrot punch spam 2022-08-11 14:32:58 +02:00
cora 0bd0abc327 Merge pull request 'Some structures fixes' (#2541) from structure_fixes into master
Reviewed-on: MineClone2/MineClone2#2541
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-11 12:31:55 +00:00
cora 79ce9f89d3 More adaptive foundation height 2022-08-11 14:26:34 +02:00
cora 0bcbea4ce3 Add lots of water lakes to mangrove swamps 2022-08-11 14:26:34 +02:00
cora b7f26e2ddc Add setting to selectively disable strucutres 2022-08-11 14:26:34 +02:00
cora 4f96b38fa3 Make foundations less cubic 2022-08-11 14:26:34 +02:00
cora f1c70fe19d grass border for water lake 2022-08-11 14:26:34 +02:00
cora cef559c573 Fix ruined portals y offset 2022-08-11 14:26:34 +02:00
cora f86898b2f4 make ruined portals rarer 2022-08-11 14:26:34 +02:00
cora db2f2cfc69 Merge pull request '[heads] refactor, delete unnecessary textures and implement 16 direction head nodes' (#2550) from heads_16_direction into master
Reviewed-on: MineClone2/MineClone2#2550
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-11 12:25:34 +00:00
iliekprogrammar efd1a023f0
Merge remote-tracking branch 'origin/master' into heads_16_direction 2022-08-11 18:12:19 +08:00
iliekprogrammar de07209654
[heads] optimize textures
`optipng -strip all -o7 -zm9`
2022-08-11 17:34:20 +08:00
iliekprogrammar 29d221eed5
[heads] remove unnecessarily duplicative textures
these textures are unnecessary to texture the head nodes. we can reuse
the available armor texture for both the headgear/helmet and the nodes.
2022-08-11 17:28:37 +08:00
iliekprogrammar 44d234dd2c
[heads] implement 16 directional head node 2022-08-11 17:21:23 +08:00
iliekprogrammar 3ff9ed4419
[heads] refactor and trivial renames 2022-08-11 16:45:51 +08:00
cora 8ff938c3d0 Merge pull request 'Fix dispenser and dropper crash (in 5.4)' (#2544) from fix_dropper_dispenser_crash into master
Reviewed-on: MineClone2/MineClone2#2544
2022-08-10 15:10:40 +00:00
cora 34ecb782a8 Fix dispenser and dropper crashing in 5.4 2022-08-10 16:58:00 +02:00
cora 70656b42dc Merge pull request 'boats are removed upon being set on fire (#2529)' (#2540) from opfromthestart/MineClone2:boat-fire-fix into master
Reviewed-on: MineClone2/MineClone2#2540
2022-08-10 13:54:03 +00:00
cora 953fe4df39 Merge pull request 'Fix some warnings' (#2539) from fix_some_warnings into master
Reviewed-on: MineClone2/MineClone2#2539
2022-08-10 12:17:14 +00:00
cora e8baa1ae00 Fix undeclared var warning in mcl_weather 2022-08-10 14:14:00 +02:00
cora 701aee3238 Add modname to beacons mod.conf 2022-08-10 14:14:00 +02:00
cora 9603ee606c fix at mod loadtime warning in mcl_info 2022-08-10 14:14:00 +02:00
cora 2436a6d616 Merge pull request 'Fixed remaining get_sky calls (#2538)' (#2542) from opfromthestart/MineClone2:new_sky into master
Reviewed-on: MineClone2/MineClone2#2542
2022-08-10 11:41:19 +00:00
Sumyjkl 25491b3882 prevent player from gaining too much speed by pitching down and spamming jump 2022-08-10 13:24:08 +10:00
SumianVoice 22d296e898 Merge branch 'master' into elytra-overhaul 2022-08-10 00:02:47 +00:00
cora 9083552939 Merge pull request 'Pillager Outpost' (#2535) from pillager_outpost into master
Reviewed-on: MineClone2/MineClone2#2535
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-09 20:59:38 +00:00
PrairieWind 70277276b0 Adjusted spawn chance and fixed the walls on generation, thanks cora. 2022-08-09 10:30:48 -06:00
PrairieWind 84691c393d Pillager Outpost, Schematics by RandomLegoBrick 2022-08-09 10:30:48 -06:00
opfromthestart 5da6f6812f faster boat death 2022-08-09 12:23:44 -04:00
opfromthestart b8af222538 Fixed remaining get_sky calls 2022-08-08 20:26:31 -04:00
opfromthestart 8b06e5de87 Merge branch 'master' into boat-fire-fix 2022-08-09 00:16:14 +00:00
opfromthestart 76839961c6 Adds fire and lava collision to boats 2022-08-08 20:12:44 -04:00
cora 8d6a0bb564 Merge pull request 'fix deprecated player:get_sky (#2528)' (#2534) from opfromthestart/MineClone2:new_sky into master
Reviewed-on: MineClone2/MineClone2#2534
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-08 23:16:18 +00:00
opfromthestart e9954d1785 Merge branch 'master' into new_sky 2022-08-08 18:00:03 +00:00
Sumyjkl dd9c8b3f48 more accurate physics again, prevent slow servers having slower flight 2022-08-08 11:50:23 +10:00
Sumyjkl 45c93e0340 accurater physics, can't spam jump to gain speed on flat ground (needs work to allow mc like boosting) 2022-08-08 10:50:06 +10:00
SumianVoice eeca224f7b Merge branch 'master' into elytra-overhaul 2022-08-08 00:19:26 +00:00
opfromthestart 866711a4aa Changed to new get_sky method 2022-08-07 18:19:12 -04:00
cora 96ceb2fabb Merge pull request 'Light Level and Texture Clip Warning Fixes' (#2527) from fix_campfire_errors into master
Reviewed-on: MineClone2/MineClone2#2527
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-07 21:40:21 +00:00
PrairieAstronomer a34c9172c4 Fixed light levelwarnings and texture alpha warnings in stonecutter, campfires, and beacon 2022-08-07 21:38:40 +00:00
cora 2c814db0d7 Merge pull request 'Snow layers and blocks drop nothing by hand' (#2532) from SumianVoice/MineClone2_c:snow_drop_fix into master
Reviewed-on: MineClone2/MineClone2#2532
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-07 21:36:22 +00:00
cora 7b92bb89ce Merge pull request '[5.6] safely handle entities involving set_hp' (#2526) from iliekprogrammar/MineClone2:safe_entity_handling into master
Reviewed-on: MineClone2/MineClone2#2526
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-07 21:05:11 +00:00
Sumyjkl 99eca2ceb9 player will not be upside down when flying or swimming 2022-08-08 02:05:03 +10:00
Sumyjkl 9fdcfcd898 significanltly more accurate values, much slower, more reliable physics, more comments 2022-08-08 00:05:00 +10:00
Sumyjkl 5a8216ba43 moved functions and constants out of global step (oops) 2022-08-07 23:12:57 +10:00
SumianVoice 49089ed8c4 Merge branch 'master' into elytra-overhaul 2022-08-07 10:18:14 +00:00
Sumyjkl f6148068c5 snow layers and blocks drop nothing by hand 2022-08-07 19:55:01 +10:00
iliekprogrammar 0e999d8bb9
[5.6] remove incorrect marks.
wrong, bad. these are fine.
2022-08-07 13:00:43 +08:00
iliekprogrammar 156aff21a1
[5.6][bows] fix unsafe entity handling for arrows 2022-08-07 12:48:09 +08:00
iliekprogrammar 4f2789c498
[5.6][armor] fix unsafe entity handling (unsure)
i'm not sure about this one, can't fnd a suitable test for it.
2022-08-07 12:43:24 +08:00
iliekprogrammar bf80074d98
[5.6][mobs] fix unsafe entity handling (unsure)
i'm not sure about this one, can't find a suitable test for it.
2022-08-07 12:38:26 +08:00
iliekprogrammar 4b31692319
[5.6][boats] fix unsafe entity handling
this probably does not affect normal gameplay, unless you can set boats on fire somehow
2022-08-07 12:09:12 +08:00
iliekprogrammar bce4d29737
[5.6][lightning] fix unsafe entitiy handling
this does not excuse all on_strike callbacks to allow oversights.
it must also track entity removal.
2022-08-07 10:44:13 +08:00
iliekprogrammar 221ee0fcf1
[5.6] mark places with unsafe set_hp entity handling
There might be other places i might be missing, but these are the obvious ones.

leftover entity handling i did not mark:
* everything that involves a apply()-like algorithm (e.g. callbacks) over the
  same list of objects.
* in mcl_damage, it's not known whether mcl_damage.from_mt() would involve
  entity handling or just player handling.
2022-08-07 00:13:03 +08:00
Sumyjkl 02c92dc6f8 fix getting wrong node 2022-08-07 01:05:39 +10:00
Sumyjkl 509fadfebb fix is_pressing_jump being global 2022-08-07 00:38:20 +10:00
Sumyjkl 1263c43b5d elytra and other non-combat armour don't take durability damage when the player is attacked 2022-08-06 14:38:42 +10:00
Sumyjkl cd6da88b37 tweaks again 2022-08-05 14:43:48 +10:00
cora 3922c5bdca Merge pull request 'Nerf shipwreck loot' (#2519) from fix_shipwreck_loot into master
Reviewed-on: MineClone2/MineClone2#2519
Reviewed-by: chmodsayshello <chmodsayshello@hotmail.com>
2022-08-04 22:58:27 +00:00
cora 27304d5d96 Nerf shipwreck loot 2022-08-04 04:21:59 +02:00
cora c8012ccffd Merge pull request 'add dependency for mcl_weather to mcl_burning to hopefully avoid crashes' (#2516) from SumianVoice/MineClone2_c:mcl_burning_depend into master
Reviewed-on: MineClone2/MineClone2#2516
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-04 01:49:13 +00:00
SumianVoice 3f73dc1794 Merge branch 'master' into mcl_burning_depend 2022-08-03 12:55:07 +00:00
Sumyjkl eb89466436 add dependency for mcl_weather to mcl_burning to hopefully avoid crashes 2022-08-03 22:45:15 +10:00
cora d1d2b03635 Merge pull request 'Add mangrove swamps' (#2503) from mangrove_swamps into master
Reviewed-on: MineClone2/MineClone2#2503
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-03 10:39:20 +00:00
cora e901003e22 Fix mangrove (trap)door, stair and slab recipes 2022-08-03 11:57:17 +02:00
Sumyjkl 3c0992e58d tweaks 2022-08-03 18:41:51 +10:00
cora c36b359c70 Fix mangrove roots and water logged roots(somewhat) 2022-08-03 00:00:44 +02:00
cora 191e117e05 Axe can strip mangrove wood 2022-08-02 23:51:48 +02:00
Sumyjkl 4df51bac72 code quality, minor tweaks 2022-08-03 01:03:28 +10:00
Sumyjkl b7a5a74ccf less pitch up slowdown 2022-08-03 00:14:31 +10:00
Sumyjkl ece79cad8a prevent player from getting hyperspeed while flying from ground 2022-08-03 00:08:30 +10:00
Sumyjkl 845e43c143 tweaked several things 2022-08-02 23:51:21 +10:00
Sumyjkl aa93ce4b3a tweaked slowdown on pitch up 2022-08-02 23:45:20 +10:00
Sumyjkl 12af0e7de8 semi-working on 0.3 server step 2022-08-02 23:42:04 +10:00
Sumyjkl 32a57133ac use dtime 2022-08-02 22:47:51 +10:00
Sumyjkl 5c085bd28f prevent player gaining infinite momentum by spamming jump while running, added dtime dependent velocity 2022-08-02 22:06:19 +10:00
Sumyjkl c80012a14f fix gravity not being reset when died after rocketing 2022-08-02 21:23:05 +10:00
SumianVoice e28c0d311a Merge branch 'master' into elytra-overhaul 2022-08-02 10:27:14 +00:00
cora 1065165952 fix mangrove trapdoor 2022-08-02 12:06:13 +02:00
cora c0fec69c70 Add plantlike_rooted propagules 2022-08-02 12:02:20 +02:00
cora 844cf6c5dc Fix waterlogged texture to be animated 2022-08-02 12:02:20 +02:00
cora 2b90675ea2 fix warnings 2022-08-02 12:02:20 +02:00
cora 8e41d5a1f4 Fix propagule growth 2022-08-02 12:02:20 +02:00
cora 811d7a778f Add tall mangrove tree schematics 2022-08-02 12:02:20 +02:00
cora 4491e962d5 grand mcl_mangrove cleanup 2022-08-02 12:02:20 +02:00
cora 77c878f609 make waterlogged roots work with river water 2022-08-02 12:02:20 +02:00
cora 51f79eaa39 Add lilypads and dead bushes 2022-08-02 12:02:20 +02:00
cora 3bf45ec4e9 Spawn mangroves in shallow water, fix schematics 2022-08-02 12:02:20 +02:00
cora e8fc56ab33 Fix water- and mudlogged roots, add w. logging abm 2022-08-02 12:02:20 +02:00
cora f003aefe19 allow coral reefs in MangroveSwamps 2022-08-02 12:02:20 +02:00
Thunder1035 d284ddf150 Add mangrove trees 2022-08-02 12:02:20 +02:00
cora 09889ca927 Add MangroveSwamp biome defs 2022-08-02 12:02:20 +02:00
cora 22dac6cc5c Merge pull request 'Biome specific weather' (#2505) from fix-biome-weather into master
Reviewed-on: MineClone2/MineClone2#2505
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-02 10:00:55 +00:00
cora 4b5476dbff fix end sky and void crash 2022-08-02 11:55:55 +02:00
cora a2b003a195 sky slightly overcast on weather in non-weather b. 2022-08-02 11:55:55 +02:00
cora ee3b98c809 Fix skybox in non-weather areas 2022-08-02 11:55:55 +02:00
cora 4a6f98636d fix crash in mapgen v6 2022-08-02 11:55:55 +02:00
cora cae11f99e4 fix wrong mapgen setting var 2022-08-02 11:55:55 +02:00
cora bb496db605 use _mcl_biome_type for weather 2022-08-02 11:55:55 +02:00
cora 50840f6bdc No nether rain lol 2022-08-02 11:55:55 +02:00
cora 05a6f09f05 Never rain in deserts 2022-08-02 11:55:55 +02:00
cora 2aaeed7720 Pile up snow while snowing 2022-08-02 11:55:55 +02:00
cora eb5378afec Rain and snow where appropriate(biome, heat, alt) 2022-08-02 11:55:55 +02:00
SumianVoice fab3c35c28 Merge branch 'master' into elytra-overhaul 2022-08-02 09:44:51 +00:00
Sumyjkl 0f6a51a031 remove unused file scope variables 2022-08-02 18:39:15 +10:00
Sumyjkl 1468acf6d4 move player up to give clearance when start flying 2022-08-02 18:26:00 +10:00
Sumyjkl 5fd66d1850 can pitch up without losing too much speed 2022-08-02 18:12:15 +10:00
cora a9e139f27d Merge pull request 'beacon optimisations' (#2512) from beacons_cleanup into master
Reviewed-on: MineClone2/MineClone2#2512
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-08-01 23:08:31 +00:00
chmodsayshello f949c72945 make abm check param2 for up-to date beam color 2022-08-01 23:06:02 +00:00
chmodsayshello e979535256 convert spaces into tabs 2022-08-01 23:06:02 +00:00
chmodsayshello e344d1c742 remove itemstring debug logging 2022-08-01 23:06:02 +00:00
chmodsayshello 10d200da80 beacon optimisations 2022-08-01 23:06:02 +00:00
Sumyjkl 8378ca92e2 turning slows the player down in fly mode 2022-08-02 08:20:08 +10:00
Sumyjkl 2b5e3b5123 code quality: combine add_velocity calls into one 2022-08-02 00:14:24 +10:00
Sumyjkl 368ffda75b can only fly when pressed jump and cannot hold jump to enter fly mode, set speed to player velocity when entered fly mode 2022-08-01 23:45:41 +10:00
Sumyjkl cd62278336 improved code quality 2022-08-01 23:01:27 +10:00
Sumyjkl 9e1b0184c5 fireworks function, slight balancing, removed debug starting speed 2022-08-01 22:15:36 +10:00
Sumyjkl 20b229a9b9 pitching up too far can make player fall fast 2022-08-01 20:53:35 +10:00
Sumyjkl 832b0afdd6 more reasonable values 2022-08-01 20:51:08 +10:00
Sumyjkl 177cf231b6 make elytra better again 2022-08-01 20:34:56 +10:00
Sumyjkl 696cc150b4 broke elytra 2022-08-01 20:12:53 +10:00
cora a687d9069c Merge pull request 'Make boats unsinkable in river water' (#2510) from riverwater_boats into master
Reviewed-on: MineClone2/MineClone2#2510
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-08-01 09:46:30 +00:00
Sumyjkl 8f4388c4c8 elytra less sensitive to landing, allows entering flight without as much downward velocity 2022-08-01 17:42:43 +10:00
cora eb7171fd51 Make boats unsinkable in river water 2022-08-01 05:20:19 +02:00
225 changed files with 5040 additions and 1212 deletions

View File

@ -31,6 +31,7 @@
* chmodsayshello
* PrarieWind
* RandomLegoBrick
* SumianVoice
## Contributors
* Laurent Rocher
@ -79,6 +80,8 @@
* MrRar
* Lazerbeak12345
* mrminer
* Thunder1035
* opfromthestart
## MineClone5
* kay27

View File

@ -2,7 +2,7 @@
An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils.
Developed by many people. Not developed or endorsed by Mojang AB.
Version: 0.78 (in development)
Version: 0.79 (in development)
### Gameplay
You start in a randomly-generated world made entirely of cubes. You can explore

170
README_locale/README.fr.md Normal file
View File

@ -0,0 +1,170 @@
# MineClone2
Un jeu non-officiel similaire à Minecraft pour Minetest. Forké depuis Mineclone par davedevils. Développé par de nombreuses personnes. Ni développé ou supporté par Mojang AB.
Version: 0.79 (en dévelopment)
### Gameplay
Vous atterissez dans un monde fait entièrement de cubes et généré aléatoirement. Vous pouvez explorer le monde, miner et construire presque n'importe quel bloc pour créer de nouvelles structures. Vous pouvez choisir de jouer en "mode survie" dans lequel vous devez combattre des monstres et la faim et progresser lentement dans différents aspects du jeu, comme l'extraction de minerai, l'agriculture, la construction de machines et ainsi de suite. Ou alors vous pouvez jouer en "mode créatif" où vous pouvez construire à peu près n'importe quoi instantanément.
### Résumé du Gameplay
* Jeu de type bac-à-sable, sans objetifs
* Survie : combattre des monstres hostiles et la faim
* Creuser pour du minerai et d'autres trésors
* Magie : gagner de l'expérience et enchanter les outils
* Utiliser les blocs ramassés pour construire de magnifiques bâtiments, votre imagination est la limite
* Ramasser des fleurs (et d'autres sources de teinture) et colorez votre monde
* Trouvez des graines et commencez à cultiver
* Trouvez ou fabriquez des centaines d'objets
* Construisez un réseau ferroviaire complexe et amusez vous avec les wagonnets
* En mode créatif vous pouvez construire presque n'importe quoi gratuitement et sans limite
## Comment jouer (démarrer rapidement)
### Commencer
* **Frappez un arbre** jusqu'à ce qu'il casse et donne du bois
* Placez le **bois dans la grille 2x2** (la "grille de fabrication" de votre menu d'inventaire) et fabriquez 4 planches de bois
* Placer les 4 planches de bois dans la grille 2x2 et **fabriquez une table d'artisanat**
* **Cliquez droit la table d'artisanat** (icone livre) pour apprendre toutes les recettes possibles
* **Fabriquez une pioche de bois** pour miner la pierre
* Différents outils minent différentes sortes de blocs. Essayez les !
* Continuez à jouer comme vous voulez. Amusez vous !
### Agriculture
* Trouvez des graines
* Fabriquez une houe
* Cliquez droit la terre ou des blocs similaires avec la houe pour créer des terres agricoles
* Placer des graines sur des terres agricoles et regardez les pousser
* Récoltez les plantes une fois matûres
* Les terres agricoles proche de l'eau deviennent humides et accélèrent la croissance
### Four
* Fabriquer un Four
* Le four permet d'obtenir plus d'objets
* L'emplacement du haut doit contienir un objet fondable (par ex : minerai de fer)
* L'emplacement du bas doit contienir un objet combustible (par ex : charbon)
* Voir le guide d'artisanat pour en apprendre plus sur les objets fondables et combustibles
### Aide supplémentaire
Plus d'aide à propos du jeu, des blocs, objets et plus encore peuvent être trouvés dans le jeu. Vous pouvez accéder à l'aide depuis le menu inventaire.
### Objets spéciaux
Les objets suivants sont intéressants pour le mode Créatif et pour les constructeurs de cartes d'aventure. Ils ne peuvent être obtenus dans le jeu ou dans l'inventaire créatif.
* Barrière : `mcl_core:barrier`
Utilisez la commande de chat `/giveme` pour les obtenir. Voir l'aide interne au jeu pour une explication.
## Installation
Ce jeu nécessite [Minetest](http://minetest.net) pour fonctionner (version 5.4.1 ou plus). Vous devez donc installer Minetest d'abord. Seules les versions stables de Minetest sont officielement supportées.
Il n'y a pas de support de MineClone2 dans les versions développement de Minetest.
Pour installer MineClone2 (si ce n'est pas déjà fait), déplacez ce dossier dans le dossier “games” de Minetest. Consultez l'aide de Minetest pour en apprendre plus.
## Liens utiles
Le dépôt de MineClone2 est hébergé sur Mesehub. Pour contribuer ou rapporter des problèmes, aller là-bas.
* Mesehub: <https://git.minetest.land/MineClone2/MineClone2>
* Discord: <https://discord.gg/xE4z8EEpDC>
* YouTube <https://www.youtube.com/channel/UClI_YcsXMF3KNeJtoBfnk9A>
* IRC: <https://web.libera.chat/#mineclone2>
* Matrix: <https://app.element.io/#/room/#mc2:matrix.org>
* Reddit: <https://www.reddit.com/r/MineClone2/>
* Minetest forums: <https://forum.minetest.net/viewtopic.php?f=50&t=16407>
* ContentDB: <https://content.minetest.net/packages/wuzzy/mineclone2/>
* OpenCollective: <https://opencollective.com/mineclone2>
## Objectif
* Créer un clone stable, moddable, libre et gratuit basé sur le moteur de jeu Minetest avec des fonctionalités abouties, utilisable à la fois en mode solo et multijoueur. Actuellement, beaucoup des fonctionalités de **Minecraft Java Edition** sont déjà implémentées et leur amélioration est prioritaire sur les nouvelles demandes.
* Avec une priorité moindre, implémenter les fonctionalités des versions **Minecraft + OptiFine** (OtiFine autant que supporté par le moteur Minetest). Cela signifie que les fonctionalités présentes dans les versions listées sont priorisées.
* Dans l'idéal, créer une expérience performante qui tourne bien sur des ordinateurs à basse performance. Malheureusement, en raison des mécanismes de Minecraft et des limitations du moteur Minetest ainsi que de la petite taille de la communauté de joueurs sur des ordinateurs à basse performances, les optimisations sont difficiles à explorer.
## Statut de complétion
Ce jeu est actuellement au stade **beta**.
Il est jouable mais incomplet en fonctionalités.
La rétro-compatibilité n'est pas entièrement garantie, mettre votre monde à jour peut causer de petits bugs.
Si vous voulez utiliser la version de développement de MineClone2 en production, la branche master est habituellement relativement stable. Les branches de test fusionnent souvent des pull requests expérimentales et doivent être considérées comme moins stable.
Les principales fonctionalités suivantes sont disponibles :
* Outils, armes
* Armure
* Système de fabrication : grille 2x2, table d'artisanat (grille 3x3), four, incluant un guide de fabrication
* Coffres, grands coffres, coffre ender, boite de shulker
* Fours, entonnoirs
* Faim
* La plupart des monstres et animaux
* Tout les minerais de Minecraft
* La plupart des blocs de l'overworld
* Eau et lave
* Météo
* 28 biomes + 5 biomes du nether
* Le Nether, monde souterrain brûlant dans une autre dimension
* Circuits Redstone (partiel)
* Effets de Statut (partiel)
* Expérience
* Enchantement
* Brassage, potions, flèches trempées (partiel)
* Bâteaux
* Feu
* Blocs de construction : escaliers, dalles, portes, trappes, barrière, portillon, muret
* Horloge
* Boussole
* Eponge
* Bloc de slime
* Petites plantes et pousses
* Teintures
* Bannières
* Blocs de décoration : verre, verre teinté, vitres, barres de fer, terre cuites (et couleurs), têtes et plus
* Cadres d'objets
* Juke-boxes
* Livres pour écrire
* Commandes
* Villages
* L'End
* et plus !
Les fonctionalités suivantes sont incomplètes :
* certains monstres et animaux
* certains composants de Redstone
* Wagonnets spéciaux
* quelques blocs et objets non-triviaux
Fonctionalités bonus (absentes de Minecraft) :
* Guide d'artisanat intégré au jeu qui montre les recettes d'artisanat et de cuisson
* Système d'aide intégré au jeu contenant des informations à propos des techniques de base, blocs, objets et plus
* Recettes d'artisanat temporaires. Elles existent uniquement pour rendre des objets accessibles qui ne le seraient pas autrement sauf en mode créatif. Elles seront retirées au cours de l'avancement du développement et de l'ajout de nouvelles fonctionalités.
* Pousses dans les coffres en mapgen v6
* Entièrement moddable (grâce la puissante API lua de Minetest)
* Nouveaux blocs et objets :
* Outil de recherche, montre l'aide de ce qu'il touche
* Plus de dalles et d'escaliers
* Portillon en briques du Nether
* Barrière en briques du Nether rouges
* Portillon en briques du Nether rouges
* Structures de remplacement - ces petites variantes de structures de Minecraft servent de remplacement en attendant qu'on arrive à en faire fonctionner de plus grandes :
* Cabine dans les bois (Manoir des bois)
* Avant-poste du Nether (Forteresse)
Différences techniques avec Minecraft :
* Limite en hauteur de 31000 blocs (bien plus grand que Minecraft)
* Taille horizontale du monde 62000×62000 blocs (bien plus petit que Minecraft mais toujours très grand)
* Toujours assez incomplet et buggé
* Des blocs, objets, ennemis et fonctionalités manquent
* Quelques objets ont des noms légèrement différents pour être plus faciles à distinguer
* Des musiques différentes pour le juke-boxe
* Des textures différentes (Pixel Perfection)
* Des sons différents (sources diverses)
* Un moteur de jeu différent (Minetest)
* Des bonus cachés différents
...et enfin MineClone2 est un logiciel libre !
## Autres fichiers readme
* `LICENSE.txt`: Le texte de la license GPLv3
* `CONTRIBUTING.md`: Information pour ceux qui veulent contribuer
* `API.md`: Pour les modders Minetest qui veulent modder ce jeu
* `LEGAL.md`: Information légale
* `CREDITS.md`: Liste des contributeurs

View File

@ -161,9 +161,9 @@ minetest.register_on_dieplayer(function(player, mt_reason)
if mt_reason.approved then
mcl_damage.run_death_callbacks(player, mcl_damage.from_mt(mt_reason))
end
minetest.log("action","Player "..player:get_player_name().." died at "..minetest.pos_to_string(vector.round(player:get_pos())))
end)
minetest.register_on_mods_loaded(function()
table.sort(mcl_damage.modifiers, function(a, b) return a.priority < b.priority end)
end)

View File

@ -337,7 +337,6 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc
if not obj:is_player() then
return
end
mcl_util.deal_damage(obj, damage, {type = "explosion", direct = direct, source = source})
obj:add_velocity(vector.multiply(punch_dir, impact * 20))

View File

@ -13,11 +13,21 @@ local function is_group(pos, group)
end
local is_water = flowlib.is_water
local function is_river_water(p)
local n = minetest.get_node(p).name
if n == "mclx_core:river_water_source" or n == "mclx_core:river_water_flowing" then
return true
end
end
local function is_ice(pos)
return is_group(pos, "ice")
end
local function is_fire(pos)
return is_group(pos, "set_on_fire")
end
local function get_sign(i)
if i == 0 then
return 0
@ -196,6 +206,8 @@ end
function boat.on_step(self, dtime, moveresult)
mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
self._v = get_v(self.object:get_velocity()) * get_sign(self._v)
local v_factor = 1
@ -204,16 +216,21 @@ function boat.on_step(self, dtime, moveresult)
local on_water = true
local on_ice = false
local in_water = is_water({x=p.x, y=p.y-boat_y_offset+1, z=p.z})
local in_river_water = is_river_water({x=p.x, y=p.y-boat_y_offset+1, z=p.z})
local waterp = {x=p.x, y=p.y-boat_y_offset - 0.1, z=p.z}
if not is_water(waterp) then
on_water = false
if not in_water and is_ice(waterp) then
on_ice = true
elseif is_fire({x=p.x, y=p.y-boat_y_offset, z=p.z}) then
boat.on_death(self, nil)
self.object:remove()
return
else
v_slowdown = 0.04
v_factor = 0.5
end
elseif in_water then
elseif in_water and not in_river_water then
on_water = false
in_water = true
v_factor = 0.75
@ -345,7 +362,18 @@ function boat.on_step(self, dtime, moveresult)
else
p.y = p.y + 1
local is_obsidian_boat = self.object:get_luaentity()._itemstring == "mcl_boats:boat_obsidian"
if is_water(p) or is_obsidian_boat then
if is_river_water(p) then
local y = self.object:get_velocity().y
if y >= 5 then
y = 5
elseif y < 0 then
new_acce = {x = 0, y = 10, z = 0}
else
new_acce = {x = 0, y = 2, z = 0}
end
new_velo = get_velocity(self._v, self.object:get_yaw(), y)
self.object:set_pos(self.object:get_pos())
elseif is_water(p) and not is_river_water(p) or is_obsidian_boat then
-- Inside water: Slowly sink
local y = self.object:get_velocity().y
y = y - 0.01

View File

@ -9,4 +9,5 @@ Oak Boat=Bateau en Chêne
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Utilisez [Sneak] pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet.
Spruce Boat=Bateau en Sapin
Water vehicle=Véhicule aquatique
Sneak to dismount=
Sneak to dismount=Se baisser pour descendre
Obsidian Boat=Bateau en Obsidienne

View File

@ -10,3 +10,4 @@ Rightclick on a water source to place the boat. Rightclick the boat to enter it.
Spruce Boat=
Water vehicle=
Sneak to dismount=
Obsidian Boat=

View File

@ -1,3 +1,4 @@
name = mcl_burning
description = Burning Objects for MineClone2
author = Fleckenstein
depends = mcl_weather

View File

@ -847,16 +847,16 @@ minetest.register_entity(":__builtin:item", {
elseif self._flowing == true and not is_in_water and not is_floating then
-- Disable flowing physics if not on/in flowing liquid
self._flowing = false
local pos = self.object:get_pos()
disable_physics(self.object, self, false, false)
enable_physics(self.object, self, true)
return
end
-- If node is not registered or node is walkably solid and resting on nodebox
local nn = minetest.get_node({x=p.x, y=p.y-0.5, z=p.z}).name
local def = minetest.registered_nodes[nn]
local v = self.object:get_velocity()
local is_on_floor = (minetest.registered_nodes[nn].walkable
and not minetest.registered_nodes[nn].groups.slippery and v.y == 0)
local is_on_floor = def and (def.walkable
and not def.groups.slippery and v.y == 0)
if not minetest.registered_nodes[nn]
or is_floating or is_on_floor then

View File

@ -33,4 +33,4 @@ Activates minecarts when powered=Active les wagonnets lorsqu'il est alimenté
Emits redstone power when a minecart is detected=Émet de l'énergie redstone lorsqu'un wagonnet est détecté
Vehicle for fast travel on rails=Véhicule pour voyager rapidement sur rails
Can be ignited by tools or powered activator rail=Peut être allumé par des outils ou un rail d'activation motorisé
Sneak to dismount=
Sneak to dismount=Se baisser pour descendre

View File

@ -213,11 +213,11 @@ end
local collision = function(self)
local pos = self.object:get_pos()
if not pos then return {0,0} end
local vel = self.object:get_velocity()
local x = 0
local z = 0
local width = -self.collisionbox[1] + self.collisionbox[4] + 0.5
for _,object in pairs(minetest.get_objects_inside_radius(pos, width)) do
local ent = object:get_luaentity()
@ -254,12 +254,14 @@ local set_velocity = function(self, v)
end
local yaw = (self.object:get_yaw() or 0) + self.rotate
self.object:set_velocity({
x = (sin(yaw) * -v) + c_x,
y = self.object:get_velocity().y,
z = (cos(yaw) * v) + c_y,
})
local vv = self.object:get_velocity()
if vv then
self.object:set_velocity({
x = (sin(yaw) * -v) + c_x,
y = vv.y,
z = (cos(yaw) * v) + c_y,
})
end
end
@ -407,15 +409,15 @@ local set_animation = function(self, anim, fixed_frame)
if flight_check(self) and self.fly and anim == "walk" then anim = "fly" end
self.animation.current = self.animation.current or ""
self._current_animation = self._current_animation or ""
if (anim == self.animation.current
if (anim == self._current_animation
or not self.animation[anim .. "_start"]
or not self.animation[anim .. "_end"]) and self.state ~= "die" then
return
end
self.animation.current = anim
self._current_animation = anim
local a_start = self.animation[anim .. "_start"]
local a_end
@ -3002,6 +3004,7 @@ end
local function check_entity_cramming(self)
local p = self.object:get_pos()
if not p then return end
local oo = minetest.get_objects_inside_radius(p,1)
local mobs = {}
for _,o in pairs(oo) do
@ -3467,7 +3470,10 @@ local mob_activate = function(self, staticdata, def, dtime)
def.textures = {def.textures}
end
self.base_texture = def.textures[random(1, #def.textures)]
local c = 1
if #def.textures > c then c = #def.textures end
self.base_texture = def.textures[math.random(c)]
self.base_mesh = def.mesh
self.base_size = self.visual_size
self.base_colbox = self.collisionbox
@ -3618,6 +3624,8 @@ local mob_step = function(self, dtime)
check_aggro(self,dtime)
if not self.fire_resistant then
mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
end
local pos = self.object:get_pos()

View File

@ -23,7 +23,8 @@ local table_copy = table.copy
local table_remove = table.remove
local pairs = pairs
local dbg_spawn_attempts = 0
local dbg_spawn_succ = 0
-- range for mob count
local aoc_range = 136
@ -71,6 +72,7 @@ local list_of_all_biomes = {
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
"MangroveSwamp_underground",
-- ocean:
@ -134,6 +136,8 @@ local list_of_all_biomes = {
"BirchForestM_deep_ocean",
"Taiga_deep_ocean",
"JungleM_ocean",
"MangroveSwamp_ocean",
"MangroveSwamp_deep_ocean",
-- water or beach?
@ -157,6 +161,7 @@ local list_of_all_biomes = {
"MushroomIslandShore",
"JungleM_shore",
"Jungle_shore",
"MangroveSwamp_shore",
-- dimension biome:
@ -202,6 +207,7 @@ local list_of_all_biomes = {
"MesaBryce",
"JungleEdge",
"SavannaM",
"MangroveSwamp",
}
-- count how many mobs are in an area
@ -411,47 +417,87 @@ local function get_water_spawn(p)
end
end
local dbg_spawn_attempts = 0
local dbg_spawn_succ = 0
local function spawn_check(pos,spawn_def)
if not spawn_def then return end
dbg_spawn_attempts = dbg_spawn_attempts + 1
local dimension = mcl_worlds.pos_to_dimension(pos)
local mob_type = minetest.registered_entities[spawn_def.name].type
local gotten_node = get_node(pos).name
local gotten_biome = minetest.get_biome_data(pos)
if not gotten_node or not gotten_biome then return end
gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with
local is_ground = minetest.get_item_group(gotten_node,"solid") ~= 0
if not is_ground then
pos.y = pos.y - 1
gotten_node = get_node(pos).name
is_ground = minetest.get_item_group(gotten_node,"solid") ~= 0
end
pos.y = pos.y + 1
local is_water = get_item_group(gotten_node, "water") ~= 0
local is_lava = get_item_group(gotten_node, "lava") ~= 0
local is_leaf = get_item_group(gotten_node, "leaves") ~= 0
local is_bedrock = gotten_node == "mcl_core:bedrock"
local is_grass = minetest.get_item_group(gotten_node,"grass_block") ~= 0
local mob_count_wide = count_mobs(pos,aoc_range,mob_type)
local mob_count = count_mobs(pos,32,mob_type)
if pos and spawn_def
and mob_count_wide < (mob_cap[mob_type] or 15)
and mob_count < 5
and pos.y >= spawn_def.min_height
and pos.y <= spawn_def.max_height
and spawn_def.dimension == dimension
and biome_check(spawn_def.biomes, gotten_biome)
and (is_ground or spawn_def.type_of_spawning ~= "ground")
and (spawn_def.type_of_spawning ~= "ground" or not is_leaf)
and (spawn_def.check_position and spawn_def.check_position(pos) or true)
and (not is_farm_animal(spawn_def.name) or is_grass)
and (spawn_def.type_of_spawning ~= "water" or is_water)
and not is_bedrock then
--only need to poll for node light if everything else worked
local gotten_light = get_node_light(pos)
if gotten_light >= spawn_def.min_light and gotten_light <= spawn_def.max_light then
return true
end
end
return false
end
local function spawn_group(p,mob,spawn_on,group_max,group_min)
if not group_min then group_min = 1 end
local nn= minetest.find_nodes_in_area_under_air(vector.offset(p,-5,-3,-5),vector.offset(p,5,3,5),spawn_on)
local o
table.shuffle(nn)
if not nn or #nn < 1 then
nn = {}
table.insert(nn,p)
end
for i = 1, math.random(group_min,group_max) do
local sp = vector.offset(nn[math.random(#nn)],0,1,0)
if mob.type_of_spawning == "water" then
sp = get_water_spawn(sp)
if spawn_check(nn[math.random(#nn)],mob) then
if mob.type_of_spawning == "water" then
sp = get_water_spawn(sp)
end
o = minetest.add_entity(sp,mob.name)
if o then dbg_spawn_succ = dbg_spawn_succ + 1 end
end
o = minetest.add_entity(sp,mob.name)
if o then dbg_spawn_succ = dbg_spawn_succ + 1 end
end
return o
end
minetest.register_chatcommand("mobstats",{
privs = { debug = true },
func = function(n,param)
local pos = minetest.get_player_by_name(n):get_pos()
minetest.chat_send_player(n,"mobs within 32 radius of player:"..count_mobs(pos,32))
minetest.chat_send_player(n,"total mobs:"..count_mobs_total())
minetest.chat_send_player(n,"spawning attempts since server start:"..dbg_spawn_attempts)
minetest.chat_send_player(n,"successful spawns since server start:"..dbg_spawn_succ)
end
})
if mobs_spawn then
local perlin_noise
local function spawn_a_mob(pos, dimension, y_min, y_max)
dbg_spawn_attempts = dbg_spawn_attempts + 1
local dimension = dimension or mcl_worlds.pos_to_dimension(pos)
--create a disconnected clone of the spawn dictionary
--prevents memory leak
local mob_library_worker_table = table_copy(spawn_dictionary)
local goal_pos = get_next_mob_spawn_pos(pos)
--grab mob that fits into the spawning location
--randomly grab a mob, don't exclude any possibilities
local spawning_position_list = find_nodes_in_area_under_air(
{x = goal_pos.x, y = y_min, z = goal_pos.z},
{x = goal_pos.x, y = y_max, z = goal_pos.z},
@ -460,37 +506,6 @@ if mobs_spawn then
if #spawning_position_list <= 0 then return end
local spawning_position = spawning_position_list[math_random(1, #spawning_position_list)]
local gotten_node = get_node(spawning_position).name
local gotten_biome = minetest.get_biome_data(spawning_position)
if not gotten_node or not gotten_biome then return end
gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with
--add this so mobs don't spawn inside nodes
spawning_position.y = spawning_position.y + 1
--only need to poll for node light if everything else worked
local gotten_light = get_node_light(spawning_position)
local is_water = get_item_group(gotten_node, "water") ~= 0
local is_lava = get_item_group(gotten_node, "lava") ~= 0
local is_leaf = get_item_group(gotten_node, "leaves") ~= 0
local is_bedrock = gotten_node == "mcl_core:bedrock"
local is_ground = not (is_water or is_lava)
local is_grass = minetest.get_item_group(gotten_node,"grass_block") ~= 0
local has_bed = minetest.find_node_near(pos,25,{"group:bed"})
if not is_ground then
spawning_position.y = spawning_position.y - 1
end
local mob_def
--create a disconnected clone of the spawn dictionary
--prevents memory leak
local mob_library_worker_table = table_copy(spawn_dictionary)
--grab mob that fits into the spawning location
--randomly grab a mob, don't exclude any possibilities
perlin_noise = perlin_noise or minetest_get_perlin(noise_params)
local noise = perlin_noise:get_3d(spawning_position)
local current_summary_chance = summary_chance
@ -506,27 +521,10 @@ if mobs_spawn then
step_chance = step_chance + mob_chance
end
local mob_def = mob_library_worker_table[mob_index]
local mob_type = minetest.registered_entities[mob_def.name].type
local spawn_in_group = minetest.registered_entities[mob_def.name].spawn_in_group or 4
local mob_count_wide = count_mobs(pos,aoc_range,mob_type)
local mob_count = count_mobs(spawning_position,32,mob_type)
if mob_def
and mob_count_wide < (mob_cap[mob_type] or 15)
and mob_count < 5
and spawning_position.y >= mob_def.min_height
and spawning_position.y <= mob_def.max_height
and mob_def.dimension == dimension
and biome_check(mob_def.biomes, gotten_biome)
and gotten_light >= mob_def.min_light
and gotten_light <= mob_def.max_light
and (is_ground or mob_def.type_of_spawning ~= "ground")
and (mob_def.type_of_spawning ~= "ground" or not is_leaf)
and (mob_def.check_position and mob_def.check_position(spawning_position) or true)
and (not is_farm_animal(mob_def.name) or is_grass)
and (mob_type ~= "npc" or has_bed)
and (mob_def.type_of_spawning ~= "water" or is_water)
and not is_bedrock
then
local spawn_in_group_min = minetest.registered_entities[mob_def.name].spawn_in_group_min or 1
local mob_type = minetest.registered_entities[mob_def.name].type
if spawn_check(spawning_position,mob_def) then
if mob_def.type_of_spawning == "water" then
spawning_position = get_water_spawn(spawning_position)
if not spawning_position then
@ -538,9 +536,10 @@ if mobs_spawn then
end
--everything is correct, spawn mob
local object
if spawn_in_group then
object = spawn_group(spawning_position,mob_def,{gotten_node},spawn_in_group,spawn_in_group_min)
else object = minetest.add_entity(spawning_position, mob_def.name)
if spawn_in_group and ( mob_type ~= "monster" or math.random(5) == 1 ) then
object = spawn_group(spawning_position,mob_def,{minetest.get_node(vector.offset(spawning_position,0,-1,0)).name},spawn_in_group,spawn_in_group_min)
else
object = minetest.add_entity(spawning_position, mob_def.name)
end
@ -574,3 +573,14 @@ if mobs_spawn then
end
end)
end
minetest.register_chatcommand("mobstats",{
privs = { debug = true },
func = function(n,param)
local pos = minetest.get_player_by_name(n):get_pos()
minetest.chat_send_player(n,"mobs within 32 radius of player:"..count_mobs(pos,32))
minetest.chat_send_player(n,"total mobs:"..count_mobs_total())
minetest.chat_send_player(n,"spawning attempts since server start:"..dbg_spawn_attempts)
minetest.chat_send_player(n,"successful spawns since server start:"..dbg_spawn_succ)
end
})

View File

@ -12,6 +12,7 @@ local S = minetest.get_translator("mobs_mc")
mcl_mobs:register_mob("mobs_mc:creeper", {
type = "monster",
spawn_class = "hostile",
spawn_in_group = 1,
hp_min = 20,
hp_max = 20,
xp_min = 5,

View File

@ -219,6 +219,7 @@ local select_enderman_animation = function(animation_type)
end
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
local spawners = {}
mcl_mobs:register_mob("mobs_mc:enderman", {
description = S("Enderman"),
@ -263,20 +264,42 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
do_custom = function(self, dtime)
-- PARTICLE BEHAVIOUR HERE.
local enderpos = self.object:get_pos()
local chanceOfParticle = math.random(0, 1)
if chanceOfParticle == 1 then
minetest.add_particle({
pos = {x=enderpos.x+math.random(-1,1)*math.random()/2,y=enderpos.y+math.random(0,3),z=enderpos.z+math.random(-1,1)*math.random()/2},
velocity = {x=math.random(-.25,.25), y=math.random(-.25,.25), z=math.random(-.25,.25)},
acceleration = {x=math.random(-.5,.5), y=math.random(-.5,.5), z=math.random(-.5,.5)},
expirationtime = math.random(),
size = math.random(),
collisiondetection = true,
vertical = false,
texture = "mcl_portals_particle"..math.random(1, 5)..".png",
})
if self._particle_timer and self._particle_timer >= 1 then
for _,player in pairs(minetest.get_connected_players()) do
if not spawners[player] then spawners[player] = {} end
local dst = vector.distance(player:get_pos(),enderpos)
if dst < 128 and not spawners[player][self.object] then
self._particle_timer = 0
spawners[player][self.object] = minetest.add_particlespawner({
amount = 5,
minpos = vector.new(-0.6,0,-0.6),
maxpos = vector.new(0.6,3,0.6),
minvel = vector.new(-0.25,-0.25,-0.25),
maxvel = vector.new(0.25,0.25,0.25),
minacc = vector.new(-0.5,-0.5,-0.5),
maxacc = vector.new(0.5,0.5,0.5),
minexptime = 0.2,
maxexptime = 3,
minsize = 0.2,
maxsize = 1.2,
collisiondetection = true,
vertical = false,
time = 0,
texture = "mcl_portals_particle"..math.random(1, 5)..".png",
attached = self.object,
playername = player:get_player_name(),
})
elseif dst > 128 and spawners[player][self.object] then
minetest.delete_particlespawner(spawners[player][self.object])
spawners[player][self.object] = nil
end
end
elseif not self._particle_timer then
self._particle_timer = 0
end
self._particle_timer = self._particle_timer + dtime
-- RAIN DAMAGE / EVASIVE WARP BEHAVIOUR HERE.
enderpos = self.object:get_pos()
local dim = mcl_worlds.pos_to_dimension(enderpos)
if dim == "overworld" then
if mcl_weather.state == "rain" or mcl_weather.state == "lightning" then
@ -312,24 +335,24 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
else return end
-- AGRESSIVELY WARP/CHASE PLAYER BEHAVIOUR HERE.
if self.state == "attack" then
--if (minetest.get_timeofday() * 24000) > 5001 and (minetest.get_timeofday() * 24000) < 19000 then
--self:teleport(nil)
--self.state = ""
--else
if self.attack then
local target = self.attack
local pos = target:get_pos()
if pos ~= nil then
if vector.distance(self.object:get_pos(), target:get_pos()) > 10 then
self:teleport(target)
end
if self.attack then
local target = self.attack
local pos = target:get_pos()
if pos ~= nil then
if vector.distance(self.object:get_pos(), target:get_pos()) > 10 then
self:teleport(target)
end
end
--end
end
else --if not attacking try to tp to the dark
if minetest.get_node_light(enderpos) > minetest.LIGHT_MAX then
self:teleport(nil)
end
end
-- ARROW / DAYTIME PEOPLE AVOIDANCE BEHAVIOUR HERE.
-- Check for arrows and people nearby.
local enderpos = self.object:get_pos()
enderpos = self.object:get_pos()
enderpos.y = enderpos.y + 1.5
local objs = minetest.get_objects_inside_radius(enderpos, 2)
for n = 1, #objs do
@ -593,6 +616,13 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
attack_type = "dogfight",
})
minetest.register_on_leaveplayer(function(player)
for _,s in pairs(spawners[player]) do
minetest.delete_particlespawner(s)
end
spawners[player] = nil
end)
-- End spawn
mcl_mobs:spawn_specific(

View File

@ -114,6 +114,7 @@ dofile(path .. "/squid.lua") -- Animation, sound and egg texture by daufinsyd
dofile(path .. "/villager.lua") -- KrupnoPavel Mesh and animation by toby109tt / https://github.com/22i
-- Illagers and witch
dofile(path .. "/pillager.lua") -- Mesh by KrupnoPavel and MrRar, animation by MrRar
dofile(path .. "/villager_evoker.lua") -- Mesh and animation by toby109tt / https://github.com/22i
dofile(path .. "/villager_vindicator.lua") -- Mesh and animation by toby109tt / https://github.com/22i
dofile(path .. "/villager_zombie.lua") -- Mesh and animation by toby109tt / https://github.com/22i

View File

@ -62,3 +62,8 @@ Weapon Smith=Fabriquant d'arme
Tool Smith=Fabriquant d'outil
Cleric=Clerc
Nitwit=Crétin
Cod=Morue
Salmon=Saumon
Dolphin=Dauphin
Pillager=Pilleur
Tropical fish=Poisson tropical

View File

@ -65,3 +65,5 @@ Nitwit=
Cod=
Salmon=
Dolphin=
Pillager=
Tropical fish=

Binary file not shown.

Binary file not shown.

View File

@ -13,12 +13,20 @@ local shoulders = {
right = vector.new(3.75,10.5,0)
}
local function table_get_rand(tbl)
local keys = {}
for k in pairs(tbl) do
table.insert(keys, k)
end
return tbl[keys[math.random(#keys)]]
end
local function get_random_mob_sound()
local t = table.copy(minetest.registered_entities)
table.shuffle(t)
for _,e in pairs(t) do
if e.is_mob and e.sounds then
return e.sounds[math.random(#e.sounds)]
if e.is_mob and e.sounds and #e.sounds > 0 then
return table_get_rand(e.sounds)
end
end
return minetest.registered_entities["mobs_mc:parrot"].sounds.random
@ -92,7 +100,8 @@ local function check_perch(self,dtime)
local n1 = minetest.get_node(vector.offset(p:get_pos(),0,-0.6,0)).name
local n2 = minetest.get_node(vector.offset(p:get_pos(),0,0,0)).name
local n3 = minetest.get_node(vector.offset(p:get_pos(),0,1,0)).name
if n1 == "air" or minetest.get_item_group(n2,"water") > 0 or minetest.get_item_group(n2,"lava") > 0 then
if ( n1 == "air" or minetest.get_item_group(n2,"water") > 0 or minetest.get_item_group(n2,"lava") > 0) and
not minetest.is_creative_enabled(p:get_player_name()) then
o:set_detach()
self.detach_timer = 0
return
@ -118,7 +127,7 @@ end
mcl_mobs:register_mob("mobs_mc:parrot", {
description = S("Parrot"),
type = "npc",
type = "passive",
spawn_class = "passive",
pathfinding = 1,
hp_min = 6,

View File

@ -0,0 +1,122 @@
local S = minetest.get_translator("mobs_mc")
local function reload(self)
if not self.object:get_pos() then return end
minetest.sound_play("mcl_bows_crossbow_drawback_1", {object = self.object, max_hear_distance=16}, true)
local props = self.object:get_properties()
if not props then return end
props.textures[2] = "mcl_bows_crossbow_3.png^[resize:16x16"
self.object:set_properties(props)
end
local function reset_animation(self, animation)
if not self.object:get_pos() or self._current_animation ~= animation then return end
self._current_animation = "stand_reload" -- Mobs Redo won't set the animation unless we do this
mcl_mobs:set_animation(self, animation)
end
pillager = {
description = S("Pillager"),
type = "monster",
spawn_class = "hostile",
hp_min = 24,
hp_max = 24,
xp_min = 6,
xp_max = 6,
breath_max = -1,
eye_height = 1.5,
shoot_interval = 3,
shoot_offset = 1.5,
armor = {fleshy = 100},
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3},
pathfinding = 1,
group_attack = true,
visual = "mesh",
mesh = "mobs_mc_pillager.b3d",
visual_size = {x=2.75, y=2.75},
makes_footstep_sound = true,
walk_velocity = 1.2,
run_velocity = 4,
view_range = 16,
fear_height = 4,
arrow = "mcl_bows:arrow_entity",
attack_type = "dogshoot", -- Alternate punching/shooting
reach = 0, -- Punching max distance
damage = 0, -- Punching damage
dogshoot_switch = 1, -- Start of shooting
dogshoot_count_max = 5, -- Max time spent shooting (standing)
dogshoot_count2_max = 1, -- Max time spent punching (running)
sounds = {
random = "mobs_mc_pillager_grunt2",
war_cry = "mobs_mc_pillager_grunt1",
death = "mobs_mc_pillager_ow2",
damage = "mobs_mc_pillager_ow1",
distance = 16,
},
textures = {
{
"mobs_mc_pillager.png", -- Skin
"mcl_bows_crossbow_3.png^[resize:16x16", -- Wielded item
}
},
drops = {
{
name = "mcl_bows:arrow",
chance = 1,
min = 0,
max = 2,
looting = "common",
},
{
name = "mcl_bows:crossbow",
chance = 100 / 8.5,
min = 1,
max = 1,
looting = "rare",
},
},
animation = {
unloaded_walk_start = 1, unloaded_walk_end = 40,
unloaded_stand_start = 41, unloaded_stand_end = 60,
reload_stand_start = 61, reload_stand_end = 100, reload_stand_speed = 20,
stand_start = 101, stand_end = 109, stand_speed = 6,
walk_start = 111, walk_end = 150, walk_speed = 30,
run_start = 111, run_end = 150, run_speed = 50,
reload_run_start = 151, reload_run_end = 190, reload_run_speed = 20,
die_start = 191, die_end = 192, die_speed = 15,
stand_unloaded_start = 40, stand_unloaded_end = 59,
die_loop = false,
},
shoot_arrow = function(self, pos, dir)
minetest.sound_play("mcl_bows_crossbow_shoot", {object = self.object, max_hear_distance=16}, true)
local props = self.object:get_properties()
props.textures[2] = "mcl_bows_crossbow_0.png^[resize:16x16"
self.object:set_properties(props)
local old_anim = self._current_animation
if old_anim == "run" or old_anim == "walk" then
mcl_mobs:set_animation(self, "reload_run")
end
if old_anim == "stand" then
mcl_mobs:set_animation(self, "reload_stand")
end
self._current_animation = old_anim -- Mobs Redo will imediately reset the animation otherwise
minetest.after(1, reload, self)
minetest.after(2, reset_animation, self, old_anim)
-- 2-4 damage per arrow
local dmg = math.max(4, math.random(2, 8))
mcl_bows_s.shoot_arrow_crossbow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg)
-- While we are at it, change the sounds since there is no way to do this in Mobs Redo
if self.sounds and self.sounds.random then
self.sounds = table.copy(self.sounds)
self.sounds.random = "mobs_mc_pillager_grunt" .. math.random(2)
end
-- Randomize reload time
self.shoot_interval = math.random(3, 4)
end,
}
mcl_mobs:register_mob("mobs_mc:pillager", pillager)
mcl_mobs:register_egg("mobs_mc:pillager", S("Pillager"), "mobs_mc_spawn_icon_pillager.png", 0)

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

View File

@ -72,7 +72,7 @@ local tropical_fish = {
collisionbox = {-0.2, 0.0, -0.2, 0.2, 0.1, 0.2},
visual = "mesh",
mesh = "extra_mobs_tropical_fish_a.b3d",
textures = {}, -- to be populated on_spawn
textures = { "extra_mobs_tropical_fish_a.png" }, -- to be populated on_spawn
sounds = {},
animation = {
stand_start = 0,

View File

@ -591,6 +591,51 @@ local function go_home(entity)
end)
end
local function has_golem(pos)
local r = false
for _,o in pairs(minetest.get_objects_inside_radius(pos,16)) do
local l = o:get_luaentity()
if l and l.name == "mobs_mc:iron_golem" then return true end
end
end
local function has_summon_participants(self)
local r = 0
for _,o in pairs(minetest.get_objects_inside_radius(self.object:get_pos(),10)) do
local l = o:get_luaentity()
--TODO check for panicking or gossiping
if l and l.name == "mobs_mc:villager" then r = r + 1 end
end
return r > 2
end
local function summon_golem(self)
vector.offset(self.object:get_pos(),-10,-10,-10)
local nn = minetest.find_nodes_in_area_under_air(vector.offset(self.object:get_pos(),-10,-10,-10),vector.offset(self.object:get_pos(),10,10,10),{"group:solid","group:water"})
table.shuffle(nn)
for _,n in pairs(nn) do
local up = minetest.find_nodes_in_area(vector.offset(n,0,1,0),vector.offset(n,0,3,0),{"air"})
if up and #up >= 3 then
minetest.sound_play("mcl_portals_open_end_portal", {pos=n, gain=0.5, max_hear_distance = 16}, true)
return minetest.add_entity(vector.offset(n,0,1,0),"mobs_mc:iron_golem")
end
end
end
local function check_summon(self,dtime)
-- TODO has selpt in last 20?
if self._summon_timer and self._summon_timer > 30 then
local pos = self.object:get_pos()
self._summon_timer = 0
if has_golem(pos) then return false end
if not has_summon_participants(self) then return end
summon_golem(self)
elseif self._summon_timer == nil then
self._summon_timer = 0
end
self._summon_timer = self._summon_timer + dtime
end
----- JOBSITE LOGIC
local function get_profession_by_jobsite(js)
for k,v in pairs(professions) do
@ -816,7 +861,7 @@ local function show_trade_formspec(playername, trader, tradenum)
.."listring[current_player;main]"
.."listring["..tradeinv..";input]"
.."listring[current_player;main]"
minetest.sound_play("mobs_mc_villager_trade", {to_player = playername}, true)
minetest.sound_play("mobs_mc_villager_trade", {to_player = playername,object=trader.object}, true)
minetest.show_formspec(playername, tradeinv_name, formspec)
end
@ -878,13 +923,13 @@ local function update_offer(inv, player, sound)
(trade.locked == false)) then
inv:set_stack("output", 1, inv:get_stack("offered", 1))
if sound then
minetest.sound_play("mobs_mc_villager_accept", {to_player = name}, true)
minetest.sound_play("mobs_mc_villager_accept", {to_player = name,object=trader.object}, true)
end
return true
else
inv:set_stack("output", 1, ItemStack(""))
if sound then
minetest.sound_play("mobs_mc_villager_deny", {to_player = name}, true)
minetest.sound_play("mobs_mc_villager_deny", {to_player = name,object=trader.object}, true)
end
return false
end
@ -1084,7 +1129,8 @@ local trade_inventory = {
if not wanted2:is_empty() then
inv:remove_item("input", inv:get_stack("wanted", 2))
end
minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name()}, true)
local trader = player_trading_with[name]
minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name(),object=trader.object}, true)
end
update_offer(inv, player, true)
end,
@ -1194,10 +1240,11 @@ local trade_inventory = {
elseif listname == "input" then
update_offer(inv, player, false)
end
local trader = player_trading_with[name]
if accept then
minetest.sound_play("mobs_mc_villager_accept", {to_player = name}, true)
minetest.sound_play("mobs_mc_villager_accept", {to_player = name,object=trader.object}, true)
else
minetest.sound_play("mobs_mc_villager_deny", {to_player = name}, true)
minetest.sound_play("mobs_mc_villager_deny", {to_player = name,object=trader.object}, true)
end
end,
}
@ -1335,6 +1382,7 @@ mcl_mobs:register_mob("mobs_mc:villager", {
_player_scan_timer = 0,
_trading_players = {}, -- list of playernames currently trading with villager (open formspec)
do_custom = function(self, dtime)
check_summon(self,dtime)
-- Stand still if player is nearby.
if not self._player_scan_timer then
self._player_scan_timer = 0

View File

@ -55,7 +55,7 @@ local zombie = {
xp_max = 5,
breath_max = -1,
armor = {undead = 90, fleshy = 90},
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3},
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.8, 0.3},
visual = "mesh",
mesh = "mobs_mc_zombie.b3d",
textures = {
@ -65,7 +65,6 @@ local zombie = {
"mobs_mc_empty.png", -- wielded_item
}
},
visual_size = {x=3, y=3},
makes_footstep_sound = true,
sounds = {
random = "mobs_mc_zombie_growl",
@ -85,16 +84,23 @@ local zombie = {
group_attack = { "mobs_mc:zombie", "mobs_mc:baby_zombie", "mobs_mc:husk", "mobs_mc:baby_husk" },
drops = drops_zombie,
animation = {
speed_normal = 25, speed_run = 50,
stand_start = 40, stand_end = 80,
walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40,
stand_start = 40, stand_end = 49, stand_speed = 2,
walk_start = 0, walk_end = 39, speed_normal = 25,
run_start = 0, run_end = 39, speed_run = 50,
punch_start = 50, punch_end = 59, punch_speed = 20,
},
ignited_by_sunlight = true,
sunlight_damage = 2,
view_range = 16,
attack_type = "dogfight",
harmed_by_heal = true,
on_spawn = function(self)
-- Remove saved visual_size on old existing entites.
-- Old entities were 3 now it's 1.
self.visual_size = nil
self.object:set_properties({visual_size = self.visual_size})
self.base_size = self.visual_size
end,
}
mcl_mobs:register_mob("mobs_mc:zombie", zombie)
@ -104,13 +110,20 @@ mcl_mobs:register_mob("mobs_mc:zombie", zombie)
local baby_zombie = table.copy(zombie)
baby_zombie.description = S("Baby Zombie")
baby_zombie.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25}
baby_zombie.collisionbox = {-0.25, -0.01, -0.25, 0.25, 1, 0.25}
baby_zombie.xp_min = 12
baby_zombie.xp_max = 12
baby_zombie.visual_size = {x=zombie.visual_size.x/2, y=zombie.visual_size.y/2}
baby_zombie.visual_size = {x = 1 / 2, y = 1 / 2}
baby_zombie.walk_velocity = 1.2
baby_zombie.run_velocity = 2.4
baby_zombie.child = 1
baby_zombie.reach = 1
baby_zombie.animation = {
stand_start = 100, stand_end = 109, stand_speed = 2,
walk_start = 60, walk_end = 99, speed_normal = 40,
run_start = 60, run_end = 99, speed_run = 80,
punch_start = 109, punch_end = 119
}
mcl_mobs:register_mob("mobs_mc:baby_zombie", baby_zombie)
@ -134,15 +147,16 @@ mcl_mobs:register_mob("mobs_mc:husk", husk)
-- Baby husk.
-- A smaller and more dangerous variant of the husk
local baby_husk = table.copy(husk)
local baby_husk = table.copy(baby_zombie)
baby_husk.description = S("Baby Husk")
baby_husk.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25}
baby_husk.xp_min = 12
baby_husk.xp_max = 12
baby_husk.visual_size = {x=zombie.visual_size.x/2, y=zombie.visual_size.y/2}
baby_husk.walk_velocity = 1.2
baby_husk.run_velocity = 2.4
baby_husk.child = 1
baby_husk.textures = {{
"mobs_mc_empty.png", -- armor
"mobs_mc_husk.png", -- texture
"mobs_mc_empty.png", -- wielded_item
}}
baby_husk.ignited_by_sunlight = false
baby_husk.sunlight_damage = 0
baby_husk.drops = drops_common
mcl_mobs:register_mob("mobs_mc:baby_husk", baby_husk)

View File

@ -120,9 +120,10 @@ function lightning.strike(pos)
if not pos then
return false
end
local objects = get_objects_inside_radius(pos2, 3.5)
if lightning.on_strike_functions then
for _, func in pairs(lightning.on_strike_functions) do
-- allow on_strike callbacks to destroy entities by re-obtaining objects for each callback
local objects = get_objects_inside_radius(pos2, 3.5)
func(pos, pos2, objects)
end
end
@ -174,6 +175,7 @@ lightning.register_on_strike(function(pos, pos2, objects)
elseif lua and lua.name == "mobs_mc:creeper" then
mcl_util.replace_mob(obj, "mobs_mc:creeper_charged")
else
-- WARNING: unsafe entity handling. object may be removed immediately
mcl_util.deal_damage(obj, 5, { type = "lightning_bolt" })
end
end
@ -182,8 +184,9 @@ lightning.register_on_strike(function(pos, pos2, objects)
for i = 1, #playerlist do
local player = playerlist[i]
local sky = {}
local sky_table = player:get_sky(true)
sky.bgcolor, sky.type, sky.textures = player:get_sky()
sky.bgcolor, sky.type, sky.textures = sky_table.base_color, sky_table.type, sky_table.textures
local name = player:get_player_name()
if ps[name] == nil then

View File

@ -1,4 +1,3 @@
# textdomain: lightning
@1 was struck by lightning.=@1 a été frappé par la foudre.
Let lightning strike at the specified position or yourself=Laissez la foudre frapper à la position spécifiée ou sur vous-même
Let lightning strike at the specified position or player. No parameter will strike yourself.=Fait frapper la foudre à la position spécifiée ou sur le joueur. Sans paramètre vous vous frapperez vous-même.
No position specified and unknown player=Aucune position spécifiée et joueur inconnu

View File

@ -2,6 +2,7 @@ local PARTICLES_COUNT_RAIN = tonumber(minetest.settings:get("mcl_weather_rain_pa
local PARTICLES_COUNT_THUNDER = tonumber(minetest.settings:get("mcl_weather_thunder_particles")) or 900
local get_connected_players = minetest.get_connected_players
local mgname = minetest.get_mapgen_setting("mg_name")
mcl_weather.rain = {
-- max rain particles created at time
@ -41,6 +42,14 @@ local psdef= {
local textures = {"weather_pack_rain_raindrop_1.png", "weather_pack_rain_raindrop_2.png"}
function mcl_weather.has_rain(pos)
if not mcl_worlds.has_weather(pos) then return false end
if mgname == "singlenode" or mgname == "v6" then return true end
local bd = minetest.registered_biomes[minetest.get_biome_name(minetest.get_biome_data(pos).biome)]
if bd and bd._mcl_biome_type == "hot" then return false end
return true
end
function mcl_weather.rain.sound_handler(player)
return minetest.sound_play("weather_rain", {
to_player = player:get_player_name(),
@ -83,7 +92,7 @@ end
function mcl_weather.rain.add_player(player)
if mcl_weather.players[player:get_player_name()] == nil then
local player_meta = {}
player_meta.origin_sky = {player:get_sky()}
player_meta.origin_sky = {player:get_sky(true)}
mcl_weather.players[player:get_player_name()] = player_meta
update_sound[player:get_player_name()]=true
end
@ -166,13 +175,23 @@ function mcl_weather.rain.make_weather()
for _, player in pairs(get_connected_players()) do
local pos=player:get_pos()
if mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(pos) then
if mcl_weather.is_underwater(player) or not mcl_weather.has_rain(pos) then
mcl_weather.rain.remove_sound(player)
mcl_weather.remove_spawners_player(player)
if mcl_worlds.has_weather(pos) then
mcl_weather.set_sky_box_clear(player)
end
else
mcl_weather.rain.add_player(player)
mcl_weather.rain.add_rain_particles(player)
mcl_weather.rain.update_sound(player)
if mcl_weather.has_snow(pos) then
mcl_weather.rain.remove_sound(player)
mcl_weather.snow.add_player(player)
mcl_weather.snow.set_sky_box()
else
mcl_weather.rain.add_player(player)
mcl_weather.rain.add_rain_particles(player)
mcl_weather.rain.update_sound(player)
mcl_weather.rain.set_sky_box()
end
end
end
end

View File

@ -1,6 +1,21 @@
local mods_loaded = false
local NIGHT_VISION_RATIO = 0.45
function mcl_weather.set_sky_box_clear(player)
player:set_sky({
type = "regular",
sky_color = {
day_sky = "#92B9FF",
day_horizon = "#B4D0FF",
dawn_sky = "#B4BAFA",
dawn_horizon = "#BAC1F0",
night_sky = "#006AFF",
night_horizon = "#4090FF",
},
clouds = true,
})
end
mcl_weather.skycolor = {
-- Should be activated before do any effect.
active = true,
@ -9,7 +24,7 @@ mcl_weather.skycolor = {
force_update = true,
-- Update interval.
update_interval = 15,
update_interval = 3,
-- Main sky colors: starts from midnight to midnight.
-- Please do not set directly. Use add_layer instead.
@ -80,26 +95,34 @@ mcl_weather.skycolor = {
for _, player in ipairs(players) do
local pos = player:get_pos()
local dim = mcl_worlds.pos_to_dimension(pos)
local has_weather = (mcl_worlds.has_weather(pos) and (mcl_weather.state == "snow" or mcl_weather.state =="rain" or mcl_weather.state == "thunder") and mcl_weather.has_snow(pos)) or ((mcl_weather.state =="rain" or mcl_weather.state == "thunder") and mcl_weather.has_rain(pos))
if dim == "overworld" then
if (mcl_weather.state == "none") then
-- Clear weather
player:set_sky({
type = "regular",
sky_color = {
day_sky = "#92B9FF",
day_horizon = "#B4D0FF",
dawn_sky = "#B4BAFA",
dawn_horizon = "#BAC1F0",
night_sky = "#006AFF",
night_horizon = "#4090FF",
},
clouds = true,
})
mcl_weather.set_sky_box_clear(player)
player:set_sun({visible = true, sunrise_visible = true})
player:set_moon({visible = true})
player:set_stars({visible = true})
mcl_weather.skycolor.override_day_night_ratio(player, nil)
else
elseif not has_weather then
local day_color = mcl_weather.skycolor.get_sky_layer_color(0.15)
local dawn_color = mcl_weather.skycolor.get_sky_layer_color(0.27)
local night_color = mcl_weather.skycolor.get_sky_layer_color(0.1)
player:set_sky({ type = "regular",
sky_color = {
day_sky = day_color,
day_horizon = day_color,
dawn_sky = dawn_color,
dawn_horizon = dawn_color,
night_sky = night_color,
night_horizon = night_color,
},
clouds = true,
})
player:set_sun({visible = false, sunrise_visible = false})
player:set_moon({visible = false})
player:set_stars({visible = false})
elseif has_weather then
-- Weather skies
local day_color = mcl_weather.skycolor.get_sky_layer_color(0.5)
local dawn_color = mcl_weather.skycolor.get_sky_layer_color(0.75)
@ -223,7 +246,7 @@ mcl_weather.skycolor = {
get_current_bg_color = function()
local players = mcl_weather.skycolor.utils.get_players(nil)
if players[1] then
return players[1]:get_sky()
return players[1]:get_sky(true).sky_color
end
return nil
end
@ -253,6 +276,11 @@ minetest.register_globalstep(function(dtime)
end)
local function initsky(player)
if player.set_lighting then
player:set_lighting({ shadows = { intensity = tonumber(minetest.settings:get("mcl_default_shadow_intensity") or 0.33) } })
end
if (mcl_weather.skycolor.active) then
mcl_weather.skycolor.force_update = true
end

View File

@ -4,6 +4,42 @@ mcl_weather.snow = {}
local PARTICLES_COUNT_SNOW = tonumber(minetest.settings:get("mcl_weather_snow_particles")) or 100
mcl_weather.snow.init_done = false
local mgname = minetest.get_mapgen_setting("mg_name")
local snow_biomes = {
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"IcePlains_deep_ocean",
"MegaSpruceTaiga_deep_ocean",
"IcePlainsSpikes_ocean",
"StoneBeach_ocean",
"ColdTaiga_deep_ocean",
"MegaTaiga_ocean",
"StoneBeach_deep_ocean",
"IcePlainsSpikes_deep_ocean",
"ColdTaiga_ocean",
"MegaTaiga_deep_ocean",
"MegaSpruceTaiga_ocean",
"ExtremeHills+_ocean",
"IcePlains_ocean",
"Taiga_ocean",
"Taiga_deep_ocean",
"StoneBeach",
"ColdTaiga_beach_water",
"Taiga_beach",
"ColdTaiga_beach",
"Taiga",
"ExtremeHills+_snowtop",
"MegaSpruceTaiga",
"MegaTaiga",
"ExtremeHills+",
"ColdTaiga",
"IcePlainsSpikes",
"IcePlains",
}
local psdef= {
amount = PARTICLES_COUNT_SNOW,
@ -25,6 +61,19 @@ local psdef= {
glow = 1
}
function mcl_weather.has_snow(pos)
if not mcl_worlds.has_weather(pos) then return false end
if mgname == "singlenode" or mgname == "v6" then return false end
local bn = minetest.get_biome_name(minetest.get_biome_data(pos).biome)
local bd = minetest.registered_biomes[bn]
if bd and bd._mcl_biome_type == "snowy" then return true end
if bd and bd._mcl_biome_type == "cold" then
if bn == "Taiga" and pos.y > 140 then return true end
if bn == "MegaSpruceTaiga" and pos.y > 100 then return true end
end
return false
end
function mcl_weather.snow.set_sky_box()
mcl_weather.skycolor.add_layer(
"weather-pack-snow-sky",
@ -46,9 +95,11 @@ function mcl_weather.snow.clear()
mcl_weather.remove_all_spawners()
end
-- Simple random texture getter
function mcl_weather.snow.get_texture()
return "weather_pack_snow_snowflake"..math.random(1,2)..".png"
function mcl_weather.snow.add_player(player)
for i=1,2 do
psdef.texture="weather_pack_snow_snowflake"..i..".png"
mcl_weather.add_spawner_player(player,"snow"..i,psdef)
end
end
local timer = 0
@ -70,13 +121,12 @@ minetest.register_globalstep(function(dtime)
end
for _, player in pairs(get_connected_players()) do
if mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(player:get_pos()) then
if mcl_weather.is_underwater(player) or not mcl_weather.has_snow(player:get_pos()) then
mcl_weather.remove_spawners_player(player)
mcl_weather.set_sky_box_clear(player)
else
for i=1,2 do
psdef.texture="weather_pack_snow_snowflake"..i..".png"
mcl_weather.add_spawner_player(player,"snow"..i,psdef)
end
mcl_weather.snow.add_player(player)
mcl_weather.snow.set_sky_box()
end
end
end)
@ -96,3 +146,34 @@ if mcl_weather.reg_weathers.snow == nil then
}
}
end
minetest.register_abm({
label = "Snow piles up",
nodenames = {"group:opaque","group:leaves","group:snow_cover"},
neighbors = {"air"},
interval = 27,
chance = 33,
action = function(pos, node, active_object_count, active_object_count_wider)
if node.name == "mcl_core:snowblock" then return end
local above = vector.offset(pos,0,1,0)
local above_node = minetest.get_node(above)
if above_node.name ~= "air" then return end
if (mcl_weather.state == "rain" or mcl_weather.state == "thunder" or mcl_weather.state == "snow") and mcl_weather.is_outdoor(pos) and mcl_weather.has_snow(pos) then
local nn = nil
if node.name:find("snow") then
local l = node.name:sub(-1)
l = tonumber(l)
if node.name == "mcl_core:snow" then
nn={name = "mcl_core:snow_2"}
elseif l and l < 7 then
nn={name="mcl_core:snow_"..tostring(math.min(8,l + 1))}
elseif l and l >= 7 then
nn={name = "mcl_core:snowblock"}
end
if nn then minetest.set_node(pos,nn) end
else
minetest.set_node(above,{name = "mcl_core:snow"})
end
end
end
})

View File

@ -54,6 +54,8 @@ function mcl_weather.add_spawner_player(pl,id,ps)
particlespawners[name] = {}
end
if not particlespawners[name][id] then
mcl_weather.remove_spawners_player(pl)
particlespawners[name] = {}
ps.playername =name
ps.attached = pl
particlespawners[name][id]=minetest.add_particlespawner(ps)

View File

@ -45,3 +45,4 @@ Mining durability: @1=Durabilité de minage: @1
Block breaking strength: @1=Résistance à la rupture: @1
@1 uses=@1 utilisations
Unlimited uses=Utilisations illimitées
Durability: @1=Durabilité

View File

@ -1,25 +1,24 @@
# textdomain:awards
@1/@2 chat messages=@1/@2 chat messages
@1/@2 crafted=@1/@2 fabrication
@1/@2 deaths=@1/@2 Mort
@1/@2 crafted=@1/@2 fabriqués
@1/@2 deaths=@1/@2 morts
@1/@2 dug=@1/@2 creusé
@1/@2 game joins=@1/@2 sessions
@1/@2 placed=@1/@2 mis
@1/@2 placed=@1/@2 placé
@1 (got)=@1 (obtenu)
@1: @1=@1: @1
@1: @2=@1 : @2
@1s awards:=Récompenses de @1:
(Secret Award)=(Récompense Secrètte)
<achievement ID>=<Succès ID>
<name>=<nom>
A Cat in a Pop-Tart?!=A Cat in a Pop-Tart?!
Achievement gotten!=Succès obtenu !
Achievement gotten:=Succès obtenu :
Achievement gotten: @1=Succès obtenu : @1
Achievement not found.=Succès inconnu
All your awards and statistics have been cleared. You can now start again.=Toutes vos récompenses et statistiques ont été effacées. Vous pouvez maintenant recommencer.
Awards=Récompenses
Craft: @1×@2=Frabrication: @1×@2
Craft: @1=Frabrication: @1
Craft: @1×@2=Fabrication: @1×@2
Craft: @1=Fabrication: @1
Die @1 times.=Mort @1 fois.
Die.=Mort.
Get the achievements statistics for the given player or yourself=Obtenez les statistiques de succès pour le joueur donné ou vous-même
@ -28,9 +27,9 @@ Join the game.=Rejoignez le jeu.
List awards in chat (deprecated)=Liste des récompenses dans le chat (obsolète)
Place a block: @1=Placer un bloc: @1
Place blocks: @1×@2=Placer des blocs: @1×@2
Secret Achievement gotten!=Succès secret obtenu !
Secret Achievement gotten:=Succès secret obtenu :
Secret Achievement gotten: @1=Succès secret obtenu : @1
Secret achievement gotten!=Succès secret obtenu !
Secret achievement gotten:=Succès secret obtenu :
Secret achievement gotten: @1=Succès secret obtenu : @1
Show details of an achievement=Afficher les détails d'un succès
Show, clear, disable or enable your achievements=Affichez, effacez, désactivez ou activez vos succès
Get this achievement to find out what it is.=Obtenez ce succès pour découvrir de quoi il s'agit.
@ -59,3 +58,7 @@ Invalid action.=Action invalide.
Player is not online.=Le joueur n'est pas en ligne.
Done.=Terminé.
Achievement “@1” does not exist.=Le succès «@1» n'existe pas.
@1 has made the achievement @2=@1 a obtenu le succès
Mine a block: @1=Miner un bloc : @1
Mine blocks: @1×@2=Miner des blocs : @1×@2
Awards are disabled, enable them first by using /awards enable!=Les succès sont désactivés, activez les d'abord en utilisant /awards enable !

View File

@ -19,7 +19,7 @@ Getting an Upgrade=Obtenir une augmentaton de niveau
Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Frappez un squelette, wither squelette ou stray à l'arc et à la flèche à une distance d'au moins 20 mètres.
Hot Topic=Sujet brûlant
Into Fire=Dans le feu
Into the Nether=Dans le Nether
We Need to Go Deeper=Aller au fond des choses
Iron Belly=Ventre de fer
Librarian=Bibliothécaire
Mine emerald ore.=Mine de minerai d'émeraude.
@ -47,3 +47,35 @@ Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Utilis
Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Utilisez un établi pour fabriquer une pioche en bois à partir de planches et de bâtons en bois.
Use obsidian and a fire starter to construct a Nether portal.=Utilisez de l'obsidienne et un briquet pour construire un portail du Nether.
Use wheat to craft a bread.=Utilisez du blé pour fabriquer un pain.
Who is Cutting Onions?=Qui épluche des oignons ?
Pick up a crying obsidian from the floor.=Ramasser une obsidienne pleureuse sur le sol.
Hidden in the Depths=Caché dans les profondeurs
Pick up an Ancient Debris from the floor.=Ramasser un Ancien Débris par terre.
The Nether=Le Nether
Bring summer clothes.@nHint: Enter the Nether.=Apportez des vêtements d'été.@nAstuce : Entrez dans le Nether
Isn't It Iron Pick=Bonne Pioche !
Craft a iron pickaxe using sticks and iron.=Fabriquer une pioche de fer avec des batons et du fer.
Postmortal=Aux frontières de la mort
Use a Totem of Undying to cheat death.=Utiliser un Totem d'imortalité pour tromper la mort.
Sweet Dreams=Bonne nuit les petits
Sleep in a bed to change your respawn point.=Dormez dans un lit pour changer votre point de réapparition.
Not Quite "Nine" Lives=Presque "neuf" vies
Charge a Respawn Anchor to the maximum.=Charger une Ancre de Réapparition au maximum.
What A Deal!=Adjugé, Vendu !
Successfully trade with a Villager.=Commercez avec succès avec un villageois.
Withering Heights=Les Witherables
Summon the wither from the dead.=Invoquez le Wither d'entre les morts.
Fishy Business=Merci pour le poisson
Catch a fish.@nHint: Catch a fish, salmon, clownfish, or pufferfish.=Attrapez un poisson. \nAstuce : attrapez un poisson, saumon, poisson-clown, ou poisson-globe.
Country Lode,@nTake Me Home=Petit Poucet
Use a compass on a Lodestone.=utiliser une boussole sur une magnétite.
Serious Dedication=Sérieux dévouement
Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices.=Utilisez un lingot de netherite pour améliorez une houe, puis réévaluez complètement vos choix de vie.
Local Brewery=Apprenti chimiste
Brew a Potion.@nHint: Take a potion or glass bottle out of the brewing stand.=Concotez une potion.@nAstuce : Retirez une potion ou bouteille d'eau d'un alambic.
Enchanter=Enchanté !
Enchant an item using an Enchantment Table.=Enchanter un objet avec la table d'enchantement.
Bring Home the Beacon=Fais ta balise
Use a beacon.=Utilisez une balise.
Beaconator=Phare allumé
Use a fully powered beacon.=Utilisez une balise à pleine puissance.

View File

@ -28,6 +28,11 @@ return {
"Code-Sploit",
"NO11",
"kabou",
"rudzik8",
"chmodsayshello",
"PrarieWind",
"RandomLegoBrick",
"SumianVoice",
}},
{S("Contributors"), 0x52FF00, {
"Laurent Rocher",
@ -72,6 +77,12 @@ return {
"Sven792",
"aldum",
"Dieter44",
"Pepebotella",
"MrRar",
"Lazerbeak12345",
"mrminer",
"Thunder1035",
"opfromthestart",
}},
{S("MineClone5"), 0xA60014, {
"kay27",
@ -79,10 +90,12 @@ return {
"epCode",
"NO11",
"j45",
"chmodsayshello",
"3raven",
"PrarieWind",
"Gustavo1",
"CableGuy67",
"MrRar",
}},
{S("Mineclonia"), 0xFFFFFF, {
"erlehmann",
@ -135,6 +148,9 @@ return {
"yutyo",
"NO11",
"kay27",
"MysticTempest",
"RandomLegoBrick",
"cora",
}},
{S("Translations"), 0x00FF60, {
"Wuzzy",
@ -144,6 +160,8 @@ return {
"pitchum",
"todoporlalibertad",
"Marcin Serwin",
"Pepebotella",
"Emojigit",
}},
{S("Funders"), 0xF7FF00, {
"40W",
@ -151,7 +169,8 @@ return {
{S("Special thanks"), 0x00E9FF, {
"celeron55 for creating Minetest",
"Jordach for the jukebox music compilation from Big Freaking Dig",
"wsor for working tirelessly in the shadows for the good of all of us, particularly helping with solving contentDB and copyright issues.",
"The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game",
"Notch and Jeb for being the major forces behind Minecraft",
}},
}
}

View File

@ -1,59 +1,55 @@
# textdomain: mcl_death_messages
@1 was fatally hit by an arrow.=@1 a été mortellement touché par une flèche.
@1 has been killed with an arrow.=@1 a été tué avec une flèche.
@1 was shot by an arrow from @2.=@1 a été abattu par une flèche de @2.
@1 was shot by an arrow from a skeleton.=@1 a été abattu par une flèche d'un squelette.
@1 was shot by an arrow from a stray.=@1 a été abattu par une flèche d'un vagabond.
@1 was shot by an arrow from an illusioner.=@1 a été abattu par une flèche d'un illusionniste.
@1 was shot by an arrow.=@1 a été abattu par une flèche.
@1 forgot to breathe.=@1 a oublié de respirer.
@1 drowned.=@1 s'est noyé.
@1 ran out of oxygen.=@1 a manqué d'oxygène.
@1 was killed by @2.=@1 a été tué par @2.
@1 was killed.=@1 a été tué.
@1 was killed by a mob.=@1 a été tué par un mob.
@1 was burned to death by a blaze's fireball.=@1 a été brûlé vif par la boule de feu d'un blaze.
@1 was killed by a fireball from a blaze.=@1 a été tué par une boule de feu lors d'un blaze.
@1 was burned by a fire charge.=@1 a été brûlé par un incendie.
A ghast scared @1 to death.=Un ghast a éffrayé @1 à mort.
@1 has been fireballed by a ghast.=@1 a été pétrifié par un ghast.
@1 fell from a high cliff.=@1 est tombé d'une haute falaise.
@1 took fatal fall damage.=@1 a succombé à un chute mortelle.
@1 fell victim to gravity.=@1 a été victime de la gravité.
@1 died.=@1 est mort.
@1 was killed by a zombie.=@1 a été tué par un zombie.
@1 was killed by a baby zombie.=@1 a été tué par un bébé zombie.
@1 was killed by a blaze.=@1 a été tué par un blaze.
@1 was killed by a slime.=@1 a été tué par un slime.
@1 was killed by a witch.=@1 a été tué par un sorcier.
@1 was killed by a magma cube.=@1 a été tué par un cube de magma.
@1 was killed by a wolf.=@1 a été tué par un loup.
@1 was killed by a cat.=@1 a été tué par un chat.
@1 was killed by an ocelot.=@1 a été tué par un ocelot.
@1 was killed by an ender dragon.=@1 a été tué par un ender dragon.
@1 was killed by a wither.=@1 a été tué par un wither.
@1 was killed by an enderman.=@1 a été tué par un enderman.
@1 was killed by an endermite.=@1 a été tué par un endermite.
@1 was killed by a ghast.=@1 a été tué par un ghast.
@1 was killed by an elder guardian.=@1 a été tué par un grand gardien.
@1 was killed by a guardian.=@1 a été tué par un gardien.
@1 was killed by an iron golem.=@1 a été tué par un golem de fer.
@1 was killed by a polar_bear.=@1 a été tué par un ours blanc.
@1 was killed by a killer bunny.=@1 a été tué par un lapin tueur.
@1 was killed by a shulker.=@1 a été tué par un shulker.
@1 was killed by a silverfish.=@1 a été tué par un poisson d'argent.
@1 was killed by a skeleton.=@1 a été tué par un squelette.
@1 was killed by a stray.=@1 a été tué par un vagabond.
@1 was killed by a slime.=@1 a été tué par un slime.
@1 was killed by a spider.=@1 a été tué par une araignée.
@1 was killed by a cave spider.=@1 a été tué par une araignée venimeuse.
@1 was killed by a vex.=@1 a été tué par un vex.
@1 was killed by an evoker.=@1 a été tué par un invocateur.
@1 was killed by an illusioner.=@1 a été tué par un illusionniste.
@1 was killed by a vindicator.=@1 a été tué par un vindicateur.
@1 was killed by a zombie villager.=@1 a été tué par un villageois zombie.
@1 was killed by a husk.=@1 a été tué par un zombie momie.
@1 was killed by a baby husk.=@1 a été tué par un bébé zombie momie.
@1 was killed by a zombie pigman.=@1 a été tué par un zombie-couchon.
@1 was killed by a baby zombie pigman.=@1 a été tué par un bébé zombie-couchon
@1 was slain by @2.=
@1 went up in flames=@1 est parti(e) en fumée
@1 walked into fire whilst fighting @2=@1 a marché dans le feu en combattant @2
@1 was struck by lightning=@1 a été frappé(e) par la foudre
@1 was struck by lightning whilst fighting @2=@1 a été frappé(e) par la foudre en combattant @2
@1 burned to death=@1 est mort(e) brûlé vif(ve)
@1 was burnt to a crisp whilst fighting @2=@1 a été grillé comme une saucisse en combattant @2
@1 tried to swim in lava=@1 a essayé de nager dans la lave
@1 tried to swim in lava to escape @2=1 a essayé de nager dans la lave pour échapper à @2
@1 discovered the floor was lava=@1 a découvert que le sol était en lave
@1 walked into danger zone due to @2=@1 a marché dans une zone de danger à cause de @2
@1 suffocated in a wall=@1 a étouffé dans un mur
@1 suffocated in a wall whilst fighting @2=@1 a étouffé dans un mur en combattant @2
@1 drowned=@1 s'est noyé(e)
@1 drowned whilst trying to escape @2=@1 s'est noyé(e) en tentant d'échapper à @2
@1 starved to death=@1 est mort(e) de faim
@1 starved to death whilst fighting @2=@1 est mort(e) de faim en combattant @2
@1 was pricked to death=@1 a été piqué(e) à mort
@1 walked into a cactus whilst trying to escape @2=@1 est rentré(e) dans un cactus en tentant d'échapper @2
@1 hit the ground too hard=@1 a heurté le sol trop fort
@1 hit the ground too hard whilst trying to escape @2=@1 a heurté le sol trop fort en tentant d'échapper à @2
@1 experienced kinetic energy=@1 a fait l'expérience de l'énergie cinétique
@1 experienced kinetic energy whilst trying to escape @2=@1 a fait l'expérience de l'énergie cinétique en tentant d'échapper à @2
@1 fell out of the world=@1 est tombé(e) hors du monde
@1 didn't want to live in the same world as @2=@1 ne voulait pas vivre dans le même monde que @2
@1 died=@1 est mort.
@1 died because of @2=@1 est mort à cause de @2
@1 was killed by magic=@1 a été tué(e) par magie
@1 was killed by magic whilst trying to escape @2=@1 a été tué(e) par magie en tentant d'échapper à @2
@1 was killed by @2 using magic=@1 a été tué(e) par @2 en utilisant la magie
@1 was killed by @2 using @3=@1 a été tué(e) par @2 en utilisant @3
@1 was roasted in dragon breath=@1 a été rôti(e) dans le souffle du dragon
@1 was roasted in dragon breath by @2=@1 a été rôti(e) dans le souffle du dragon par @2
@1 withered away=@1 s'est flétri(e)
@1 withered away whilst fighting @2=@1 s'est flétri(e) en combattant @2
@1 was shot by a skull from @2=@1 a été abattu(e) par un crâne lancé par @2
@1 was squashed by a falling anvil=@1 a été écrasé(e) par la chute d'une enclume
@1 was squashed by a falling anvil whilst fighting @2=@1 a été écrasé(e) par la chute d'une enclume en combattant @2
@1 was squashed by a falling block=@1 a été écrasé(e) par la chute d'un bloc
@1 was squashed by a falling block whilst fighting @2=@1 a été écrasé(e) par la chute d'un bloc en combattant @2
@1 was slain by @2=@1 a été occis par @2
@1 was slain by @2 using @3=@1 a été occis par @2 en utilisant @3
@1 was shot by @2=@1 a été abattu(e) par @2
@1 was shot by @2 using @3=@1 a été abattu(e) par @2 en utilisant @3
@1 was fireballed by @2=@1 a reçu une balle de feu lancée par @2
@1 was fireballed by @2 using @3=@1 a reçu une balle de feu lancée par @2 en utilisant @3
@1 was killed trying to hurt @2=@1 a été tué(e) en essayant de blesser @2
@1 was killed by @3 trying to hurt @2=@1 a été tué(e) par @3 en essayant de blesser @2
@1 blew up=@1 a explosé
@1 was blown up by @2=@2 a fait exploser @1
@1 was blown up by @2 using @3=@2 a fait exploser @1 en utilisant @3
@1 was squished too much=@1 a été pressé(e) un peu trop
@1 was squashed by @2=@1 a été écrasé(e) par @2
@1 went off with a bang=@1 est parti(e) avec un bang
@1 went off with a bang due to a firework fired from @3 by @2=@1 est parti(e) avec un bang dû à un feu d'artifice tiré depuis @3 par @2

View File

@ -33,7 +33,6 @@
@1 was roasted in dragon breath by @2=
@1 withered away=
@1 withered away whilst fighting @2=
@1 was killed by magic=
@1 was shot by a skull from @2=
@1 was squashed by a falling anvil=
@1 was squashed by a falling anvil whilst fighting @2=
@ -41,8 +40,6 @@
@1 was squashed by a falling block whilst fighting @2=
@1 was slain by @2=
@1 was slain by @2 using @3=
@1 was slain by @2=
@1 was slain by @2 using @3=
@1 was shot by @2=
@1 was shot by @2 using @3=
@1 was fireballed by @2=

View File

@ -106,7 +106,7 @@ local function info()
end
after(refresh_interval, info)
end
info()
minetest.after(0,info)
minetest.register_on_leaveplayer(function(p)
local name = p:get_player_name()

View File

@ -0,0 +1,4 @@
# textdomain: mcl_info
Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all=Régler le masque de bits pour débuguer : 0 @= pour désactiver, 1 @= nom du biome, 2 @= coordonnées, 3 @= tout=
Error! Possible values are integer numbers from @1 to @2=Erreur ! Les valeurs possibles sont des nombres entiers de @1 à @2
Debug bit mask set to @1=Masque de bits de débuguage réglé à @1

View File

@ -261,7 +261,7 @@ local dispenserdef = {
local item_entity = minetest.add_item(droppos, dropitem)
local drop_vel = vector.subtract(droppos, pos)
local speed = 3
item_entity:set_velocity(drop_vel * speed)
item_entity:set_velocity(vector.multiply(drop_vel,speed))
end
else
stack:take_item()
@ -278,7 +278,7 @@ local dispenserdef = {
local item_entity = minetest.add_item(droppos, dropitem)
local drop_vel = vector.subtract(droppos, pos)
local speed = 3
item_entity:set_velocity(drop_vel * speed)
item_entity:set_velocity(vector.multiply(drop_vel,speed))
stack:take_item()
inv:set_stack("main", stack_id, stack)
end

View File

@ -143,7 +143,7 @@ local dropperdef = {
local item_entity = minetest.add_item(droppos, dropitem)
local drop_vel = vector.subtract(droppos, pos)
local speed = 3
item_entity:set_velocity(drop_vel * speed)
item_entity:set_velocity(vector.multiply(drop_vel,speed))
stack:take_item()
inv:set_stack("main", stack_id, stack)
end

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_wallever
# textdomain: mesecons_walllever
Lever=Hebel
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Ein Hebel ist eine Redstonekomponente, die ein- und ausgeschaltet werden kann. Er versorgt seine benachbarten Blöcke mit Redstoneenergie, solange er sich im eingeschalteten Zustand befindet.
Use the lever to flip it on or off.=Benutzen Sie den Hebel, um ihn ein- oder auszuschalten.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_wallever
# textdomain: mesecons_walllever
Lever=Palanca
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=EUna palanca es un componente de redstone que se puede activar y desactivar. Suministra energía redstone a bloques adyacentes mientras está en el estado "encendido".
Use the lever to flip it on or off.=Use la palanca para encenderlo o apagarlo.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_wallever
# textdomain: mesecons_walllever
Lever=Levier
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Un levier est un composant de redstone qui peut être activé et désactivé. Il fournit de l'énergie redstone aux blocs adjacents pendant qu'il est à l'état "activé".
Use the lever to flip it on or off.=Utilisez le levier pour l'activer ou le désactiver.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_wallever
# textdomain: mesecons_walllever
Lever=Dźwignia
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Dźwignia jest czerwienitowym elementem, który można przełączać między stanem włączonym i wyłączonym. Wysyła ona czerwienitową energię gdy jest w stanie włączonym.
Use the lever to flip it on or off.=Użyj dźwigni by przełączyć ją między stanami.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_wallever
# textdomain: mesecons_walllever
Lever=Рычаг
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Рычаг это компонент редстоуна, который можно включать и выключать. Он подаёт энергию редстоуна на соседние блоки, пока он находится во «включённом» состоянии.
Use the lever to flip it on or off.=[Используйте] рычаг, чтобы перещёлкнуть его во включённое или выключенное положение .

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_wallever
# textdomain: mesecons_walllever
Lever=
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=
Use the lever to flip it on or off.=

View File

@ -33,7 +33,7 @@ mcl_damage.register_modifier(function(obj, damage, reason)
local itemname = itemstack:get_name()
local enchantments = mcl_enchanting.get_enchantments(itemstack)
if not flags.bypasses_armor then
if not flags.bypasses_armor and minetest.get_item_group(itemname, "non_combat_armor") == 0 then
points = points + minetest.get_item_group(itemname, "mcl_armor_points")
toughness = toughness + minetest.get_item_group(itemname, "mcl_armor_toughness")
@ -90,6 +90,8 @@ mcl_damage.register_modifier(function(obj, damage, reason)
if thorns_damage > 0 and reason.type ~= "thorns" and reason.source ~= obj then
mcl_util.deal_damage(reason.source, thorns_damage, {type = "thorns", direct = obj})
-- mcl_util.deal_damage may remove object immediately
if not reason.source:get_pos() then return end
local thorns_item = thorns_pieces[math.random(#thorns_pieces)]

View File

@ -6,18 +6,45 @@ Iron Helmet=Casque de Fer
Golden Helmet=Casque d'Or
Diamond Helmet=Casque de Diamant
Chain Helmet=Casque de Mailles
Netherite Helmet=Casque de Netherite
Leather Tunic=Tunique en Cuir
Iron Chestplate=Plastron de Fer
Golden Chestplate=Plastron d'Or
Diamond Chestplate=Plastron de Diamant
Chain Chestplate=Cotte de Mailles
Netherite Chestplate=Plastron de Netherite
Leather Pants=Pantalon de Cuir
Iron Leggings=Jambières de Fer
Golden Leggings=Jambières d'Or
Diamond Leggings=Jambières de Diamant
Chain Leggings=Jambières de Mailles
Netherite Leggings=Jambières de Netherite
Leather Boots=Bottes de Cuir
Iron Boots=Bottes de Fer
Golden Boots=Bottes d'Or
Diamond Boots=Bottes de Diamant
Chain Boots=Bottes de Mailles
Netherite Boots=Bottes de Netherite
Elytra=Élytres
#Translations of enchantements
Increases underwater mining speed.=Augmente la vitesse de minage sous-marine.
Blast Protection=Protection contre les explosions
Reduces explosion damage and knockback.=Réduit les dégâts d'explosion et de recul.
Curse of Binding=Malédiction du lien éternel
Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=L'objet ne peut pas être retiré des emplacements d'armure sauf en cas de mort, de rupture ou en mode créatif.
Feather Falling=Chute amortie
Reduces fall damage.=Réduit les dégats de chute.
Fire Protection=Protection contre le feu
Reduces fire damage.=Reduit les dégats de feu.
Shooting consumes no regular arrows.=Le tir ne consomme pas de flèches standard.
Shoot 3 arrows at the cost of one.=Tirez sur 3 flèches au prix d'une.
Projectile Protection=Protection contre les projectiles
Reduces projectile damage.=Réduit les dommages causés par les projectiles.
Protection=Protection
Reduces most types of damage by 4% for each level.=Réduit la plupart des types de dégâts de 4% pour chaque niveau.
Thorns=Épines
Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=Reflète une partie des dégâts subis lors de la frappe, au prix d'une réduction de la durabilité à chaque déclenchement.
Aqua Affinity=Affinité aquatique

View File

@ -6,18 +6,43 @@ Iron Helmet=
Golden Helmet=
Diamond Helmet=
Chain Helmet=
Netherite Helmet=
Leather Tunic=
Iron Chestplate=
Golden Chestplate=
Diamond Chestplate=
Chain Chestplate=
Netherite Chestplate=
Leather Pants=
Iron Leggings=
Golden Leggings=
Diamond Leggings=
Chain Leggings=
Netherite Leggings=
Leather Boots=
Iron Boots=
Golden Boots=
Diamond Boots=
Chain Boots=
Netherite Boots=
Elytra=
#Translations of enchantements
Increases underwater mining speed.=
Blast Protection=
Reduces explosion damage and knockback.=
Curse of Binding=Malédiction du lien éternel
Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=
Feather Falling=
Reduces fall damage.=
Fire Protection=
Reduces fire damage.=
Shooting consumes no regular arrows.=
Shoot 3 arrows at the cost of one.=
Projectile Protection=
Reduces projectile damage.=
Protection=
Reduces most types of damage by 4% for each level.=
Thorns=
Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=
Aqua Affinity=

View File

@ -2,354 +2,401 @@ local S = minetest.get_translator(minetest.get_current_modname())
--[[
there are strings in meta, which are being used to see which effect will be given to the player(s)
Valid strings:
swiftness
leaping
strenght
regeneration
swiftness
leaping
strenght
regeneration
]]--
mcl_beacons = {
blocks ={"mcl_core:diamondblock","mcl_core:ironblock","mcl_core:goldblock","mcl_core:emeraldblock","mcl_nether:netheriteblock"},
fuel = {"mcl_core:diamond","mcl_core:emerald","mcl_core:iron_ingot","mcl_core:gold_ingot","mcl_nether:netherite_ingot"}
}
local beacon_blocklist = mcl_beacons.blocks
local beacon_fuellist = mcl_beacons.fuel
local pallete_order = {
glass_cyan = 1,
pane_cyan_flat = 1,
pane_cyan = 1,
glass_white = 2,
pane_white_flat = 2,
pane_white = 2,
glass_brown = 3,
pane_brown_flat = 3,
pane_brown = 3,
glass_blue = 4,
pane_blue_flat = 4,
pane_blue = 4,
glass_light_blue = 5,
pane_light_blue_flat = 5,
pane_light_blue = 5,
glass_pink = 6,
pane_pink_flat = 6,
pane_pink = 6,
glass_purple = 7,
pane_purple_flat = 7,
pane_purple = 7,
glass_red = 8,
pane_red_flat = 8,
pane_red = 8,
glass_silver = 9,
pane_silver_flat = 9,
pane_silver = 9,
glass_gray = 10,
pane_gray_flat = 10,
pane_gray = 10,
glass_lime = 11,
pane_lime_flat = 11,
pane_lime = 11,
glass_green = 12,
pane_green_flat = 12,
pane_green = 12,
glass_orange = 13,
pane_orange_flat = 13,
pane_orange = 13,
glass_yellow = 14,
pane_yellow_flat = 14,
pane_yellow = 14,
glass_black = 15,
pane_black_flat = 15,
pane_black = 15,
glass_magenta = 16,
pane_magenta_flat = 16,
pane_magenta = 16
}
local function get_beacon_beam(glass_nodename)
if string.match(glass_nodename, "cyan") then
return 1
elseif string.match(glass_nodename,"white") then
return 2
elseif string.match(glass_nodename,"brown") then
return 3
elseif string.match(glass_nodename,"blue") and not string.match(glass_nodename, "light") then
return 4
elseif string.match(glass_nodename,"light_blue") then
return 5
elseif string.match(glass_nodename,"pink") then
return 6
elseif string.match(glass_nodename, "purple") then
return 7
elseif string.match(glass_nodename, "red") then
return 8
elseif string.match(glass_nodename, "silver") then
return 9
elseif string.match(glass_nodename, "gray") then
return 10
elseif string.match(glass_nodename, "lime") then
return 11
elseif string.match(glass_nodename, "green") then
return 12
elseif string.match(glass_nodename, "orange") then
return 13
elseif string.match(glass_nodename, "yellow") then
return 14
elseif string.match(glass_nodename, "black") then
return 15
elseif string.match(glass_nodename, "magenta") then
return 16
else
return 0
end
if glass_nodename == "air" then return 0 end
local glass_string = glass_nodename:split(':')[2]
if not pallete_order[glass_string] then return 0 end
return pallete_order[glass_string]
end
minetest.register_node("mcl_beacons:beacon_beam", {
tiles = {"^[colorize:#b8bab9"},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.1250, -0.5000, -0.1250, 0.1250, 0.5000, 0.1250}
}
},
pointable= false,
light_source = 15,
walkable = false,
groups = {not_in_creative_inventory=1},
_mcl_blast_resistance = 1200,
paramtype2 = "color",
palette = "beacon_beam_palette.png",
palette_index = 0,
buildable_to = true,
tiles = {"^[colorize:#b8bab9"},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.1250, -0.5000, -0.1250, 0.1250, 0.5000, 0.1250}
}
},
pointable= false,
light_source = 14,
walkable = false,
groups = {not_in_creative_inventory=1},
_mcl_blast_resistance = 1200,
paramtype2 = "color",
palette = "beacon_beam_palette.png",
palette_index = 0,
buildable_to = true,
})
mesecon.register_mvps_stopper("mcl_beacons:beacon_beam")
local formspec_string=
"size[11,14]"..
"size[11,14]"..
"label[4.5,0.5;"..minetest.formspec_escape(S("Beacon:")).."]"..
"label[0.5,1;"..minetest.formspec_escape(S("Primary Power:")).."]"..
"label[0.5,8.25;"..minetest.formspec_escape( S("Inventory:")).."]"..
"label[4.5,0.5;"..minetest.formspec_escape(S("Beacon:")).."]"..
"label[0.5,1;"..minetest.formspec_escape(S("Primary Power:")).."]"..
"label[0.5,8.25;"..minetest.formspec_escape( S("Inventory:")).."]"..
"image[1,1.5;1,1;custom_beacom_symbol_4.png]"..
"image[1,3;1,1;custom_beacom_symbol_3.png]"..
"image[1,4.5;1,1;custom_beacom_symbol_2.png]"..
"image[1,6;1,1;custom_beacom_symbol_1.png]"..
"image[1,1.5;1,1;custom_beacom_symbol_4.png]"..
"image[1,3;1,1;custom_beacom_symbol_3.png]"..
"image[1,4.5;1,1;custom_beacom_symbol_2.png]"..
"image[1,6;1,1;custom_beacom_symbol_1.png]"..
"image_button[5.2,1.5;1,1;mcl_potions_effect_swift.png;swiftness;]"..
"image_button[5.2,3;1,1;mcl_potions_effect_leaping.png;leaping;]"..
"image_button[5.2,4.5;1,1;mcl_potions_effect_strong.png;strenght;]"..
"image_button[5.2,6;1,1;mcl_potions_effect_regenerating.png;regeneration;]"..
"image_button[5.2,1.5;1,1;mcl_potions_effect_swift.png;swiftness;]"..
"image_button[5.2,3;1,1;mcl_potions_effect_leaping.png;leaping;]"..
"image_button[5.2,4.5;1,1;mcl_potions_effect_strong.png;strenght;]"..
"image_button[5.2,6;1,1;mcl_potions_effect_regenerating.png;regeneration;]"..
"item_image[1,7;1,1;mcl_core:diamond]"..
"item_image[2.2,7;1,1;mcl_core:emerald]"..
"item_image[3.4,7;1,1;mcl_core:iron_ingot]"..
"item_image[4.6,7;1,1;mcl_core:gold_ingot]"..
"item_image[5.8,7;1,1;mcl_nether:netherite_ingot]"..
"item_image[1,7;1,1;mcl_core:diamond]"..
"item_image[2.2,7;1,1;mcl_core:emerald]"..
"item_image[3.4,7;1,1;mcl_core:iron_ingot]"..
"item_image[4.6,7;1,1;mcl_core:gold_ingot]"..
"item_image[5.8,7;1,1;mcl_nether:netherite_ingot]"..
mcl_formspec.get_itemslot_bg(7.2,7,1,1)..
mcl_formspec.get_itemslot_bg(7.2,7,1,1)..
"list[context;input;7.2,7;1,1;]"..
mcl_formspec.get_itemslot_bg(1,9,9,3)..
"list[current_player;main;1,9;9,3;9]"..
"list[current_player;main;1,9;9,3;9]"..
mcl_formspec.get_itemslot_bg(1,12.5,9,1)..
"list[current_player;main;1,12.5;9,1;]"
"list[current_player;main;1,12.5;9,1;]"
local function remove_beacon_beam(pos)
for y=pos.y, pos.y+301 do
local node = minetest.get_node({x=pos.x,y=y,z=pos.z})
if node.name ~= "air" and node.name ~= "mcl_core:bedrock" and node.name ~= "mcl_core:void" then
if node.name == "ignore" then
minetest.get_voxel_manip():read_from_map({x=pos.x,y=y,z=pos.z}, {x=pos.x,y=y,z=pos.z})
node = minetest.get_node({x=pos.x,y=y,z=pos.z})
end
if node.name == "mcl_beacons:beacon_beam" then
minetest.remove_node({x=pos.x,y=y,z=pos.z})
end
end
end
for y=pos.y, pos.y+301 do
local node = minetest.get_node({x=pos.x,y=y,z=pos.z})
if node.name ~= "air" and node.name ~= "mcl_core:bedrock" and node.name ~= "mcl_core:void" then
if node.name == "ignore" then
minetest.get_voxel_manip():read_from_map({x=pos.x,y=y,z=pos.z}, {x=pos.x,y=y,z=pos.z})
node = minetest.get_node({x=pos.x,y=y,z=pos.z})
end
if node.name == "mcl_beacons:beacon_beam" then
minetest.remove_node({x=pos.x,y=y,z=pos.z})
end
end
end
end
local function beacon_blockcheck(pos)
for y_offset = 1,4 do
local block_y = pos.y - y_offset
for block_x = (pos.x-y_offset),(pos.x+y_offset) do
for block_z = (pos.z-y_offset),(pos.z+y_offset) do
local valid_block = false --boolean which stores if block is valid or not
for _, beacon_block in pairs(beacon_blocklist) do
if beacon_block == minetest.get_node({x=block_x,y=block_y,z=block_z}).name and not valid_block then --is the block in the pyramid a valid beacon block
valid_block =true
end
end
if not valid_block then
return y_offset -1 --the last layer is complete, this one is missing or incomplete
end
end
end
if y_offset == 4 then --all checks are done, beacon is maxed
return y_offset
end
end
for y_offset = 1,4 do
local block_y = pos.y - y_offset
for block_x = (pos.x-y_offset),(pos.x+y_offset) do
for block_z = (pos.z-y_offset),(pos.z+y_offset) do
local valid_block = false --boolean which stores if block is valid or not
for _, beacon_block in pairs(beacon_blocklist) do
if beacon_block == minetest.get_node({x=block_x,y=block_y,z=block_z}).name and not valid_block then --is the block in the pyramid a valid beacon block
valid_block =true
end
end
if not valid_block then
return y_offset -1 --the last layer is complete, this one is missing or incomplete
end
end
end
if y_offset == 4 then --all checks are done, beacon is maxed
return y_offset
end
end
end
local function effect_player(effect,pos,power_level, effect_level,player)
local distance = vector.distance(player:get_pos(), pos)
if distance > (power_level+1)*10 then return end
if effect == "swiftness" then
mcl_potions.swiftness_func(player,effect_level,16)
elseif effect == "leaping" then
mcl_potions.leaping_func(player, effect_level, 16)
elseif effect == "strenght" then
mcl_potions.strength_func(player, effect_level, 16)
elseif effect == "regeneration" then
mcl_potions.regeneration_func(player, effect_level, 16)
end
local distance = vector.distance(player:get_pos(), pos)
if distance > (power_level+1)*10 then return end
if effect == "swiftness" then
mcl_potions.swiftness_func(player,effect_level,16)
elseif effect == "leaping" then
mcl_potions.leaping_func(player, effect_level, 16)
elseif effect == "strenght" then
mcl_potions.strength_func(player, effect_level, 16)
elseif effect == "regeneration" then
mcl_potions.regeneration_func(player, effect_level, 16)
end
end
local function globalstep_function(pos,player)
local meta = minetest.get_meta(pos)
local power_level = beacon_blockcheck(pos)
local effect_string = meta:get_string("effect")
if meta:get_int("effect_level") == 2 and power_level < 4 then
return
else
local obstructed = false
for y=pos.y+1, pos.y+100 do
local meta = minetest.get_meta(pos)
local power_level = beacon_blockcheck(pos)
local effect_string = meta:get_string("effect")
if meta:get_int("effect_level") == 2 and power_level < 4 then
return
else
local obstructed = false
for y=pos.y+1, pos.y+100 do
local nodename = minetest.get_node({x=pos.x,y=y, z = pos.z}).name
if nodename ~= "mcl_core:bedrock" and nodename ~= "air" and nodename ~= "mcl_core:void" and nodename ~= "ignore" then --ignore means not loaded, let's just assume that's air
if nodename ~="mcl_beacons:beacon_beam" then
if minetest.get_item_group(nodename,"glass") == 0 then
obstructed = true
remove_beacon_beam(pos)
return
end
end
end
end
if obstructed then
return
end
effect_player(effect_string,pos,power_level,meta:get_int("effect_level"),player)
end
local nodename = minetest.get_node({x=pos.x,y=y, z = pos.z}).name
if nodename ~= "mcl_core:bedrock" and nodename ~= "air" and nodename ~= "mcl_core:void" and nodename ~= "ignore" then --ignore means not loaded, let's just assume that's air
if nodename ~="mcl_beacons:beacon_beam" then
if minetest.get_item_group(nodename,"glass") == 0 and minetest.get_item_group(nodename,"material_glass") == 0 then
obstructed = true
remove_beacon_beam(pos)
return
end
end
end
end
if obstructed then
return
end
effect_player(effect_string,pos,power_level,meta:get_int("effect_level"),player)
end
end
minetest.register_node("mcl_beacons:beacon", {
description = S"Beacon",
drawtype = "mesh",
collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
mesh = "mcl_beacon.b3d",
tiles = {"beacon_UV.png"},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("input", 1)
local form = formspec_string
description = S"Beacon",
drawtype = "mesh",
collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
mesh = "mcl_beacon.b3d",
tiles = {"beacon_UV.png"},
use_texture_alpha = "clip",
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("input", 1)
local form = formspec_string
meta:set_string("formspec", form)
end,
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
local input = meta:get_inventory():get_stack("input",1)
if not input:is_empty() then
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} --from mcl_anvils
minetest.add_item(p, input)
end
remove_beacon_beam(pos)
end,
on_receive_fields = function(pos, formname, fields, sender)
if fields.swiftness or fields.regeneration or fields.leaping or fields.strenght then
local sender_name = sender:get_player_name()
local power_level = beacon_blockcheck(pos)
if minetest.is_protected(pos, sender_name) then
minetest.record_protection_violation(pos, sender_name)
return
elseif power_level == 0 then
return
end
end,
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
local input = meta:get_inventory():get_stack("input",1)
if not input:is_empty() then
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} --from mcl_anvils
minetest.add_item(p, input)
end
remove_beacon_beam(pos)
end,
on_receive_fields = function(pos, formname, fields, sender)
if fields.swiftness or fields.regeneration or fields.leaping or fields.strenght then
local sender_name = sender:get_player_name()
local power_level = beacon_blockcheck(pos)
if minetest.is_protected(pos, sender_name) then
minetest.record_protection_violation(pos, sender_name)
return
elseif power_level == 0 then
return
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local input = inv:get_stack("input",1)
if input:is_empty() then
return
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local input = inv:get_stack("input",1)
if input:is_empty() then
return
end
local valid_item = false
local valid_item = false
for _, item in ipairs(beacon_fuellist) do
if input:get_name() == item then
valid_item = true
end
end
for _, item in ipairs(beacon_fuellist) do
if input:get_name() == item then
valid_item = true
end
end
if not valid_item then
return
end
if not valid_item then
return
end
local successful = false
if fields.swiftness then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","swiftness")
successful = true
elseif fields.leaping and power_level >= 2 then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","leaping")
successful = true
elseif fields.strenght and power_level >= 3 then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","strenght")
successful = true
elseif fields.regeneration and power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
minetest.get_meta(pos):set_string("effect","regeneration")
successful = true
end
if successful then
if power_level == 4 then
awards.unlock(sender:get_player_name(),"mcl:maxed_beacon")
end
awards.unlock(sender:get_player_name(),"mcl:beacon")
input:take_item()
inv:set_stack("input",1,input)
local beam_palette_index = 0
remove_beacon_beam(pos)
for y = pos.y +1, pos.y + 201 do
local node = minetest.get_node({x=pos.x,y=y,z=pos.z})
if node.name == ignore then
minetest.get_voxel_manip():read_from_map({x=pos.x,y=y,z=pos.z}, {x=pos.x,y=y,z=pos.z})
node = minetest.get_node({x=pos.x,y=y,z=pos.z})
end
local successful = false
if fields.swiftness then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","swiftness")
successful = true
elseif fields.leaping and power_level >= 2 then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","leaping")
successful = true
elseif fields.strenght and power_level >= 3 then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","strenght")
successful = true
elseif fields.regeneration and power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
minetest.get_meta(pos):set_string("effect","regeneration")
successful = true
end
if successful then
if power_level == 4 then
awards.unlock(sender:get_player_name(),"mcl:maxed_beacon")
end
awards.unlock(sender:get_player_name(),"mcl:beacon")
input:take_item()
inv:set_stack("input",1,input)
local beam_palette_index = 0
remove_beacon_beam(pos)
for y = pos.y +1, pos.y + 201 do
local node = minetest.get_node({x=pos.x,y=y,z=pos.z})
if node.name == ignore then
minetest.get_voxel_manip():read_from_map({x=pos.x,y=y,z=pos.z}, {x=pos.x,y=y,z=pos.z})
node = minetest.get_node({x=pos.x,y=y,z=pos.z})
end
if minetest.get_item_group(node.name, "glass") ~= 0 then
beam_palette_index = get_beacon_beam(node.name)
end
if minetest.get_item_group(node.name, "glass") ~= 0 or minetest.get_item_group(node.name,"material_glass") ~= 0 then
beam_palette_index = get_beacon_beam(node.name)
end
if node.name == "air" then
minetest.set_node({x=pos.x,y=y,z=pos.z},{name="mcl_beacons:beacon_beam",param2=beam_palette_index})
end
end
globalstep_function(pos,sender)--call it once outside the globalstep so the player gets the effect right after selecting it
end
end
end,
light_source = 15,
groups = {handy=1},
drop = "mcl_beacons:beacon",
sounds = mcl_sounds.node_sound_glass_defaults(),
_mcl_hardness = 3,
if node.name == "air" then
minetest.set_node({x=pos.x,y=y,z=pos.z},{name="mcl_beacons:beacon_beam",param2=beam_palette_index})
end
end
globalstep_function(pos,sender)--call it once outside the globalstep so the player gets the effect right after selecting it
end
end
end,
light_source = 14,
groups = {handy=1},
drop = "mcl_beacons:beacon",
sounds = mcl_sounds.node_sound_glass_defaults(),
_mcl_hardness = 3,
})
mesecon.register_mvps_stopper("mcl_beacons:beacon")
mcl_wip.register_wip_item("mcl_beacons:beacon")
beacon_blocklist = {"mcl_core:diamondblock","mcl_core:ironblock","mcl_core:goldblock","mcl_core:emeraldblock","mcl_nether:netheriteblock"}--this is supposed to be a global, don't change that!
beacon_fuellist ={"mcl_core:diamond","mcl_core:emerald","mcl_core:iron_ingot","mcl_core:gold_ingot","mcl_nether:netherite_ingot"}
function register_beaconblock (itemstring)--API function for other mods
table.insert(beacon_blocklist, itemstring)
table.insert(beacon_blocklist, itemstring)
end
function register_beaconfuel(itemstring)
table.insert(beacon_fuellist, itemstring)
table.insert(beacon_fuellist, itemstring)
end
local timer = 0
minetest.register_globalstep(function(dtime)
timer = timer + dtime
if timer >= 3 then
for _, player in ipairs(minetest.get_connected_players()) do
local player_pos = player:get_pos()
local pos_list = minetest.find_nodes_in_area({x=player_pos.x-50, y=player_pos.y-50, z=player_pos.z-50}, {x=player_pos.x+50, y=player_pos.y+50, z=player_pos.z+50},"mcl_beacons:beacon")
for _, pos in ipairs(pos_list) do
globalstep_function(pos,player)
end
end
timer = 0
end
timer = timer + dtime
if timer >= 3 then
for _, player in ipairs(minetest.get_connected_players()) do
local player_pos = player:get_pos()
local pos_list = minetest.find_nodes_in_area({x=player_pos.x-50, y=player_pos.y-50, z=player_pos.z-50}, {x=player_pos.x+50, y=player_pos.y+50, z=player_pos.z+50},"mcl_beacons:beacon")
for _, pos in ipairs(pos_list) do
globalstep_function(pos,player)
end
end
timer = 0
end
end)
minetest.register_abm{
label="update beacon beam",
nodenames = {"mcl_beacons:beacon_beam"},
interval = 1,
chance = 1,
action = function(pos)
local node_below = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
local node_above = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
if node_below.name == "air" then
remove_beacon_beam(pos)
elseif node_above.name == "air" then
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="mcl_beacons:beacon_beam",param2=node_below.param2})
end
end,
minetest.register_abm{
label="update beacon beam",
nodenames = {"mcl_beacons:beacon_beam"},
interval = 1,
chance = 1,
action = function(pos)
local node_below = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
local node_above = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
local node_current = minetest.get_node(pos)
if node_below.name == "air" then
if minetest.get_node({x=pos.x,y=pos.y-2,z=pos.z}).name == "mcl_beacons:beacon" then
minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z},{name="mcl_beacons:beacon_beam",param2=0})
end
remove_beacon_beam(pos)
elseif node_above.name == "air" or (node_above.name == "mcl_beacons:beacon_beam" and node_above.param2 ~= node_current.param2) then
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="mcl_beacons:beacon_beam",param2=node_current.param2})
elseif minetest.get_item_group(node_above.name, "glass") ~= 0 or minetest.get_item_group(node_above.name,"material_glass") ~= 0 then
minetest.set_node({x=pos.x,y=pos.y+2,z=pos.z},{name="mcl_beacons:beacon_beam",param2=get_beacon_beam(node_above.name)})
end
end,
}
minetest.register_craft({
output = "mcl_beacons:beacon",
recipe = {
{"mcl_core:glass", "mcl_core:glass", "mcl_core:glass"},
{"mcl_core:glass", "mcl_mobitems:nether_star", "mcl_core:glass"},
{"mcl_core:obsidian", "mcl_core:obsidian", "mcl_core:obsidian"}
}
})
output = "mcl_beacons:beacon",
recipe = {
{"mcl_core:glass", "mcl_core:glass", "mcl_core:glass"},
{"mcl_core:glass", "mcl_mobitems:nether_star", "mcl_core:glass"},
{"mcl_core:obsidian", "mcl_core:obsidian", "mcl_core:obsidian"}
}
})

View File

@ -0,0 +1,5 @@
# textdomain: mcl_beacons
Beacon=Balise
Beacon:=Balise :
Primary Power:=Pouvoir Primaire :
Inventory:=Inventaire :

View File

@ -1,2 +1,3 @@
name = mcl_beacons
author=chmodsayshello
depends=mcl_formspec, mcl_init, mcl_wip, mesecons_mvps, mcl_core, mcl_sounds, awards, mcl_achievements, mcl_mobitems, mcl_nether

View File

@ -37,5 +37,7 @@ Players in bed: @1/@2=Joueurs au lit: @1/@2
Note: Night skip is disabled.=Remarque: Le saut de nuit est désactivé.
You're sleeping.=Tu dors.
You will fall asleep when all players are in bed.=Vous vous endormirez lorsque tous les joueurs seront au lit.
You will fall asleep when @1% of all players are in bed.=Vous vous endormirez lorsque @1% de tous les joueurs seront au lit.
You're in bed.=Tu es au lit.
Allows you to sleep=Vous permet de dormir
Respawn Anchor=Ancre de réapparition

View File

@ -1,2 +1,2 @@
# textdomain: mcl_observers
# textdomain: mcl_bells
Bell=Cloche

View File

@ -1,2 +1,2 @@
# textdomain: mcl_observers
# textdomain: mcl_bells
Bell=

View File

@ -186,10 +186,10 @@ minetest.registered_nodes["mcl_fire:fire"].on_construct=function(pos)
end
--slabs/stairs
mcl_stairs.register_stair_and_slab_simple("blackstone", "mcl_blackstone:blackstone", "Blackstone Stair", "Blackstone Slab", "Double Blackstone Slab")
mcl_stairs.register_stair_and_slab_simple("blackstone_polished", "mcl_blackstone:blackstone_polished", "Polished Blackstone Stair", "Polished Blackstone Slab", "Polished Double Blackstone Slab")
mcl_stairs.register_stair_and_slab_simple("blackstone_chiseled_polished", "mcl_blackstone:blackstone_chiseled_polished", "Polished Chiseled Blackstone Stair", "Chiseled Polished Blackstone Slab", "Double Polished Chiseled Blackstone Slab")
mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", "Polished Blackstone Brick Stair", "Polished Blackstone Brick Slab", "Double Polished Blackstone Brick Slab")
mcl_stairs.register_stair_and_slab_simple("blackstone", "mcl_blackstone:blackstone", S("Blackstone Stair"), S("Blackstone Slab"), S("Double Blackstone Slab"))
mcl_stairs.register_stair_and_slab_simple("blackstone_polished", "mcl_blackstone:blackstone_polished", S("Polished Blackstone Stair"), S("Polished Blackstone Slab"), S("Polished Double Blackstone Slab"))
mcl_stairs.register_stair_and_slab_simple("blackstone_chiseled_polished", "mcl_blackstone:blackstone_chiseled_polished", S("Chiseled Polished Blackstone Stair"), S("Chiseled Polished Blackstone Slab"), S("Double Chiseled Polished Blackstone Slab"))
mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", S("Polished Blackstone Brick Stair"), S("Polished Blackstone Brick Slab"), S("Double Polished Blackstone Brick Slab"))
--Wall
mcl_walls.register_wall("mcl_blackstone:wall", S("Blackstone Wall"), "mcl_blackstone:blackstone")

View File

@ -1,17 +1,17 @@
# textdomain: mcl_blackstone
Blackstone=Schwarzstein
Polished Blackstone=Polierter Schwarzstein
Chieseled Polished Blackstone=Gemeißelter polierter Schwarzstein
Chiseled Polished Blackstone=Gemeißelter polierter Schwarzstein
Polished Blackstone Bricks=Polierter Schwarzsteinziegel
Basalt=Basalt
Polished Basalt=Polierter Basalt
Blackstone Slab=Schwarzstein Stufe
Polished Blackstone Slab=Polierte Schwarzstein Stufe
Chieseled Polished Blackstone Slab=Gemeißelte Polierte Schwarzstein Stufe
Chiseled Polished Blackstone Slab=Gemeißelte Polierte Schwarzstein Stufe
Polished Blackstone Brick Slab=Polierte Schwarzsteinziegel Stufe
Blackstone Stairs=Schwarzstein Treppe
Polished Blackstone Stairs=Polierte Schwarzstein Treppe
Chieseled Polished Blackstone Stairs=Gemeißelte Polierte Schwarzstein Treppe
Chiseled Polished Blackstone Stairs=Gemeißelte Polierte Schwarzstein Treppe
Polished Blackstone Brick Stairs=Polierte Schwarzsteinziegel Treppe
Quartz Bricks=Quartz Ziegel
Soul Torch=Seelenfakel

View File

@ -0,0 +1,28 @@
# textdomain: mcl_blackstone
Blackstone=Roche noire
Polished Blackstone=Pierre noire
Chiseled Polished Blackstone=Pierre noire sculptée
Polished Blackstone Bricks=Briques de pierre noire
Basalt=Basalte
Polished Basalt=Basalte taillé
Blackstone Slab=Dalle de roche noire
Polished Blackstone Slab=Dalle de pierre noire
Chiseled Polished Blackstone Slab=Dalle de pierre noire sculptée
Polished Blackstone Brick Slab=Dalle de briques de pierre noire
Blackstone Stair=Escalier de roche noire
Polished Blackstone Stair=Escalier de pierre noire
Chiseled Polished Blackstone Stair=Escalier de pierre noire sculptée
Polished Blackstone Brick Stair=Escalier de briques de pierre noire
Quartz Bricks=Briques de quartz
Soul Torch=Torche des âmes
Soul Lantern=Lanterne des âmes
Soul Soil=Terre des âmes
Eternal Soul Fire=Feu éternel des âmes
Gilded Blackstone=Roche noire dorée
Nether Gold Ore=Minerai d'or du Nether
Smooth Basalt=Basalte lisse
Blackstone Wall=Muret de Roche noire
Double Blackstone Slab=Double Dalle de roche noire
Polished Double Blackstone Slab=Double Dalle de pierre noire
Double Chiseled Polished Blackstone Slab=Double Dalle de pierre noire sculptée
Double Polished Blackstone Brick Slab=Double Dalle de briques de pierre noire

View File

@ -1,18 +1,18 @@
# textdomain: mcl_blackstone
Blackstone=
Polished Blackstone=
Chieseled Polished Blackstone=
Chiseled Polished Blackstone=
Polished Blackstone Bricks=
Basalt=
Polished Basalt=
Blackstone Slab=
Polished Blackstone Slab=
Chieseled Polished Blackstone Slab=
Chiseled Polished Blackstone Slab=
Polished Blackstone Brick Slab=
Blackstone Stairs=
Polished Blackstone Stairs=
Chieseled Polished Blackstone Stairs=
Polished Blackstone Brick Stairs=
Blackstone Stair=
Polished Blackstone Stair=
Chiseled Polished Blackstone Stair=
Polished Blackstone Brick Stair=
Quartz Bricks=
Soul Torch=
Soul Lantern=
@ -21,3 +21,8 @@ Eternal Soul Fire=
Gilded Blackstone=
Nether Gold Ore=
Smooth Basalt=
Blackstone Wall=
Double Blackstone Slab=
Polished Double Blackstone Slab=
Double Chiseled Polished Blackstone Slab=
Double Polished Blackstone Brick Slab=

View File

@ -0,0 +1,8 @@
# textdomain: mcl_blast_furnace
Inventory=Inventaire
Blast Furnace=Haut Fourneau
Smelts ores faster than furnace=fond le minerai plus vite que le fourneau
Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Utiliser le livre de recettes pour voir ce que vous pouvez fondre, ce que vous pouvez utiliser comme combustible et combien de temps ça va brûler.
Use the furnace to open the furnace menu.\nPlace a furnace fuel in the lower slot and the source material in the upper slot.\nThe furnace will slowly use its fuel to smelt the item.\nThe result will be placed into the output slot at the right side.=Utiliser le fourneau pour ouvrir le menu.\nPlacer le combustible dans la case en bas et le matériau source dans la case du haut.\nLe fourneau utilisera son combustible pour fondre lentement l'objet.\nLe résultat sera placé dans la case de sortie à droite.
Blast Furnaces smelt several items, mainly ores and armor, using a furnace fuel, into something else.=Les hauts fourneaux fondent plusieurs objets, principalement du minerai et des pièces d'armure, en quelque chose d'autre.
Active Blast Furnace=Haut Fourneau Actif

View File

@ -0,0 +1,8 @@
# textdomain: mcl_blast_furnace
Inventory=
Blast Furnace=
Smelts ores faster than furnace=
Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=
Use the furnace to open the furnace menu.\nPlace a furnace fuel in the lower slot and the source material in the upper slot.\nThe furnace will slowly use its fuel to smelt the item.\nThe result will be placed into the output slot at the right side.=
Blast Furnaces smelt several items, mainly ores and armor, using a furnace fuel, into something else.=
Active Blast Furnace=

View File

@ -1,8 +1,12 @@
local S = minetest.get_translator(minetest.get_current_modname())
local F = minetest.formspec_escape
local C = minetest.colorize
local max_text_length = 4500 -- TODO: Increase to 12800 when scroll bar was added to written book
local max_title_length = 64
local bookshelf_inv = minetest.settings:get_bool("mcl_bookshelf_inventories",true)
local header = ""
if minetest.get_modpath("mcl_init") then
header = "no_prepend[]" .. mcl_vars.gui_nonbg .. mcl_vars.gui_bg_color ..
@ -331,6 +335,76 @@ if minetest.get_modpath("mcl_sounds") then
wood_sound = mcl_sounds.node_sound_wood_defaults()
end
-- Bookshelf GUI
local drop_content = mcl_util.drop_items_from_meta_container("main")
local function on_blast(pos)
local node = minetest.get_node(pos)
drop_content(pos, node)
minetest.remove_node(pos)
end
-- Simple protection checking functions
local function protection_check_move(pos, from_list, from_index, to_list, to_index, count, player)
local name = player:get_player_name()
if minetest.is_protected(pos, name) then
minetest.record_protection_violation(pos, name)
return 0
else
return count
end
end
local function protection_check_put_take(pos, listname, index, stack, player)
local name = player:get_player_name()
if minetest.is_protected(pos, name) then
minetest.record_protection_violation(pos, name)
return 0
elseif minetest.get_item_group(stack:get_name(), "book") ~= 0 or stack:get_name() == "mcl_enchanting:book_enchanted" then
return stack:get_count()
else
return 0
end
end
local function bookshelf_gui(pos, node, clicker)
if not bookshelf_inv then return end
local name = minetest.get_meta(pos):get_string("name")
if name == "" then
name = S("Bookshelf")
end
local playername = clicker:get_player_name()
minetest.show_formspec(playername,
"mcl_books:bookshelf_"..pos.x.."_"..pos.y.."_"..pos.z,
table.concat({
"size[9,8.75]",
"label[0,0;"..F(C("#313131", name)).."]",
"list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]",
mcl_formspec.get_itemslot_bg(0, 0.5, 9, 3),
"label[0,4.0;"..F(C("#313131", S("Inventory"))).."]",
"list[current_player;main;0,4.5;9,3;9]",
mcl_formspec.get_itemslot_bg(0, 4.5, 9, 3),
"list[current_player;main;0,7.74;9,1;]",
mcl_formspec.get_itemslot_bg(0, 7.74, 9, 1),
"listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]",
"listring[current_player;main]",
})
)
end
local function close_forms(pos)
local players = minetest.get_connected_players()
local formname = "mcl_books:bookshelf_"..pos.x.."_"..pos.y.."_"..pos.z
for p = 1, #players do
if vector.distance(players[p]:get_pos(), pos) <= 30 then
minetest.close_formspec(players[p]:get_player_name(), formname)
end
end
end
-- Bookshelf
minetest.register_node("mcl_books:bookshelf", {
description = S("Bookshelf"),
@ -340,13 +414,40 @@ minetest.register_node("mcl_books:bookshelf", {
is_ground_content = false,
groups = {
handy=1, axey=1, deco_block=1, material_wood=1,
flammable=3, fire_encouragement=30, fire_flammability=20
flammable=3, fire_encouragement=30, fire_flammability=20, container=1
},
drop = "mcl_books:book 3",
sounds = wood_sound,
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("main", 9*3)
end,
after_place_node = function(pos, placer, itemstack, pointed_thing)
minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name"))
end,
allow_metadata_inventory_move = protection_check_move,
allow_metadata_inventory_take = protection_check_put_take,
allow_metadata_inventory_put = protection_check_put_take,
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 bookshelf 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 bookshelf 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 bookshelf at "..minetest.pos_to_string(pos))
end,
after_dig_node = drop_content,
on_blast = on_blast,
on_rightclick = bookshelf_gui,
on_destruct = close_forms,
})
minetest.register_craft({

View File

@ -1,6 +1,6 @@
# textdomain: mcl_books
Book=Livre
Books are used to make bookshelves and book and quills.=Les livres sont utilisés pour fabriquer des étagères et des livres et des plumes.
Books are used to make bookshelves and book and quills.=Les livres sont utilisés pour fabriquer des étagères et des livres avec unes plumes.
“@1”="@1"
Copy of “@1”=Copie de "@1"
Copy of Copy of “@1”=Copie de Copie de "@1"
@ -9,8 +9,8 @@ by @1=ar @1
# as in “to sign a book”
Sign=Signer
Done=Terminé
This item can be used to write down some notes.=Cet élément peut être utilisé pour écrire certaines notes.
Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Tenez-le dans la main, puis faites un clic droit pour lire les notes actuelles et modifiez-les ensuite. Vous pouvez modifier le texte aussi souvent que vous le souhaitez. Vous pouvez également signer le livre qui le transforme en livre écrit que vous pouvez empiler, mais il ne peut plus être édité.
This item can be used to write down some notes.=Cet élément peut être utilisé pour prendre quelques notes.
Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Tenez-le dans la main, puis faites un clic droit pour lire les notes actuelles et modifiez-les ensuite. Vous pouvez modifier le texte aussi souvent que vous le souhaitez. Vous pouvez également signer le livre ce qui le transforme en livre écrit que vous pouvez empiler, mais il ne peut plus être édité.
A book can hold up to 4500 characters. The title length is limited to 64 characters.=Un livre peut contenir jusqu'à 4500 caractères. La longueur du titre est limitée à 64 caractères.
Enter book title:=Entrez le titre du livre:
by @1=par @1
@ -21,8 +21,8 @@ Nameless Book=Livre sans nom
Written Book=Livre écrit
Written books contain some text written by someone. They can be read and copied, but not edited.=Les livres écrits contiennent du texte écrit par quelqu'un. Ils peuvent être lus et copiés, mais pas modifiés.
Hold it in your hand, then rightclick to read the book.=Tenez-le dans votre main, puis faites un clic droit pour lire le livre.
To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Pour copier le texte du livre écrit, placez-le dans la grille d'artisanat avec un livre et une plume (ou plusieurs de ceux-ci) et de l'artisanat. Le livre écrit ne sera pas consommé. Les copies de copies ne peuvent pas être copiées.
To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Pour copier le texte du livre écrit, placez-le dans la grille d'artisanat avec un livre et une plume (ou plusieurs) et récupérez le résultat. Le livre copié ne sera pas consommé. Les copies de copies ne peuvent pas être copiées.
Bookshelf=Bibliothèque
Bookshelves are used for decoration.=Les bibliothèques sont utilisées pour la décoration.
Book and Quill=Livre et Plume
Write down some notes=Notez quelques notes
Write down some notes=Prenez quelques notes

View File

@ -1,4 +1,5 @@
name = mcl_books
author = celeron55
description = Books mod for MCL2
depends = mcl_util, mcl_formspec
optional_depends = mcl_init, mcl_core, mcl_sounds, mcl_mobitems, mcl_dye, mcl_colors

View File

@ -115,6 +115,8 @@ end
function ARROW_ENTITY.on_step(self, dtime)
mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
self._time_in_air = self._time_in_air + .001

View File

@ -118,9 +118,9 @@ end
minetest.register_tool("mcl_bows:crossbow", {
description = S("Crossbow"),
_tt_help = S("Launches arrows"),
_doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n"..
_doc_items_longdesc = S("Crossbows are ranged weapons to shoot arrows at your foes.").."\n"..
S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."),
_doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."),
_doc_items_usagehelp = S("To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."),
_doc_items_durability = BOW_DURABILITY,
inventory_image = "mcl_bows_crossbow.png",
wield_scale = mcl_vars.tool_wield_scale,
@ -153,9 +153,9 @@ S("The speed and damage of the arrow increases the longer you charge. The regula
minetest.register_tool("mcl_bows:crossbow_loaded", {
description = S("Crossbow"),
_tt_help = S("Launches arrows"),
_doc_items_longdesc = S("Corssbow are ranged weapons to shoot arrows at your foes.").."\n"..
_doc_items_longdesc = S("Crossbows are ranged weapons to shoot arrows at your foes.").."\n"..
S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."),
_doc_items_usagehelp = S("To use the corssbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to load an arrow into the chamber, then to shoot press left mouse."),
_doc_items_usagehelp = S("To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to load an arrow into the chamber, then to shoot press left mouse."),
_doc_items_durability = BOW_DURABILITY,
inventory_image = "mcl_bows_crossbow_3.png",
wield_scale = mcl_vars.tool_wield_scale,

View File

@ -13,3 +13,6 @@ Ammunition=Munition
Damage from bow: 1-10=Dégâts de l'arc: 1-10
Damage from dispenser: 3=Dégâts du distributeur: 3
Launches arrows=Lance des flèches
Crossbow=Arbalète
Crossbows are ranged weapons to shoot arrows at your foes.=Les arbalètes sont des armes à distance pour tirer des flèches sur vos ennemis.
To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Pour utiliser l'arbalète, vous devez d'abord avoir au moins une flèche n'importe où dans votre inventaire (sauf en mode créatif). Maintenez enfoncé le bouton droit de la souris pour charger, relâchez pour tirer.

View File

@ -13,3 +13,6 @@ Ammunition=
Damage from bow: 1-10=
Damage from dispenser: 3=
Launches arrows=
Crossbow=
Crossbows are ranged weapons to shoot arrows at your foes.=
To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=

View File

@ -313,6 +313,8 @@ end
function ARROW_ENTITY.on_step(self, dtime)
mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
self._time_in_air = self._time_in_air + .001

View File

@ -3,7 +3,7 @@ Empty Bucket=Seau Vide
A bucket can be used to collect and release liquids.=Un seau peut être utilisé pour recueillir et libérer les liquides.
Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.=Frappez une source de liquide pour la collecter. Vous pouvez ensuite utiliser le seau rempli pour placer le liquide ailleurs.
Lava Bucket=Seau de Lave
A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli de lave chaude, contenue en toute sécurité à l'intérieur. Utiliser avec précaution.
A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli de lave chaude, contenue en toute sécurité à l'intérieur. À utiliser avec précaution.
Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!=Eloignez-vous et placez le seau pour le vider et créez une source de lave à cet endroit. Ne vous brûlez pas!
Water Bucket=Seau d'Eau
A bucket can be used to collect and release liquids. This one is filled with water.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli d'eau.
@ -15,3 +15,10 @@ Collects liquids=Collecte des liquides
Places a lava source=Place une source de lave
Places a water source=Place une source d'eau
Places a river water source=Place une source d'eau de rivière
Cod=Morue
Salmon=Saumon
Tropical Fish=Poisson Tropical
Bucket of @1=Seau de @1
This bucket is filled with water and @1.=Ce seau est rempli d'eau et de @1.
Place it to empty the bucket and place a @1. Obtain by right clicking on a @2 fish with a bucket of water.=Le placer pour vider le seau et placer un @1.
Places a water source and a @1 fish.=Placer une source d'eau et un poisson @1.

View File

@ -11,7 +11,7 @@
local S = minetest.get_translator(minetest.get_current_modname())
local campfires = {
{ name = "Campfire", lightlevel = 15, techname = "campfire", damage = 1, drops = "mcl_core:charcoal_lump 2" },
{ name = "Campfire", lightlevel = 14, techname = "campfire", damage = 1, drops = "mcl_core:charcoal_lump 2" },
{ name = "Soul Campfire", lightlevel = 10, techname = "soul_campfire", damage = 2, drops = "mcl_blackstone:soul_soil" },
}
@ -25,6 +25,7 @@ for _, campfire in pairs(campfires) do
drawtype = "mesh",
mesh = "mcl_campfires_campfire.obj",
tiles = {{name="mcl_campfires_log.png"},},
use_texture_alpha = "clip",
groups = { handy=1, axey=1, material_wood=1, not_in_creative_inventory=1, campfire=1, },
paramtype = "light",
paramtype2 = "facedir",
@ -73,6 +74,7 @@ for _, campfire in pairs(campfires) do
length=2.0
}}
},
use_texture_alpha = "clip",
groups = { handy=1, axey=1, material_wood=1, campfire=1, lit_campfire=1 },
paramtype = "light",
paramtype2 = "facedir",

View File

@ -0,0 +1,5 @@
# textdomain: mcl_campfires
Campfire=Feu de camp
Soul Campfire=Feu de camp des âmes
Cooks food and keeps bees happy.=Cuit la nourriture et garde les abeilles heureuses
Campfires have multiple uses, including keeping bees happy, cooking raw meat and fish, and as a trap.=Les feux de camp ont des usages multiples, incluant garder les abeilles heureuses, cuisiner de la viande crue et du poisson, et comme piège.

View File

@ -1,3 +1,4 @@
# textdomain: mcl_campfires
Campfire=
Soul Campfire=
Cooks food and keeps bees happy.=

View File

@ -0,0 +1,4 @@
# textdomain: mcl_cartography_table
Cartography Table=Table de Cartographie
Used to create or copy maps=Utilisée pour créer ou copier des cartes
Is used to create or copy maps for use..=Est utilisée pour créer ou copier des cartes..

View File

@ -0,0 +1,4 @@
# textdomain: mcl_cartography_table
Cartography Table=
Used to create or copy maps=
Is used to create or copy maps for use..=

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldron
# textdomain: mcl_cauldrons
Cauldron=Kessel
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kessel werden benutzt, um Wasser zu lagern, im Regen werden sie langsam aufgefüllt. Kessel können auch verwendet werden, um Banner abzuwaschen.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Platzieren Sie einen Wassereinmer in den Kessel, um ihn mit Wasser zu füllen. Platzieren Sie einen leeren Eimer auf einen vollen Kessel, um das Wasser aufzusammeln. Platzieren Sie eine Wasserflasche in den Kessel, um ihn zu einem Drittel mit Wasser zu füllen. Benutzen Sie ein bemaltes Banner auf den Kessel, um die oberste Schicht abzuwaschen.

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldron
# textdomain: mcl_cauldrons
Cauldron=Caldera
Cauldrons are used to store water and slowly fill up under rain.=Los calderos se usan para almacenar agua y llenarse lentamente bajo la lluvia.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water.=Coloque un cubo de agua en el caldero para llenarlo con agua. Coloque un cubo vacío en un caldero lleno para recuperar el agua. Coloque una botella de agua en el caldero para llenar el caldero hasta un tercio con agua. Coloque una botella de vidrio en un caldero con agua para recuperar un tercio del agua.

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldron
# textdomain: mcl_cauldrons
Cauldron=Kocioł
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kotły są wykorzystywane do przechowywania wody oraz powoli wypełniają się podczas deszczu.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Umieść wiadro wody w kotle by wypełnić go wodą. Umieść puste wiadro na pełnym kotle by odzyskać wodę. Umieść szklaną butelkę w kotle z wodą aby odzyskać jedną trzecią wody. Użyj upiększonego sztandaru na kotle z wodą aby zmyć górną warstwę.

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldron
# textdomain: mcl_cauldrons
Cauldron=鍋釜
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=鍋釜是用來儲水的,在雨水的作用下慢慢填滿。它們也可以用來清洗旗幟。
Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=將水桶放入鍋釜中,使其充滿水。將一個空桶放在裝滿水的大鍋上,以取回水。將一個水瓶放入鍋釜內,使大鍋內增加三分之一的水。將一個玻璃瓶放在有水的鍋釜裡,取回三分之一的水。在有水的鍋釜上使用印有圖案的旗幟,以洗掉其上層。

View File

@ -1,5 +1,5 @@
# textdomain: mcl_cauldron
Cauldron=Chaudrons
# textdomain: mcl_cauldrons
Cauldron=Chaudron
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Les chaudrons sont utilisés pour stocker l'eau et se remplissent lentement sous la pluie. Ils peuvent également être utilisés pour laver les bannières.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Placez une marmite d'eau dans le chaudron pour le remplir d'eau. Placez un seau vide sur un chaudron plein pour récupérer l'eau. Placez une bouteille d'eau dans le chaudron pour remplir le chaudron au tiers avec de l'eau. Placez une bouteille en verre dans un chaudron avec de l'eau pour récupérer un tiers de l'eau. Utilisez une bannière blasonnée sur un chaudron avec de l'eau pour laver sa couche supérieure.
Cauldron (1/3 Water)=Chaudron (1/3 d'eau)

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldron
# textdomain: mcl_cauldrons
Cauldron=Котёл
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Котлы используются для хранения воды и медленного наполнения под дождём. Они также могут использоваться для промывания флагов.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Попытайтесь поместить ведро воды в котёл, чтобы наполнить его водой. Попытка поместить пустое ведро приведёт к освобождению котла. Поместите в котёл бутылку воды, чтобы наполнить его на треть.

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