Compare commits

..

620 Commits

Author SHA1 Message Date
cora e80ce4b758 Merge pull request 'Fix mirrored doors placement rotation' (#2736) from fix_doors_direction into master
Reviewed-on: MineClone2/MineClone2#2736
2022-10-11 09:47:31 +00:00
cora 51e43f7efc Fix mirrored doors rotation 2022-10-11 11:46:08 +02:00
cora dc0ca59534 Merge pull request 'Add new breaking animation by FossFanatic' (#2744) from fossfan_breaking_anim into master
Reviewed-on: MineClone2/MineClone2#2744
Reviewed-by: Nicu <kneekoo@noreply.git.minetest.land>
2022-10-11 09:40:51 +00:00
FossFanatic e35e949833 Add breaking animation by FossFanatic 2022-10-11 11:40:15 +02:00
cora 0b0a48fd10 Merge pull request 'Change torch model, add soul fire flame particle texture' (#2750) from talamh/MineClone2:torch_remodel into master
Reviewed-on: MineClone2/MineClone2#2750
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-11 09:36:49 +00:00
cora 1b6df20c0c Merge pull request 'Adds some mob jockey support' (#2752) from mob_jockey into master
Reviewed-on: MineClone2/MineClone2#2752
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-11 09:30:29 +00:00
epCode 8930f9da45 fix skeleton wielditem 2022-10-10 13:54:51 -07:00
epCode aa2693795d Add Spider Jockey 2022-10-10 13:42:01 -07:00
talamh 23ec60fff0 Change torch model, add soul fire flame particle texture 2022-10-10 20:50:11 +01:00
cora fec0dae4ca Merge pull request 'Make mobs have smooth turning' (#2743) from smooth_mob_turn into master
Reviewed-on: MineClone2/MineClone2#2743
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-10 02:10:53 +00:00
epCode 8cd093afa9 adjust values 2022-10-09 18:43:41 -07:00
epCode 9cf5b2a9f6 make mobs rotate when punched 2022-10-09 18:40:41 -07:00
epCode 8a63e90e4a remove debug message 2022-10-09 18:26:20 -07:00
epCode a16e8f0403 remove all glitchy shaking 2022-10-09 17:41:50 -07:00
epCode 090c5b086a fix mobs shaking a lot 2022-10-09 17:29:28 -07:00
epCode c500dc98f9 fix only hostile mobs using smooth turning 2022-10-09 17:23:14 -07:00
epCode 4a086db4c5 get rid of unecessary "if true" statement 2022-10-10 00:09:06 +00:00
epCode ef980f2ea0 Make mobs have smooth turning 2022-10-10 00:09:06 +00:00
cora 0c21abf28a Merge pull request 'Change Achievements to Advancements, Part 1' (#2681) from advancement_mod_fixes into master
Reviewed-on: MineClone2/MineClone2#2681
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-09 23:27:38 +00:00
PrairieWind 78f1a81d1f Add Advancement Groups (Overworld, Nether, End, Adventure, Husbandry) 2022-10-10 01:10:49 +02:00
PrairieWind 0a33c5b5df Added Types of Advancements (Advancements, Goals, and Challenges) 2022-10-10 01:10:49 +02:00
PrairieWind f9f74d2af7 Changed Achievements to Advancements in player visible text. 2022-10-10 01:10:49 +02:00
cora d43494e3b7 Merge pull request 'Fix dumb mistake in creative crash fix' (#2742) from fix_creative_crash_5.6 into master
Reviewed-on: MineClone2/MineClone2#2742
2022-10-09 23:09:58 +00:00
cora 2a9d704293 Fix dumb mistake in creative crash fix 2022-10-10 01:07:11 +02:00
cora e294466029 Merge pull request 'Fix crash in 5.6 gm-creative digging' (#2734) from fix_creative_crash_5.6 into master
Reviewed-on: MineClone2/MineClone2#2734
2022-10-09 22:53:59 +00:00
cora a1919b572a Fix crash in 5.6 gm-creative digging 2022-10-10 00:52:55 +02:00
cora 24c03c2d32 Merge pull request 'Fix baby zombies being 1/4 vis_size' (#2737) from fix_baby_z_visszie into master
Reviewed-on: MineClone2/MineClone2#2737
2022-10-09 22:50:23 +00:00
cora 2fa2f7cbf9 Fix baby zombies being 1/4 vis_size 2022-10-10 00:49:01 +02:00
cora aea899a569 Merge pull request 'Check enable damage instead of creative mode when appropriate' (#2726) from enable_damage into master
Reviewed-on: MineClone2/MineClone2#2726
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-09 19:51:00 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 36427d5aef Check enable damage instead of creative mode in some cases 2022-10-09 21:45:05 +02:00
cora 3e9cb597e6 Merge pull request 'mcl_title API: enable styling' (#2730) from title-API-fixes into master
Reviewed-on: MineClone2/MineClone2#2730
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-09 19:35:48 +00:00
cora ba6dfc7368 Merge pull request 'Enable mcl_title debug code, debug priv to chatcmds' (#2735) from title-API-fixes_enable-debug into title-API-fixes
Reviewed-on: MineClone2/MineClone2#2735
2022-10-09 19:33:36 +00:00
cora 52ac8ffd43 clarify debug nature of chatcommands 2022-10-09 21:31:23 +02:00
cora 3686d9a79d Enable mcl_title debug code, debug priv to chatcmds 2022-10-08 22:56:40 +02:00
AFCMS d71d1c4b82 mcl_title API: enable styling 2022-10-08 22:46:32 +02:00
cora 0c4edbc4ac Merge pull request 'Flower pot fixes' (#2731) from flowerpot-fixes into master
Reviewed-on: MineClone2/MineClone2#2731
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-08 20:43:19 +00:00
AFCMS 5719637ee7
Flower pot fixes
- More accurate selection and collision box
-  Remove check for `minetest.features.use_texture_alpha_string_modes`
- Use new vectors
- Add some basic type annotations to API functions
2022-10-08 18:31:07 +02:00
cora 3aaf0f3e29 Merge pull request 'Add api and following mobs as starers: cow, chicken, creeper, pig, sheep, skellys. spider, villager, villager_zombie, wolf' (#2716) from new_mobs_look_at_players into master
Reviewed-on: MineClone2/MineClone2#2716
Reviewed-by: cora <cora@noreply.git.minetest.land>
Reviewed-by: 𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 <mrrar@noreply.git.minetest.land>
2022-10-07 16:45:44 +00:00
epCode 3a34773671 (+)polar_bear_head_rotation 2022-10-07 02:45:02 +00:00
epCode 5a14f385a0 (+)zombie_pigman_head_rotation 2022-10-07 02:45:02 +00:00
epCode 029638029d (+)witherskeleton_head_rotation 2022-10-07 02:45:02 +00:00
epCode 1d06ac5774 (+)parrot_head_rotation 2022-10-07 02:45:02 +00:00
epCode 9a338a0eea (+)iron_golem_head_rotation 2022-10-07 02:45:02 +00:00
epCode 30c77a3517 (+)illager_head_rotation 2022-10-07 02:45:02 +00:00
epCode 25cceb58a9 (+)blaze_head_rotation 2022-10-07 02:45:02 +00:00
epCode 8b3087c1d3 (+)rabbit_head_rotation 2022-10-07 02:45:02 +00:00
epCode 690d97bc63 (+)zombie_head_rotation 2022-10-07 02:45:02 +00:00
epCode 683d973d9f (+)Llama_head_rotation 2022-10-07 02:45:02 +00:00
epCode 99350d4dc8 (+)ocelots_head_rotation 2022-10-07 02:45:02 +00:00
epCode bc0d5de1e2 make dogs not so curious 2022-10-07 02:45:02 +00:00
epCode 5f46f9649a Make mobs not always look at you+looks at own kind 2022-10-07 02:45:01 +00:00
epCode c72b1fb9db revert to Mr. Rar's models for fertile mobs. 2022-10-07 02:45:01 +00:00
cora 609f90dd0a Use conditional set_bone_position for mob head swivel 2022-10-07 02:45:01 +00:00
cora 68d04bc4e8 move set_conditionals from mcl_playerplus to mcl_util 2022-10-07 02:45:01 +00:00
epCode 1a6698abda Add api and following mobs as starers: cow, chicken, creeper, pig, sheep, skellys. spider, villager, villager_zombie, wolf 2022-10-07 02:45:01 +00:00
cora 8893241ae9 Merge pull request 'Pull sus_stews update' (#2709) from sus_stew_allium into master
Reviewed-on: MineClone2/MineClone2#2709
2022-10-07 00:22:54 +00:00
MysticTempest 3eb2125538 Add alliums with fire_resistance, and fix eating issue. 2022-10-07 02:20:26 +02:00
chmodsayshello a1bb8812b1 add cora to authors 2022-10-07 02:20:26 +02:00
cora 3b92a5b0d2 Merge pull request 'Fix offhand hud slot incorrect scaling with non 16x texture packs' (#2725) from talamh/MineClone2:offhand_hud into master
Reviewed-on: MineClone2/MineClone2#2725
2022-10-07 00:17:18 +00:00
talamh ecd1162c2d Fix offhand hud slot incorrect scaling with non 16x texture packs 2022-10-06 21:15:15 +01:00
cora 5b3b686452 Merge pull request 'Add donkey and mule inv' (#2691) from donkey_chest into master
Reviewed-on: MineClone2/MineClone2#2691
Reviewed-by: 𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 <mrrar@noreply.git.minetest.land>
2022-10-06 19:44:35 +00:00
cora b3c34bd081 unset item list when dropping inv 2022-10-06 21:43:30 +02:00
cora d202db00b7 Fix llama and donkey/mule drops 2022-10-06 21:43:30 +02:00
cora 8d8d49c87d Add mule, document api additions 2022-10-06 21:43:30 +02:00
cora 7cabdb1707 fix donkey chest texture 2022-10-06 21:43:30 +02:00
cora 9602b564c4 Add donkey inv 2022-10-06 21:43:30 +02:00
cora 8fbb545a70 Merge pull request 'Replace bed nodeboxes with meshes' (#2722) from talamh/MineClone2:bed_mesh into master
Reviewed-on: MineClone2/MineClone2#2722
2022-10-06 19:42:36 +00:00
cora bf74e75ee5 Merge pull request 'Fix mangrove leaves dropping themselves' (#2711) from mangrove_leaves into master
Reviewed-on: MineClone2/MineClone2#2711
Reviewed-by: 𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 <mrrar@noreply.git.minetest.land>
2022-10-06 18:42:35 +00:00
cora 5a977b5b76 Fix mangrove leaves dropping themselves 2022-10-06 20:40:16 +02:00
epCode 5507f62142 Merge pull request 'fix_spider_eyes_memory_fault+die' (#2721) from fix_spider_eyes_memory_fault+die into master
Reviewed-on: MineClone2/MineClone2#2721
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-06 17:45:29 +00:00
epCode 99cc6cf307 Remove Unecessary code in spider for eye removal. 2022-10-06 19:42:29 +02:00
epCode ba383091ad fix eyes staying when mob was killed 2022-10-06 19:42:29 +02:00
epCode b4f2cb61d3 Fix Spider Segmentation fault 2022-10-06 19:42:29 +02:00
cora 9107bfa62d Merge pull request 'Fix double despawn in staticdata/activate (and resulting segfault)' (#2723) from fix_double_despawn into master
Reviewed-on: MineClone2/MineClone2#2723
2022-10-06 17:38:40 +00:00
cora d570a2dda6 Fix double despawn in staticdata/activate 2022-10-06 19:15:14 +02:00
talamh b4859b8e7c Replace bed nodeboxes with meshes 2022-10-06 17:36:51 +01:00
cora 8f5bca7506 Merge pull request 'Add basic sculk' (#2668) from sculk into master
Reviewed-on: MineClone2/MineClone2#2668
Reviewed-by: Johannes Fritz <mrrar@noreply.git.minetest.land>
2022-10-05 22:32:34 +00:00
cora a9be0f1f9d dig sculk veins by water 2022-10-06 00:31:00 +02:00
cora 751b92c3d6 Update spread_to nodes for sculk 2022-10-06 00:31:00 +02:00
cora 6ecd7cfe4c comment out sensor/shrieker code
doesn't work well enough yet
2022-10-06 00:31:00 +02:00
cora 5f559867da Add sculk sounds by thunder1035 2022-10-06 00:31:00 +02:00
cora 7b1de473c3 Clean up mcl_sculk 2022-10-06 00:31:00 +02:00
cora 256d6bded7 Add sculk veins, generate shriekers and sensors 2022-10-06 00:31:00 +02:00
cora 6da1491f14 make xp.throw_xp return the orb objects 2022-10-06 00:31:00 +02:00
cora a6021e7601 Add sculk 2022-10-06 00:31:00 +02:00
cora a2ce3e8a49 Merge pull request 'Make enderman and spider's eyes glow' (#2712) from spider_ender_eyes_glow into master
Reviewed-on: MineClone2/MineClone2#2712
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-05 22:29:36 +00:00
epCode fb878f6814 make enderman's eyes Glow 2022-10-06 00:27:31 +02:00
epCode fcd9854e7c make spider eyes Glow 2022-10-06 00:27:31 +02:00
cora cab4915056 Merge pull request 'Optimize mobs textures and villagers badges messing up non-64px textures (clean version of #2703)' (#2713) from talamh_texture_fixes into master
Reviewed-on: MineClone2/MineClone2#2713
2022-10-05 22:23:27 +00:00
talamh fb5fd6b2e9 Fix villager badges messing up non-64px textures 2022-10-06 00:20:20 +02:00
talamh ad307aa445 Optimize mobs textures with trimage 2022-10-06 00:19:53 +02:00
cora ae61c7835d Merge pull request 'Give the arrows a far less laggy look with an attached particle spawner with critical shot.' (#2710) from Arrow_visual_preformance into master
Reviewed-on: MineClone2/MineClone2#2710
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-05 00:07:12 +00:00
epCode 7e03f86b84 Give the arrows a far less laggy look with an attached particle spawner with critical shot. 2022-10-04 16:46:47 -07:00
cora 60cfbe4bfe Merge pull request 'Mob Spawn Egg Texture Updates' (#2702) from spawn_egg_texture_updates into master
Reviewed-on: MineClone2/MineClone2#2702
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-04 09:39:58 +00:00
PrairieWind 361edc5728 Update forgotten blaze egg texture definition
Sorry, forgot to do this in the main commit, I was wondering why it was throwing errors
2022-10-03 12:01:04 -06:00
PrairieWind d8e2255d76 Added egg textures to register_egg function/api 2022-10-03 11:52:22 -06:00
PrairieWind f0d5080df7 Fixed Free the End advancement icon 2022-10-03 10:31:10 -06:00
PrairieWind aeaaa45026 Merge pull request 'Remove all spawn icons and replace with 2 greyscale images' (#2698) from talamh/MineClone2:master into master
Reviewed-on: MineClone2/MineClone2#2698
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-02 23:18:17 +00:00
talamh 147b81bb4f Remove all spawn icons and replace with 2 greyscale images 2022-10-02 16:50:43 +01:00
cora 4080c4ada4 Merge pull request 'Revert llama chest model' (#2695) from llama_model into master
Reviewed-on: MineClone2/MineClone2#2695
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-10-01 21:50:29 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 ac62124708 Revert llama chest model 2022-10-01 11:24:02 -05:00
cora 3b873a89eb Merge pull request 'A couple llama fixes' (#2688) from fix_llama_player_inv into master
Reviewed-on: MineClone2/MineClone2#2688
2022-10-01 01:21:51 +00:00
cora 2b9fb5679e Merge pull request 'Fix possible crash on llama death' (#2690) from fix_llama_crash into fix_llama_player_inv
Reviewed-on: MineClone2/MineClone2#2690
2022-09-30 22:37:26 +00:00
cora 0fd1d34aa5 Fix possible crash on llama death 2022-09-30 22:36:57 +00:00
cora 0e364fc22c Fix llama inv only being accessible by owner 2022-09-30 14:12:20 +02:00
cora d666493e59 Merge pull request 'Add big head support to all babies' (#2686) from big_heads into master
Reviewed-on: MineClone2/MineClone2#2686
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-29 21:26:30 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 9a9bb7f889 Fix the evoker 2022-09-29 14:40:01 -05:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 19c0851003 Add big head support to all babies 2022-09-29 12:03:50 -05:00
cora fe075df0c3 Merge pull request 'Add llama inventories' (#2682) from llama_inv into master
Reviewed-on: MineClone2/MineClone2#2682
Reviewed-by: Johannes Fritz <mrrar@noreply.git.minetest.land>
2022-09-29 00:15:06 +00:00
cora 5765bd633b Fix mobs not dropping the entity-inv on death
on_death is not called when a mob dies for some reason
2022-09-29 02:03:46 +02:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 d209b4429b Fix my oopsie 2022-09-28 12:09:13 -05:00
cora e0ae8272b1 fix chest tex to work with carpet, add chest drop 2022-09-28 15:57:34 +00:00
cora ae71b19ede Set llama chest texture when equipping chest 2022-09-28 15:57:34 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 673f970fb3 Add chest support to llama model 2022-09-28 15:57:34 +00:00
cora 5236edbedb Fix inv-entity old on_activate arguments 2022-09-28 15:57:34 +00:00
cora 5d60bfe973 Add Llama inventories 2022-09-28 15:57:34 +00:00
cora cc4587e49c Merge pull request 'Fixed llamas spawning in the Jungle' (#2673) from llama_biomes into master
Reviewed-on: MineClone2/MineClone2#2673
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-27 09:50:58 +00:00
PrairieWind 8d939de25e Fixed llamas spawning in the Jungle
Llamas no longer spawn in the jungle
2022-09-27 11:47:53 +02:00
cora 7393c1144a Merge pull request 'Fix netherite block fortune dupe' (#2680) from fix_netherite_fortune into master
Reviewed-on: MineClone2/MineClone2#2680
2022-09-27 09:46:59 +00:00
cora 3ba5df8013 Fix netherite block fortune dupe 2022-09-27 11:45:32 +02:00
cora 5887067cb9 Merge pull request 'Fix nether and blackstone gold ore drops' (#2677) from fix_nether_gold_drops into master
Reviewed-on: MineClone2/MineClone2#2677
Reviewed-by: Johannes Fritz <mrrar@noreply.git.minetest.land>
2022-09-27 09:44:26 +00:00
cora 11f9e84622 Fix nether and blackstone gold ore drops
it needs a "fallback" drop with rarity = 1 otherwise there is a
fair chance it will drop nothing
2022-09-27 11:43:08 +02:00
cora edb41538dc Merge pull request 'Add entity inventory api (chest minecarts, chest boats)' (#2674) from entity_invs into master
Reviewed-on: MineClone2/MineClone2#2674
Reviewed-by: Johannes Fritz <mrrar@noreply.git.minetest.land>
2022-09-27 04:03:39 +00:00
cora 29d46d44af Make it possible for mods to handle inv access
i.e. ability to turn off the on_rightclick provided and call the
show_formspec function themselves
2022-09-27 05:55:18 +02:00
cora a3466a1796 Create inv only when actually used (and remove after) 2022-09-25 22:20:05 +02:00
cora e56c589a14 Add mangrove boat 2022-09-24 14:15:48 +02:00
cora eef47e508b Fix chest boat crafting recipe 2022-09-24 05:34:06 +02:00
cora 6b77163162 Make shown formspec inv size variable 2022-09-24 00:05:37 +02:00
cora e4a62fc07d Drop inv on entity death, remove on_deactivate 2022-09-23 18:17:03 +02:00
cora 4fa2d1d396 Add chest boat. Model by thunder1035 2022-09-23 17:12:10 +02:00
cora d9f820cb67 Enable chest minecarts 2022-09-23 05:43:31 +02:00
cora c4bad91b8c Add entity inventories 2022-09-23 05:42:56 +02:00
cora 85cf7fa36e Merge pull request 'Make nylium spread to netherrack using bonemeal' (#2653) from nylium_bonemeal into master
Reviewed-on: MineClone2/MineClone2#2653
2022-09-19 12:22:40 +00:00
cora 05e6afb93a Fix bonemealing of large fungi 2022-09-19 14:19:49 +02:00
cora f9372b02f6 Better bone mealing behavior 2022-09-19 14:08:54 +02:00
cora 70294d9e34 Add weeping vines 2022-09-19 14:03:32 +02:00
cora 3fc12ed946 Add plants on bonemealed nylium 2022-09-19 14:03:32 +02:00
cora f8501192e2 Make nylium spread to netherrack using bonemeal 2022-09-19 14:03:32 +02:00
cora c0a4796c0f Merge pull request 'Make the game respect mt "enable_damage" setting' (#2667) from damage_setting into master
Reviewed-on: MineClone2/MineClone2#2667
2022-09-19 12:02:50 +00:00
cora 2efcb168b2 Make the game respect mt "enable_damage" setting 2022-09-19 13:59:24 +02:00
cora 86f9d17dfb Merge pull request 'Remove 5.3 check for get_natural_light function' (#2669) from mobs_remove_5.3_light into master
Reviewed-on: MineClone2/MineClone2#2669
2022-09-19 11:58:42 +00:00
cora 9a95557ec8 Simplify within_limits function
so you don't need a cs degree to read it ^^
2022-09-19 13:56:39 +02:00
cora df8c234def Check map limits before get_natural_light 2022-09-19 13:56:39 +02:00
cora 467ecc7c58 Remove 5.3 check for get_natural_light function
as 5.3 isn't supported anymore
2022-09-19 13:56:39 +02:00
cora 8320f1f756 Merge pull request 'Enable furnace minecart crafting and creative entry.' (#2671) from furnace_minecart into master
Reviewed-on: MineClone2/MineClone2#2671
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-19 11:55:06 +00:00
PrairieWind 7451e4734f Enabled furnace minecart crafting and creative entry. 2022-09-18 13:32:45 -06:00
cora f3bee72796 Merge pull request 'Move zombie visual size update to mcl_mobs' (#2664) from mobs_visual_size into master
Reviewed-on: MineClone2/MineClone2#2664
2022-09-16 16:23:58 +00:00
cora 7f4443b76f Don't reset size for children 2022-09-16 18:22:09 +02:00
cora ed8dc1d137 Move zombie visual size update to mcl_mobs 2022-09-16 18:22:09 +02:00
cora 5a5b83399c Merge pull request 'Fix displaying model element on MT 5.4' (#2662) from skins into master
Reviewed-on: MineClone2/MineClone2#2662
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-16 16:09:38 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 f5cd23908f Fix displaying model element on MT 5.4 2022-09-16 18:09:15 +02:00
cora 28f5469989 Merge pull request 'Fix a variable typo causing problems with protection mods' (#2666) from fix_protection_mobs into master
Reviewed-on: MineClone2/MineClone2#2666
2022-09-16 13:13:25 +00:00
cora 611d8808ac Fix a variable typo causing crashes with prot. mod 2022-09-16 15:11:52 +02:00
cora 015e755401 Merge pull request 'Fix issue with wrong lighting in caves' (#2657) from fix_cave_lighting into master
Reviewed-on: MineClone2/MineClone2#2657
2022-09-16 13:10:40 +00:00
cora 642559c758 Fix issue with wrong lighting in caves 2022-09-16 15:09:32 +02:00
cora 103cde2db4 Merge pull request 'Fix invisibility potion when changing skin' (#2661) from potions into master
Reviewed-on: MineClone2/MineClone2#2661
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-15 19:50:33 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 18f8768909 Fix invisibility potion when changing skin 2022-09-15 12:04:20 -05:00
cora d91d01a67d Merge pull request 'Set version to 0.80 indev' (#2655) from 0.80-dev into master
Reviewed-on: MineClone2/MineClone2#2655
2022-09-15 01:27:39 +00:00
PrairieWind 45c7b45df9 Set version to 0.80 indev 2022-09-14 15:53:00 -06:00
cora 24ed9904e7 Merge pull request 'Release 0.79' (#2651) from release_0.79 into master
Reviewed-on: MineClone2/MineClone2#2651
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-14 21:49:22 +00:00
cora 661758040e Update credits again 2022-09-14 23:13:47 +02:00
PrairieWind 1b0d4a22c5 Changed PrarieWind to PrairieWind in Credits
Not sure who can't spell my username correctly
2022-09-14 23:11:43 +02:00
cora 2bd25537e9 set version to 0.79 2022-09-14 23:11:43 +02:00
cora 151bb34a3d Update CONTRIBUTING.md 2022-09-14 23:11:43 +02:00
cora 5d530499a4 update credits 2022-09-14 23:11:43 +02:00
cora 20ccb6d21e Merge pull request 'Grand mapgen cleanup II & End update' (#2639) from mapgen_cleanup into master
Reviewed-on: MineClone2/MineClone2#2639
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-14 21:08:40 +00:00
PrairieWind eea1695ee3 Free The End crash fix 2022-09-14 20:37:08 +00:00
PrairieWind ede968b571 Free The End Advancement 2022-09-14 20:37:08 +00:00
PrairieWind d74e61d8b2 Sky's the Limit Advancement 2022-09-14 20:37:08 +00:00
PrairieWind 644e71f0ee The End...Again... Advancement 2022-09-14 20:37:08 +00:00
PrairieWind 404f623527 The Next Generation Advancement 2022-09-14 20:37:08 +00:00
cora 4de1e4d543 Fix Structure loot generation (again) lol 2022-09-14 20:37:08 +00:00
cora 70e0d8bdfd Don't spawn the dragon in peaceful
and keep portal open
2022-09-14 20:37:08 +00:00
cora ba7f534d2f Make end island larger 2022-09-14 20:37:08 +00:00
cora 47d06ff6b9 Fix undeclared var 2022-09-14 20:37:08 +00:00
cora 78703d2baa Fix lighting issues in the end 2022-09-14 20:37:08 +00:00
cora 540bf56b91 Add logging settings for mapgen and structures
mapgen logging being default off and structure generation default
on as the latter is the far more useful of the 2 in most situations
2022-09-14 20:37:08 +00:00
cora d26793195f Beams heal the dragon 2022-09-14 20:37:08 +00:00
cora b7b19c0602 Nether portal -> struct api, add schematics 2022-09-14 20:37:08 +00:00
cora adc4e9f810 Move end gateway portal to structure api 2022-09-14 20:37:08 +00:00
cora 0d4feeffef Add more variation to jungle schematics 2022-09-14 20:37:08 +00:00
cora a3c4d915b3 Fix dragon spawning with crystals 2022-09-14 20:37:08 +00:00
cora e6707d1ef9 fix iron cage size, doubled dragon view range 2022-09-14 20:37:08 +00:00
cora 2dbb74edd2 Fix gateway portals to come out on land 2022-09-14 20:37:08 +00:00
cora ef384f7062 Make dragon spawn again, fix dragon fight 2022-09-14 20:37:07 +00:00
cora f3e40803f4 Put register_generator api in a separate file 2022-09-14 20:37:07 +00:00
cora 244dfa244e Fix barrels in woodland cabins 2022-09-14 20:37:07 +00:00
cora 8264ea804a Add iron cages to some obsidian pillars 2022-09-14 20:37:07 +00:00
cora 9d62e076a9 export xpanes.update_pane 2022-09-14 20:37:07 +00:00
cora 420401fcce Fix horrible mistake in xpanes 2022-09-14 20:37:07 +00:00
cora f753ac92ce Fix loot, elytra and shulker spawning 2022-09-14 20:37:07 +00:00
cora 86d98a9eeb add construct_nodes to structure api 2022-09-14 20:37:07 +00:00
cora b62b3296b8 Add end boats and shipwrecks 2022-09-14 20:37:07 +00:00
cora 538d900ccc Add End biomes, fix island decorations 2022-09-14 20:37:07 +00:00
cora a10ef6dc73 Disable shulker natural spawning 2022-09-14 20:37:07 +00:00
cora 2818d51aaa Implement shulker teleportation 2022-09-14 20:37:07 +00:00
cora cb3b3b92cc Immobilize shulkers 2022-09-14 20:37:07 +00:00
cora 2c7838bdf6 make the end island slightly larger
also uses the mcl_mapgen_core api now
2022-09-14 20:37:07 +00:00
cora abb6fe3564 Add End island biome at spawn, proper end island 2022-09-14 20:37:07 +00:00
cora 7d2543e03c Properly close exit portal 2022-09-14 20:37:07 +00:00
cora 48514ece5b Add End Spikes 2022-09-14 20:37:07 +00:00
cora 129dd24cc5 Fix inaccurate warning about spawn platform 2022-09-14 20:37:07 +00:00
cora 232ea1da06 Fix end lighting 2022-09-14 20:37:07 +00:00
cora 61f9a047e3 Remove unused functions 2022-09-14 20:37:07 +00:00
cora 1d942e9946 Exit portal and spawn platform -> mcl_structures 2022-09-14 20:37:07 +00:00
cora 52c4a7dc28 some refactoring 2022-09-14 20:37:07 +00:00
cora 8c2a1017c6 Spawn clay as ore 2022-09-14 20:37:07 +00:00
cora 82539acfe4 Move jungle vines to jungle tree schematics 2022-09-14 20:37:07 +00:00
cora 00c8c53a57 Enable deepslate and copper generation 2022-09-14 20:37:07 +00:00
cora b377f67214 Move v6 fixes to separate file 2022-09-14 20:37:07 +00:00
cora fc64907b15 move mapgen ores regs to separate file 2022-09-14 20:37:07 +00:00
cora 29a5d3f3af Merge pull request 'Prevent possible crashes in creative dig and place' (#2652) from fix_creative_place_crash into master
Reviewed-on: MineClone2/MineClone2#2652
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-14 20:19:16 +00:00
cora e0abc7515d Prevent possible crashes in creative dig and place 2022-09-14 14:48:42 +02:00
cora 6dfaee297d Merge pull request 'Don't subtract items when placing in gm-creative' (#2648) from creative_infiniplace into master
Reviewed-on: MineClone2/MineClone2#2648
2022-09-14 01:09:45 +00:00
cora 8fbe770cee Don't subtract items when placing in gm-creative 2022-09-14 00:52:23 +00:00
cora b45336e852 Merge pull request 'Ensure consistent return portal from nether' (#2640) from nether_portal_linking into master
Reviewed-on: MineClone2/MineClone2#2640
2022-09-13 23:37:23 +00:00
cora d97f274938 Ensure consistent return portal from nether
this saves the linked portals in the portal node meta
2022-09-13 22:16:24 +00:00
PrairieWind d3211a9085 Merge pull request 'Fix crash when shooting crystals with rocket arrow' (#2645) from fix_rocket_crystal into master
Reviewed-on: MineClone2/MineClone2#2645
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-13 17:09:26 +00:00
cora 0d354cca73 Fix crash when shooting crystals with rocket arrow 2022-09-13 17:08:57 +00:00
cora 03f5c2908f Merge pull request 'Instadig and -kill mobs in (gamemode-)creative mode' (#2646) from creative_digging into master
Reviewed-on: MineClone2/MineClone2#2646
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-13 17:07:46 +00:00
cora 20a30f9f44 Instakill mobs on punch in creative 2022-09-13 16:52:53 +00:00
cora c7045bc415 Instadig nodes on punch in (gamemode) creative 2022-09-13 16:52:53 +00:00
cora 630c2fbcef Merge pull request 'Next bunch of mob fixes' (#2637) from mob_fixes into master
Reviewed-on: MineClone2/MineClone2#2637
2022-09-13 15:55:10 +00:00
cora 8c16b8c7ee Make mob caps configurable 2022-09-13 14:18:29 +02:00
cora 87d4640ca1 mcl_mobs: actually use the localized functions
not that it actually gains *a lot*
2022-09-13 13:53:38 +02:00
cora 51e244fe35 Make logging of mob spawning configurable 2022-09-13 13:43:57 +02:00
cora 786cea122d Remove some unsused settings from mcl_mobs 2022-09-13 13:39:14 +02:00
PrairieWind 186059ae13 spawn_mob logging and pillager npc attack 2022-09-09 20:30:26 -06:00
cora 3093462ee3 Fix despawning 2022-09-10 01:56:37 +00:00
cora 97cab0d91f Use api spawn command for natural spawn 2022-09-10 01:56:37 +00:00
cora 8c3ada1e11 Fix spawn command 2022-09-10 01:56:37 +00:00
cora 6d7e583db8 Vindicators attack villagers too 2022-09-10 01:56:37 +00:00
cora f629a6ba9d Only zombies attack villagers 2022-09-10 01:56:37 +00:00
cora 4bc6210fda disable smooth rotation 2022-09-10 01:56:37 +00:00
PrairieWind 163e38eb51 Merge pull request 'Add a setting to disable swiftness effect on enchanted golden apples.' (#2636) from fix_fapples into master
Reviewed-on: MineClone2/MineClone2#2636
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-10 01:50:08 +00:00
cora 694252e153 Add a setting for fapples (fast apples) 2022-09-10 01:48:56 +00:00
cora d8c59e0e8b remove swiftness from egapps
The minetest world is already so small that you can reach world
border from spawn in about 2 hours. I think the regen and fire
resistance are  good enough to make them special.
2022-09-10 01:48:56 +00:00
cora e77e175085 Merge pull request 'Bed Fixes' (#2622) from bed_fix into master
Reviewed-on: MineClone2/MineClone2#2622
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-10 01:11:02 +00:00
cora 58a28b8d82 Fix end time of thunderstorm conversion 2022-09-10 03:07:42 +02:00
PrairieWind 920377ae44 Slightly Improved Sleep Checks 2022-09-10 03:07:41 +02:00
cora 4c5c20e514 Add documentation for mcl_beds.is_night() 2022-09-10 03:07:41 +02:00
cora 38ea214bfe optional time_of_day arg for mcl_beds.is_night() 2022-09-10 03:07:41 +02:00
cora dadb39dd92 Fix wrong time checks in mcl_beds 2022-09-10 03:07:41 +02:00
PrairieWind 847e37c81f Fixed Sleeping Times based on time and storm status 2022-09-10 03:07:41 +02:00
PrairieWind f4ac6335eb Fixed Bed Check
Checks time before distance
2022-09-10 03:07:41 +02:00
cora 6262bda3f2 Merge pull request 'Fix Parrots and Llamas attacking iron golems' (#2616) from fix_parrot_llama_golem_attacks into master
Reviewed-on: MineClone2/MineClone2#2616
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-09 20:26:39 +00:00
cora cac64f034d Fix Parrots attackig Iron Gs 2022-09-09 22:25:28 +02:00
cora 4f27942f81 Fix llamas spitting on iron G's 2022-09-09 22:25:28 +02:00
cora 9b07f3cffb Merge pull request 'Fix invisibility potion crash; alternative of: #2632' (#2634) from mrrar_invis into master
Reviewed-on: MineClone2/MineClone2#2634
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-09 20:23:23 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 3695ee2425 Fix invisibility potion crash 2022-09-08 16:45:53 -05:00
PrairieWind e5f966067c Merge pull request 'Don't spawn structure mobs in peaceful mode' (#2629) from fix_peaceful_structmobs into master
Reviewed-on: MineClone2/MineClone2#2629
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-09-07 18:03:08 +00:00
cora 9449cdfd88 Don't spawn illagers in cabins in peaceful 2022-09-07 11:58:16 +02:00
cora 89f3bb5aa6 only prevent mob spawning, not wall fixing 2022-09-07 11:58:16 +02:00
cora 962425faa5 Don't spawn structure mobs in peaceful mode 2022-09-07 11:58:16 +02:00
cora 6675f9fd40 Merge pull request 'Skins Fixes' (#2630) from skins_fixes into master
Reviewed-on: MineClone2/MineClone2#2630
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-07 09:46:18 +00:00
PrairieWind 08aa05419f Re-add gitignore file to mcl_skins 2022-09-06 19:25:58 -06:00
PrairieWind 99a3d0c290 Re add alex skin 2022-09-06 19:23:06 -06:00
cora 28417a91bf Merge pull request 'Add advanced skin customization' (#2607) from skins into master
Reviewed-on: MineClone2/MineClone2#2607
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-07 00:38:33 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 413c6292ff Add simple skins skins support 2022-09-06 12:51:43 -05:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 8e6b6393c2 Add advanced skin customization 2022-09-06 12:16:46 -05:00
cora d81d7febbf Merge pull request 'Fix 2 Enderman crashes' (#2610) from fix_endertp_crash into master
Reviewed-on: MineClone2/MineClone2#2610
2022-09-02 22:13:58 +00:00
cora 81e6734100 Fix possible crash on playerleave 2022-09-02 21:04:05 +00:00
cora 5bd4d7e6ea Fix possible crash when endermen tp away from sun 2022-09-02 21:04:05 +00:00
cora 1fbdcc7426 Merge pull request 'Fix Mob Spawn Logging' (#2619) from fix_mob_logging into master
Reviewed-on: MineClone2/MineClone2#2619
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-02 10:07:14 +00:00
PrairieWind fc362f0e9c Add Loggin Actions to mob spawning, and fixed log message for spawn egg use 2022-09-02 10:06:10 +00:00
cora e5d4e410ae Merge pull request '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.' (#2604) from FaceDeer/MineClone2:master into master
Reviewed-on: MineClone2/MineClone2#2604
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-09-02 10:02:46 +00:00
FaceDeer 9c1cc9e141 Merge pull request 'Merge master into my fork' (#2) from MineClone2/MineClone2:master into master
Reviewed-on: FaceDeer/MineClone2#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: FaceDeer/MineClone2#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
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
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 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
Sumyjkl 3c0992e58d tweaks 2022-08-03 18:41:51 +10: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
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
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
Sumyjkl 8f4388c4c8 elytra less sensitive to landing, allows entering flight without as much downward velocity 2022-08-01 17:42:43 +10:00
734 changed files with 10614 additions and 5275 deletions

View File

@ -2,7 +2,7 @@
So you want to contribute to MineClone2?
Wow, thank you! :-)
MineClone2 is maintained by Nicu and Fleckenstein. If you have any
MineClone2 is maintained by Nicu and Cora. If you have any
problems or questions, contact us (See Links section below).
You can help with MineClone2's development in many different ways,
@ -11,18 +11,9 @@ whether you're a programmer or not.
## MineClone2's development target is to...
- Crucially, create a stable, moddable, free/libre clone of Minecraft
based on the Minetest engine with polished features, usable in both
singleplayer and multiplayer. Currently, most of **Minecraft Java
Edition 1.12.2** features are already implemented and polishing existing
features are prioritized over new feature requests.
- With lessened priority yet strictly, implement features targetting
**Minecraft version 1.17 + OptiFine** (OptiFine only as far as supported
by the Minetest Engine). This means features in parity with the listed
Minecraft experiences are prioritized over those that don't fulfill this
scope.
- Optionally, create a performant experience that will run relatively
well on really low spec computers. Unfortunately, due to Minecraft's
mechanisms and Minetest engine's limitations along with a very small
playerbase on low spec computers, optimizations are hard to investigate.
singleplayer and multiplayer. Currently, a lot of Minecraft features
are already implemented.
Polishing existing features is always welcome.
## Links
* [Mesehub](https://git.minetest.land/MineClone2/MineClone2)
@ -45,8 +36,10 @@ referenced frequently because of its usefulness. As such, it is valuable
in learning how git works and its terminology. It can also help you
keeping your game updated, and easily test pull requests.
## How you can help as a non-programmer
Look at our wiki for some concrete guides:
https://git.minetest.land/MineClone2/MineClone2/wiki/
## How you can help as a non-programmer
As someone who does not know how to write programs in Lua or does not
know how to use the Minetest API, you can still help us out a lot. For
example, by opening an issue in the
@ -58,12 +51,10 @@ you can report a bug or request a feature.
discussion.
* Choose a descriptive title (e.g. not just "crash", "bug" or "question"
).
* Please write in plain, understandable English. It will be easier to
communicate.
* Please start the issue title with a capital letter.
* Always check the currently opened issues before creating a new one.
Don't report bugs that have already been reported or request features
that already have been requested.
Try not to report bugs that have already been reported or request features
that already have been requested. This can often be ambiguous though.
If in doubt open an issue!
* If you know about Minetest's inner workings, please think about
whether the bug / the feature that you are reporting / requesting is
actually an issue with Minetest itself, and if it is, head to the
@ -73,6 +64,9 @@ instead.
an issue, feel free to ask on the Discord / Matrix server or the IRC
channel.
The link to the mesehub registration page is: https://git.minetest.land/user/sign_up
(It appears to sometimes get lost on the page itsself)
### Reporting bugs
* A bug is an unintended behavior or, in the worst case, a crash.
However, it is not a bug if you believe something is missing in the
@ -111,23 +105,28 @@ would report issues will pull requests similar to when you were
reporting bugs that are the mainline (See Reporting bugs section). You
can find currently open pull requests here:
<https://git.minetest.land/MineClone2/MineClone2/pulls>. Note that pull
requests that start with a `WIP:` are not done yet, and therefore might
not work, so it's not very useful to try them out yet.
requests that start with a `WIP:` are not done yet and therefore could
still undergo substantial change. Testing these is still helpful however
because that is the reason developers put them up as WIP so other people
can have a look at the PR.
### Contributing assets
Due to license problems, MineClone2 unfortunately cannot use
Minecraft's assets, therefore we are always looking for asset
contributions. To contribute assets, it can be useful to learn git
basics and read the section for Programmers of this document, however
this is not required. It's also a good idea to join the Discord server
Due to license problems, MineClone2 cannot use Minecraft's assets,
therefore we are always looking for asset contributions.
To contribute assets, it can be useful to learn git basics and read
the section for Programmers of this document, however this is not required.
It's also a good idea to join the Discord server
(or alternatively IRC or Matrix).
#### Textures
For textures we use the Pixel Perfection texture pack. This is mostly
enough; however in some cases - e.g. for newer Minecraft features, it's
useful to have texture artists around. If you want to make such
contributions, join our Discord server. Demands for textures will be
communicated there.
For textures we use the Pixel Perfection texture pack. For older Minecraft
features that is mostly enough but a lot of the newer textures in it are
copies or slight modifications of the original MC textures so great caution
needs to be taken when using any textures coming from Minecraft texture
packs.
If you want to make such contributions, join our Discord server. Demands
for textures will be communicated there.
#### Sounds
MineClone2 currently does not have a consistent way to handle sounds.
@ -251,16 +250,25 @@ of the results)
* [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki)
(Include a link to the specific page you used)
### Stick to our guidelines
### Guidelines
#### Git Guidelines
* We use merge rather than rebase or squash merge
* We don't use git submodules.
* Your commit names should be relatively descriptive, e.g. when saying
"Fix #issueid", the commit message should also contain the title of the
issue.
* Try to keep your commits as atomic as possible (advise, but completely
optional)
* Pushing to master is disabled - don't even try it.
* Every change is tracked as a PR.
* All but the tiniest changes require at least one approval from a Developer
* To update branches we use rebase not merge (so we don't end up with
excessive git bureaucracy commits in master)
* We use merge to add the commits from a PR/branch to master
* Submodules should only be used if a) upstream is highly reliable and
b) it is 100% certain that no mcl2 specific changes to the code will be
needed (this has never been the case before, hence mcl2 is submodule free so far)
* Commit messages should be descriptive and never contain mcl2 specific
issueids - there are other projects who might use commits from mcl2 and
it will confuse their issue trackers.
* Try to group your submissions best as you can:
* Try to keep your PRs small: In some cases things reasonably be can't
split up but in general multiple small PRs are better than a big one.
* Similarly multiple small commits are better than a giant one. (use git commit -p)
#### Code Guidelines
* Each mod must provide `mod.conf`.
@ -343,36 +351,23 @@ Active and trusted contributors are often granted write access to the
MineClone2 repository.
#### Developer responsibilities
- You should not push things directly to
MineClone2 master - rather, do your work on a branch on your private
repository, then create a pull request. This way other people can review
your changes and make sure they work before they get merged.
- Merge PRs only when they have recieved the necessary feedback and have
been tested by at least two different people (including the author of
the pull request), to avoid crashes or the introduction of new bugs.
- You may also be assigned to issues or pull
requests as a developer. In this case it is your responsibility to fix
the issue / review and merge the pull request when it is ready. You can
also unassign yourself from the issue / PR if you have no time or don't
want to take care of it for some other reason. After all, everyone is a
volunteer and we can't expect you to do work that you are not interested
in. **The important thing is that you make sure to inform us if you
won't take care of something that has been assigned to you.**
- Please assign yourself to something that you want to work on to avoid
duplicate work.
- As a developer, it should be easy to reach you about your work. You
should be in at least one of the public MineClone2 discussion rooms -
preferrably Discord, but if you really don't like Discord, Matrix
or IRC are fine too.
- If you have developer privileges you can just open a new branch in the
mcl2 repository (which is preferred). From that you create a pull request.
This way other people can review your changes and make sure they work
before they get merged.
- If you do not (yet) have developer privs you do your work on a branch
on your private repository e.g. using the "fork" function on mesehub.
- Any developer is welcome to review, test and merge PRs. A PR needs
at least one approval (by someone else than the author) but the maintainers
are usually relatively quick to react to new submissions.
### Maintainer status
Maintainers carry the main responsibility for the project.
#### Maintainer responsibilities
- Making sure issues are addressed and pull requests are reviewed and
merged, by assigning either themselves or Developers to issues / PRs
merged.
- Making releases
- Making sure guidelines are kept
- Making project decisions based on community feedback
- Granting/revoking developer access
- Enforcing the code of conduct (See CODE_OF_CONDUCT.md)
@ -380,8 +375,8 @@ merged, by assigning either themselves or Developers to issues / PRs
- Resolving conflicts and problems within the community
#### Current maintainers
* Fleckenstein - responsible for gameplay review, publishing releases,
technical guidelines and issue/PR delegation
* Cora - responsible for gameplay review, publishing releases,
technical guidelines
* Nicu - responsible for community related issues
#### Release process

View File

@ -29,8 +29,10 @@
* kabou
* rudzik8
* chmodsayshello
* PrarieWind
* PrairieWind
* RandomLegoBrick
* SumianVoice
* MrRar
## Contributors
* Laurent Rocher
@ -79,6 +81,10 @@
* MrRar
* Lazerbeak12345
* mrminer
* Thunder1035
* opfromthestart
* snowyu
* FaceDeer
## MineClone5
* kay27
@ -88,7 +94,7 @@
* j45
* chmodsayshello
* 3raven
* PrarieWind
* PrairieWind
* Gustavo1
* CableGuy67
* MrRar
@ -129,6 +135,7 @@
* 4Evergreen4
* jordan4ibanez
* paramat
* cora
## 3D Models
* 22i
@ -158,6 +165,8 @@
* Marcin Serwin
* Pepebotella
* Emojigit
* snowyu
* 3raven
## Funders
* 40W

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.80 (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

@ -348,12 +348,6 @@ local function overwrite()
groups = newgroups
})
end
--
if nname ~= "ignore" and ndef.light_source == nil or ndef.light_source < 2 then
minetest.override_item(nname, {
light_source = 2
})
end
end
for tname, tdef in pairs(minetest.registered_tools) do

View File

@ -33,6 +33,8 @@ mcl_damage = {
}
}
local damage_enabled = minetest.settings:get_bool("enabled_damage",true)
function mcl_damage.register_modifier(func, priority)
table.insert(mcl_damage.modifiers, {func = func, priority = priority or 0})
end
@ -139,6 +141,7 @@ function mcl_damage.register_type(name, def)
end
minetest.register_on_player_hpchange(function(player, hp_change, mt_reason)
if not damage_enabled then return 0 end
if hp_change < 0 then
if player:get_hp() <= 0 then
return 0
@ -149,6 +152,7 @@ minetest.register_on_player_hpchange(function(player, hp_change, mt_reason)
end, true)
minetest.register_on_player_hpchange(function(player, hp_change, mt_reason)
if not damage_enabled then return 0 end
if player:get_hp() > 0 then
mt_reason.approved = true
if hp_change < 0 then
@ -161,9 +165,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

@ -162,7 +162,8 @@ end
mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border
mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit
mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 74, z = 0 }
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 64, z = 0 }
mcl_vars.mg_end_exit_portal_pos = vector.new(0, mcl_vars.mg_end_min + 71, 0)
-- Realm barrier used to safely separate the End from the void below the Overworld
mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

View File

@ -610,3 +610,95 @@ function mcl_util.get_pointed_thing(player, liquid)
end
end
end
-- This following part is 2 wrapper functions + helpers for
-- object:set_bones
-- and player:set_properties preventing them from being resent on
-- every globalstep when they have not changed.
local function roundN(n, d)
if type(n) ~= "number" then return n end
local m = 10^d
return math.floor(n * m + 0.5) / m
end
local function close_enough(a,b)
local rt=true
if type(a) == "table" and type(b) == "table" then
for k,v in pairs(a) do
if roundN(v,2) ~= roundN(b[k],2) then
rt=false
break
end
end
else
rt = roundN(a,2) == roundN(b,2)
end
return rt
end
local function props_changed(props,oldprops)
local changed=false
local p={}
for k,v in pairs(props) do
if not close_enough(v,oldprops[k]) then
p[k]=v
changed=true
end
end
return changed,p
end
--tests for roundN
local test_round1=15
local test_round2=15.00199999999
local test_round3=15.00111111
local test_round4=15.00999999
assert(roundN(test_round1,2)==roundN(test_round1,2))
assert(roundN(test_round1,2)==roundN(test_round2,2))
assert(roundN(test_round1,2)==roundN(test_round3,2))
assert(roundN(test_round1,2)~=roundN(test_round4,2))
-- tests for close_enough
local test_cb = {-0.35,0,-0.35,0.35,0.8,0.35} --collisionboxes
local test_cb_close = {-0.351213,0,-0.35,0.35,0.8,0.351212}
local test_cb_diff = {-0.35,0,-1.35,0.35,0.8,0.35}
local test_eh = 1.65 --eye height
local test_eh_close = 1.65123123
local test_eh_diff = 1.35
local test_nt = { r = 225, b = 225, a = 225, g = 225 } --nametag
local test_nt_diff = { r = 225, b = 225, a = 0, g = 225 }
assert(close_enough(test_cb,test_cb_close))
assert(not close_enough(test_cb,test_cb_diff))
assert(close_enough(test_eh,test_eh_close))
assert(not close_enough(test_eh,test_eh_diff))
assert(not close_enough(test_nt,test_nt_diff)) --no floats involved here
--tests for properties_changed
local test_properties_set1={collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 0.65, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}
local test_properties_set2={collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 1.35, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}
local test_p1,_=props_changed(test_properties_set1,test_properties_set1)
local test_p2,_=props_changed(test_properties_set1,test_properties_set2)
assert(not test_p1)
assert(test_p2)
function mcl_util.set_properties(obj,props)
local changed,p=props_changed(props,obj:get_properties())
if changed then
obj:set_properties(p)
end
end
function mcl_util.set_bone_position(obj,b,p,r) --bone,position,rotation
local oldp,oldr=obj:get_bone_position(b)
if vector.equals(vector.round(oldp),vector.round(p)) and vector.equals(vector.round(oldr),vector.round(r)) then
return
end
obj:set_bone_position(b,p,r)
end

View File

@ -24,6 +24,10 @@ 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
@ -218,6 +222,10 @@ function boat.on_step(self, dtime, moveresult)
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
@ -405,13 +413,21 @@ end
-- Register one entity for all boat types
minetest.register_entity("mcl_boats:boat", boat)
local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak", "boat_obsidian" }
local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat"), S("Obsidian Boat") }
local cboat = table.copy(boat)
cboat.mesh = "mcl_boats_boat_with_chest.b3d"
cboat.textures = {"mcl_boats_texture_oak_chest_boat.png", "mcl_boats_texture_oak_chest_boat.png", "mcl_boats_texture_oak_chest_boat.png", "mcl_boats_texture_oak_chest_boat.png", "mcl_boats_texture_oak_chest_boat.png"}
cboat._itemstring = "mcl_boats:chest_boat"
minetest.register_entity("mcl_boats:chest_boat", cboat)
mcl_entity_invs.register_inv("mcl_boats:chest_boat","Boat",27)
local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak", "boat_obsidian", "boat_mangrove", "chest_boat", "chest_boat_spruce", "chest_boat_birch", "chest_boat_jungle", "chest_boat_acacia", "chest_boat_dark_oak", "chest_boat_mangrove" }
local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat"), S("Obsidian Boat"), S("Mangrove Boat"), S("Oak Chest Boat"), S("Spruce Chest Boat"), S("Birch Chest Boat"), S("Jungle Chest Boat"), S("Acacia Chest Boat"), S("Dark Oak Chest Boat"), S("Mangrove Chest Boat") }
local craftstuffs = {}
if minetest.get_modpath("mcl_core") then
craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood", "mcl_core:obsidian" }
craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood", "mcl_core:obsidian", "mcl_mangrove:mangrove_wood" }
end
local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak", "obsidian" }
local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak", "obsidian", "mangrove", "oak_chest", "spruce_chest", "birch_chest", "jungle_chest", "acacia_chest", "dark_oak_chest", "mangrove_chest" }
for b=1, #boat_ids do
local itemstring = "mcl_boats:"..boat_ids[b]
@ -461,7 +477,11 @@ for b=1, #boat_ids do
else
pos = vector.add(pos, vector.multiply(dir, boat_y_offset_ground))
end
local boat = minetest.add_entity(pos, "mcl_boats:boat")
local boat_ent = "mcl_boats:boat"
if itemstring:find("chest") then
boat_ent = "mcl_boats:chest_boat"
end
local boat = minetest.add_entity(pos, boat_ent)
local texture = "mcl_boats_texture_"..images[b].."_boat.png"
boat:get_luaentity()._itemstring = itemstring
boat:set_properties({textures = { texture, texture, texture, texture, texture }})
@ -484,13 +504,22 @@ for b=1, #boat_ids do
})
local c = craftstuffs[b]
minetest.register_craft({
output = itemstring,
recipe = {
{c, "", c},
{c, c, c},
},
})
if not itemstring:find("chest") then
minetest.register_craft({
output = itemstring:gsub(":boat",":chest_boat"),
recipe = {
{"mcl_chests:chest"},
{itemstring},
},
})
minetest.register_craft({
output = itemstring,
recipe = {
{c, "", c},
{c, c, c},
},
})
end
end
minetest.register_craft({

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,7 +1,5 @@
name = mcl_boats
author = PilzAdam
description = Adds drivable boats.
depends = mcl_player, flowlib, mcl_title
depends = mcl_player, flowlib, mcl_title, mcl_entity_invs
optional_depends = mcl_core, doc_identifier

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,3 +1,5 @@
local enable_damage = minetest.settings:get_bool("enable_damage")
function mcl_burning.get_storage(obj)
return obj:is_player() and mcl_burning.storage[obj] or obj:get_luaentity()
end
@ -77,7 +79,7 @@ end
-- The effective burn duration is modified by obj's armor protection.
-- If obj was already burning, its burn duration is updated if the current
-- duration is less than burn_time.
-- If obj is dead, fireproof or a creative player, this function does nothing.
-- If obj is dead, fireproof or enable_damage is disabled, this function does nothing.
--
function mcl_burning.set_on_fire(obj, burn_time)
if obj:get_hp() < 0 then
@ -89,8 +91,9 @@ function mcl_burning.set_on_fire(obj, burn_time)
return
end
if obj:is_player() and minetest.is_creative_enabled(obj:get_player_name()) then
if obj:is_player() and not enable_damage then
burn_time = 0
return
else
local max_fire_prot_lvl = 0
local inv = mcl_util.get_inventory(obj)

View File

@ -0,0 +1,13 @@
mcl_entity_invs
===============
Inventories for your entities. It's simple. Depend on mcl_entity_invs and register your entity like so:
* mcl_entity_invs.register_inv("entity:name","Title shown in formspec",inventory_size,disable_on_righclick)
*If disable_on_righclick is true other mods can handle when to show the inventory themselves
* The inventory size can be set dynamically by initializing it with an explicit nil
* mcl_entity_invs.show_inv_form(entity,clicker,[formspec text])
* formspec_text is an additional text that is put after the title
It works by setting up a detached inventory per entity which is accessed by an id/hash generated from the entities position at creation, the progressed gametime at creation and a random salt.

View File

@ -0,0 +1,170 @@
mcl_entity_invs = {}
local open_invs = {}
local function check_distance(inv,player,count)
for _,o in pairs(minetest.get_objects_inside_radius(player:get_pos(),5)) do
local l = o:get_luaentity()
if l and l._inv_id and inv:get_location().name == l._inv_id then return count end
end
return 0
end
local inv_callbacks = {
allow_take = function(inv, listname, index, stack, player)
return check_distance(inv,player,stack:get_count())
end,
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
return check_distance(inv,player,count)
end,
allow_put = function(inv, listname, index, stack, player)
return check_distance(inv,player,stack:get_count())
end,
}
local function load_inv(ent,size)
if not ent._inv_id then return end
local inv = minetest.get_inventory({type="detached", name=ent._inv_id})
if not inv then
inv = minetest.create_detached_inventory(ent._inv_id, inv_callbacks)
inv:set_size("main", size)
if ent._items then
inv:set_list("main",ent._items)
end
end
return inv
end
local function save_inv(ent)
if ent._inv then
ent._items = {}
for i,it in ipairs(ent._inv:get_list("main")) do
ent._items[i] = it:to_string()
end
minetest.remove_detached_inventory(ent._inv_id)
ent._inv = nil
end
end
function mcl_entity_invs.show_inv_form(ent,player,text)
if not ent._inv_id then return end
if not open_invs[ent] then
open_invs[ent] = 0
end
text = text or ""
ent._inv = load_inv(ent,ent._inv_size)
open_invs[ent] = open_invs[ent] + 1
local playername = player:get_player_name()
local rows = 3
local cols = (math.ceil(ent._inv_size/rows))
local spacing = (9 - cols) / 2
local formspec = "size[9,8.75]"
.. "label[0,0;" .. minetest.formspec_escape(
minetest.colorize("#313131", ent._inv_title .. " ".. text)) .. "]"
.. "list[detached:"..ent._inv_id..";main;"..spacing..",0.5;"..cols..","..rows..";]"
.. mcl_formspec.get_itemslot_bg(spacing,0.5,cols,rows)
.. "label[0,4.0;" .. minetest.formspec_escape(
minetest.colorize("#313131", "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[detached:"..ent._inv_id..";main]"
.. "listring[current_player;main]"
minetest.show_formspec(playername,ent._inv_id,formspec)
end
local function drop_inv(ent)
if not ent._items then return end
local pos = ent.object:get_pos()
for i,it in pairs(ent._items) do
local p = vector.add(pos,vector.new(math.random() - 0.5, math.random()-0.5, math.random()-0.5))
minetest.add_item(p,it)
end
ent._items = nil
end
local function on_remove(self,killer,oldf)
save_inv(self)
drop_inv(self)
if oldf then return oldf(self,killer) end
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
for k,v in pairs(open_invs) do
if formname == k._inv_id then
open_invs[k] = open_invs[k] - 1
if open_invs[k] < 1 then
save_inv(k)
open_invs[k] = nil
end
end
end
end)
function mcl_entity_invs.register_inv(entity_name,show_name,size,no_on_righclick)
assert(minetest.registered_entities[entity_name],"mcl_entity_invs.register_inv called with invalid entity: "..tostring(entity_name))
minetest.registered_entities[entity_name]._inv_size = size
minetest.registered_entities[entity_name]._inv_title = show_name
local old_oa = minetest.registered_entities[entity_name].on_activate
minetest.registered_entities[entity_name].on_activate = function(self,staticdata,dtime_s)
local r
if old_oa then r=old_oa(self,staticdata,dtime_s) end
local d = minetest.deserialize(staticdata)
if type(d) == "table" and d._inv_id then
self._inv_id = d._inv_id
self._items = d._items
self._inv_size = d._inv_size
else
self._inv_id="entity_inv_"..minetest.sha1(minetest.get_gametime()..minetest.pos_to_string(self.object:get_pos())..tostring(math.random()))
--gametime and position for collision safety and math.random salt to protect against position brute-force
end
return r
end
if not no_on_righclick then
local old_rc = minetest.registered_entities[entity_name].on_rightclick
minetest.registered_entities[entity_name].on_rightclick = function(self,clicker)
mcl_entity_invs.show_inv_form(self,clicker,show_name)
if old_rc then return old_rc(self,clicker) end
end
end
local old_gsd = minetest.registered_entities[entity_name].get_staticdata
minetest.registered_entities[entity_name].get_staticdata = function(self)
local old_sd = old_gsd(self)
local d = minetest.deserialize(old_sd)
assert(type(d) == "table","mcl_entity_invs currently only works with entities that return a (serialized) table in get_staticdata. "..tostring(self.name).." returned: "..tostring(old_sd))
d._inv_id = self._inv_id
d._inv_size = self._inv_size
d._items = {}
if self._items then
for i,it in ipairs(self._items) do
d._items[i] = it
end
end
return minetest.serialize(d)
end
local old_ode = minetest.registered_entities[entity_name].on_deactivate
minetest.registered_entities[entity_name].on_deactivate = function(self,removal)
save_inv(self)
if removal then
on_remove(self)
end
if old_ode then return old_ode(self,removal) end
end
local old_od = minetest.registered_entities[entity_name].on_death
minetest.registered_entities[entity_name].on_death = function(self,killer)
if not self.is_mob then
on_remove(self,killer,old_od)
end
end
local old_odi = minetest.registered_entities[entity_name].on_die
minetest.registered_entities[entity_name].on_die = function(self,killer)
if self.is_mob then
on_remove(self,killer,old_od)
end
end
end

View File

@ -0,0 +1,3 @@
name = mcl_entity_invs
author = cora
depends = mcl_formspec

View File

@ -61,6 +61,8 @@ mcl_item_entity.register_pickup_achievement("mcl_mobitems:leather", "mcl:killCow
mcl_item_entity.register_pickup_achievement("mcl_core:diamond", "mcl:diamonds")
mcl_item_entity.register_pickup_achievement("mcl_core:crying_obsidian", "mcl:whosCuttingOnions")
mcl_item_entity.register_pickup_achievement("mcl_nether:ancient_debris", "mcl:hiddenInTheDepths")
mcl_item_entity.register_pickup_achievement("mcl_end:dragon_egg", "mcl:PickUpDragonEgg")
mcl_item_entity.register_pickup_achievement("mcl_armor:elytra", "mcl:skysTheLimit")
local function check_pickup_achievements(object, player)
if has_awards then
@ -847,16 +849,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

@ -677,7 +677,8 @@ register_minecart(
{ "mcl_chests_normal.png", "mcl_minecarts_minecart.png" },
"mcl_minecarts_minecart_chest.png",
{"mcl_minecarts:minecart", "mcl_chests:chest"},
nil, nil, false)
nil, nil, true)
mcl_entity_invs.register_inv("mcl_minecarts:chest_minecart","Minecart",27)
-- Minecart with Furnace
register_minecart(
@ -730,7 +731,7 @@ register_minecart(
"mcl_minecarts_minecart.png",
}})
end
end, nil, false
end, nil, true
)
-- Minecart with Command Block
@ -830,8 +831,7 @@ minetest.register_craft({
},
})
-- TODO: Re-enable crafting of special minecarts when they have been implemented
--[[minetest.register_craft({
minetest.register_craft({
output = "mcl_minecarts:furnace_minecart",
recipe = {
{"mcl_furnaces:furnace"},
@ -839,13 +839,16 @@ minetest.register_craft({
},
})
minetest.register_craft({
-- TODO: Re-enable crafting of special minecarts when they have been implemented
--[[minetest.register_craft({
output = "mcl_minecarts:hopper_minecart",
recipe = {
{"mcl_hoppers:hopper"},
{"mcl_minecarts:minecart"},
},
})
--]]
minetest.register_craft({
output = "mcl_minecarts:chest_minecart",
@ -853,7 +856,7 @@ minetest.register_craft({
{"mcl_chests:chest"},
{"mcl_minecarts:minecart"},
},
})]]
})
if has_mcl_wip 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

@ -1,6 +1,5 @@
name = mcl_minecarts
author = Krock
description = Minecarts are vehicles to move players quickly on rails.
depends = mcl_title, mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons
depends = mcl_title, mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons, mcl_entity_invs
optional_depends = doc_identifier, mcl_wip

View File

@ -1,4 +1,3 @@
-- API for Mobs Redo: MineClone 2 Edition (MRM)
mcl_mobs = {}
@ -14,15 +13,32 @@ local FLOP_HOR_SPEED = 1.5
local ENTITY_CRAMMING_MAX = 24
local CRAMMING_DAMAGE = 3
local MOB_CAP = {}
MOB_CAP.hostile = 70
MOB_CAP.passive = 10
MOB_CAP.ambient = 15
MOB_CAP.water = 15
-- Localize
local S = minetest.get_translator("mcl_mobs")
local function shortest_term_of_yaw_rotatoin(self, rot_origin, rot_target, nums)
if not rot_origin or not rot_target then
return
end
rot_origin = math.deg(rot_origin)
rot_target = math.deg(rot_target)
if math.abs(rot_target - rot_origin) < 180 then
return rot_target - rot_origin
else
if (rot_target - rot_origin) > 0 then
return 360-(rot_target - rot_origin)
else
return (rot_target - rot_origin)+360
end
end
end
-- Invisibility mod check
mcl_mobs.invis = {}
@ -36,6 +52,7 @@ local max = math.max
local atann = math.atan
local random = math.random
local floor = math.floor
local ceil = math.ceil
local atan = function(x)
if not x or x ~= x then
@ -45,7 +62,6 @@ local atan = function(x)
end
end
-- Load settings
local damage_enabled = minetest.settings:get_bool("enable_damage")
local disable_blood = minetest.settings:get_bool("mobs_disable_blood")
@ -55,11 +71,10 @@ local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= fa
local remove_far = true
local difficulty = tonumber(minetest.settings:get("mob_difficulty")) or 1.0
local show_health = false
local max_per_block = tonumber(minetest.settings:get("max_objects_per_block") or 64)
local mobs_spawn_chance = tonumber(minetest.settings:get("mobs_spawn_chance") or 2.5)
-- Shows helpful debug info above each mob
local mobs_debug = minetest.settings:get_bool("mobs_debug", false)
local spawn_logging = minetest.settings:get_bool("mcl_logging_mobs_spawn",true)
-- Peaceful mode message so players will know there are no monsters
if minetest.settings:get_bool("only_peaceful_mobs", false) then
@ -69,6 +84,13 @@ if minetest.settings:get_bool("only_peaceful_mobs", false) then
end)
end
local function dir_to_pitch(dir)
--local dir2 = vector.normalize(dir)
local xz = math.abs(dir.x) + math.abs(dir.z)
return -math.atan2(-dir.y, xz)
end
-- pathfinding settings
local enable_pathfinding = true
local stuck_timeout = 3 -- how long before mob gets stuck in place and starts searching
@ -155,7 +177,7 @@ local mob_sound = function(self, soundname, is_opinion, fixed_pitch)
pitch = base_pitch
end
-- randomize the pitch a bit
pitch = pitch + math.random(-10, 10) * 0.005
pitch = pitch + random(-10, 10) * 0.005
end
minetest.sound_play(sound, {
object = self.object,
@ -213,11 +235,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 +276,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
@ -286,7 +310,7 @@ local function update_roll(self)
local cbox = table.copy(self.collisionbox)
local acbox = self.object:get_properties().collisionbox
if math.abs(cbox[2] - acbox[2]) > 0.1 then
if abs(cbox[2] - acbox[2]) > 0.1 then
was_Fleckenstein = true
end
@ -308,19 +332,57 @@ local function update_roll(self)
end
-- set and return valid yaw
local set_yaw = function(self, yaw, delay, dtime)
if not yaw or yaw ~= yaw then
yaw = 0
if self.noyaw then return end
if self._kb_turn then
self._turn_to = yaw
end
--clamp our yaw to a 360 range
if math.deg(self.object:get_yaw()) > 360 then
self.object:set_yaw(math.rad(10))
elseif math.deg(self.object:get_yaw()) < 0 then
self.object:set_yaw(math.rad(350))
end
--calculate the shortest way to turn to find our target
local target_shortest_path = shortest_term_of_yaw_rotatoin(self, self.object:get_yaw(), yaw, true)
--turn in the shortest path possible toward our target. if we are attacking, don't dance.
if math.abs(target_shortest_path) > 100 and (self.attack and self.attack:get_pos() or self.following and self.following:get_pos()) then
if self.following then
target_shortest_path = shortest_term_of_yaw_rotatoin(self, self.object:get_yaw(), minetest.dir_to_yaw(vector.direction(self.object:get_pos(), self.following:get_pos())), true)
else
target_shortest_path = shortest_term_of_yaw_rotatoin(self, self.object:get_yaw(), minetest.dir_to_yaw(vector.direction(self.object:get_pos(), self.attack:get_pos())), true)
end
end
local ddtime = 0.05 --set_tick_rate
if dtime then
ddtime = dtime
end
if math.abs(target_shortest_path) > 280*ddtime then
if target_shortest_path > 0 then
self.object:set_yaw(self.object:get_yaw()+3.6*ddtime)
else
self.object:set_yaw(self.object:get_yaw()-3.6*ddtime)
end
end
delay = delay or 0
yaw = self.object:get_yaw()
if delay == 0 then
if self.shaking and dtime then
yaw = yaw + (math.random() * 2 - 1) * 5 * dtime
yaw = yaw + (random() * 2 - 1) * 5 * dtime
end
self.object:set_yaw(yaw)
update_roll(self)
return yaw
end
@ -405,17 +467,21 @@ local set_animation = function(self, anim, fixed_frame)
return
end
if self.jockey then
anim = "jockey"
end
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
@ -587,7 +653,7 @@ local damage_effect = function(self, damage)
-- damage particles
if (not disable_blood) and damage > 0 then
local amount_large = math.floor(damage / 2)
local amount_large = floor(damage / 2)
local amount_small = damage % 2
local pos = self.object:get_pos()
@ -713,7 +779,7 @@ local item_drop = function(self, cooked, looting_level)
end
if do_common_looting then
num = num + math.floor(math.random(0, looting_level) + 0.5)
num = num + floor(random(0, looting_level) + 0.5)
end
if num > 0 then
@ -822,7 +888,7 @@ local check_for_death = function(self, cause, cmi_cause)
item_drop(self, cooked, looting)
if ((not self.child) or self.type ~= "animal") and (minetest.get_us_time() - self.xp_timestamp <= 5000000) then
mcl_experience.throw_xp(self.object:get_pos(), math.random(self.xp_min, self.xp_max))
mcl_experience.throw_xp(self.object:get_pos(), random(self.xp_min, self.xp_max))
end
end
end
@ -915,23 +981,21 @@ end
-- check if within physical map limits (-30911 to 30927)
local within_limits, wmin, wmax = nil, -30913, 30928
within_limits = function(pos, radius)
local function within_limits(pos, radius)
local wmin, wmax = -30912, 30928
if mcl_vars then
if mcl_vars.mapgen_edge_min and mcl_vars.mapgen_edge_max then
wmin, wmax = mcl_vars.mapgen_edge_min, mcl_vars.mapgen_edge_max
within_limits = function(pos, radius)
return pos
and (pos.x - radius) > wmin and (pos.x + radius) < wmax
and (pos.y - radius) > wmin and (pos.y + radius) < wmax
and (pos.z - radius) > wmin and (pos.z + radius) < wmax
end
end
end
return pos
and (pos.x - radius) > wmin and (pos.x + radius) < wmax
and (pos.y - radius) > wmin and (pos.y + radius) < wmax
and (pos.z - radius) > wmin and (pos.z + radius) < wmax
if radius then
wmin = wmin - radius
wmax = wmax + radius
end
for _,v in pairs(pos) do
if v < wmin or v > wmax then return false end
end
return true
end
@ -1025,15 +1089,6 @@ local node_ok = function(pos, fallback)
return minetest.registered_nodes[fallback]
end
local function get_light(pos, tod)
if minetest.get_node_or_nil(pos) then
local lightfunc = minetest.get_natural_light or minetest.get_node_light
return lightfunc(pos, tod)
else
return 0
end
end
-- environmental damage (water, lava, fire, light etc.)
local do_env_damage = function(self)
@ -1076,9 +1131,10 @@ local do_env_damage = function(self)
end
end
-- Use get_node_light for Minetest version 5.3 where get_natural_light
-- does not exist yet.
local sunlight = get_light(pos, self.time_of_day)
local sunlight = 10
if within_limits(pos,0) then
sunlight = minetest.get_natural_light(pos, self.time_of_day)
end
-- bright light harms mob
if self.light_damage ~= 0 and (sunlight or 0) > 12 then
@ -1203,7 +1259,7 @@ local do_env_damage = function(self)
end
if drowning then
self.breath = math.max(0, self.breath - 1)
self.breath = max(0, self.breath - 1)
effect(pos, 2, "bubble.png", nil, nil, 1, nil)
if self.breath <= 0 then
@ -1221,7 +1277,7 @@ local do_env_damage = function(self)
return true
end
else
self.breath = math.min(self.breath_max, self.breath + 1)
self.breath = min(self.breath_max, self.breath + 1)
end
end
@ -1469,6 +1525,11 @@ local breed = function(self)
z = 0
})
end
self.animation = nil
local anim = self._current_animation
self._current_animation = nil -- Mobs Redo does nothing otherwise
mcl_mobs.set_animation(self, anim)
end
return
@ -1547,7 +1608,7 @@ local breed = function(self)
return
end
mcl_experience.throw_xp(pos, math.random(1, 7))
mcl_experience.throw_xp(pos, random(1, 7))
-- custom breed function
if parent1.on_breed then
@ -1563,7 +1624,7 @@ local breed = function(self)
-- Use texture of one of the parents
local p = math.random(1, 2)
local p = random(1, 2)
if p == 1 then
ent_c.base_texture = parent1.base_texture
else
@ -1725,7 +1786,7 @@ local smart_mobs = function(self, s, p, dist, dtime)
end, self)
end
if math.abs(vector.subtract(s,target_pos).y) > self.stepheight then
if abs(vector.subtract(s,target_pos).y) > self.stepheight then
if height_switcher then
use_pathfind = true
@ -1766,7 +1827,7 @@ local smart_mobs = function(self, s, p, dist, dtime)
if self.fear_height ~= 0 then dropheight = self.fear_height end
local jumpheight = 0
if self.jump and self.jump_height >= 4 then
jumpheight = math.min(math.ceil(self.jump_height / 4), 4)
jumpheight = min(ceil(self.jump_height / 4), 4)
elseif self.stepheight > 0.5 then
jumpheight = 1
end
@ -1797,7 +1858,7 @@ local smart_mobs = function(self, s, p, dist, dtime)
end
end
local sheight = math.ceil(self.collisionbox[5]) + 1
local sheight = ceil(self.collisionbox[5]) + 1
-- assume mob is 2 blocks high so it digs above its head
s.y = s.y + sheight
@ -1908,7 +1969,6 @@ end
-- find someone to attack
local monster_attack = function(self)
if not damage_enabled
or minetest.is_creative_enabled("")
or self.passive ~= false
or self.state == "attack"
or day_docile(self) then
@ -1944,7 +2004,7 @@ local monster_attack = function(self)
-- find specific mob to attack, failing that attack player/npc/animal
if specific_attack(self.specific_attack, name)
and (type == "player" or type == "npc"
and (type == "player" or ( type == "npc" and self.attack_npcs )
or (type == "animal" and self.attack_animals == true)) then
p = player:get_pos()
@ -2235,9 +2295,9 @@ local follow_flop = function(self)
if sdef and sdef.walkable then
mob_sound(self, "flop")
self.object:set_velocity({
x = math.random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED),
x = random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED),
y = FLOP_HEIGHT,
z = math.random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED),
z = random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED),
})
end
@ -2292,8 +2352,8 @@ local function go_to_pos(entity,b)
return true
end
local v = { x = b.x - s.x, z = b.z - s.z }
local yaw = (math.atan(v.z / v.x) + math.pi / 2) - entity.rotate
if b.x > s.x then yaw = yaw + math.pi end
local yaw = (atann(v.z / v.x) + pi / 2) - entity.rotate
if b.x > s.x then yaw = yaw + pi end
entity.object:set_yaw(yaw)
set_velocity(entity,entity.follow_velocity)
mcl_mobs:set_animation(entity, "walk")
@ -3002,6 +3062,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
@ -3150,6 +3211,10 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
return
end
if minetest.is_creative_enabled(hitter:get_player_name()) then
self.health = 0
end
-- set/update 'drop xp' timestamp if hitted by player
self.xp_timestamp = minetest.get_us_time()
end
@ -3305,6 +3370,13 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
elseif luaentity and luaentity._knockback then
kb = kb + luaentity._knockback
end
--self._kb_turn = false
self._turn_to=self.object:get_yaw()+0.85
minetest.after(0.2, function()
if self and self.object then
self._kb_turn = true
end
end)
self.object:set_velocity({
x = dir.x * kb,
@ -3391,6 +3463,11 @@ end
local mob_detach_child = function(self, child)
if self.detach_child then
if self.detach_child(self, child) then
return
end
end
if self.driver == child then
self.driver = nil
end
@ -3400,21 +3477,20 @@ end
-- get entity staticdata
local mob_staticdata = function(self)
--[[
-- remove mob when out of range unless tamed
if remove_far
and self.can_despawn
and self.remove_ok
and ((not self.nametag) or (self.nametag == ""))
and self.lifetimer <= 20 then
if spawn_logging then
minetest.log("action", "[mcl_mobs] Mob "..tostring(self.name).." despawns in mob_staticdata at "..minetest.pos_to_string(vector.round(self.object:get_pos())))
end
minetest.log("action", "Mob "..name.." despawns in mob_staticdata at "..minetest.pos_to_string(self.object.get_pos(), 1))
mcl_burning.extinguish(self.object)
self.object:remove()
return ""-- nil
return "remove"-- nil
end
--]]
self.remove_ok = true
self.attack = nil
self.following = nil
@ -3440,13 +3516,16 @@ end
-- activate mob and reload settings
local mob_activate = function(self, staticdata, def, dtime)
if not self.object:get_pos() or staticdata == "remove" then
mcl_burning.extinguish(self.object)
self.object:remove()
return
end
-- remove monsters in peaceful mode
if self.type == "monster"
and minetest.settings:get_bool("only_peaceful_mobs", false) then
mcl_burning.extinguish(self.object)
self.object:remove()
return
end
@ -3467,7 +3546,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[random(c)]
self.base_mesh = def.mesh
self.base_size = self.visual_size
self.base_colbox = self.collisionbox
@ -3579,11 +3661,23 @@ local mob_activate = function(self, staticdata, def, dtime)
if not self.nametag then
self.nametag = def.nametag
end
if not self.custom_visual_size then
-- Remove saved visual_size on old existing entites.
self.visual_size = nil
self.base_size = self.visual_size
if self.child then
self.visual_size = {
x = self.visual_size.x * 0.5,
y = self.visual_size.y * 0.5,
}
end
end
-- set anything changed above
self.object:set_properties(self)
set_yaw(self, (random(0, 360) - 180) / 180 * pi, 6)
update_tag(self)
self._current_animation = nil
set_animation(self, "stand")
-- run on_spawn function if found
@ -3614,6 +3708,7 @@ end
-- main mob function
local mob_step = function(self, dtime)
self.lifetimer = self.lifetimer - dtime
check_item_pickup(self)
check_aggro(self,dtime)
if not self.fire_resistant then
@ -3645,6 +3740,9 @@ local mob_step = function(self, dtime)
end
-- smooth rotation by ThomasMonroe314
if self._turn_to then
set_yaw(self, self._turn_to, .1)
end
if self.delay and self.delay > 0 then
@ -3680,7 +3778,7 @@ local mob_step = function(self, dtime)
self.delay = self.delay - 1
if self.shaking then
yaw = yaw + (math.random() * 2 - 1) * 5 * dtime
yaw = yaw + (random() * 2 - 1) * 5 * dtime
end
self.object:set_yaw(yaw)
update_roll(self)
@ -3688,6 +3786,66 @@ local mob_step = function(self, dtime)
-- end rotation
if self.head_swivel and type(self.head_swivel) == "string" then
local oldp,oldr = self.object:get_bone_position(self.head_swivel)
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 10)) do
if obj:is_player() and not self.attack or obj:get_luaentity() and obj:get_luaentity().name == self.name and self ~= obj:get_luaentity() then
if not self._locked_object then
if math.random(5000/self.curiosity) == 1 then
self._locked_object = obj
end
else
if math.random(10000/self.curiosity) == 1 then
self._locked_object = nil
end
end
end
end
if self.attack then
self._locked_object = self.attack
end
if self._locked_object and (self._locked_object:is_player() or self._locked_object:get_luaentity()) and self._locked_object:get_hp() > 0 then
local _locked_object_eye_height = 1.5
if self._locked_object:get_luaentity() then
_locked_object_eye_height = self._locked_object:get_luaentity().head_eye_height
end
if self._locked_object:is_player() then
_locked_object_eye_height = self._locked_object:get_properties().eye_height
end
local self_rot = self.object:get_rotation()
if self.object:get_attach() then
self_rot = self.object:get_attach():get_rotation()
end
local player_pos = self._locked_object:get_pos()
local direction_player = vector.direction(vector.add(self.object:get_pos(), vector.new(0, self.head_eye_height*.7, 0)), vector.add(player_pos, vector.new(0, _locked_object_eye_height, 0)))
local mob_yaw = math.deg(-(-(self_rot.y)-(-minetest.dir_to_yaw(direction_player))))+self.head_yaw_offset
local mob_pitch = math.deg(-dir_to_pitch(direction_player))*self.head_pitch_multiplier
if (mob_yaw < -60 or mob_yaw > 60) and not (self.attack and self.type == "monster") then
mcl_util.set_bone_position(self.object,self.head_swivel, vector.new(0,self.bone_eye_height,self.horrizonatal_head_height), vector.multiply(oldr, 0.9))
elseif self.attack and self.type == "monster" then
if self.head_yaw == "y" then
mcl_util.set_bone_position(self.object,self.head_swivel, vector.new(0,self.bone_eye_height,self.horrizonatal_head_height), vector.new(mob_pitch, mob_yaw, 0))
elseif self.head_yaw == "z" then
mcl_util.set_bone_position(self.object,self.head_swivel, vector.new(0,self.bone_eye_height,self.horrizonatal_head_height), vector.new(mob_pitch, 0, -mob_yaw))
end
else
if self.head_yaw == "y" then
mcl_util.set_bone_position(self.object,self.head_swivel, vector.new(0,self.bone_eye_height,self.horrizonatal_head_height), vector.new(((mob_pitch-oldr.x)*.3)+oldr.x, ((mob_yaw-oldr.y)*.3)+oldr.y, 0))
elseif self.head_yaw == "z" then
mcl_util.set_bone_position(self.object,self.head_swivel, vector.new(0,self.bone_eye_height,self.horrizonatal_head_height), vector.new(((mob_pitch-oldr.x)*.3)+oldr.x, 0, -(((mob_yaw-oldr.y)*.3)+oldr.y)*3))
end
end
elseif not self._locked_object and math.abs(oldr.y) > 3 and math.abs(oldr.x) < 3 then
mcl_util.set_bone_position(self.object,self.head_swivel, vector.new(0,self.bone_eye_height,self.horrizonatal_head_height), vector.multiply(oldr, 0.9))
else
mcl_util.set_bone_position(self.object,self.head_swivel, vector.new(0,self.bone_eye_height,self.horrizonatal_head_height), vector.new(0,0,0))
end
end
-- run custom function (defined in mob lua file)
if self.do_custom then
@ -3827,14 +3985,15 @@ local mob_step = function(self, dtime)
and ((not self.nametag) or (self.nametag == ""))
and self.state ~= "attack"
and self.following == nil then
self.lifetimer = self.lifetimer - dtime
if self.despawn_immediately or self.lifetimer <= 0 then
minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos, 1))
if spawn_logging then
minetest.log("action", "[mcl_mobs] Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos, 1))
end
mcl_burning.extinguish(self.object)
self.object:remove()
return
elseif self.lifetimer <= 10 then
if math.random(10) < 4 then
if random(10) < 4 then
self.despawn_immediately = true
else
self.lifetimer = 20
@ -3927,6 +4086,14 @@ end
minetest.register_entity(name, {
use_texture_alpha = def.use_texture_alpha,
head_swivel = def.head_swivel or nil, -- bool to activate this function
head_yaw_offset = def.head_yaw_offset or 0, -- for wonkey model bones
head_pitch_multiplier = def.head_pitch_multiplier or 1, --for inverted pitch
bone_eye_height = def.bone_eye_height or 1.4, -- head bone offset
head_eye_height = def.head_eye_height or def.bone_eye_height or 0, -- how hight aproximatly the mobs head is fromm the ground to tell the mob how high to look up at the player
curiosity = def.curiosity or 1, -- how often mob will look at player on idle
head_yaw = def.head_yaw or "y", -- axis to rotate head on
horrizonatal_head_height = def.horrizonatal_head_height or 0,
stepheight = def.stepheight or 0.6,
name = name,
description = def.description,
@ -3939,6 +4106,7 @@ minetest.register_entity(name, {
on_die = def.on_die,
spawn_small_alternative = def.spawn_small_alternative,
do_custom = def.do_custom,
detach_child = def.detach_child,
jump_height = def.jump_height or 4, -- was 6
rotate = math.rad(def.rotate or 0), -- 0=front, 90=side, 180=back, 270=side2
lifetimer = def.lifetimer or 57.73,
@ -4024,6 +4192,7 @@ minetest.register_entity(name, {
dogshoot_count_max = def.dogshoot_count_max or 5,
dogshoot_count2_max = def.dogshoot_count2_max or (def.dogshoot_count_max or 5),
attack_animals = def.attack_animals or false,
attack_npcs = def.attack_npcs or false,
specific_attack = def.specific_attack,
runaway_from = def.runaway_from,
owner_loyal = def.owner_loyal,
@ -4045,6 +4214,7 @@ minetest.register_entity(name, {
texture_mods = {},
shoot_arrow = def.shoot_arrow,
sounds_child = def.sounds_child,
_child_animations = def.child_animations,
pick_up = def.pick_up,
explosion_strength = def.explosion_strength,
suffocation_timer = 0,
@ -4055,6 +4225,7 @@ minetest.register_entity(name, {
ignited_by_sunlight = def.ignited_by_sunlight or false,
spawn_in_group = def.spawn_in_group,
spawn_in_group_min = def.spawn_in_group_min,
noyaw = def.noyaw or false,
-- End of MCL2 extensions
on_spawn = def.on_spawn,
@ -4261,7 +4432,7 @@ end
-- Note: This also introduces the “spawn_egg” group:
-- * spawn_egg=1: Spawn egg (generic mob, no metadata)
-- * spawn_egg=2: Spawn egg (captured/tamed mob, metadata)
function mcl_mobs:register_egg(mob, desc, background, addegg, no_creative)
function mcl_mobs:register_egg(mob, desc, background_color, overlay_color, addegg, no_creative)
local grp = {spawn_egg = 1}
@ -4270,7 +4441,7 @@ function mcl_mobs:register_egg(mob, desc, background, addegg, no_creative)
grp.not_in_creative_inventory = 1
end
local invimg = background
local invimg = "(spawn_egg.png^[multiply:" .. background_color ..")^(spawn_egg_overlay.png^[multiply:" .. overlay_color .. ")"
if addegg == 1 then
invimg = "mobs_chicken_egg.png^(" .. invimg ..
@ -4333,7 +4504,8 @@ function mcl_mobs:register_egg(mob, desc, background, addegg, no_creative)
pos.y = pos.y - 0.5
local mob = minetest.add_entity(pos, mob)
minetest.log("action", "Mob spawned: "..name.." at "..minetest.pos_to_string(pos))
local entityname = itemstack:get_name()
minetest.log("action", "Player " ..name.." spawned "..entityname.." at "..minetest.pos_to_string(pos))
local ent = mob:get_luaentity()
-- don't set owner if monster or sneak pressed
@ -4493,6 +4665,10 @@ function mcl_mobs:spawn_child(pos, mob_type)
},
})
ent.animation = ent._child_animations
ent._current_animation = nil
set_animation(ent, "stand")
return child
end
@ -4505,7 +4681,7 @@ minetest.register_globalstep(function(dtime)
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 47)) do
local lua = obj:get_luaentity()
if lua and lua.is_mob then
lua.lifetimer = math.max(20, lua.lifetimer)
lua.lifetimer = max(20, lua.lifetimer)
lua.despawn_immediately = false
end
end

View File

@ -259,6 +259,7 @@ functions needed for the mob to work properly which contains the following:
that are bred in a different way.
'pick_up' table of itemstrings the mob will pick up (e.g. for breeding)
'on_pick_up' function that will be called on item pickup - return true to not pickup the item
'custom_visual_size' will not reset visual_size from the base class on reload
mobs:gopath(self,target,callback_arrived) pathfind a way to target and run callback on arrival
@ -433,7 +434,7 @@ true the mob will not spawn.
MineClone 2 extensions
----------------------
mobs:spawn_child(pos, mob_type)
mcl_mobs:spawn_child(pos, mob_type)
This function spawns a mob as a child. The parameter mob_type is the
entitystring of the new mob.
@ -443,6 +444,7 @@ mobs:death_effect(pos, collisionbox)
Create death particles at pos with the given collisionbox.
mcl_mobs.spawn(pos,name/entity name)
Making Arrows
-------------
@ -484,13 +486,13 @@ This function registers a arrow for mobs with the attack type shoot.
Spawn Eggs
----------
mobs:register_egg(name, description, background, addegg, no_creative)
mobs:register_egg(name, description, background_color, overlay_color, addegg, no_creative)
This function registers a spawn egg which can be used by admin to properly spawn in a mob.
'name' this is the name of your new mob to spawn e.g. "mob:sheep"
'description' the name of the new egg you are creating e.g. "Spawn Sheep"
'background'the texture displayed for the egg in inventory
'background_color' and 'overlay_color' define the colors for the texture displayed for the egg in inventory
'addegg' would you like an egg image in front of your texture (1 = yes,
0 = no)
'no_creative' when set to true this stops spawn egg appearing in creative

View File

@ -23,21 +23,23 @@ 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
local mob_cap = {
monster = 70,
animal =10,
ambient =15,
water = 5, --currently unused
water_ambient = 20, --currently unused
monster = minetest.settings:get_bool("mcl_mob_cap_monster") or 70,
animal = minetest.settings:get_bool("mcl_mob_cap_animal") or 10,
ambient = minetest.settings:get_bool("mcl_mob_cap_ambient") or 15,
water = minetest.settings:get_bool("mcl_mob_cap_water") or 5, --currently unused
water_ambient = minetest.settings:get_bool("mcl_mob_cap_water_ambient") or 20, --currently unused
}
--do mobs spawn?
local mobs_spawn = minetest.settings:get_bool("mobs_spawn", true) ~= false
local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false
local logging = minetest.settings:get_bool("mcl_logging_mobs_spawn",true)
local noise_params = {
offset = 0,
@ -416,36 +418,98 @@ 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 has_room = #minetest.find_nodes_in_area(pos,vector.offset(pos,0,1,0),{"air"}) or 0 >= 2
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.type_of_spawning ~= "ground" or has_room)
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 spawn_protected or not minetest.is_protected(pos, "") )
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
function mcl_mobs.spawn(pos,id)
local def = minetest.registered_entities[id] or minetest.registered_entities["mobs_mc:"..id] or minetest.registered_entities["extra_mobs:"..id]
if not def or (def.can_spawn and not def.can_spawn(pos)) or not def.is_mob then
return false
end
return minetest.add_entity(pos, def.name)
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 = mcl_mobs.spawn(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",{
mcl_mobs.spawn_group = spawn_group
minetest.register_chatcommand("spawn_mob",{
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)
if mcl_mobs.spawn(pos,param) then
return true, param.." spawned at "..minetest.pos_to_string(pos),
minetest.log("action", n.." spawned "..param.." at "..minetest.pos_to_string(pos))
end
return false, "Couldn't spawn "..param
end
})
@ -454,9 +518,12 @@ 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},
@ -465,37 +532,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
@ -511,27 +547,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
@ -543,9 +562,17 @@ 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
if logging then
minetest.log("action", "[mcl_mobs] A group of mob " .. mob_def.name .. " spawns at " .. minetest.pos_to_string(spawning_position, 1))
end
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
if logging then
minetest.log("action", "[mcl_mobs] Mob " .. mob_def.name .. " spawns at " .. minetest.pos_to_string(spawning_position, 1))
end
object = mcl_mobs.spawn(spawning_position, mob_def.name)
end
@ -579,3 +606,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

@ -144,4 +144,4 @@ mobs_mc.water_level-1)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:bat", S("Bat"), "mobs_mc_spawn_icon_bat.png", 0)
mcl_mobs:register_egg("mobs_mc:bat", S("Bat"), "#4c3e30", "#0f0f0f", 0)

View File

@ -26,6 +26,12 @@ mcl_mobs:register_mob("mobs_mc:blaze", {
rotate = -180,
visual = "mesh",
mesh = "mobs_mc_blaze.b3d",
head_swivel = "head.control",
bone_eye_height = 4,
head_eye_height = 3.5,
curiosity = 10,
head_yaw_offset = 180,
head_pitch_multiplier=-1,
textures = {
{"mobs_mc_blaze.png"},
},
@ -202,4 +208,4 @@ mcl_mobs:register_arrow("mobs_mc:blaze_fireball", {
})
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:blaze", S("Blaze"), "mobs_mc_spawn_icon_blaze.png", 0)
mcl_mobs:register_egg("mobs_mc:blaze", S("Blaze"), "#f6b201", "#fff87e", 0)

View File

@ -20,12 +20,18 @@ mcl_mobs:register_mob("mobs_mc:chicken", {
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.69, 0.2},
runaway = true,
floats = 1,
head_swivel = "head.control",
bone_eye_height = 4,
head_eye_height = 1.5,
horrizonatal_head_height = -.3,
curiosity = 10,
head_yaw="z",
visual_size = {x=1,y=1},
visual = "mesh",
mesh = "mobs_mc_chicken.b3d",
textures = {
{"mobs_mc_chicken.png"},
},
visual_size = {x=2.2, y=2.2},
makes_footstep_sound = true,
walk_velocity = 1,
@ -58,12 +64,15 @@ mcl_mobs:register_mob("mobs_mc:chicken", {
distance = 16,
},
animation = {
stand_speed = 25, walk_speed = 25, run_speed = 50,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 20, walk_speed = 25,
run_start = 0, run_end = 20, run_speed = 50,
},
child_animations = {
stand_start = 31, stand_end = 31,
walk_start = 31, walk_end = 51, walk_speed = 37,
run_start = 31, run_end = 51, run_speed = 75,
},
follow = {
"mcl_farming:wheat_seeds",
"mcl_farming:melon_seeds",
@ -154,4 +163,4 @@ mobs_mc.water_level,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:chicken", S("Chicken"), "mobs_mc_spawn_icon_chicken.png", 0)
mcl_mobs:register_egg("mobs_mc:chicken", S("Chicken"), "#a1a1a1", "#ff0000", 0)

View File

@ -271,4 +271,4 @@ water-16,
water+1)
--spawn egg
mcl_mobs:register_egg("mobs_mc:cod", S("Cod"), "extra_mobs_spawn_icon_cod.png", 0)
mcl_mobs:register_egg("mobs_mc:cod", S("Cod"), "#c1a76a", "#e5c48b", 0)

View File

@ -17,7 +17,12 @@ local cow_def = {
"mobs_mc_cow.png",
"blank.png",
}, },
visual_size = {x=2.8, y=2.8},
head_swivel = "head.control",
bone_eye_height = 10,
head_eye_height = 1.1,
horrizonatal_head_height=-1.8,
curiosity = 2,
head_yaw="z",
makes_footstep_sound = true,
walk_velocity = 1,
drops = {
@ -41,11 +46,14 @@ local cow_def = {
distance = 16,
},
animation = {
stand_speed = 25, walk_speed = 40,
run_speed = 60, stand_start = 0,
stand_end = 0, walk_start = 0,
walk_end = 40, run_start = 0,
run_end = 40,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 40, walk_speed = 30,
run_start = 0, run_end = 40, run_speed = 40,
},
child_animations = {
stand_start = 41, stand_end = 41,
walk_start = 41, walk_end = 81, walk_speed = 45,
run_start = 41, run_end = 81, run_speed = 60,
},
on_rightclick = function(self, clicker)
if mcl_mobs:feed_tame(self, clicker, 1, true, false) then return end
@ -82,7 +90,6 @@ mcl_mobs:register_mob("mobs_mc:cow", cow_def)
-- Mooshroom
local mooshroom_def = table.copy(cow_def)
mooshroom_def.description = S("Mooshroom")
mooshroom_def.mesh = "mobs_mc_cow.b3d"
mooshroom_def.spawn_in_group_min = 4
mooshroom_def.spawn_in_group = 8
mooshroom_def.textures = { {"mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png"}, {"mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } }
@ -211,5 +218,5 @@ mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn egg
mcl_mobs:register_egg("mobs_mc:cow", S("Cow"), "mobs_mc_spawn_icon_cow.png", 0)
mcl_mobs:register_egg("mobs_mc:mooshroom", S("Mooshroom"), "mobs_mc_spawn_icon_mooshroom.png", 0)
mcl_mobs:register_egg("mobs_mc:cow", S("Cow"), "#443626", "#a1a1a1", 0)
mcl_mobs:register_egg("mobs_mc:mooshroom", S("Mooshroom"), "#a00f10", "#b7b7b7", 0)

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,
@ -20,6 +21,9 @@ mcl_mobs:register_mob("mobs_mc:creeper", {
pathfinding = 1,
visual = "mesh",
mesh = "mobs_mc_creeper.b3d",
head_swivel = "Head_Control",
bone_eye_height = 2.35,
curiosity = 2,
textures = {
{"mobs_mc_creeper.png",
"mobs_mc_empty.png"},
@ -403,4 +407,4 @@ mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:creeper", S("Creeper"), "mobs_mc_spawn_icon_creeper.png", 0)
mcl_mobs:register_egg("mobs_mc:creeper", S("Creeper"), "#0da70a", "#000000", 0)

View File

@ -1 +0,0 @@
mcl_mobs

View File

@ -250,4 +250,4 @@ water-16,
water+1)
--spawn egg
mcl_mobs:register_egg("mobs_mc:dolphin", S("Dolphin"), "extra_mobs_spawn_icon_dolphin.png", 0)
mcl_mobs:register_egg("mobs_mc:dolphin", S("Dolphin"), "#223b4d", "#f9f9f9", 0)

View File

@ -4,6 +4,50 @@
local S = minetest.get_translator("mobs_mc")
local BEAM_CHECK_FREQUENCY = 2
local POS_CHECK_FREQUENCY = 15
local HEAL_AMMOUNT = 37
local function heal(self)
local o = self.object
self.health = math.min(self.hp_max,self.health + HEAL_AMMOUNT)
end
local function check_beam(self)
for _, obj in ipairs(minetest.get_objects_inside_radius(self.object:get_pos(), 80)) do
local luaentity = obj:get_luaentity()
if luaentity and luaentity.name == "mcl_end:crystal" then
if luaentity.beam then
if luaentity.beam == self.beam then
heal(self)
break
end
else
if self.beam then
self.beam:remove()
end
minetest.add_entity(self.object:get_pos(), "mcl_end:crystal_beam"):get_luaentity():init(self.object, obj)
break
end
end
end
end
local function check_pos(self)
if self._portal_pos then
-- migrate old format
if type(self._portal_pos) == "string" then
self._portal_pos = minetest.string_to_pos(self._portal_pos)
end
local portal_center = vector.add(self._portal_pos, vector.new(0, 11, 0))
local pos = self.object:get_pos()
if vector.distance(pos, portal_center) > 50 then
self.object:set_pos(self._last_good_pos or portal_center)
else
self._last_good_pos = pos
end
end
end
mcl_mobs:register_mob("mobs_mc:enderdragon", {
description = S("Ender Dragon"),
type = "monster",
@ -23,7 +67,7 @@ mcl_mobs:register_mob("mobs_mc:enderdragon", {
{"mobs_mc_dragon.png"},
},
visual_size = {x=3, y=3},
view_range = 35,
view_range = 64,
walk_velocity = 6,
run_velocity = 6,
can_despawn = false,
@ -61,45 +105,33 @@ mcl_mobs:register_mob("mobs_mc:enderdragon", {
run_start = 0, run_end = 20,
},
ignores_nametag = true,
do_custom = function(self)
do_custom = function(self,dtime)
mcl_bossbars.update_boss(self.object, "Ender Dragon", "light_purple")
for _, obj in ipairs(minetest.get_objects_inside_radius(self.object:get_pos(), 80)) do
local luaentity = obj:get_luaentity()
if luaentity and luaentity.name == "mcl_end:crystal" then
if luaentity.beam then
if luaentity.beam == self.beam then
break
end
else
if self.beam then
self.beam:remove()
end
minetest.add_entity(self.object:get_pos(), "mcl_end:crystal_beam"):get_luaentity():init(self.object, obj)
break
end
end
if self._pos_timer == nil or self._pos_timer > POS_CHECK_FREQUENCY then
self._pos_timer = 0
check_pos(self)
end
if self._portal_pos then
-- migrate old format
if type(self._portal_pos) == "string" then
self._portal_pos = minetest.string_to_pos(self._portal_pos)
end
local portal_center = vector.add(self._portal_pos, vector.new(3, 11, 3))
local pos = self.object:get_pos()
if vector.distance(pos, portal_center) > 50 then
self.object:set_pos(self._last_good_pos or portal_center)
else
self._last_good_pos = pos
end
if self._beam_timer == nil or self._beam_timer > BEAM_CHECK_FREQUENCY then
self._beam_timer = 0
check_beam(self)
end
self._beam_timer = self._beam_timer + dtime
self._pos_timer = self._pos_timer + dtime
end,
on_die = function(self, pos)
on_die = function(self, pos, cmi_cause)
if self._portal_pos then
mcl_portals.spawn_gateway_portal()
mcl_structures.call_struct(self._portal_pos, "end_exit_portal_open")
mcl_structures.place_structure(self._portal_pos,mcl_structures.registered_structures["end_exit_portal_open"],PseudoRandom(minetest.get_mapgen_setting("seed")),-1)
if self._initial then
mcl_experience.throw_xp(pos, 11500) -- 500 + 11500 = 12000
minetest.set_node(vector.add(self._portal_pos, vector.new(3, 5, 3)), {name = "mcl_end:dragon_egg"})
minetest.set_node(vector.add(self._portal_pos, vector.new(0, 5, 0)), {name = "mcl_end:dragon_egg"})
end
end
-- Free The End Advancement
for _,players in pairs(minetest.get_objects_inside_radius(pos,64)) do
if players:is_player() then
awards.unlock(players:get_player_name(), "mcl:freeTheEnd")
end
end
end,
@ -138,6 +170,7 @@ mcl_mobs:register_arrow("mobs_mc:dragon_fireball", {
end
})
mcl_mobs:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "mobs_mc_spawn_icon_dragon.png", 0, true)
mcl_mobs:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "#252525", "#b313c9", 0, true)
mcl_wip.register_wip_item("mobs_mc:enderdragon")

View File

@ -24,7 +24,25 @@
-- added rain damage.
-- fixed the grass_with_dirt issue.
minetest.register_entity("mobs_mc:ender_eyes", {
visual = "mesh",
mesh = "mobs_mc_spider.b3d",
visual_size = {x=1.01, y=1.01},
textures = {
"mobs_mc_enderman_eyes.png",
},
on_step = function(self)
if self and self.object then
if not self.object:get_attach() then
self.object:remove()
end
end
end,
glow = 50,
})
local S = minetest.get_translator("mobs_mc")
local enable_damage = minetest.settings:get_bool("enable_damage")
local telesound = function(pos, is_source)
local snd
@ -219,6 +237,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"),
@ -236,6 +255,19 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
textures = create_enderman_textures(),
visual_size = {x=3, y=3},
makes_footstep_sound = true,
on_spawn = function(self)
local spider_eyes=false
for n = 1, #self.object:get_children() do
local obj = self.object:get_children()[n]
if obj:get_luaentity() and self.object:get_luaentity().name == "mobs_mc:ender_eyes" then
spider_eyes = true
end
end
if not spider_eyes then
minetest.add_entity(self.object:get_pos(), "mobs_mc:ender_eyes"):set_attach(self.object, "head.top", vector.new(0,2.54,-1.99), vector.new(90,0,180))
minetest.add_entity(self.object:get_pos(), "mobs_mc:ender_eyes"):set_attach(self.object, "head.top", vector.new(1,2.54,-1.99), vector.new(90,0,180))
end
end,
sounds = {
-- TODO: Custom war cry sound
war_cry = "mobs_sandmonster",
@ -263,20 +295,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 +366,25 @@ 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
local light = minetest.get_node_light(enderpos)
if light and light > 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
@ -358,7 +413,7 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
-- self:teleport(nil)
-- self.state = ""
--else
if self.attack ~= nil and not minetest.settings:get_bool("creative_mode") then
if self.attack ~= nil and enable_damage then
self.state = 'attack'
end
--end
@ -593,6 +648,14 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
attack_type = "dogfight",
})
minetest.register_on_leaveplayer(function(player)
if not spawners[player] then return end
for _,s in pairs(spawners[player]) do
minetest.delete_particlespawner(s)
end
spawners[player] = nil
end)
-- End spawn
mcl_mobs:spawn_specific(
@ -600,7 +663,12 @@ mcl_mobs:spawn_specific(
"end",
"ground",
{
"End"
"End",
"EndIsland",
"EndMidlands",
"EndBarrens",
"EndBorder",
"EndSmallIslands"
},
0,
minetest.LIGHT_MAX+1,
@ -765,7 +833,7 @@ mcl_mobs:spawn_specific(
"ground",
{
"Nether",
"SoulsandVall3ey",
"SoulsandValley",
},
0,
11,
@ -792,4 +860,4 @@ mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:enderman", S("Enderman"), "mobs_mc_spawn_icon_enderman.png", 0)
mcl_mobs:register_egg("mobs_mc:enderman", S("Enderman"), "#252525", "#151515", 0)

View File

@ -38,4 +38,4 @@ mcl_mobs:register_mob("mobs_mc:endermite", {
reach = 1,
})
mcl_mobs:register_egg("mobs_mc:endermite", S("Endermite"), "mobs_mc_spawn_icon_endermite.png", 0)
mcl_mobs:register_egg("mobs_mc:endermite", S("Endermite"), "#161616", "#6d6d6d", 0)

View File

@ -141,4 +141,4 @@ mcl_mobs:register_arrow("mobs_mc:fireball", {
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:ghast", S("Ghast"), "mobs_mc_spawn_icon_ghast.png", 0)
mcl_mobs:register_egg("mobs_mc:ghast", S("Ghast"), "#f9f9f9", "#bcbcbc", 0)

View File

@ -104,4 +104,4 @@ mcl_mobs:register_mob("mobs_mc:guardian", {
--mcl_mobs:spawn_specific("mobs_mc:guardian", { "mcl_core:water_source", "mclx_core:river_water_source" }, { "mcl_core:water_source", "mclx_core:river_water_source" }, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mcl_vars.mg_overworld_min, mobs_mc.water_level - 10)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:guardian", S("Guardian"), "mobs_mc_spawn_icon_guardian.png", 0)
mcl_mobs:register_egg("mobs_mc:guardian", S("Guardian"), "#5a8272", "#f17d31", 0)

View File

@ -112,5 +112,6 @@ mcl_mobs:register_mob("mobs_mc:guardian_elder", {
-- mcl_mobs:spawn_specific("mobs_mc:guardian_elder", { "mcl_core:water_source", "mclx_core:river_water_source" }, { "mcl_core:water_source", "mclx_core:river_water_source" }, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mcl_vars.mg_overworld_min, mobs_mc.water_level-18)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:guardian_elder", S("Elder Guardian"), "mobs_mc_spawn_icon_guardian_elder.png", 0)
mcl_mobs:register_egg("mobs_mc:guardian_elder", S("Elder Guardian"), "#ceccba", "#747693", 0)

View File

@ -34,6 +34,30 @@ local horse_extra_texture = function(horse)
return textures
end
local function get_drops(self)
self.drops = {}
table.insert(self.drops,
{name = "mcl_mobitems:leather",
chance = 1,
min = 0,
max = 2,
looting = "common",
})
if self._saddle then
table.insert(self.drops,{name = "mcl_mobitems:saddle",
chance = 1,
min = 1,
max = 1,})
end
if self._chest then
table.insert(self.drops,{name = "mcl_chests:chest",
chance = 1,
min = 1,
max = 1,})
end
end
-- Helper functions to determine equipment rules
local can_equip_horse_armor = function(entity_id)
return entity_id == "mobs_mc:horse" or entity_id == "mobs_mc:skeleton_horse" or entity_id == "mobs_mc:zombie_horse"
@ -237,6 +261,27 @@ local horse = {
local iname = item:get_name()
local heal = 0
if self._inv_id then
if not self._chest and item:get_name() == "mcl_chests:chest" then
item:take_item()
clicker:set_wielded_item(item)
self._chest = true
-- Update texture
if not self._naked_texture then
-- Base horse texture without chest or saddle
self._naked_texture = self.base_texture[2]
end
local tex = horse_extra_texture(self)
self.base_texture = tex
self.object:set_properties({textures = self.base_texture})
get_drops(self)
return
elseif self._chest and clicker:get_player_control().sneak then
mcl_entity_invs.show_inv_form(self,clicker)
return
end
end
-- Taming
self.temper = self.temper or (math.random(1,100))
@ -340,6 +385,7 @@ local horse = {
self.base_texture = tex
self.object:set_properties({textures = self.base_texture})
minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()}, true)
get_drops(self)
-- Put on horse armor if tamed
elseif can_equip_horse_armor(self.name) and not self.driver and not self._horse_armor
@ -518,8 +564,9 @@ donkey.collisionbox = {
donkey.jump = true
donkey.jump_height = 3.75 -- can clear 1 block height
mcl_mobs:register_mob("mobs_mc:donkey", donkey)
mcl_mobs:register_mob("mobs_mc:donkey", donkey)
mcl_entity_invs.register_inv("mobs_mc:donkey","Donkey",15,true)
-- Mule
local m = 0.94
local mule = table.copy(donkey)
@ -537,6 +584,7 @@ mule.collisionbox = {
horse.collisionbox[6] * m,
}
mcl_mobs:register_mob("mobs_mc:mule", mule)
mcl_entity_invs.register_inv("mobs_mc:mule","Mule",15,true)
--===========================
--Spawn Function
@ -587,8 +635,8 @@ mobs_mc.water_level+3,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:horse", S("Horse"), "mobs_mc_spawn_icon_horse.png", 0)
mcl_mobs:register_egg("mobs_mc:skeleton_horse", S("Skeleton Horse"), "mobs_mc_spawn_icon_horse_skeleton.png", 0)
--mobs:register_egg("mobs_mc:zombie_horse", S("Zombie Horse"), "mobs_mc_spawn_icon_horse_zombie.png", 0)
mcl_mobs:register_egg("mobs_mc:donkey", S("Donkey"), "mobs_mc_spawn_icon_donkey.png", 0)
mcl_mobs:register_egg("mobs_mc:mule", S("Mule"), "mobs_mc_spawn_icon_mule.png", 0)
mcl_mobs:register_egg("mobs_mc:horse", S("Horse"), "#c09e7d", "#eee500", 0)
mcl_mobs:register_egg("mobs_mc:skeleton_horse", S("Skeleton Horse"), "#68684f", "#e5e5d8", 0)
--mobs:register_egg("mobs_mc:zombie_horse", S("Zombie Horse"), "#2a5a37", "#84d080", 0)
mcl_mobs:register_egg("mobs_mc:donkey", S("Donkey"), "#534539", "#867566", 0)
mcl_mobs:register_egg("mobs_mc:mule", S("Mule"), "#1b0200", "#51331d", 0)

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

@ -22,6 +22,9 @@ mcl_mobs:register_mob("mobs_mc:iron_golem", {
collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.69, 0.7},
visual = "mesh",
mesh = "mobs_mc_iron_golem.b3d",
head_swivel = "head.control",
bone_eye_height = 3.38,
curiosity = 10,
textures = {
{"mobs_mc_iron_golem.png"},
},
@ -93,8 +96,7 @@ mcl_mobs:register_mob("mobs_mc:iron_golem", {
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:iron_golem", S("Iron Golem"), "mobs_mc_spawn_icon_iron_golem.png", 0)
mcl_mobs:register_egg("mobs_mc:iron_golem", S("Iron Golem"), "#3b3b3b", "#f57223", 0)
--[[ This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function of the node.
This summons an iron golen if placing the pumpkin created an iron golem summon pattern:

View File

@ -24,6 +24,29 @@ local carpets = {
unicolor_light_blue = { "mcl_wool:light_blue_carpet", "light_blue" },
}
local function get_drops(self)
self.drops = {}
table.insert(self.drops,
{name = "mcl_mobitems:leather",
chance = 1,
min = 0,
max = 2,
looting = "common",
})
if self.carpet then
table.insert(self.drops,{name = self.carpet,
chance = 1,
min = 1,
max = 1,})
end
if self._has_chest then
table.insert(self.drops,{name = "mcl_chests:chest",
chance = 1,
min = 1,
max = 1,})
end
end
mcl_mobs:register_mob("mobs_mc:llama", {
description = S("Llama"),
type = "animal",
@ -35,6 +58,14 @@ mcl_mobs:register_mob("mobs_mc:llama", {
shoot_offset = 1, --3.5 *would* be a good value visually but it somehow messes with the projectiles trajectory
spawn_in_group_min = 4,
spawn_in_group = 6,
head_swivel = "head.control",
bone_eye_height = 11,
head_eye_height = 3,
horrizonatal_head_height=0,
curiosity = 60,
head_yaw = "z",
hp_min = 15,
hp_max = 30,
xp_min = 1,
@ -49,7 +80,6 @@ mcl_mobs:register_mob("mobs_mc:llama", {
{"blank.png", "blank.png", "mobs_mc_llama_white.png"},
{"blank.png", "blank.png", "mobs_mc_llama.png"},
},
visual_size = {x=3, y=3},
makes_footstep_sound = true,
runaway = false,
walk_velocity = 1,
@ -71,36 +101,28 @@ mcl_mobs:register_mob("mobs_mc:llama", {
distance = 16,
},
animation = {
speed_normal = 24,
run_speed = 60,
run_start = 0,
run_end = 40,
stand_start = 0,
stand_end = 0,
walk_start = 0,
walk_end = 40,
hurt_start = 118,
hurt_end = 154,
death_start = 154,
death_end = 179,
eat_start = 49,
eat_end = 78,
look_start = 78,
look_end = 108,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 40, walk_speed = 35,
run_start = 0, run_end = 40, run_speed = 50,
},
child_animations = {
stand_start = 41, stand_end = 41,
walk_start = 41, walk_end = 81, walk_speed = 50,
run_start = 41, run_end = 81, run_speed = 75,
},
follow = { "mcl_farming:wheat_item", "mcl_farming:hay_block" },
view_range = 16,
do_custom = function(self, dtime)
-- set needed values if not already present
if not self.v2 then
self.v2 = 0
if not self.v3 then
self.v3 = 0
self.max_speed_forward = 4
self.max_speed_reverse = 2
self.accel = 4
self.terrain_type = 3
self.driver_attach_at = {x = 0, y = 4.17, z = -1.5}
self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_attach_at = {x = 0, y = 12.7, z = -5}
self.driver_eye_offset = {x = 0, y = 6, z = 0}
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
end
@ -135,6 +157,20 @@ mcl_mobs:register_mob("mobs_mc:llama", {
if item:get_name() == "mcl_farming:hay_block" then
-- Breed with hay bale
if mcl_mobs:feed_tame(self, clicker, 1, true, false) then return end
elseif not self._has_chest and item:get_name() == "mcl_chests:chest" then
item:take_item()
clicker:set_wielded_item(item)
self._has_chest = true
self.base_texture = table.copy(self.base_texture)
self.base_texture[1] = self.base_texture[3]
self.object:set_properties({
textures = self.base_texture,
})
get_drops(self)
return
elseif self._has_chest and clicker:get_player_control().sneak then
mcl_entity_invs.show_inv_form(self,clicker," - Strength "..math.floor(self._inv_size / 3))
return
else
-- Feed with anything else
if mcl_mobs:feed_tame(self, clicker, 1, false, true) then return end
@ -143,53 +179,36 @@ mcl_mobs:register_mob("mobs_mc:llama", {
-- Make sure tamed llama is mature and being clicked by owner only
if self.tamed and not self.child and self.owner == clicker:get_player_name() then
-- Place carpet
if minetest.get_item_group(item:get_name(), "carpet") == 1 and not self.carpet then
for group, carpetdata in pairs(carpets) do
if minetest.get_item_group(item:get_name(), group) == 1 then
if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:take_item()
clicker:set_wielded_item(item)
-- Place carpet
if minetest.get_item_group(item:get_name(), "carpet") == 1 and not self.carpet then
for group, carpetdata in pairs(carpets) do
if minetest.get_item_group(item:get_name(), group) == 1 then
if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:take_item()
clicker:set_wielded_item(item)
end
local substr = carpetdata[2]
local tex_carpet = "mobs_mc_llama_decor_"..substr..".png"
self.base_texture = table.copy(self.base_texture)
self.base_texture[2] = tex_carpet
self.object:set_properties({
textures = self.base_texture,
})
self.carpet = item:get_name()
get_drops(self)
return
end
local substr = carpetdata[2]
local tex_carpet = "mobs_mc_llama_decor_"..substr..".png"
self.base_texture = table.copy(self.base_texture)
self.base_texture[2] = tex_carpet
self.object:set_properties({
textures = self.base_texture,
})
self.carpet = item:get_name()
self.drops = {
{name = "mcl_mobitems:leather",
chance = 1,
min = 0,
max = 2,},
{name = item:get_name(),
chance = 1,
min = 1,
max = 1,},
}
return
end
end
end
-- detatch player already riding llama
if self.driver and clicker == self.driver then
mcl_mobs.detach(clicker, {x = 1, y = 0, z = 1})
-- attach player to llama
elseif not self.driver then
self.object:set_properties({stepheight = 1.1})
mcl_mobs.attach(self, clicker)
end
-- Used to capture llama
elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then
mcl_mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
-- detatch player already riding llama
if self.driver and clicker == self.driver then
mcl_mobs.detach(clicker, {x = 1, y = 0, z = 1})
-- attach player to llama
elseif not self.driver then
self.object:set_properties({stepheight = 1.1})
mcl_mobs.attach(self, clicker)
end
end
end,
@ -214,9 +233,26 @@ mcl_mobs:register_mob("mobs_mc:llama", {
return false
end
end,
on_spawn = function(self)
if not self._inv_size then
local r = math.random(1000)
if r < 80 then
self._inv_size = 15
elseif r < 160 then
self._inv_size = 12
elseif r < 488 then
self._inv_size = 9
elseif r < 816 then
self._inv_size = 6
else
self._inv_size = 3
end
end
end,
})
mcl_entity_invs.register_inv("mobs_mc:llama","Llama",nil,true)
-- spit arrow (weapon)
mcl_mobs:register_arrow("mobs_mc:llamaspit", {
visual = "sprite",
@ -231,10 +267,6 @@ mcl_mobs:register_arrow("mobs_mc:llamaspit", {
end,
hit_mob = function(self, mob)
mob:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_node = function(self, pos, node)
@ -252,12 +284,10 @@ mcl_mobs:spawn_specific(
"SavannaM_beach",
"Savanna_beach",
"Savanna_ocean",
"JungleEdge",
"JungleEdgeM",
"ExtremeHills",
"ExtremeHills_beach",
"ExtremeHillsM",
},
}, --FIXME: Needs Windswept Forest when that is added.
0,
minetest.LIGHT_MAX+1,
30,
@ -267,4 +297,4 @@ mobs_mc.water_level+15,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:llama", S("Llama"), "mobs_mc_spawn_icon_llama.png", 0)
mcl_mobs:register_egg("mobs_mc:llama", S("Llama"), "#c09e7d", "#995f40", 0)

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

@ -36,11 +36,16 @@ local ocelot = {
hp_max = 10,
xp_min = 1,
xp_max = 3,
head_swivel = "head.control",
bone_eye_height = 6.2,
head_eye_height = 0.4,
horrizonatal_head_height=-0,
head_yaw="z",
curiosity = 4,
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.69, 0.3},
visual = "mesh",
mesh = "mobs_mc_cat.b3d",
textures = {"mobs_mc_cat_ocelot.png"},
visual_size = {x=2.0, y=2.0},
makes_footstep_sound = true,
walk_chance = default_walk_chance,
walk_velocity = 1,
@ -57,14 +62,16 @@ local ocelot = {
distance = 16,
},
animation = {
speed_normal = 25,
run_speed = 50,
stand_start = 0,
stand_end = 0,
walk_start = 0,
walk_end = 40,
run_start = 0,
run_end = 40,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 40, walk_speed = 40,
run_start = 0, run_end = 40, run_speed = 50,
sit_start = 50, sit_end = 50,
},
child_animations = {
stand_start = 51, stand_end = 51,
walk_start = 51, walk_end = 91, walk_speed = 60,
run_start = 51, run_end = 91, run_speed = 75,
sit_start = 101, sit_end = 101,
},
follow = follow,
view_range = 12,
@ -232,5 +239,4 @@ mobs:spawn({
]]--
-- spawn eggs
-- FIXME: The spawn icon shows a cat texture, not an ocelot texture
mcl_mobs:register_egg("mobs_mc:ocelot", S("Ocelot"), "mobs_mc_spawn_icon_cat.png", 0)
mcl_mobs:register_egg("mobs_mc:ocelot", S("Ocelot"), "#efde7d", "#564434", 0)

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,13 +127,18 @@ end
mcl_mobs:register_mob("mobs_mc:parrot", {
description = S("Parrot"),
type = "npc",
type = "animal",
spawn_class = "passive",
passive = true,
pathfinding = 1,
hp_min = 6,
hp_max = 6,
xp_min = 1,
xp_max = 3,
head_swivel = "head.control",
bone_eye_height = 1.1,
horrizonatal_head_height=0,
curiosity = 10,
collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.89, 0.25},
visual = "mesh",
mesh = "mobs_mc_parrot.b3d",
@ -227,4 +241,4 @@ mobs_mc.water_level+7,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:parrot", S("Parrot"), "mobs_mc_spawn_icon_parrot.png", 0)
mcl_mobs:register_egg("mobs_mc:parrot", S("Parrot"), "#0da70a", "#ff0000", 0)

View File

@ -15,11 +15,15 @@ mcl_mobs:register_mob("mobs_mc:pig", {
visual = "mesh",
mesh = "mobs_mc_pig.b3d",
textures = {{
"blank.png", -- baby
"mobs_mc_pig.png", -- base
"blank.png", -- saddle
}},
visual_size = {x=2.5, y=2.5},
head_swivel = "head.control",
bone_eye_height = 7.5,
head_eye_height = 0.8,
horrizonatal_head_height=-1,
curiosity = 3,
head_yaw="z",
makes_footstep_sound = true,
walk_velocity = 1,
run_velocity = 3,
@ -40,15 +44,14 @@ mcl_mobs:register_mob("mobs_mc:pig", {
distance = 16,
},
animation = {
stand_speed = 40,
walk_speed = 40,
run_speed = 90,
stand_start = 0,
stand_end = 0,
walk_start = 0,
walk_end = 40,
run_start = 0,
run_end = 40,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 40, walk_speed = 60,
run_start = 0, run_end = 40, run_speed = 90,
},
child_animations = {
stand_start = 41, stand_end = 41,
walk_start = 41, walk_end = 81, walk_speed = 90,
run_start = 41, run_end = 81, run_speed = 135,
},
follow = {
"mcl_farming:potato_item",
@ -60,15 +63,17 @@ mcl_mobs:register_mob("mobs_mc:pig", {
do_custom = function(self, dtime)
-- set needed values if not already present
if not self.v2 then
self.v2 = 0
if not self.v3 then
self.v3 = 0
self.max_speed_forward = 4
self.max_speed_reverse = 2
self.accel = 4
self.terrain_type = 3
self.driver_attach_at = {x = 0.0, y = 2.75, z = -1.5}
self.driver_attach_at = {x = 0.0, y = 6.5, z = -3.75}
self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
self.base_texture = self.texture_list[1]
self.object:set_properties({textures = self.base_texture})
end
-- if driver present allow control of horse
@ -111,7 +116,6 @@ mcl_mobs:register_mob("mobs_mc:pig", {
local item = clicker:get_wielded_item()
if item:get_name() == "mcl_mobitems:saddle" and self.saddle ~= "yes" then
self.base_texture = {
"blank.png", -- baby
"mobs_mc_pig.png", -- base
"mobs_mc_pig_saddle.png", -- saddle
}
@ -234,4 +238,4 @@ mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:pig", S("Pig"), "mobs_mc_spawn_icon_pig.png", 0)
mcl_mobs:register_egg("mobs_mc:pig", S("Pig"), "#f0a5a2", "#db635f", 0)

View File

@ -0,0 +1,123 @@
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
attack_npcs = true,
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"), "#532f36", "#959b9b", 0)

View File

@ -24,6 +24,12 @@ mcl_mobs:register_mob("mobs_mc:polar_bear", {
textures = {
{"mobs_mc_polarbear.png"},
},
head_swivel = "head.control",
bone_eye_height = 2.6,
head_eye_height = 1,
horrizonatal_head_height = 0,
curiosity = 20,
head_yaw="z",
visual_size = {x=3.0, y=3.0},
makes_footstep_sound = true,
damage = 6,
@ -86,4 +92,4 @@ mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn egg
mcl_mobs:register_egg("mobs_mc:polar_bear", S("Polar Bear"), "mobs_mc_spawn_icon_polarbear.png", 0)
mcl_mobs:register_egg("mobs_mc:polar_bear", S("Polar Bear"), "#f2f2f2", "#959590", 0)

View File

@ -15,7 +15,12 @@ local rabbit = {
xp_min = 1,
xp_max = 3,
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.49, 0.2},
head_swivel = "head.control",
bone_eye_height = 2,
head_eye_height = 0.5,
horrizonatal_head_height = -.3,
curiosity = 20,
head_yaw="z",
visual = "mesh",
mesh = "mobs_mc_rabbit.b3d",
textures = {
@ -26,7 +31,6 @@ local rabbit = {
{"mobs_mc_rabbit_salt.png"},
{"mobs_mc_rabbit_black.png"},
},
visual_size = {x=1.5, y=1.5},
sounds = {
random = "mobs_mc_rabbit_random",
damage = "mobs_mc_rabbit_hurt",
@ -49,10 +53,14 @@ local rabbit = {
},
fear_height = 4,
animation = {
speed_normal = 25, speed_run = 50,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 20,
run_start = 0, run_end = 20,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 20, walk_speed = 20,
run_start = 0, run_end = 20, run_speed = 30,
},
child_animations = {
stand_start = 21, stand_end = 21,
walk_start = 21, walk_end = 41, walk_speed = 30,
run_start = 21, run_end = 41, run_speed = 45,
},
-- Follow (yellow) dangelions, carrots and golden carrots
follow = {
@ -205,7 +213,7 @@ mcl_mobs:spawn(spawn_grass)
]]--
-- Spawn egg
mcl_mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "mobs_mc_spawn_icon_rabbit.png", 0)
mcl_mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "#995f40", "#734831", 0)
-- Note: This spawn egg does not exist in Minecraft
mcl_mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit.png^[colorize:#FF0000:192", 0) -- TODO: Update inventory image
mcl_mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "#f2f2f2", "#ff0000", 0)

View File

@ -225,4 +225,4 @@ water-16,
water+1)
--spawn egg
mcl_mobs:register_egg("mobs_mc:salmon", S("Salmon"), "extra_mobs_spawn_icon_salmon.png", 0)
mcl_mobs:register_egg("mobs_mc:salmon", S("Salmon"), "#a00f10", "#0e8474", 0)

View File

@ -61,9 +61,13 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
xp_min = 1,
xp_max = 3,
collisionbox = {-0.45, -0.01, -0.45, 0.45, 1.29, 0.45},
head_swivel = "head.control",
bone_eye_height = 3.3,
head_eye_height = 1.1,
horrizonatal_head_height=-.7,
curiosity = 6,
head_yaw="z",
visual = "mesh",
visual_size = {x=3, y=3},
mesh = "mobs_mc_sheepfur.b3d",
textures = { sheep_texture("unicolor_white") },
gotten_texture = gotten_texture,
@ -93,10 +97,14 @@ mcl_mobs:register_mob("mobs_mc:sheep", {
distance = 16,
},
animation = {
speed_normal = 25, run_speed = 65,
stand_start = 40, stand_end = 80,
walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 40, walk_speed = 30,
run_start = 0, run_end = 40, run_speed = 40,
},
child_animations = {
stand_start = 81, stand_end = 81,
walk_start = 81, walk_end = 121, walk_speed = 45,
run_start = 81, run_end = 121, run_speed = 60,
},
follow = { "mcl_farming:wheat_item" },
view_range = 12,
@ -357,4 +365,4 @@ mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:sheep", S("Sheep"), "mobs_mc_spawn_icon_sheep.png", 0)
mcl_mobs:register_egg("mobs_mc:sheep", S("Sheep"), "#e7e7e7", "#ffb5b5", 0)

View File

@ -9,8 +9,27 @@ local S = minetest.get_translator("mobs_mc")
--################### SHULKER
--###################
local adjacents = {
vector.new(1,0,0),
vector.new(-1,0,0),
vector.new(0,1,0),
vector.new(0,-1,0),
vector.new(0,0,1),
vector.new(0,0,-1),
}
local function check_spot(pos)
pos = vector.offset(pos,0,0.5,0)
local n = minetest.get_node(pos)
if n.name ~="air" then return false end
for _,a in pairs(adjacents) do
local p = vector.add(pos,a)
local pn = minetest.get_node(p)
if minetest.get_item_group(pn.name,"solid") > 0 then return true end
end
return false
end
local pr = PseudoRandom(os.time()*(-334))
-- animation 45-80 is transition between passive and attack stance
mcl_mobs:register_mob("mobs_mc:shulker", {
description = S("Shulker"),
type = "monster",
@ -35,6 +54,8 @@ mcl_mobs:register_mob("mobs_mc:shulker", {
walk_chance = 0,
knock_back = false,
jump = false,
can_despawn = false,
fall_speed = 0,
drops = {
{name = "mcl_mobitems:shulker_shell",
chance = 2,
@ -44,15 +65,90 @@ mcl_mobs:register_mob("mobs_mc:shulker", {
looting_factor = 0.0625},
},
animation = {
stand_speed = 25, walk_speed = 25, run_speed = 50, punch_speed = 25,
stand_speed = 25, walk_speed = 0, run_speed = 50, punch_speed = 25,
speed_normal = 25, speed_run = 50,
stand_start = 0, stand_end = 45,
walk_start = 0, walk_end = 45,
run_start = 0, run_end = 45,
stand_start = 0, stand_end = 25,
walk_start = 25, walk_end = 45,
run_start = 45, run_end = 85,
punch_start = 80, punch_end = 100,
},
view_range = 16,
fear_height = 4,
fear_height = 0,
noyaw = true,
do_custom = function(self,dtime)
local pos = self.object:get_pos()
if math.floor(self.object:get_yaw()) ~=0 then
self.object:set_yaw(0)
mcl_mobs:yaw(self, 0, 0, dtime)
end
if self.state == "walk" or self.state == "stand" then
self.state = "stand"
mcl_mobs:set_animation(self, "stand")
end
if self.state == "attack" then
mcl_mobs:set_animation(self, "punch")
end
self.path.way = false
self.look_at_players = false
if not check_spot(pos) then
self:teleport(nil)
end
end,
do_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)
self:teleport(puncher)
end,
do_teleport = function(self, target)
if target ~= nil then
local target_pos = target:get_pos()
-- Find all solid nodes below air in a 10×10×10 cuboid centered on the target
local nodes = minetest.find_nodes_in_area_under_air(vector.subtract(target_pos, 5), vector.add(target_pos, 5), {"group:solid", "group:cracky", "group:crumbly"})
local telepos
if nodes ~= nil then
if #nodes > 0 then
-- Up to 64 attempts to teleport
for n=1, math.min(64, #nodes) do
local r = pr:next(1, #nodes)
local nodepos = nodes[r]
local tg = vector.offset(nodepos,0,1,0)
if check_spot(tg) then
telepos = tg
node_ok = true
end
end
if telepos then
self.object:set_pos(telepos)
end
end
end
else
local pos = self.object:get_pos()
-- Up to 8 top-level attempts to teleport
for n=1, 8 do
local node_ok = false
-- We need to add (or subtract) different random numbers to each vector component, so it couldn't be done with a nice single vector.add() or .subtract():
local randomCube = vector.new( pos.x + 8*(pr:next(0,16)-8), pos.y + 8*(pr:next(0,16)-8), pos.z + 8*(pr:next(0,16)-8) )
local nodes = minetest.find_nodes_in_area_under_air(vector.subtract(randomCube, 4), vector.add(randomCube, 4), {"group:solid", "group:cracky", "group:crumbly"})
if nodes ~= nil then
if #nodes > 0 then
-- Up to 8 low-level (in total up to 8*8 = 64) attempts to teleport
for n=1, math.min(8, #nodes) do
local r = pr:next(1, #nodes)
local nodepos = nodes[r]
local tg = vector.offset(nodepos,0,1,0)
if check_spot(tg) then
self.object:set_pos(tg)
node_ok = true
break
end
end
end
end
if node_ok then
break
end
end
end
end,
})
-- bullet arrow (weapon)
@ -81,8 +177,9 @@ mcl_mobs:register_arrow("mobs_mc:shulkerbullet", {
})
mcl_mobs:register_egg("mobs_mc:shulker", S("Shulker"), "mobs_mc_spawn_icon_shulker.png", 0)
mcl_mobs:register_egg("mobs_mc:shulker", S("Shulker"), "#946694", "#4d3852", 0)
--[[
mcl_mobs:spawn_specific(
"mobs_mc:shulker",
"end",
@ -97,3 +194,4 @@ minetest.LIGHT_MAX+1,
2,
mcl_vars.mg_end_min,
mcl_vars.mg_end_max)
--]]

View File

@ -56,7 +56,7 @@ mcl_mobs:register_mob("mobs_mc:silverfish", {
reach = 1,
})
mcl_mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0)
mcl_mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "#6d6d6d", "#313131", 0)
-- Monster egg blocks (Minetest Game)
if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then

View File

@ -25,13 +25,15 @@ local skeleton = {
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3},
pathfinding = 1,
group_attack = true,
head_swivel = "Head_Control",
bone_eye_height = 2.38,
curiosity = 6,
visual = "mesh",
mesh = "mobs_mc_skeleton.b3d",
textures = { {
"mcl_bows_bow_0.png", -- bow
"mobs_mc_skeleton.png", -- skeleton
} },
visual_size = {x=1, y=1},
makes_footstep_sound = true,
textures = {
{
@ -78,11 +80,27 @@ local skeleton = {
run_speed = 30,
shoot_start = 70,
shoot_end = 90,
jockey_start = 172,
jockey_end = 172,
die_start = 160,
die_end = 170,
die_speed = 15,
die_loop = false,
},
jock = "mobs_mc:spider",
on_spawn = function(self)
self.jockey = false
if math.random(100) == 1 then -- 1% like from MCwiki
self.jockey = true
local jock = minetest.add_entity(self.object:get_pos(), "mobs_mc:spider")
jock:get_luaentity().docile_by_day = false
self.object:set_attach(jock, "", vector.new(0,0,0), vector.new(0,0,0))
end
return true
end,
on_detach=function(self, parent)
self.jockey = false
end,
ignited_by_sunlight = true,
view_range = 16,
fear_height = 4,
@ -90,6 +108,9 @@ local skeleton = {
arrow = "mcl_bows:arrow_entity",
shoot_arrow = function(self, pos, dir)
if mod_bows then
if self.attack then
self.object:set_yaw(minetest.dir_to_yaw(vector.direction(self.object:get_pos(), self.attack:get_pos())))
end
-- 2-4 damage per arrow
local dmg = math.max(4, math.random(2, 8))
mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg)
@ -329,5 +350,6 @@ mcl_vars.mg_overworld_max)
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:skeleton", S("Skeleton"), "mobs_mc_spawn_icon_skeleton.png", 0)
mcl_mobs:register_egg("mobs_mc:stray", S("Stray"), "mobs_mc_spawn_icon_stray.png", 0)
mcl_mobs:register_egg("mobs_mc:skeleton", S("Skeleton"), "#c1c1c1", "#494949", 0)
mcl_mobs:register_egg("mobs_mc:stray", S("Stray"), "#5f7476", "#dae8e7", 0)

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