Compare commits

...

349 Commits

Author SHA1 Message Date
cora 14cba8197e Merge pull request 'Clearmobs: clear empty nametagged as well as nil (#2429)' (#2433) from fix_clearmobs_horses into master
Reviewed-on: MineClone2/MineClone2#2433
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-15 11:54:03 +00:00
cora aab3180269 clear empty nametag as well as nil 2022-07-15 04:40:12 +02:00
PrairieWind 1a53c4081f Merge pull request 'Add soul lantern recipe' (#2425) from soul_lantern_recipe into master
Reviewed-on: MineClone2/MineClone2#2425
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-07-14 15:38:27 +00:00
cora e271e87aca fix indentation 2022-07-14 17:32:43 +02:00
cora dae4a99a85 Add soul lantern recipe 2022-07-14 15:39:37 +02:00
cora 18e90cc766 Merge pull request 'Add ruined portals' (#2423) from ruined_portals into master
Reviewed-on: MineClone2/MineClone2#2423
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-14 11:52:37 +00:00
cora 455fac9350 Add schematics by RandomLegoBrick and PrarieWind 2022-07-14 13:51:46 +02:00
cora 8cad4a6886 Add ruined portals 2022-07-14 13:38:20 +02:00
cora 5d2ffb36f2 Merge pull request 'Add fallen tree logs' (#2422) from fallen_logs into master
Reviewed-on: MineClone2/MineClone2#2422
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-14 05:03:56 +00:00
cora 931cb2b991 Add fallen tree logs 2022-07-14 06:59:47 +02:00
cora a7302882af Merge pull request 'Never spawn mobs on leaves' (#2421) from no_leaf_spawning into master
Reviewed-on: MineClone2/MineClone2#2421
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-14 04:59:02 +00:00
cora 9e60d24fe0 Never spawn mobs on leaves 2022-07-13 16:45:41 +02:00
cora 825da03ba3 Merge pull request 'Fix wither dupe' (#2417) from fix_wither_dupe into master
Reviewed-on: MineClone2/MineClone2#2417
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-12 22:51:00 +00:00
cora 8d9c5059f3 Fix wither dupe
faulty on_place would not removed placed wither skelly head from
inv. This also prevents the execution of the schematic checking
routine if there is no soul sand under the head.
2022-07-12 23:11:00 +02:00
PrairieWind 7323536e55 Merge pull request 'Spawn mobs in woodland cabin' (#2415) from woodland_spawn into master
Reviewed-on: MineClone2/MineClone2#2415
2022-07-12 00:55:59 +00:00
cora 2b835221a7 Make them spawn at (somewhat) random positions 2022-07-12 01:30:41 +02:00
cora 571c57e891 Add updated woodland outpost schematic 2022-07-12 00:44:39 +02:00
cora 33739dc5af Woodland cabin mob spawning 2022-07-12 00:32:53 +02:00
cora df2934c548 Merge pull request 'Fix crash when no group spawning positions found (#2410)' (#2412) from fix_group_spawn_crash into master
Reviewed-on: MineClone2/MineClone2#2412
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-11 20:48:43 +00:00
cora c1686923d3 Fix crash when no group spawning positions found 2022-07-11 22:31:35 +02:00
cora 489db73dca Merge pull request 'Mud fixes' (#2413) from TheRandomLegoBrick/MineClone2:mud_fixes into master
Reviewed-on: MineClone2/MineClone2#2413
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-07-11 20:31:01 +00:00
TheRandomLegoBrick 408c72e4bf Mud fixes 2022-07-11 08:24:42 -07:00
cora 0b197d3605 Merge pull request 'Fix #2336 (interaction bug when opening chests)' (#2340) from shield_fixes into master
Reviewed-on: MineClone2/MineClone2#2340
2022-07-11 09:58:21 +00:00
NO11 a16613f31c Fix #2336 (interaction bug when opening chests) 2022-07-11 09:14:14 +00:00
cora c900c04194 Merge pull request 'Replace all melon/pumpkin stems in woodland_cabins with unconnected variants.' (#2409) from melonpumpkin_stem_patch into master
Reviewed-on: MineClone2/MineClone2#2409
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-07-10 09:41:13 +00:00
MysticTempest 484ad2b630 Replace all melon/pumpkin stems in woodland_cabins with unconnected variants. 2022-07-09 19:35:51 -05:00
cora ec6d5628e2 Merge pull request 'water mobs' (#2403) from water_mobs into master
Reviewed-on: MineClone2/MineClone2#2403
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-09 22:22:17 +00:00
cora 4a4636523e Add new mobs to translation template. 2022-07-09 22:14:37 +02:00
cora e9b72083b3 Fix translator modnames 2022-07-09 02:30:48 +02:00
cora aed96a4912 Add original dolphin texture
cc0 by cora
2022-07-09 02:30:48 +02:00
cora f202ed8327 spawn in groups 2022-07-09 02:30:48 +02:00
cora 44abef44e1 Make fish buckets work with water mobs 2022-07-09 02:30:48 +02:00
PrairieAstronomer 88cdc9baf3 Add Fish Buckets 2022-07-09 02:30:48 +02:00
PrairieAstronomer 27ea6087c7 Tactical Fishing Advancement 2022-07-09 02:30:48 +02:00
cora ae0eb85ffc Add salmon, cod and dolphin from mcl5 2022-07-09 02:30:48 +02:00
cora 6d5e8822dd Merge pull request 'Glorius Mud' (#2402) from TheRandomLegoBrick/MineClone2:mud into master
Reviewed-on: MineClone2/MineClone2#2402
2022-07-09 00:24:28 +00:00
RandomLegoBrick 5ceffe1a3c Merge branch 'master' into mud 2022-07-08 22:42:38 +00:00
cora 5c61c96d4f Merge pull request 'More villager and mob fixes' (#2405) from villager_breeding into master
Reviewed-on: MineClone2/MineClone2#2405
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-08 22:02:36 +00:00
cora de9056ae62 Fix child mobs collision boxes 2022-07-08 23:57:02 +02:00
cora 08a1ecd879 Don't take extra bread when feeding 2022-07-08 23:57:02 +02:00
cora bcb76f7bd2 correctly lock job when traded 2022-07-08 23:57:02 +02:00
cora 8fe40fcd26 remove old debug line 2022-07-08 23:57:02 +02:00
cora 98c48dab8c abolish child labor 2022-07-08 23:57:02 +02:00
RandomLegoBrick 31e53ceff0 Merge branch 'master' into mud 2022-07-08 17:33:10 +00:00
TheRandomLegoBrick 05186c9a19 Non-copyright-infringey mud texture 2022-07-08 10:31:38 -07:00
TheRandomLegoBrick dfd16d1110 Add license 2022-07-08 10:02:06 -07:00
TheRandomLegoBrick c26a9aded5 Add mud sounds 2022-07-08 09:18:42 -07:00
cora 3118102ca7 Merge pull request 'Campfires' (#2397) from campfire into master
Reviewed-on: MineClone2/MineClone2#2397
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-07-08 00:39:23 +00:00
PrairieAstronomer 0ecffaf472 Added README.md file to mcl_campfires 2022-07-08 02:37:20 +02:00
cora 3c2633ee2c Simplify my own mess... remove code dupe
i'll fix this in cauldrons too, promise
2022-07-08 02:37:20 +02:00
PrairieAstronomer f0241bbf6a Added extinghuishing sound when extenguished with a shovel. 2022-07-08 02:37:20 +02:00
PrairieAstronomer 67494f8905 Added Burning Players and Entities to Campfires. 2022-07-08 02:37:20 +02:00
PrairieAstronomer e9fe5c1377 Fixed Crafting Recipes 2022-07-08 02:37:20 +02:00
PrairieAstronomer 5de3c7977c Campfire Inventory Textures by RandomLegoBrick 2022-07-08 02:37:20 +02:00
PrairieAstronomer 465d91036f Added Campfire to Fisherman Villager Trades 2022-07-08 02:37:20 +02:00
PrairieAstronomer 3786c46b30 (Soul) Campfires
Adds soul and nomal campfires. Code start and models from issue 505. Textures are all PixelPerfection.
2022-07-08 02:37:20 +02:00
cora 37798bfa42 Merge pull request 'Stone Cutter' (#2399) from stonecutter into master
Reviewed-on: MineClone2/MineClone2#2399
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-07-08 00:32:03 +00:00
PrairieAstronomer f141427dfe Added README.md File with Media License 2022-07-08 00:09:39 +00:00
PrairieAstronomer 41be8a5a85 Stonecutter Texturs, by RandomLegoBrick 2022-07-08 00:09:39 +00:00
PrairieAstronomer d9a25552d8 Stone Cutter
Adds the stonecutter block.
2022-07-08 00:09:39 +00:00
TheRandomLegoBrick cbe0f80d68 Move redundant water bottle code to functions 2022-07-07 16:50:51 -07:00
cora a930f3a814 Merge pull request 'Do not emerge while making railcorridors' (#2400) from railcorridors into master
Reviewed-on: MineClone2/MineClone2#2400
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-07 23:50:07 +00:00
TheRandomLegoBrick 06f8688f26 Improve mud bricks and packed mud textures 2022-07-07 15:16:43 -07:00
TheRandomLegoBrick f3dd3e92fa Add various mud brick blocks 2022-07-07 11:54:36 -07:00
TheRandomLegoBrick 4f1960d6ef Fix mod.conf 2022-07-07 08:29:32 -07:00
TheRandomLegoBrick 0414493f5c Fix hardness and blast resistance for packed mud 2022-07-06 20:27:13 -07:00
TheRandomLegoBrick be1427205e Move progress to separate mod and add packed mud 2022-07-06 13:14:29 -07:00
TheRandomLegoBrick 0142b58edc Allow dispensers to convert dirt to mud 2022-07-06 12:43:54 -07:00
TheRandomLegoBrick 973dc7fa41 Add mud 2022-07-06 12:14:21 -07:00
TheRandomLegoBrick 24ab7ff825 Add mud block 2022-07-06 11:33:25 -07:00
cora f98242bb0c Do not emerge while making railcorridors
it turns out to work fine without
2022-07-06 01:43:21 +02:00
cora b0da96611e Merge pull request 'Villager fixes' (#2387) from villager_fixes into master
Reviewed-on: MineClone2/MineClone2#2387
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-05 22:00:59 +00:00
cora 31289f5686 villagers that haven't traded loose job on js gone 2022-07-05 23:47:30 +02:00
cora 672b9dbedf make pathfinding to jobsite more smooth 2022-07-05 23:47:30 +02:00
cora dd5e9afbd9 villagers only get a job when they touch jobsite 2022-07-05 23:47:30 +02:00
cora 21d5ab88a5 comment out natural villager spawning 2022-07-05 23:47:30 +02:00
PrairieWind dc75a4d854 Merge pull request 'Fix loom and fletching table textures' (#2383) from MrRar/MineClone2:loom into master
Reviewed-on: MineClone2/MineClone2#2383
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-07-05 18:59:59 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 236c1ce760 Fletching table: add missing bottom texture 2022-07-05 13:26:53 -05:00
cora fdea5988a0 Merge pull request 'Tweak crying obsidian particles' (#2395) from crying_particles into master
Reviewed-on: MineClone2/MineClone2#2395
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-05 10:13:47 +00:00
cora efad7dad24 clean up 2022-07-05 11:19:47 +02:00
cora 27a945b8f3 Tweak crying obsidian particles 2022-07-05 11:19:47 +02:00
cora b08a79b070 Merge pull request 'Geode fixes' (#2389) from geode_size into master
Reviewed-on: MineClone2/MineClone2#2389
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-04 22:14:45 +00:00
cora daa95e3688 replace dirt and gravel too for even less clumps 2022-07-05 00:12:23 +02:00
cora 889e72c50d don't dig amethyst by water 2022-07-05 00:12:23 +02:00
cora ea99341f94 make geode inside smoother 2022-07-05 00:12:23 +02:00
cora 4b95185fba make geodes less cube shaped (sometimes) 2022-07-05 00:12:23 +02:00
cora 86233c774d Merge pull request 'Fix railcorridors aka make mapgen fast again' (#2384) from railcorridors into master
Reviewed-on: MineClone2/MineClone2#2384
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-04 21:12:52 +00:00
cora 3584d89028 better distribution 2022-07-04 23:07:51 +02:00
cora 40d0c1affb slightly optimize placement 2022-07-04 23:07:51 +02:00
cora 0a2e68d136 spawn carts, make mineshafts a bit less frequent 2022-07-04 23:07:51 +02:00
cora 9f66c9f673 let railcorridors be placed by new api
this makes it a lot faster
2022-07-04 23:07:51 +02:00
cora a92b405efd Comment out unused cart-checking hackery 2022-07-04 23:07:51 +02:00
cora db4f2baafc Tweak tsm_railcorridors for faster mapgen
This just does 5 instead of 10 attempts to spawn a corridor in a
chunk. There still appear to be plenty corridors and it makes
mapgen noticeably faster.
2022-07-04 23:07:51 +02:00
cora d6306d78b8 Merge pull request 'Spawn corals only at -10 and lower' (#2393) from deeper_corals into master
Reviewed-on: MineClone2/MineClone2#2393
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-04 21:06:33 +00:00
cora 0d8e6b103e Merge pull request 'some mob spawning fixes (#1692)' (#2392) from ground_squids into master
Reviewed-on: MineClone2/MineClone2#2392
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-04 21:02:39 +00:00
cora 0e6250b2a3 Fix rabbit spawning biomes 2022-07-04 12:50:48 +02:00
cora c66cb834a2 spawn corals only at -10 and lower
to prevent corals in rivers
2022-07-04 02:13:54 +02:00
cora bc2e61921f do not spawn polar bears in extremehills+_snowtop 2022-07-04 01:46:41 +02:00
cora b1c97a0510 prevent ground squids, variable spawn height 2022-07-04 01:41:45 +02:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 e22d543d80 Fix loom and fletching table textures 2022-07-03 10:53:00 -05:00
cora ded679aaf7 Merge pull request 'Disable the despawn timer catchup for items that were unloaded.' (#2386) from fix_item_depsawning_timer into master
Reviewed-on: MineClone2/MineClone2#2386
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-07-03 11:20:47 +00:00
MysticTempest 677110e39f Disable the despawn timer catchup for items that were unloaded. 2022-07-03 04:28:43 -05:00
cora 12e6c0e661 Merge pull request 'More New Advancements' (#2382) from PrairieWind_advancements into master
Reviewed-on: MineClone2/MineClone2#2382
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-07-01 23:18:11 +00:00
PrairieAstronomer 9c3a4f3436 Updated the Advancements translation template...again 2022-07-01 14:54:44 -06:00
PrairieAstronomer 1abeccfaab Enchanter Advancement 2022-07-01 14:50:56 -06:00
PrairieAstronomer 2845cd79b7 Local Brewery Advancement 2022-07-01 14:37:02 -06:00
PrairieAstronomer 4bfadffadc Fixed Minor Formating in Advancement Definitions 2022-07-01 14:04:33 -06:00
PrairieAstronomer f998f3bc05 Updated Advancements Translation Template 2022-07-01 13:56:44 -06:00
PrairieAstronomer acff3e525c Changed the Into the Nether achievement to the We Need to Go Deeper Advancement 2022-07-01 13:45:07 -06:00
PrairieAstronomer 6757b8f900 The Nether Advancement 2022-07-01 13:41:21 -06:00
PrairieAstronomer 8f7ac1e5a2 Not Quite 'Nine' Lives Advancement 2022-07-01 13:11:26 -06:00
PrairieAstronomer 40a421ddd0 Hidden in the Depths Advancement 2022-07-01 12:41:01 -06:00
PrairieAstronomer 687bc04560 Who is Cutting Onions? Advancement 2022-07-01 12:39:10 -06:00
cora cea6af267f Merge pull request 'Grand mapgen cleanup Part 1' (#2355) from mapgen_fixes into master
Reviewed-on: MineClone2/MineClone2#2355
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-07-01 17:13:18 +00:00
cora 6ad00e4170 emerge before geode and surface pool placement
otherwise they can be cut off
2022-07-01 14:43:03 +02:00
cora ef14006f15 Fix surface pools & desert temple loot 2022-07-01 14:30:02 +02:00
cora c59a890963 add woodland cabin loot 2022-07-01 06:11:10 +02:00
cora ac69b7c710 Add woodland cabin and outpost 2022-07-01 04:26:41 +02:00
cora f115fc8ea0 tweak probabilities 2022-07-01 02:05:48 +02:00
cora 8684140740 log actual placement position 2022-07-01 02:05:48 +02:00
cora be2a8d7054 Structure transfer fixes 2022-07-01 02:05:48 +02:00
cora f5cc0ef2dc Move shipwrecks to mcl_structures 2022-07-01 02:05:48 +02:00
cora 7945de1324 igloo fixes, mobspawns, move geode to mcl_structs 2022-07-01 02:05:48 +02:00
cora a09226c370 fossil & igloo -> new api 2022-07-01 02:05:48 +02:00
cora 3ca6d4de3b fix chunk probability and distributions 2022-07-01 02:05:48 +02:00
cora 7f8a366a7b make geodes slightly larger, fix positioning 2022-07-01 02:05:48 +02:00
cora 607511518f fix warning 2022-07-01 02:05:48 +02:00
cora 14cd360214 witch hut, boulders, ice-spikes -> new api 2022-07-01 02:05:48 +02:00
cora dfbb832f96 Terrain feature fixes 2022-07-01 02:05:48 +02:00
cora 063e17bc0a make schematic selection deterministic 2022-07-01 02:05:48 +02:00
cora befe493ff0 Add warm ocean ruins 2022-07-01 02:05:48 +02:00
cora fcb8160a60 Add loot generation to api 2022-07-01 02:05:48 +02:00
cora 065767cc77 Add Ocean Ruins - schematics by PrarieWind 2022-07-01 02:05:48 +02:00
cora 47eca3f774 fix callbacks 2022-07-01 02:05:48 +02:00
cora b396a3c6ee update API.md 2022-07-01 02:05:48 +02:00
cora 9381657f5d use new struct api for desert well and temples 2022-07-01 02:05:48 +02:00
cora e37358d220 Add make_foundation option
test by /spawnstruct nether_outpost without being on complete
(covering the sidelen) solid ground
2022-07-01 02:05:48 +02:00
cora d8697cb59c Tweak basalt delta code 2022-07-01 02:05:48 +02:00
cora 0b3a4c18d7 structure-api: add check for solid ground 2022-07-01 02:05:48 +02:00
cora 8e976d9191 Do not log generation of terrain features
this leads to excessive io otherwise
2022-07-01 02:05:48 +02:00
cora fed81932e2 structs: use mcl_register_generator, cave decos 2022-07-01 02:05:48 +02:00
cora eb8db0dc0b optimize terrain features 2022-07-01 02:05:48 +02:00
cora 69dac8ded4 fix surface pools y offset 2022-07-01 02:05:48 +02:00
PrairieWind 4b18c7fe8e Merge pull request 'Add smithing table bottom texture by @RandomLegoBrick' (#2381) from smithing_table_bottom into master
Reviewed-on: MineClone2/MineClone2#2381
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-06-30 20:01:59 +00:00
cora c1bd8f4204 smithing table bottom texture by @RandomLegoBrick 2022-06-30 21:48:29 +02:00
cora 9f2691343c Merge pull request 'Adds Netherite Armor Tools and Ancient Debris' (#2371) from netherite into master
Reviewed-on: MineClone2/MineClone2#2371
Reviewed-by: AFCMS <afcm.contact@gmail.com>
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-30 13:19:17 +00:00
cora be8692daab Add smithing table textures by @RandomLegoBrick 2022-06-30 14:11:13 +02:00
cora c9dadc0bc7 correct tile order in smithing table item def 2022-06-30 14:11:13 +02:00
PrairieAstronomer 145d183998 Added Armor (Un)Eqip Sound Definitions 2022-06-30 14:11:13 +02:00
PrairieAstronomer 074f1df354 Added Formspec Image to Smithing Table and Fixed some whitespace issues. 2022-06-30 14:11:13 +02:00
PrairieAstronomer 6543d819da Fixed some quote formating issues 2022-06-30 14:11:13 +02:00
cora b8fc1c03b3 check for _upgradable instead of diamond 2022-06-30 14:11:13 +02:00
PrairieAstronomer 1fc79ffb61 Added pixelperfection netheriteblock texture 2022-06-30 14:11:13 +02:00
PrairieAstronomer ed2fc6601e Added Smithing Table to Toolsmith Villager Jobsite 2022-06-30 14:11:13 +02:00
cora 7136e54615 make armor upgrade slightly more flexible 2022-06-30 14:11:13 +02:00
PrairieAstronomer d86be83b2b Fixed the lodestone crafting to use the netherite ingot. 2022-06-30 14:11:13 +02:00
cora 352a52e086 fix indentation 2022-06-30 14:11:13 +02:00
cora 909aa71dd3 keep _mcl_upgrade_item as nil for non diamond armor 2022-06-30 14:11:13 +02:00
cora c05e1b5f45 make diamond armor upgradable to netherite 2022-06-30 14:11:13 +02:00
PrairieAstronomer 79c014f356 Serious Dedication Advancement 2022-06-30 14:11:13 +02:00
Code-Sploit 7f340b7e2a Add forgotten textures for netherite ingot, scrap and ancient debris 2022-06-30 14:11:13 +02:00
NO11 e0c5f2f7fa Fix ancient debris duplication glitch (remove fortune drop) 2022-06-30 14:11:13 +02:00
Code-Sploit 10ea6da4e8 Add all pixel-perfection textures for netherite 2022-06-30 14:11:13 +02:00
Code-Sploit 1283967132 Add crafting recipe for netheriteblock & make netheriteblock convertable to ingots. 2022-06-30 14:11:13 +02:00
Code-Sploit dc2a74140e Add correct speeds for netherite shovel, pickaxe and axe 2022-06-30 14:11:13 +02:00
Code-Sploit bbf63cf66b Add netheriteblock 2022-06-30 14:11:13 +02:00
Code-Sploit 688d1e3f7e Add correct durability for netherite sword 2022-06-30 14:11:13 +02:00
Code-Sploit e8cedbc553 Remove unnessacary comments in mcl_smithing_table/init.lua 2022-06-30 14:11:13 +02:00
Code-Sploit af2a4b1de0 Add crafting recipe for smithing table 2022-06-30 14:11:12 +02:00
Code-Sploit 8080932353 Fix not able to put diamond tools in the smithing_table 2022-06-30 14:11:12 +02:00
Code-Sploit 3b2a34c670 Add first try of code for smithing table (Thanks to Fleckenstein), add _mcl_upgradable and _mcl_upgrade_item to every diamond tool/armor piece 2022-06-30 14:11:12 +02:00
Code-Sploit aee4d15a57 Fix crash in netherite hoe by adding netherite to uses{} 2022-06-30 14:11:12 +02:00
Code-Sploit 9b25567274 Add netherite hoe texture 2022-06-30 14:11:12 +02:00
Code-Sploit f2375abc47 Add netherite tools 2022-06-30 14:11:12 +02:00
Code-Sploit 9c0e9964a6 Add smithing table W.I.P 2022-06-30 14:11:12 +02:00
Code-Sploit 338114aecc Add: Netherite scrap, Netherite ingot. Add crafting recipe for netherite ingot. 2022-06-30 14:11:12 +02:00
Code-Sploit 8ee792e965 Add correct textures for netherite armor 2022-06-30 14:11:12 +02:00
Code-Sploit 3f30251f26 Add second part of netherite armor textures 2022-06-30 14:11:12 +02:00
Code-Sploit 57ebfbfb56 Add first part of netherite armor textures 2022-06-30 14:11:12 +02:00
Code-Sploit f0f52713f7 Add code for netherite armor 2022-06-30 14:11:12 +02:00
Code-Sploit 92992cb44e Add ancient debris 2022-06-30 14:11:12 +02:00
cora 48a2d25698 Merge pull request 'Fix Anvil stacking dupe II' (#2375) from fix-anvil-stacking-dupe into master
Reviewed-on: MineClone2/MineClone2#2375
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-30 12:09:06 +00:00
cora 817fb83ba6 Fix Anvil stacking dupe II
This guarantees that the anvil logic never overstacks the output slot
2022-06-30 14:03:55 +02:00
cora 3286330b26 Merge pull request 'Add crying obsidian' (#2378) from crying_obsidian into master
Reviewed-on: MineClone2/MineClone2#2378
2022-06-30 12:01:40 +00:00
cora ce2531a488 Add correct respawn anchor recipe 2022-06-30 14:00:55 +02:00
cora 78e187537f Add crying obsidian particle effect 2022-06-30 01:43:49 +02:00
kay27 9d8ff427f3 Add crying obsidian 2022-06-30 01:43:22 +02:00
PrairieWind c504e9b4ac Merge pull request 'Update textures for nautilus shell and heart of the sea.' (#2373) from TheRandomLegoBrick/MineClone2:update_nautilus_texture into master
Reviewed-on: MineClone2/MineClone2#2373
2022-06-27 20:34:58 +00:00
TheRandomLegoBrick f1e5790308 Update textures for nautilus shell and heart of the sea 2022-06-27 10:17:33 -07:00
cora 815893a15a Merge pull request 'Fix zombie villager curing (crash)' (#2368) from fix_zvillager_curing into master
Reviewed-on: MineClone2/MineClone2#2368
2022-06-26 09:39:17 +00:00
cora d9e40d5223 set profession first in on_spawn 2022-06-26 11:20:20 +02:00
cora 86651e7557 Fix zombie villager curing (crash) 2022-06-26 11:20:20 +02:00
cora 1262216f9d Merge pull request 'Nautilus Shell and Heart of the Sea Items' (#2369) from netherquatics_items into master
Reviewed-on: MineClone2/MineClone2#2369
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-25 23:04:33 +00:00
PrairieAstronomer 94e7c4c85b Nautilus Shell Texture, by RandomLegoBrick 2022-06-25 16:54:19 -06:00
PrairieAstronomer 52bb8c6401 Heart of the Sea Textures by RandomLegoBrick 2022-06-25 16:47:48 -06:00
PrairieAstronomer 29329c4aac Heart of the Sea Item. Item Texture by RandomLegoBrick. 2022-06-25 16:41:32 -06:00
PrairieAstronomer 2e0fa714ed Nautilus Shell Item. Shell Texture by RandomLegoBrick. 2022-06-25 15:42:52 -06:00
cora 679309d20c Merge pull request 'Tweak hunger/health mechanics:' (#2361) from hunger_patches into master
Reviewed-on: MineClone2/MineClone2#2361
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-25 09:17:59 +00:00
MysticTempest e3abe72522 Fix healing speed, and saturation usage again; to be more accurate. 2022-06-25 01:41:10 -05:00
MysticTempest a6e2c94028 Tweak hunger/health mechanics:
Ensure hunger is always ticking away, and ensure that health regen
is quicker when hunger bar is full.
And, tweak saturation to partially use up hunger to heal; instead
of healing on top of hunger.
2022-06-24 05:38:26 -05:00
cora bb413bfdb1 Merge pull request 'Coral reefs' (#2357) from coral_reefs into master
Reviewed-on: MineClone2/MineClone2#2357
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-23 17:20:57 +00:00
cora 2b87958678 add all sizes of sea pickles not just 1 2022-06-23 17:18:01 +02:00
cora f883b45809 Add coral reefs 2022-06-23 15:06:56 +02:00
cora ecbc94e822 Merge pull request 'Lava cauldrons and other cauldron/bucket fixes' (#2350) from lava_cauldron into master
Reviewed-on: MineClone2/MineClone2#2350
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-22 10:41:20 +00:00
cora ca6cf81e24 set objects on fire when in lava cauldron 2022-06-22 12:40:16 +02:00
cora 1401f398ae globalstep instead of abm to extinguish objects 2022-06-21 14:24:15 +02:00
cora 3a7022ab66 Clean up buckets and cauldrons a little bit 2022-06-21 13:53:08 +02:00
cora 685cba6821 Allow placing lava into cauldrons 2022-06-21 13:44:52 +02:00
cora 7a8d20e124 take lava from cauldron with bucket 2022-06-21 13:08:20 +02:00
cora 9937224997 Add lava filled cauldron 2022-06-21 12:58:19 +02:00
cora 820b97f065 fix soem codestyle stuff in mcl_cauldrons 2022-06-21 12:52:54 +02:00
cora 432ec760b7 Merge pull request 'Properly fix smokers, & blast_furnaces to work at twice the rate of a furnace.' (#2344) from fix_blast_furnaces_and_smokers_properly into master
Reviewed-on: MineClone2/MineClone2#2344
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-21 10:32:15 +00:00
MysticTempest f6599d237e Fix smokers, & blast_furnaces to work at twice the rate of a furnace. 2022-06-21 00:36:13 -05:00
PrairieWind b925ebb087 Merge pull request 'Implement #2312: Add grindstones' (#2342) from TheRandomLegoBrick/MineClone2:grindstone into master
Reviewed-on: MineClone2/MineClone2#2342
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-06-20 20:43:56 +00:00
TheRandomLegoBrick 90ee8ecf0f Merge branch 'grindstone' of https://git.minetest.land/TheRandomLegoBrick/MineClone2 into grindstone 2022-06-20 13:33:15 -07:00
TheRandomLegoBrick 6ec9765b58 Fix indentation 2022-06-20 13:31:23 -07:00
RandomLegoBrick b5eda3000e Merge branch 'master' into grindstone 2022-06-20 19:58:49 +00:00
TheRandomLegoBrick 99469ff1c5 Add grindstones 2022-06-20 12:46:59 -07:00
cora 7429f5dc93 Merge pull request 'Fix crash on ghast explosions' (#2339) from fix_ghast_crash into master
Reviewed-on: MineClone2/MineClone2#2339
2022-06-20 11:46:55 +00:00
cora e3c5b2cbb5 Fix crash on ghast explosions
In certain situations the arrow can be invalidated until its
get_pos() is called here - e.g. when the player wears over-
enchanted blast protection (65k in this case).

This uses the player position for the explosion in these cases
2022-06-20 13:40:05 +02:00
cora 64b8f15f47 Merge pull request 'Fix weather FPS (and warning)' (#2341) from fix_weather_fps into master
Reviewed-on: MineClone2/MineClone2#2341
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-20 11:38:15 +00:00
cora dcc7df5f02 Add setting for nether dust too
plus slightly tweak the wording for thunder setting
2022-06-20 13:31:58 +02:00
cora 30e543d4d2 Add settings to change weather particle amounts 2022-06-19 22:50:29 +02:00
cora d9da50e292 Properly check for sound update (fix warning) 2022-06-19 22:25:50 +02:00
cora ca27237ffc Tweak particle spawner settings 2022-06-19 22:19:46 +02:00
cora 855b18ee30 Merge pull request 'Nether biomes' (#2328) from nether_biomes into master
Reviewed-on: MineClone2/MineClone2#2328
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-19 14:58:23 +00:00
cora ffa15727e3 readd grow_twisting_vines func 2022-06-19 13:27:12 +02:00
cora 31b94f5b22 Add "nether outpost"
As a temporary solution until large nether fortresses are there.
This is just a little tower containing some warts and a blaze
spawner.
2022-06-19 03:11:56 +02:00
cora ecf6236152 Set fog color according to nether biome 2022-06-19 00:24:56 +02:00
cora 41f708e03e Regular decorations for legacy nether(except v6)
minetest supports this now
2022-06-19 00:24:56 +02:00
cora 5b366c692d Enable mob spawning in new biomes
lower ghast spawning chance
2022-06-19 00:24:52 +02:00
cora 0890c719a3 Add basalt pillars 2022-06-19 00:24:52 +02:00
cora fefb15f2a8 Add new fungus tree schematics 2022-06-19 00:24:52 +02:00
cora 01eea4ab8a prevent nether trees from growing through bedrock 2022-06-19 00:24:52 +02:00
cora 969ac0be78 fix style details and mistakes in mcl_crimson 2022-06-19 00:24:52 +02:00
cora d9a74ac180 rename mcl_surface_pools -> mcl_terrain_features 2022-06-19 00:24:52 +02:00
cora a0264ed5e0 tweak biome distribution to be more like mc
according to
https://www.reddit.com/r/Minecraft/comments/gjeuww/how_the_nether_biomes_are_distributed/
2022-06-19 00:24:52 +02:00
cora 48189cb3a7 fix lighting issue for placed schematics
warped and crimson shroomlight would not work correctly before
because they're placed after light calculation is done apparently
2022-06-19 00:24:52 +02:00
cora db9fba70dd some biome tweaks, add nether gold 2022-06-19 00:24:52 +02:00
cora 8efbd89b6a Add basalt columns & lava pools 2022-06-19 00:24:52 +02:00
cora 3c79685c48 Add main nether biomes
Add nether forests

Add soulsand valley decorations

Add Basalt Delta basics
2022-06-19 00:24:48 +02:00
cora 06fdfd2e63 make nether mushroom rotation random 2022-06-19 00:24:48 +02:00
cora 1c3a6f8a19 replace algorithmic fungus gen by schematic
it was always the same anyways (except for the shroomlight)
2022-06-19 00:24:48 +02:00
cora 489ee80490 remove enderman spawning 2022-06-19 00:24:48 +02:00
AFCMS f285e18d24 Fix some codestyle issues with `mcl_crimson` 2022-06-19 00:24:48 +02:00
cora 7d653011fc fix whitespace 2022-06-19 00:24:48 +02:00
cora 6af3fecacb rename mcl_mushroom to mcl_crimson 2022-06-19 00:24:48 +02:00
3raven 9d5bbd7d22 Correct name 2022-06-19 00:24:48 +02:00
3raven 686b62f6e3 fix
fix
2022-06-19 00:24:45 +02:00
3raven ee2f8f46f1 Non flammable/modify by similiraty with trees 2022-06-19 00:24:45 +02:00
3raven 653020d2ef Add texture files for stripped stem
Add texture files for stripped stem

Add texture files for stripped stem

Add warped hyphae stripped and bark

Same for crimson hyphae
2022-06-19 00:24:33 +02:00
kay27 7420877077 Bump ABM intervals to 1 second 2022-06-19 00:24:33 +02:00
3raven 69da3ffc05 fix texture 2022-06-19 00:24:33 +02:00
3raven b25c23f5fa mcl_mushroom.fr.tr
Translation
2022-06-19 00:24:33 +02:00
kay27 352fd7562f #41 Remove proprietary textures, update game screenshot 2022-06-19 00:24:33 +02:00
debiankaios 4a727d79c7 german translation
german translation

german translation
2022-06-19 00:24:15 +02:00
debiankaios b2b86e4fcc Added textures for the sprouts and roots. 2022-06-19 00:24:15 +02:00
debiankaios c3e00a1c26 Add more decoration blocks.
Added the decorations lbocks, and chancheg generation of decoration a bit.
2022-06-19 00:24:15 +02:00
debiankaios 4b976a663f Add twisting_vines textures 2022-06-19 00:24:15 +02:00
debiankaios 6755675021 Fixed warnings
Warnings because a var which not exist
2022-06-19 00:24:15 +02:00
debiankaios 324aa159a7 New Textures
New Textures

New Textures

New Textures

New Textures

New Textures

New Textures
2022-06-19 00:23:23 +02:00
debiankaios 5b06af4fec Bufixes
Fixed Bug that trees generating in other blocks. The slab and stairbug was fixed too.
2022-06-17 22:54:30 +02:00
Lizzy Fleckenstein c1ee0228f0 Fix light_source warning in mcl_mushroom 2022-06-17 22:54:30 +02:00
cora 49cb60f2e5 comment out ore generation for now 2022-06-17 22:54:30 +02:00
debiankaios 8a181661a5 Add warped and crimson 2022-06-17 22:54:30 +02:00
cora 08d677d788 Merge pull request 'Make "old" villagers keep their job' (#2325) from fix_old_villagers_profession into master
Reviewed-on: MineClone2/MineClone2#2325
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-17 20:52:02 +00:00
cora 98a322443b make "old" villagers keep their job 2022-06-17 13:59:32 +00:00
cora de994f3f06 Merge pull request 'Rate limit pathfinding attempts / Fix pathfind spam' (#2322) from fix_pathfind_spam into master
Reviewed-on: MineClone2/MineClone2#2322
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-17 13:57:16 +00:00
cora cd43076ea3 additionally rate limit villager jobhunts 2022-06-17 15:54:53 +02:00
cora e630ea59c9 Rate limit pathfinding attempts
In certain situation it otherwise results in excessive attempts to
find a path.
2022-06-17 15:54:53 +02:00
cora fb6e790535 Merge pull request 'Fix header depth in `API.md`' (#2329) from Lazerbeak12345/MineCloneJEpC:upstream into master
Reviewed-on: MineClone2/MineClone2#2329
2022-06-17 09:15:00 +00:00
Nathan Fritzler d8dec7c316
Fix header depth 2022-06-16 19:43:17 -06:00
cora 22d3b4a5d4 Merge pull request 'Bell can be activated by redstone' (#2282) from redstone_bell into master
Reviewed-on: MineClone2/MineClone2#2282
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
2022-06-16 19:33:39 +00:00
MysticTempest 965d10c003 Bell can be activated by redstone 2022-06-16 21:26:15 +02:00
cora 87bf3fdc0d Merge pull request 'Lightning command: Strike player by name' (#2326) from MrRar/MineClone2:lightning into master
Reviewed-on: MineClone2/MineClone2#2326
Reviewed-by: PrairieWind <prairie.astronomer1@gmail.com>
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-16 19:25:01 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 a455e7bb8e Lightning command: Strike player by name 2022-06-16 13:43:44 -05:00
cora 20945db0e6 Merge pull request 'Structure placement api' (#2275) from structure_api into master
Reviewed-on: MineClone2/MineClone2#2275
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-15 03:14:12 +00:00
cora 92da429f50 Fix chatcommand not under mcl_structures in /help 2022-06-15 05:10:41 +02:00
cora 726d1f07fa use noise instead of fill_ratio for distribution 2022-06-15 05:10:41 +02:00
cora 9c6aafa3c1 add surface pools 2022-06-15 05:10:41 +02:00
cora 1b0053299c Do not replace bedrock during geode gen. 2022-06-15 05:10:41 +02:00
cora fa56ce5d52 Add outer geode layer
uses deepslate until smooth basalt is there
2022-06-15 05:10:41 +02:00
cora a0bed1d8bc Add proper logging + some fixes 2022-06-15 05:10:41 +02:00
cora a895292371 Add API documentation, minor fixes 2022-06-15 05:10:41 +02:00
cora b0b8638a4c Add /spawnstruct support 2022-06-15 05:10:41 +02:00
cora 8fa67e6b4f Geodes as test for place by function 2022-06-15 05:10:41 +02:00
cora 1eaac3c406 use gennotify instead of lbm for placement
keep the lbm for secondary structures
2022-06-15 05:10:41 +02:00
cora 6406a14738 Add Structure placement api 2022-06-15 05:10:41 +02:00
cora 899c849996 old registered_structures -> structure_data 2022-06-15 05:10:41 +02:00
cora deeb7ce919 Merge pull request 'Fix horse and wolf spawning biomes' (#2316) from spawning_biomes into master
Reviewed-on: MineClone2/MineClone2#2316
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-15 03:07:51 +00:00
cora 8651e3b04e randomize spawning list 2022-06-15 05:06:31 +02:00
cora 60f164d46a Fix horse and wolf spawning biomes 2022-06-15 05:06:31 +02:00
cora 44c524f7bc Merge pull request 'Cooking potatoes with smokers' (#2319) from mrminer/MineClone2-potato-patch:master into master
Reviewed-on: MineClone2/MineClone2#2319
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-15 03:04:46 +00:00
mrminer 110b293297 Update 'mods/ITEMS/mcl_farming/potatoes.lua' 2022-06-15 01:30:55 +00:00
cora d78ba13dea Merge pull request 'mcl_spyglass by NO11' (#2309) from mcl_spyglass into master
Reviewed-on: MineClone2/MineClone2#2309
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-14 19:49:22 +00:00
cora 27a84799e4 remove superfluous dependencies 2022-06-13 12:32:48 +02:00
cora bd6d777f05 remove check for mcl_copper, fix recipe 2022-06-13 12:29:47 +02:00
cora 7dd6d5f886 spaces -> tabs 2022-06-13 12:29:47 +02:00
PrairieAstronomer e58387d123 Removed screenshots and Liscense 2022-06-13 12:29:47 +02:00
NO11 c4aa634a40 mcl_spyglass by NO11 2022-06-13 12:29:17 +02:00
cora 38a99d99ed Merge pull request 'Add Smooth Basalt node, Fix several hardness and blast_resistance values' (#2300) from smooth_basalt into master
Reviewed-on: MineClone2/MineClone2#2300
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-13 00:51:47 +00:00
cora 9cea10a706 fix more blast resistance and hardness values 2022-06-13 02:48:00 +02:00
cora 2074fec7a1 Fix hardness and b.resistance of blackstone nodes 2022-06-13 02:48:00 +02:00
cora 4e1b6074c7 Add Smooth Basalt node 2022-06-13 02:48:00 +02:00
cora 8aaa7f9400 Merge pull request 'Fix Global var warnings' (#2305) from fix_global_var_warnings into master
Reviewed-on: MineClone2/MineClone2#2305
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-13 00:46:49 +00:00
cora a43627e268 Fix 2 wrong variable uses that made warnings 2022-06-12 01:35:27 +00:00
cora 00e94c81c4 Merge pull request 'New Advancements' (#2303) from PrairieAstronomer/MineClone2:PrairieWind_advancements into master
Reviewed-on: MineClone2/MineClone2#2303
2022-06-12 01:30:57 +00:00
PrairieAstronomer 87a45ad78e Minor Format Detail in Country Lode Advancement 2022-06-11 19:14:28 -06:00
PrairieAstronomer bbd86045e5 Country Lode, Take Me Home Advancement 2022-06-11 15:35:48 -06:00
PrairieAstronomer eb72bb81da Fishy Business Advancement 2022-06-11 15:35:48 -06:00
PrairieAstronomer b544fb819d What A Deal! Advancement 2022-06-11 15:35:48 -06:00
PrairieAstronomer 17e2f05971 Sweet Dreams Advancement 2022-06-11 15:35:48 -06:00
PrairieAstronomer 2a62936fe7 Postmortal Advancement 2022-06-11 15:35:48 -06:00
PrairieAstronomer 91f8f44e17 The End? Advancement 2022-06-11 15:35:48 -06:00
PrairieAstronomer 1a5195b5e6 Isn't It Iron Pick Advancement 2022-06-11 15:35:48 -06:00
epCode fab6cf8152 Merge pull request 'Raytraced_arrows_fix' (#2297) from Raytraced_arrows_fix into master
Reviewed-on: MineClone2/MineClone2#2297
2022-06-11 02:42:45 +00:00
epCode ef92475d35 Merge pull request 'master' (#2296) from master into Raytraced_arrows_fix
Reviewed-on: MineClone2/MineClone2#2296
2022-06-11 02:42:04 +00:00
epCode 6bc5e76b8f fix tipped arrows and rocket 2022-06-10 19:40:12 -07:00
cora e4f514bb10 Merge pull request 'Change arrow hit detection for accruate shooting' (#2289) from Raytraced_arrows into master
Reviewed-on: MineClone2/MineClone2#2289
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-11 02:29:26 +00:00
epCode 6a74adc261 Merge pull request 'master' (#2290) from master into Raytraced_arrows
Reviewed-on: MineClone2/MineClone2#2290
2022-06-09 16:18:56 +00:00
cora ad55ba435a Merge pull request 'Add sus stews via subtree' (#2288) from sus_stew into master
Reviewed-on: MineClone2/MineClone2#2288
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-08 20:19:45 +00:00
cora d1149ee49a Add 'mods/ITEMS/mcl_sus_stew/' from commit '6048efbc988390321952e9ba1da4f6342df59cbf'
git-subtree-dir: mods/ITEMS/mcl_sus_stew
git-subtree-mainline: 8d9131eda3
git-subtree-split: 6048efbc98
2022-06-08 05:16:58 +02:00
cora 8d9131eda3 Merge pull request 'Knockback fixes:' (#2283) from knockback_fixes into master
Reviewed-on: MineClone2/MineClone2#2283
Reviewed-by: cora <cora@noreply.git.minetest.land>
2022-06-08 01:08:21 +00:00
chmodsayshello 6048efbc98 Merge pull request 'Use item meta to store effect information' (#1) from cora/mcl_sus_stew:master into master
Reviewed-on: chmodsayshello/mcl_sus_stew#1
2022-06-07 18:46:14 +00:00
epCode 0aaede2f50 Merge pull request 'master' (#2285) from master into Raytraced_arrows
Reviewed-on: MineClone2/MineClone2#2285
2022-06-07 18:41:22 +00:00
MysticTempest 45ec876167 Knockback fixes:
This PR enables knockback for snowballs, and eggs.
And disables knockback for the following mobs: Shulkers, Iron Golems,
and Ender Dragons.
2022-06-07 02:55:19 -05:00
epCode 6c804f44d5 add a small bit of doc 2022-06-06 18:43:50 -07:00
cora 61ddec5a85 Merge pull request 'Fix a couple of warnings (game.conf, shipwreck get_mapgen_params)' (#2277) from fix_warnings into master
Reviewed-on: MineClone2/MineClone2#2277
Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
2022-06-07 01:19:10 +00:00
cora 5c057f24fb get_mapgen_params -> get_mapgen_setting 2022-06-07 03:17:32 +02:00
cora 0fd25d15fa name -> title in game.conf 2022-06-07 03:17:32 +02:00
epCode ca5db36ccd Merge pull request 'Make loaded Crossbow (Corssbow) not show up in creative inventory' (#2281) from epcode-patch-1 into master
Reviewed-on: MineClone2/MineClone2#2281
2022-06-07 00:59:19 +00:00
epCode d738229298 Make loaded Crossbow (Corssbow) not show up in creative inventory 2022-06-07 00:58:37 +00:00
epCode 78940e109c fix critical hit displaying in the wrong place 2022-06-06 14:38:18 -07:00
epCode fdb7d5bfad fixed Badly calculated arrow direction 2022-06-06 14:32:07 -07:00
epCode f2c2f4106b fix arrows not disapearing after mob hit, and self damaging 2022-06-06 13:55:28 -07:00
epCode e1feec9a30 Add Raytracing arrows 2022-06-06 13:42:24 -07:00
cora 6f3c013d41 random effect on sstew with no meta 2022-06-04 02:44:39 +02:00
cora 3cd87dfe38 use itemmeta instead of separate itemstrings 2022-06-04 02:25:14 +02:00
cora 62d7b8cc77 move depends.txt to mod.conf 2022-06-03 12:43:25 +02:00
chmodsayshello a4c608aada you no longer can get potion effects without eating the stew 2022-01-01 08:19:01 +00:00
chmodsayshello da12a0a5b2 removed ALL suspicious stews from the creative inventory
See https://minecraft.fandom.com/wiki/Suspicious_Stew
2021-12-28 16:07:47 +00:00
chmodsayshello f6867ffedd added saturation values 2021-12-28 15:57:21 +00:00
chmodsayshello 326edffaef remove myself from the short description 2021-12-28 11:45:08 +00:00
chmodsayshello 9ea12e450a fix bowl disappering after eating the hunger stew 2021-12-28 11:27:58 +00:00
chmodsayshello e9547c54bb add depends.txt for dependencies 2021-12-28 08:11:52 +00:00
chmodsayshello fdd85e234b add the mod itself 2021-12-28 08:10:54 +00:00
chmodsayshello 37adcc1ec5 credit to the creators of Pixel Perfection 2021-12-28 08:09:58 +00:00
chmodsayshello 6b32c36a4f add texture 2021-12-28 08:08:50 +00:00
chmodsayshello 2a2501c626 Initial commit 2021-12-28 08:07:42 +00:00
310 changed files with 6743 additions and 1082 deletions

2
API.md
View File

@ -42,7 +42,7 @@ A lot of things are possible by using one of the APIs in the mods. Note that not
* Buckets: `ITEMS/mcl_buckets`
* Dispenser support: `ITEMS/REDSTONE/mcl_dispensers`
## Mobs
### Mobs
* Mobs: `ENTITIES/mcl_mobs`
MineClone 2 uses its own mobs framework, called “Mobs Redo: MineClone 2 Edition” or “MRM” for short.

View File

@ -1,2 +1,2 @@
name = MineClone 2
title = MineClone 2
description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more.

View File

@ -59,6 +59,8 @@ mcl_item_entity.register_pickup_achievement("tree", "mcl:mineWood")
mcl_item_entity.register_pickup_achievement("mcl_mobitems:blaze_rod", "mcl:blazeRod")
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")
local function check_pickup_achievements(object, player)
if has_awards then
@ -535,9 +537,9 @@ minetest.register_entity(":__builtin:item", {
self.itemstring = data.itemstring
self.always_collect = data.always_collect
if data.age then
self.age = data.age + dtime_s
self.age = data.age
else
self.age = dtime_s
self.age = self.age
end
--remember collection data
-- If true, can collect item without delay

View File

@ -21,7 +21,7 @@ local function register_rail(itemstring, tiles, def_extras, creative)
stack_max = 64,
groups = groups,
sounds = mcl_sounds.node_sound_metal_defaults(),
_mcl_blast_resistance = 3.5,
_mcl_blast_resistance = 0.7,
_mcl_hardness = 0.7,
after_destruct = function(pos)
-- Scan for minecarts in this pos and force them to execute their "floating" check.

View File

@ -91,7 +91,7 @@ minetest.register_chatcommand("clearmobs",{
if o.is_mob then
if param == "all" or
( param == "nametagged" and o.nametag ) or
( param == "" and not o.nametag and not o.tamed ) or
( param == "" and ( not o.nametag or o.nametag == "" ) and not o.tamed ) or
( num and num > 0 and vector.distance(p:get_pos(),o.object:get_pos()) <= num ) then
o.object:remove()
end
@ -298,9 +298,13 @@ local function update_roll(self)
if is_Fleckenstein then
cbox[2], cbox[5] = -cbox[5], -cbox[2]
self.object:set_properties({collisionbox = cbox})
-- This leads to child mobs having the wrong collisionbox
-- and seeing as it seems to be nothing but an easter egg
-- i've put it inside the if. Which just makes it be upside
-- down lol.
end
self.object:set_properties({collisionbox = cbox})
end
-- set and return valid yaw
@ -2283,6 +2287,9 @@ end
local function go_to_pos(entity,b)
if not entity then return end
local s=entity.object:get_pos()
if not b then
--self.state = "stand"
return end
if vector.distance(b,s) < 1 then
--set_velocity(entity,0)
return true
@ -2314,6 +2321,43 @@ local function check_doors(self)
end
end
local gowp_etime = 0
local function check_gowp(self,dtime)
gowp_etime = gowp_etime + dtime
if gowp_etime < 0.2 then return end
gowp_etime = 0
local p = self.object:get_pos()
if not p or not self._target then return end
if vector.distance(p,self._target) < 1 then
self.waypoints = nil
self._target = nil
self.current_target = nil
self.state = "stand"
if self.callback_arrived then return self.callback_arrived(self) end
return true
end
if self.waypoints and ( not self.current_target or vector.distance(p,self.current_target) < 2 ) then
self.current_target = table.remove(self.waypoints, 1)
--minetest.log("nextwp:".. tostring(self.current_target) )
go_to_pos(self,self.current_target)
return
elseif self.current_target then
go_to_pos(self,self.current_target)
end
if self.current_target and not minetest.line_of_sight(self.object:get_pos(),self.current_target) then
self.waypoints=minetest.find_path(p,self._target,150,1,4)
if not self.waypoints then self.state = "walk" end --give up
self.current_target = nil
return
end
if not self.current_target then
--minetest.log("no path")
self.state = "walk"
end
end
-- execute current state (stand, walk, run, attacks)
-- returns true if mob has died
local do_states = function(self, dtime)
@ -2326,9 +2370,8 @@ local do_states = function(self, dtime)
local s = self.object:get_pos()
local objs = minetest.get_objects_inside_radius(s, 3)
local lp
for n = 1, #objs do
if objs[n]:is_player() then
lp = objs[n]:get_pos()
break
@ -2336,7 +2379,7 @@ local do_states = function(self, dtime)
end
-- look at any players nearby, otherwise turn randomly
if self.look_at_players then
if lp and self.look_at_players then
local vec = {
x = lp.x - s.x,
@ -2372,32 +2415,7 @@ local do_states = function(self, dtime)
end
elseif self.state == "gowp" then
local p = self.object:get_pos()
if not p or not self._target then return end
if vector.distance(p,self._target) < 2 or ( self.waypoints and #self.waypoints == 0 ) then
self.waypoints = nil
self._target = nil
self.current_target = nil
self.state = "walk"
if self.callback_arrived then return self.callback_arrived(self) end
return true
end
if self.waypoints and ( not self.current_target or vector.distance(p,self.current_target) < 1.5 ) then
self.current_target = table.remove(self.waypoints, 1)
--minetest.log("nextwp:".. tostring(self.current_target) )
elseif self.current_target then
go_to_pos(self,self.current_target)
end
if self.current_target and not minetest.line_of_sight(self.object:get_pos(),self.current_target) then
self.waypoints=minetest.find_path(p,self._target,150,1,4)
self.current_target = nil
return
end
if not self.current_target then
--minetest.log("no path")
self.state = "walk"
end
check_gowp(self,dtime)
elseif self.state == "walk" then
local s = self.object:get_pos()
@ -2908,7 +2926,12 @@ local plane_adjacents = {
vector.new(0,0,-1),
}
local gopath_last = os.time()
function mcl_mobs:gopath(self,target,callback_arrived)
if os.time() - gopath_last < 15 then return end
gopath_last = os.time()
--minetest.log("gowp")
local p = self.object:get_pos()
local t = vector.offset(target,0,1,0)
local wp = minetest.find_path(p,t,150,1,4)
@ -2928,11 +2951,15 @@ function mcl_mobs:gopath(self,target,callback_arrived)
if wp and #wp > 0 then
self._target = t
self.callback_arrived = callback_arrived
table.remove(wp,1)
self.waypoints = wp
self.state = "gowp"
return true
else
--minetest.log("no path found")
self.state = "walk"
self.waypoints = nil
self.current_target = nil
-- minetest.log("no path found")
end
end
@ -2964,7 +2991,7 @@ local function damage_mob(self,reason,damage)
if damage > 0 then
self.health = self.health - damage
effect(pos, 5, "mcl_particles_smoke.png", 1, 2, 2, nil)
effect(self.object:get_pos(), 5, "mcl_particles_smoke.png", 1, 2, 2, nil)
if check_for_death(self, reason, {type = reason}) then
return true
@ -3210,35 +3237,36 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
local die = false
-- only play hit sound and show blood effects if damage is 1 or over; lower to 0.1 to ensure armor works appropriately.
if damage >= 0.1 then
-- weapon sounds
if weapon:get_definition().sounds ~= nil then
if damage >= 0 then
-- only play hit sound and show blood effects if damage is 1 or over; lower to 0.1 to ensure armor works appropriately.
if damage >= 0.1 then
-- weapon sounds
if weapon:get_definition().sounds ~= nil then
local s = random(0, #weapon:get_definition().sounds)
local s = random(0, #weapon:get_definition().sounds)
minetest.sound_play(weapon:get_definition().sounds[s], {
object = self.object, --hitter,
max_hear_distance = 8
}, true)
else
minetest.sound_play("default_punch", {
object = self.object,
max_hear_distance = 5
}, true)
minetest.sound_play(weapon:get_definition().sounds[s], {
object = self.object, --hitter,
max_hear_distance = 8
}, true)
else
minetest.sound_play("default_punch", {
object = self.object,
max_hear_distance = 5
}, true)
end
damage_effect(self, damage)
-- do damage
self.health = self.health - damage
-- skip future functions if dead, except alerting others
if check_for_death(self, "hit", {type = "punch", puncher = hitter}) then
die = true
end
end
damage_effect(self, damage)
-- do damage
self.health = self.health - damage
-- skip future functions if dead, except alerting others
if check_for_death(self, "hit", {type = "punch", puncher = hitter}) then
die = true
end
-- knock back effect (only on full punch)
if not die
and self.knock_back
@ -4008,6 +4036,7 @@ minetest.register_entity(name, {
fire_resistant = def.fire_resistant or false,
fire_damage_resistant = def.fire_damage_resistant or false,
ignited_by_sunlight = def.ignited_by_sunlight or false,
spawn_in_group = def.spawn_in_group,
-- End of MCL2 extensions
on_spawn = def.on_spawn,
@ -4333,7 +4362,7 @@ end
-- feeding, taming and breeding (thanks blert2112)
function mcl_mobs:feed_tame(self, clicker, feed_count, breed, tame)
function mcl_mobs:feed_tame(self, clicker, feed_count, breed, tame, notake)
if not self.follow then
return false
end
@ -4346,7 +4375,7 @@ function mcl_mobs:feed_tame(self, clicker, feed_count, breed, tame)
local item = clicker:get_wielded_item()
item:take_item()
if not notake then item:take_item() end
clicker:set_wielded_item(item)
end

View File

@ -189,6 +189,9 @@ local list_of_all_biomes = {
"MesaBryce",
"JungleEdge",
"SavannaM",
"Nether",
"WarpedForest",
"SoulsandValley"
}
-- count how many mobs are in an area
@ -376,6 +379,24 @@ local function is_farm_animal(n)
return n == "mobs_mc:pig" or n == "mobs_mc:cow" or n == "mobs_mc:sheep" or n == "mobs_mc:chicken" or n == "mobs_mc:horse" or n == "mobs_mc:donkey"
end
local function get_water_spawn(p)
local nn = minetest.find_nodes_in_area(vector.offset(p,-2,-1,-2),vector.offset(p,2,-15,2),{"group:water"})
if nn and #nn > 0 then
return nn[math.random(#nn)]
end
end
local function spawn_group(p,mob,spawn_on,group_max)
local nn = minetest.find_nodes_in_area(vector.offset(p,-3,-3,-3),vector.offset(p,3,3,3),spawn_on)
if not nn or #nn < 1 then
nn = {}
table.insert(nn,p)
end
for i = 1, math.random(group_max) do
minetest.add_entity(nn[math.random(#nn)],mob)
end
end
if mobs_spawn then
local perlin_noise
@ -407,6 +428,7 @@ if mobs_spawn then
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_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"})
@ -426,6 +448,7 @@ if mobs_spawn then
perlin_noise = perlin_noise or minetest_get_perlin(noise_params)
local noise = perlin_noise:get_3d(spawning_position)
local current_summary_chance = summary_chance
table.shuffle(mob_library_worker_table)
while #mob_library_worker_table > 0 do
local mob_chance_offset = (math_round(noise * current_summary_chance + 12345) % current_summary_chance) + 1
local mob_index = 1
@ -438,6 +461,7 @@ if mobs_spawn then
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
if mob_def
and spawning_position.y >= mob_def.min_height
and spawning_position.y <= mob_def.max_height
@ -446,14 +470,25 @@ if mobs_spawn then
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)
then
if mob_def.type_of_spawning == "water" then
spawning_position = get_water_spawn(spawning_position)
if not spawning_position then
return
end
end
--everything is correct, spawn mob
local object = minetest.add_entity(spawning_position, mob_def.name)
if spawn_in_group then
spawn_group(spawning_position,mob_def.name,{gotten_node},spawn_in_group)
end
if object then
return mob_def.on_spawn and mob_def.on_spawn(object, pos)
return mob_def.on_spawn and mob_def.on_spawn(object, spawning_position)
end
end
current_summary_chance = current_summary_chance - mob_chance

View File

@ -46,6 +46,9 @@ end
local wither_head = minetest.registered_nodes["mcl_heads:wither_skeleton"]
local old_on_place = wither_head.on_place
function wither_head.on_place(itemstack, placer, pointed)
minetest.after(0, wither_spawn, pointed.above)
old_on_place(itemstack, placer, pointed)
local n = minetest.get_node(vector.offset(pointed.above,0,-1,0))
if n and n.name == "mcl_nether:soul_sand" then
minetest.after(0, wither_spawn, pointed.above)
end
return old_on_place(itemstack, placer, pointed)
end

View File

@ -0,0 +1,273 @@
--MCmobs v0.4
--maikerumine
--made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes
local pi = math.pi
local atann = math.atan
local atan = function(x)
if not x or x ~= x then
return 0
else
return atann(x)
end
end
local dir_to_pitch = function(dir)
local dir2 = vector.normalize(dir)
local xz = math.abs(dir.x) + math.abs(dir.z)
return -math.atan2(-dir.y, xz)
end
local function degrees(rad)
return rad * 180.0 / math.pi
end
local S = minetest.get_translator(minetest.get_current_modname())
--###################
--################### cod
--###################
local cod = {
type = "animal",
spawn_class = "water",
can_despawn = true,
passive = true,
hp_min = 3,
hp_max = 3,
xp_min = 1,
xp_max = 3,
armor = 100,
rotate = 180,
spawn_in_group = 10,
tilt_swim = true,
collisionbox = {-0.3, 0.0, -0.3, 0.3, 0.79, 0.3},
visual = "mesh",
mesh = "extra_mobs_cod.b3d",
textures = {
{"extra_mobs_cod.png"}
},
sounds = {
},
animation = {
stand_start = 1,
stand_end = 20,
walk_start = 1,
walk_end = 20,
run_start = 1,
run_end = 20,
},
drops = {
{name = "mcl_fishing:fish_raw",
chance = 1,
min = 1,
max = 1,},
{name = "mcl_dye:white",
chance = 20,
min = 1,
max = 1,},
},
visual_size = {x=3, y=3},
makes_footstep_sound = false,
fly = true,
fly_in = { "mcl_core:water_source", "mclx_core:river_water_source" },
breathes_in_water = true,
jump = false,
view_range = 16,
runaway = true,
fear_height = 4,
do_custom = function(self)
--[[ this is supposed to make them jump out the water but doesn't appear to work very well
self.object:set_bone_position("body", vector.new(0,1,0), vector.new(degrees(dir_to_pitch(self.object:get_velocity())) * -1 + 90,0,0))
if minetest.get_item_group(self.standing_in, "water") ~= 0 then
if self.object:get_velocity().y < 5 then
self.object:add_velocity({ x = 0 , y = math.random(-.007, .007), z = 0 })
end
end
--]]
for _,object in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 10)) do
local lp = object:get_pos()
local s = self.object:get_pos()
local vec = {
x = lp.x - s.x,
y = lp.y - s.y,
z = lp.z - s.z
}
if object and not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "mobs_mc:cod" then
self.state = "runaway"
self.object:set_rotation({x=0,y=(atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate,z=0})
end
end
end,
on_rightclick = function(self, clicker)
if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then
self.object:remove()
clicker:set_wielded_item("mcl_fishing:bucket_cod")
awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing")
end
end
}
mcl_mobs:register_mob("mobs_mc:cod", cod)
--spawning TODO: in schools
local water = 0
mcl_mobs:spawn_specific(
"mobs_mc:cod",
"overworld",
"water",
{
"Mesa",
"FlowerForest",
"Swampland",
"Taiga",
"ExtremeHills",
"Jungle",
"Savanna",
"BirchForest",
"MegaSpruceTaiga",
"MegaTaiga",
"ExtremeHills+",
"Forest",
"Plains",
"Desert",
"ColdTaiga",
"MushroomIsland",
"IcePlainsSpikes",
"SunflowerPlains",
"IcePlains",
"RoofedForest",
"ExtremeHills+_snowtop",
"MesaPlateauFM_grasstop",
"JungleEdgeM",
"ExtremeHillsM",
"JungleM",
"BirchForestM",
"MesaPlateauF",
"MesaPlateauFM",
"MesaPlateauF_grasstop",
"MesaBryce",
"JungleEdge",
"SavannaM",
"FlowerForest_beach",
"Forest_beach",
"StoneBeach",
"ColdTaiga_beach_water",
"Taiga_beach",
"Savanna_beach",
"Plains_beach",
"ExtremeHills_beach",
"ColdTaiga_beach",
"Swampland_shore",
"MushroomIslandShore",
"JungleM_shore",
"Jungle_shore",
"MesaPlateauFM_sandlevel",
"MesaPlateauF_sandlevel",
"MesaBryce_sandlevel",
"Mesa_sandlevel",
"RoofedForest_ocean",
"JungleEdgeM_ocean",
"BirchForestM_ocean",
"BirchForest_ocean",
"IcePlains_deep_ocean",
"Jungle_deep_ocean",
"Savanna_ocean",
"MesaPlateauF_ocean",
"ExtremeHillsM_deep_ocean",
"Savanna_deep_ocean",
"SunflowerPlains_ocean",
"Swampland_deep_ocean",
"Swampland_ocean",
"MegaSpruceTaiga_deep_ocean",
"ExtremeHillsM_ocean",
"JungleEdgeM_deep_ocean",
"SunflowerPlains_deep_ocean",
"BirchForest_deep_ocean",
"IcePlainsSpikes_ocean",
"Mesa_ocean",
"StoneBeach_ocean",
"Plains_deep_ocean",
"JungleEdge_deep_ocean",
"SavannaM_deep_ocean",
"Desert_deep_ocean",
"Mesa_deep_ocean",
"ColdTaiga_deep_ocean",
"Plains_ocean",
"MesaPlateauFM_ocean",
"Forest_deep_ocean",
"JungleM_deep_ocean",
"FlowerForest_deep_ocean",
"MushroomIsland_ocean",
"MegaTaiga_ocean",
"StoneBeach_deep_ocean",
"IcePlainsSpikes_deep_ocean",
"ColdTaiga_ocean",
"SavannaM_ocean",
"MesaPlateauF_deep_ocean",
"MesaBryce_deep_ocean",
"ExtremeHills+_deep_ocean",
"ExtremeHills_ocean",
"MushroomIsland_deep_ocean",
"Forest_ocean",
"MegaTaiga_deep_ocean",
"JungleEdge_ocean",
"MesaBryce_ocean",
"MegaSpruceTaiga_ocean",
"ExtremeHills+_ocean",
"Jungle_ocean",
"RoofedForest_deep_ocean",
"IcePlains_ocean",
"FlowerForest_ocean",
"ExtremeHills_deep_ocean",
"MesaPlateauFM_deep_ocean",
"Desert_ocean",
"Taiga_ocean",
"BirchForestM_deep_ocean",
"Taiga_deep_ocean",
"JungleM_ocean",
"FlowerForest_underground",
"JungleEdge_underground",
"StoneBeach_underground",
"MesaBryce_underground",
"Mesa_underground",
"RoofedForest_underground",
"Jungle_underground",
"Swampland_underground",
"MushroomIsland_underground",
"BirchForest_underground",
"Plains_underground",
"MesaPlateauF_underground",
"ExtremeHills_underground",
"MegaSpruceTaiga_underground",
"BirchForestM_underground",
"SavannaM_underground",
"MesaPlateauFM_underground",
"Desert_underground",
"Savanna_underground",
"Forest_underground",
"SunflowerPlains_underground",
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"ExtremeHills+_underground",
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
},
0,
minetest.LIGHT_MAX+1,
30,
4000,
3,
water-16,
water+1)
--spawn egg
mcl_mobs:register_egg("mobs_mc:cod", S("Cod"), "extra_mobs_spawn_icon_cod.png", 0)

View File

@ -0,0 +1,253 @@
--MCmobs v0.4
--maikerumine
--made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes
local pi = math.pi
local atann = math.atan
local atan = function(x)
if not x or x ~= x then
return 0
else
return atann(x)
end
end
local dir_to_pitch = function(dir)
local dir2 = vector.normalize(dir)
local xz = math.abs(dir.x) + math.abs(dir.z)
return -math.atan2(-dir.y, xz)
end
local function degrees(rad)
return rad * 180.0 / math.pi
end
local S = minetest.get_translator(minetest.get_current_modname())
--###################
--################### dolphin
--###################
local dolphin = {
type = "monster",
spawn_class = "water",
can_despawn = true,
passive = true,
hp_min = 10,
hp_max = 10,
xp_min = 1,
xp_max = 3,
armor = 100,
walk_chance = 100,
breath_max = 120,
rotate = 180,
spawn_in_group = 3,
tilt_swim = true,
collisionbox = {-0.3, 0.0, -0.3, 0.3, 0.79, 0.3},
visual = "mesh",
mesh = "extra_mobs_dolphin.b3d",
textures = {
{"extra_mobs_dolphin.png"}
},
sounds = {
},
animation = {
stand_start = 20,
stand_end = 20,
walk_start = 0,
walk_end = 15,
run_start = 30,
run_end = 45,
},
drops = {
{name = "mcl_fishing:fish_raw",
chance = 1,
min = 0,
max = 1,},
},
visual_size = {x=3, y=3},
makes_footstep_sound = false,
fly = true,
fly_in = { "mcl_core:water_source", "mclx_core:river_water_source" },
breathes_in_water = true,
jump = false,
view_range = 16,
fear_height = 4,
walk_velocity = 3,
run_velocity = 6,
reach = 2,
damage = 2.5,
attack_type = "dogfight",
do_custom = function(self,dtime)
--[[ this is supposed to make them jump out the water but doesn't appear to work very well
self.object:set_bone_position("body", vector.new(0,1,0), vector.new(degrees(dir_to_pitch(self.object:get_velocity())) * -1 + 90,0,0))
if minetest.get_item_group(self.standing_in, "water") ~= 0 then
if self.object:get_velocity().y < 5 then
self.object:add_velocity({ x = 0 , y = math.random(-.007, .007), z = 0 })
end
end
--]]
end,
}
mcl_mobs:register_mob("mobs_mc:dolphin", dolphin)
--spawning TO DO: in schools
local water = 0
mcl_mobs:spawn_specific(
"mobs_mc:dolphin",
"overworld",
"water",
{
"Mesa",
"FlowerForest",
"Swampland",
"Taiga",
"ExtremeHills",
"Jungle",
"Savanna",
"BirchForest",
"MegaSpruceTaiga",
"MegaTaiga",
"ExtremeHills+",
"Forest",
"Plains",
"Desert",
"ColdTaiga",
"MushroomIsland",
"IcePlainsSpikes",
"SunflowerPlains",
"IcePlains",
"RoofedForest",
"ExtremeHills+_snowtop",
"MesaPlateauFM_grasstop",
"JungleEdgeM",
"ExtremeHillsM",
"JungleM",
"BirchForestM",
"MesaPlateauF",
"MesaPlateauFM",
"MesaPlateauF_grasstop",
"MesaBryce",
"JungleEdge",
"SavannaM",
"FlowerForest_beach",
"Forest_beach",
"StoneBeach",
"ColdTaiga_beach_water",
"Taiga_beach",
"Savanna_beach",
"Plains_beach",
"ExtremeHills_beach",
"ColdTaiga_beach",
"Swampland_shore",
"MushroomIslandShore",
"JungleM_shore",
"Jungle_shore",
"MesaPlateauFM_sandlevel",
"MesaPlateauF_sandlevel",
"MesaBryce_sandlevel",
"Mesa_sandlevel",
"RoofedForest_ocean",
"JungleEdgeM_ocean",
"BirchForestM_ocean",
"BirchForest_ocean",
"IcePlains_deep_ocean",
"Jungle_deep_ocean",
"Savanna_ocean",
"MesaPlateauF_ocean",
"ExtremeHillsM_deep_ocean",
"Savanna_deep_ocean",
"SunflowerPlains_ocean",
"Swampland_deep_ocean",
"Swampland_ocean",
"MegaSpruceTaiga_deep_ocean",
"ExtremeHillsM_ocean",
"JungleEdgeM_deep_ocean",
"SunflowerPlains_deep_ocean",
"BirchForest_deep_ocean",
"IcePlainsSpikes_ocean",
"Mesa_ocean",
"StoneBeach_ocean",
"Plains_deep_ocean",
"JungleEdge_deep_ocean",
"SavannaM_deep_ocean",
"Desert_deep_ocean",
"Mesa_deep_ocean",
"ColdTaiga_deep_ocean",
"Plains_ocean",
"MesaPlateauFM_ocean",
"Forest_deep_ocean",
"JungleM_deep_ocean",
"FlowerForest_deep_ocean",
"MushroomIsland_ocean",
"MegaTaiga_ocean",
"StoneBeach_deep_ocean",
"IcePlainsSpikes_deep_ocean",
"ColdTaiga_ocean",
"SavannaM_ocean",
"MesaPlateauF_deep_ocean",
"MesaBryce_deep_ocean",
"ExtremeHills+_deep_ocean",
"ExtremeHills_ocean",
"MushroomIsland_deep_ocean",
"Forest_ocean",
"MegaTaiga_deep_ocean",
"JungleEdge_ocean",
"MesaBryce_ocean",
"MegaSpruceTaiga_ocean",
"ExtremeHills+_ocean",
"Jungle_ocean",
"RoofedForest_deep_ocean",
"IcePlains_ocean",
"FlowerForest_ocean",
"ExtremeHills_deep_ocean",
"MesaPlateauFM_deep_ocean",
"Desert_ocean",
"Taiga_ocean",
"BirchForestM_deep_ocean",
"Taiga_deep_ocean",
"JungleM_ocean",
"FlowerForest_underground",
"JungleEdge_underground",
"StoneBeach_underground",
"MesaBryce_underground",
"Mesa_underground",
"RoofedForest_underground",
"Jungle_underground",
"Swampland_underground",
"MushroomIsland_underground",
"BirchForest_underground",
"Plains_underground",
"MesaPlateauF_underground",
"ExtremeHills_underground",
"MegaSpruceTaiga_underground",
"BirchForestM_underground",
"SavannaM_underground",
"MesaPlateauFM_underground",
"Desert_underground",
"Savanna_underground",
"Forest_underground",
"SunflowerPlains_underground",
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"ExtremeHills+_underground",
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
},
0,
minetest.LIGHT_MAX+1,
30,
4000,
3,
water-16,
water+1)
--spawn egg
mcl_mobs:register_egg("mobs_mc:dolphin", S("Dolphin"), "extra_mobs_spawn_icon_dolphin.png", 0)

View File

@ -35,6 +35,7 @@ mcl_mobs:register_mob("mobs_mc:enderdragon", {
},
physical = true,
damage = 10,
knock_back = false,
jump = true,
jump_height = 14,
fly = true,

View File

@ -766,15 +766,32 @@ mcl_mobs:spawn_specific(
"nether",
"ground",
{
"Nether"
"Nether",
"SoulsandValley",
},
0,
7,
minetest.LIGHT_MAX+1,
30,
27500,
4,
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
-- Warped Forest spawn (common)
mcl_mobs:spawn_specific(
"mobs_mc:enderman",
"nether",
"ground",
{
"WarpedForest"
},
0,
minetest.LIGHT_MAX+1,
30,
5000,
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)

View File

@ -81,12 +81,14 @@ mcl_mobs:spawn_specific(
"nether",
"ground",
{
"Nether"
"Nether",
"SoulsandValley",
"BasaltDelta",
},
0,
minetest.LIGHT_MAX+1,
7,
30,
18000,
72000,
2,
mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max)
@ -105,7 +107,12 @@ mcl_mobs:register_arrow("mobs_mc:fireball", {
full_punch_interval = 1.0,
damage_groups = {fleshy = 6},
}, nil)
mcl_mobs:boom(self, self.object:get_pos(), 1, true)
local p = self.object:get_pos()
if p then
mcl_mobs:boom(self, p, 1, true)
else
mcl_mobs:boom(self, player:get_pos(), 1, true)
end
end,
hit_mob = function(self, mob)

View File

@ -542,41 +542,14 @@ mcl_mobs:spawn_specific(
"ground",
{
"flat",
"IcePlainsSpikes",
"ColdTaiga",
"ColdTaiga_beach",
"ColdTaiga_beach_water",
"MegaTaiga",
"MegaSpruceTaiga",
"ExtremeHills",
"ExtremeHills_beach",
"ExtremeHillsM",
"ExtremeHills+",
"ExtremeHills+_snowtop",
"StoneBeach",
"Plains",
"Plains_beach",
"SunflowerPlains",
"Taiga",
"Taiga_beach",
"Forest",
"Forest_beach",
"FlowerForest",
"FlowerForest_beach",
"BirchForest",
"BirchForestM",
"RoofedForest",
"Savanna",
"Savanna_beach",
"SavannaM",
"Jungle",
"Jungle_shore",
"JungleM",
"JungleM_shore",
"JungleEdge",
"JungleEdgeM",
"Swampland",
"Swampland_shore"
"Savanna_beach",
"Plains_beach",
},
0,
minetest.LIGHT_MAX+1,
@ -586,18 +559,20 @@ minetest.LIGHT_MAX+1,
mobs_mc.water_level+3,
mcl_vars.mg_overworld_max)
mcl_mobs:spawn_specific(
"mobs_mc:donkey",
"overworld",
"ground",
{
"Mesa",
"MesaPlateauFM_grasstop",
"MesaPlateauF",
"MesaPlateauFM",
"MesaPlateauF_grasstop",
"MesaBryce",
"flat",
"Plains",
"Plains_beach",
"SunflowerPlains",
"Savanna",
"Savanna_beach",
"SavannaM",
"Savanna_beach",
"Plains_beach",
},
0,
minetest.LIGHT_MAX+1,

View File

@ -142,3 +142,7 @@ dofile(path .. "/slime+magma_cube.lua") -- Wuzzy
dofile(path .. "/spider.lua") -- Spider by AspireMint (fishyWET (CC-BY-SA 3.0 license for texture)
dofile(path .. "/vex.lua") -- KrupnoPavel
dofile(path .. "/wither.lua") -- Mesh and animation by toby109tt / https://github.com/22i
dofile(path .. "/cod.lua")
dofile(path .. "/salmon.lua")
dofile(path .. "/dolphin.lua")

View File

@ -37,6 +37,7 @@ mcl_mobs:register_mob("mobs_mc:iron_golem", {
run_velocity = 1.2,
-- Approximation
damage = 14,
knock_back = false,
reach = 3,
group_attack = true,
attacks_monsters = true,

View File

@ -62,3 +62,6 @@ Weapon Smith=
Tool Smith=
Cleric=
Nitwit=
Cod=
Salmon=
Dolphin=

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -76,7 +76,6 @@ mcl_mobs:spawn_specific(
"ColdTaiga",
"IcePlainsSpikes",
"IcePlains",
"ExtremeHills+_snowtop",
},
0,
minetest.LIGHT_MAX+1,

View File

@ -132,18 +132,9 @@ mcl_mobs:spawn_specific(
"Desert",
"FlowerForest",
"Taiga",
"ExtremeHills",
"BirchForest",
"MegaSpruceTaiga",
"MegaTaiga",
"ExtremeHills+",
"Plains",
"ColdTaiga",
"SunflowerPlains",
"RoofedForest",
"MesaPlateauFM_grasstop",
"ExtremeHillsM",
"BirchForestM",
},
9,
minetest.LIGHT_MAX+1,

View File

@ -0,0 +1,228 @@
--MCmobs v0.4
--maikerumine
--made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes
local S = minetest.get_translator(minetest.get_current_modname())
--###################
--################### salmon
--###################
local salmon = {
type = "animal",
spawn_class = "water",
can_despawn = true,
passive = true,
hp_min = 3,
hp_max = 3,
xp_min = 1,
xp_max = 3,
armor = 100,
spawn_in_group = 5,
tilt_swim = true,
collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.79, 0.4},
visual = "mesh",
mesh = "extra_mobs_salmon.b3d",
textures = {
{"extra_mobs_salmon.png"}
},
sounds = {
},
animation = {
stand_start = 1,
stand_end = 20,
walk_start = 1,
walk_end = 20,
run_start = 1,
run_end = 20,
},
drops = {
{name = "mcl_fishing:salmon_raw",
chance = 1,
min = 1,
max = 1,},
{name = "mcl_dye:white",
chance = 20,
min = 1,
max = 1,},
},
visual_size = {x=3, y=3},
makes_footstep_sound = false,
swim = true,
fly = true,
fly_in = "mcl_core:water_source",
breathes_in_water = true,
jump = false,
view_range = 16,
runaway = true,
fear_height = 4,
on_rightclick = function(self, clicker)
if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then
self.object:remove()
clicker:set_wielded_item("mcl_fishing:bucket_salmon")
awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing")
end
end
}
mcl_mobs:register_mob("mobs_mc:salmon", salmon)
--spawning TODO: in schools
local water = 0
mcl_mobs:spawn_specific(
"mobs_mc:salmon",
"overworld",
"water",
{
"Mesa",
"FlowerForest",
"Swampland",
"Taiga",
"ExtremeHills",
"Jungle",
"Savanna",
"BirchForest",
"MegaSpruceTaiga",
"MegaTaiga",
"ExtremeHills+",
"Forest",
"Plains",
"Desert",
"ColdTaiga",
"MushroomIsland",
"IcePlainsSpikes",
"SunflowerPlains",
"IcePlains",
"RoofedForest",
"ExtremeHills+_snowtop",
"MesaPlateauFM_grasstop",
"JungleEdgeM",
"ExtremeHillsM",
"JungleM",
"BirchForestM",
"MesaPlateauF",
"MesaPlateauFM",
"MesaPlateauF_grasstop",
"MesaBryce",
"JungleEdge",
"SavannaM",
"FlowerForest_beach",
"Forest_beach",
"StoneBeach",
"ColdTaiga_beach_water",
"Taiga_beach",
"Savanna_beach",
"Plains_beach",
"ExtremeHills_beach",
"ColdTaiga_beach",
"Swampland_shore",
"MushroomIslandShore",
"JungleM_shore",
"Jungle_shore",
"MesaPlateauFM_sandlevel",
"MesaPlateauF_sandlevel",
"MesaBryce_sandlevel",
"Mesa_sandlevel",
"RoofedForest_ocean",
"JungleEdgeM_ocean",
"BirchForestM_ocean",
"BirchForest_ocean",
"IcePlains_deep_ocean",
"Jungle_deep_ocean",
"Savanna_ocean",
"MesaPlateauF_ocean",
"ExtremeHillsM_deep_ocean",
"Savanna_deep_ocean",
"SunflowerPlains_ocean",
"Swampland_deep_ocean",
"Swampland_ocean",
"MegaSpruceTaiga_deep_ocean",
"ExtremeHillsM_ocean",
"JungleEdgeM_deep_ocean",
"SunflowerPlains_deep_ocean",
"BirchForest_deep_ocean",
"IcePlainsSpikes_ocean",
"Mesa_ocean",
"StoneBeach_ocean",
"Plains_deep_ocean",
"JungleEdge_deep_ocean",
"SavannaM_deep_ocean",
"Desert_deep_ocean",
"Mesa_deep_ocean",
"ColdTaiga_deep_ocean",
"Plains_ocean",
"MesaPlateauFM_ocean",
"Forest_deep_ocean",
"JungleM_deep_ocean",
"FlowerForest_deep_ocean",
"MushroomIsland_ocean",
"MegaTaiga_ocean",
"StoneBeach_deep_ocean",
"IcePlainsSpikes_deep_ocean",
"ColdTaiga_ocean",
"SavannaM_ocean",
"MesaPlateauF_deep_ocean",
"MesaBryce_deep_ocean",
"ExtremeHills+_deep_ocean",
"ExtremeHills_ocean",
"MushroomIsland_deep_ocean",
"Forest_ocean",
"MegaTaiga_deep_ocean",
"JungleEdge_ocean",
"MesaBryce_ocean",
"MegaSpruceTaiga_ocean",
"ExtremeHills+_ocean",
"Jungle_ocean",
"RoofedForest_deep_ocean",
"IcePlains_ocean",
"FlowerForest_ocean",
"ExtremeHills_deep_ocean",
"MesaPlateauFM_deep_ocean",
"Desert_ocean",
"Taiga_ocean",
"BirchForestM_deep_ocean",
"Taiga_deep_ocean",
"JungleM_ocean",
"FlowerForest_underground",
"JungleEdge_underground",
"StoneBeach_underground",
"MesaBryce_underground",
"Mesa_underground",
"RoofedForest_underground",
"Jungle_underground",
"Swampland_underground",
"MushroomIsland_underground",
"BirchForest_underground",
"Plains_underground",
"MesaPlateauF_underground",
"ExtremeHills_underground",
"MegaSpruceTaiga_underground",
"BirchForestM_underground",
"SavannaM_underground",
"MesaPlateauFM_underground",
"Desert_underground",
"Savanna_underground",
"Forest_underground",
"SunflowerPlains_underground",
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"ExtremeHills+_underground",
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
},
0,
minetest.LIGHT_MAX+1,
30,
4000,
3,
water-16,
water+1)
--spawn egg
mcl_mobs:register_egg("mobs_mc:salmon", S("Salmon"), "extra_mobs_spawn_icon_salmon.png", 0)

View File

@ -33,6 +33,7 @@ mcl_mobs:register_mob("mobs_mc:shulker", {
-- TODO: Make shulker dye-able
visual_size = {x=3, y=3},
walk_chance = 0,
knock_back = false,
jump = false,
drops = {
{name = "mcl_mobitems:shulker_shell",

View File

@ -302,10 +302,10 @@ mcl_mobs:spawn_specific(
"nether",
"ground",
{
"Nether"
"SoulsandValley",
},
0,
7,
minetest.LIGHT_MAX+1,
30,
10000,
3,

View File

@ -402,7 +402,8 @@ mcl_mobs:spawn_specific(
"nether",
"ground",
{
"Nether"
"Nether",
"BasaltDelta",
},
0,
minetest.LIGHT_MAX+1,
@ -418,7 +419,8 @@ mcl_mobs:spawn_specific(
"nether",
"ground",
{
"Nether"
"Nether",
"BasaltDelta",
},
0,
minetest.LIGHT_MAX+1,
@ -433,7 +435,8 @@ mcl_mobs:spawn_specific(
"nether",
"ground",
{
"Nether"
"Nether",
"BasaltDelta",
},
0,
minetest.LIGHT_MAX+1,

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -136,8 +136,7 @@ local professions = {
{
{ { "mcl_fishing:fish_raw", 6, 15,}, E1 },
{ { "mcl_fishing:salmon_raw", 6, 6, "mcl_core:emerald", 1, 1 },{ "mcl_fishing:salmon_cooked", 6, 6 } },
-- FIXME missing campfire
-- {{ "mcl_core:emerald", 1, 2 },{"mcl_campfires:campfire",1,1} },
{ { "mcl_core:emerald", 1, 2 },{"mcl_campfires:campfire_lit",1,1} },
},
{
{ { "mcl_fishing:salmon_raw", 6, 13,}, E1 },
@ -427,7 +426,7 @@ local professions = {
"mobs_mc_villager_weaponsmith.png",
"mobs_mc_villager_weaponsmith.png",
},
jobsite = "mcl_furnaces:furnace", --FIXME: grindstone
jobsite = "mcl_grindstone:grindstone",
trades = {
{
{ { "mcl_core:coal_lump", 15, 15 }, E1 },
@ -458,7 +457,7 @@ local professions = {
"mobs_mc_villager_toolsmith.png",
"mobs_mc_villager_toolsmith.png",
},
jobsite = "mcl_anvils:anvil", --FIXME: smithing table
jobsite = "mcl_smithing_table:table",
trades = {
{
{ { "mcl_core:coal_lump", 15, 15 }, E1 },
@ -613,6 +612,8 @@ local function employ(self,jobsite_pos)
end
local function look_for_job(self)
if self.last_jobhunt and os.time() - self.last_jobhunt < 360 then return end
self.last_jobhunt = os.time() + math.random(0,60)
local p = self.object:get_pos()
local nn = minetest.find_nodes_in_area(vector.offset(p,-48,-48,-48),vector.offset(p,48,48,48),jobsites)
for _,n in pairs(nn) do
@ -628,14 +629,24 @@ local function look_for_job(self)
end
local function get_a_job(self)
if self.child then return end
local p = self.object:get_pos()
local nn = minetest.find_nodes_in_area(vector.offset(p,-8,-8,-8),vector.offset(p,8,8,8),jobsites)
for _,n in pairs(nn) do
if n and employ(self,n) then return true end
end
local n = minetest.find_node_near(p,1,jobsites)
if n and employ(self,n) then return true end
if self.state ~= "gowp" then look_for_job(self) end
end
local function check_jobsite(self)
if self._traded or not self._jobsite then return end
local n = mcl_vars.get_node(self._jobsite)
local m = minetest.get_meta(self._jobsite)
if m:get_string("villager") ~= self._id then
self._profession = "unemployed"
self._trades = nil
set_textures(self)
end
end
local function update_max_tradenum(self)
if not self._trades then
return
@ -985,6 +996,11 @@ local trade_inventory = {
elseif listname == "output" then
if not trader_exists(player:get_player_name()) then
return 0
-- Begin Award Code
-- May need to be moved if award gets unlocked in the wrong cases.
elseif trader_exists(player:get_player_name()) then
awards.unlock(player:get_player_name(), "mcl:whatAdeal")
-- End Award Code
end
-- Only allow taking full stack
local count = stack:get_count()
@ -1097,6 +1113,7 @@ local trade_inventory = {
local trader = player_trading_with[name]
local tradenum = player_tradenum[name]
local trades
trader._traded = true
if trader and trader._trades then
trades = minetest.deserialize(trader._trades)
end
@ -1267,13 +1284,12 @@ mcl_mobs:register_mob("mobs_mc:villager", {
end
end
if clicker then
mcl_mobs:feed_tame(self, clicker, 1, true, false)
mcl_mobs:feed_tame(self, clicker, 1, true, false, true)
return
end
return true --do not pick up
end,
on_rightclick = function(self, clicker)
local trg=vector.new(0,9,0)
if self._jobsite then
mcl_mobs:gopath(self,self._jobsite,function()
--minetest.log("arrived at jobsite")
@ -1350,20 +1366,24 @@ mcl_mobs:register_mob("mobs_mc:villager", {
end
if self._profession == "unemployed" then
get_a_job(self)
else
check_jobsite(self)
end
end
end,
on_spawn = function(self)
if not self._profession then
self._profession = "unemployed"
if math.random(100) == 1 then
self._profession = "nitwit"
end
end
if self._id then
set_textures(self)
return
end
self._id=minetest.sha1(minetest.get_gametime()..minetest.pos_to_string(self.object:get_pos())..tostring(math.random()))
self._profession = "unemployed"
if math.random(100) == 1 then
self._profession = "nitwit"
end
set_textures(self)
end,
on_die = function(self, pos)
@ -1382,7 +1402,8 @@ mcl_mobs:register_mob("mobs_mc:villager", {
})
--[[
Villager spawning in mcl_villages
mcl_mobs:spawn_specific(
"mobs_mc:villager",
"overworld",
@ -1412,6 +1433,6 @@ minetest.LIGHT_MAX+1,
4,
mobs_mc.water_level+1,
mcl_vars.mg_overworld_max)
--]]
-- spawn eggs
mcl_mobs:register_egg("mobs_mc:villager", S("Villager"), "mobs_mc_spawn_icon_villager.png", 0)

View File

@ -119,20 +119,7 @@ mcl_mobs:register_mob("mobs_mc:villager_zombie", {
villager_obj:set_yaw(yaw)
villager.target_yaw = yaw
villager.nametag = self.nametag
local texture = self.base_texture[1]:gsub("zombie", "villager")
if texture == "mobs_mc_villager_villager.png" then
texture = "mobs_mc_villager.png"
end
local textures = {texture}
villager.base_texture = textures
villager_obj:set_properties({textures = textures})
local matches = {}
for prof, tex in pairs(professions) do
if texture == tex then
table.insert(matches, prof)
end
end
villager._profession = matches[math.random(#matches)]
villager._profession = "unemployed"
self._curing = nil
mcl_burning.extinguish(obj)
obj:remove()

View File

@ -232,29 +232,22 @@ dog.on_rightclick = function(self, clicker)
end
mcl_mobs:register_mob("mobs_mc:dog", dog)
-- Spawn
mcl_mobs:spawn_specific(
"mobs_mc:wolf",
"overworld",
"ground",
{
"FlowerForest",
"Swampland",
"Taiga",
"ExtremeHills",
"BirchForest",
"MegaSpruceTaiga",
"MegaTaiga",
"ExtremeHills+",
"Forest",
"Plains",
"ColdTaiga",
"SunflowerPlains",
"RoofedForest",
"MesaPlateauFM_grasstop",
"ExtremeHillsM",
"BirchForestM",
"Taiga",
"MegaSpruceTaiga",
"MegaTaiga",
"Forest",
"ColdTaiga",
"FlowerForest_beach",
"Forest_beach",
"ColdTaiga_beach_water",
"Taiga_beach",
"ColdTaiga_beach",
},
0,
minetest.LIGHT_MAX+1,

View File

@ -118,7 +118,8 @@ mcl_mobs:spawn_specific(
"nether",
"ground",
{
"Nether"
"Nether",
"CrimsonForest",
},
0,
minetest.LIGHT_MAX+1,

View File

@ -238,8 +238,8 @@ after(5, function(dtime)
end)
minetest.register_chatcommand("lightning", {
params = "[<X> <Y> <Z>]",
description = S("Let lightning strike at the specified position or yourself"),
params = "[<X> <Y> <Z> | <player name>]",
description = S("Let lightning strike at the specified position or player. No parameter will strike yourself."),
privs = { maphack = true },
func = function(name, param)
local pos = {}
@ -247,21 +247,21 @@ minetest.register_chatcommand("lightning", {
pos.x = tonumber(pos.x)
pos.y = tonumber(pos.y)
pos.z = tonumber(pos.z)
local player_to_strike
if not (pos.x and pos.y and pos.z) then
pos = nil
player_to_strike = minetest.get_player_by_name(param)
if not player_to_strike and param == "" then
player_to_strike = minetest.get_player_by_name(name)
end
end
if name == "" and pos == nil then
if not player_to_strike and pos == nil then
return false, "No position specified and unknown player"
end
if pos then
lightning.strike(pos)
else
local player = minetest.get_player_by_name(name)
if player then
lightning.strike(player:get_pos())
else
return false, S("No position specified and unknown player")
end
elseif player_to_strike then
lightning.strike(player_to_strike:get_pos())
end
return true
end,

View File

@ -1,4 +1,3 @@
# textdomain: lightning
@1 was struck by lightning.=
Let lightning strike at the specified position or yourself=
Let lightning strike at the specified position or player. No parameter will strike yourself.=
No position specified and unknown player=

View File

@ -1,8 +1,10 @@
mcl_weather.nether_dust = {}
mcl_weather.nether_dust.particlespawners = {}
local PARTICLES_COUNT_NETHER_DUST = tonumber(minetest.settings:get("mcl_weather_rain_particles")) or 150
local psdef= {
amount = 150,
amount = PARTICLES_COUNT_NETHER_DUST,
time = 0,
minpos = vector.new(-15,-15,-15),
maxpos =vector.new(15,15,15),

View File

@ -1,5 +1,5 @@
local PARTICLES_COUNT_RAIN = 800
local PARTICLES_COUNT_THUNDER = 1200
local PARTICLES_COUNT_RAIN = tonumber(minetest.settings:get("mcl_weather_rain_particles")) or 500
local PARTICLES_COUNT_THUNDER = tonumber(minetest.settings:get("mcl_weather_thunder_particles")) or 900
local get_connected_players = minetest.get_connected_players
@ -20,22 +20,20 @@ mcl_weather.rain = {
init_done = false,
}
local update_sound={}
local vel=math.random(0,3)
local falling_speed=math.random(10,15)
local size = math.random(1,3)
local psdef= {
amount = mcl_weather.rain.particles_count,
time=0,
minpos = vector.new(-15,20,-15),
maxpos = vector.new(15,25,15),
minvel = vector.new(-2,-falling_speed-2,-2),
maxvel = vector.new(2,-falling_speed+2,2),
minvel = vector.new(-2,-17,-2),
maxvel = vector.new(2,-8,2),
minacc = vector.new(0,0,0),
maxacc = vector.new(0,-0.5,0),
minexptime = 15,
maxexptime = 30,
minsize = size,
maxsize= size*2,
minexptime = 1,
maxexptime = 4,
minsize = 4,
maxsize= 8,
collisiondetection = true,
collision_removal = true,
vertical = true,
@ -70,9 +68,10 @@ end
-- no no no NO NO f*.. no. no manual particle creatin' PLS!! this sends EVERY particle over the net.
function mcl_weather.rain.add_rain_particles(player)
mcl_weather.rain.last_rp_count = mcl_weather.rain.particles_count
local l = false
for k,v in pairs(textures) do
psdef.texture=v
mcl_weather.add_spawner_player(player,"rain"..k,psdef)
l = l or mcl_weather.add_spawner_player(player,"rain"..k,psdef)
end
if l then
update_sound[player:get_player_name()]=true

View File

@ -146,8 +146,25 @@ mcl_weather.skycolor = {
player:set_stars({visible = false})
mcl_weather.skycolor.override_day_night_ratio(player, 0.5)
elseif dim == "nether" then
player:set_sky({ type = "plain",
base_color = "#300808",
local nether_sky = {
Nether = "#300808",
BasaltDelta = "#685F70",
SoulsandValley = "#1B4745",
CrimsonForest = "#330303",
WarpedForest = "#1A051A"
}
local biometint = nether_sky[minetest.get_biome_name(minetest.get_biome_data(player:get_pos()).biome)]
player:set_sky({
type = "regular",
sky_color = {
day_sky = "#300808",
day_horizon = biometint,
dawn_sky = "#300808",
dawn_horizon = biometint,
night_sky = "#300808",
night_horizon = biometint,
},
clouds = false,
})
player:set_sun({visible = false , sunrise_visible = false})

View File

@ -2,11 +2,11 @@ local get_connected_players = minetest.get_connected_players
mcl_weather.snow = {}
mcl_weather.snow.particles_count = 15
local PARTICLES_COUNT_SNOW = tonumber(minetest.settings:get("mcl_weather_snow_particles")) or 99
mcl_weather.snow.init_done = false
local psdef= {
amount = 99,
amount = PARTICLES_COUNT_SNOW,
time = 0, --stay on til we turn it off
minpos = vector.new(-25,20,-25),
maxpos =vector.new(25,25,25),
@ -14,9 +14,9 @@ local psdef= {
maxvel = vector.new(0.2,-4,0.2),
minacc = vector.new(0,-1,0),
maxacc = vector.new(0,-4,0),
minexptime = 15,
maxexptime = 30,
minsize = 0.5,
minexptime = 3,
maxexptime = 5,
minsize = 2,
maxsize = 5,
collisiondetection = true,
collision_removal = true,

View File

@ -101,6 +101,17 @@ awards.register_achievement("mcl:bookcase", {
}
})
awards.register_achievement("mcl:buildIronPickaxe", {
title = S("Isn't It Iron Pick"),
description = S("Craft a iron pickaxe using sticks and iron."),
icon = "default_tool_steelpick.png",
trigger = {
type = "craft",
item = "mcl_tools:pick_iron",
target = 1
}
})
-- Item pickup achievements: These are awarded when picking up a certain item.
-- The achivements are manually given in the mod mcl_item_entity.
awards.register_achievement("mcl:diamonds", {
@ -125,6 +136,18 @@ awards.register_achievement("mcl:mineWood", {
icon = "default_tree.png",
})
awards.register_achievement("mcl:whosCuttingOnions", {
title = S("Who is Cutting Onions?"),
description = S("Pick up a crying obsidian from the floor."),
icon = "default_obsidian.png^mcl_core_crying_obsidian.png",
})
awards.register_achievement("mcl:hiddenInTheDepths", {
title = S("Hidden in the Depths"),
description = S("Pick up an Ancient Debris from the floor."),
icon = "mcl_nether_ancient_debris_side.png",
})
-- Smelting achivements: These are awarded when picking up an item from a furnace
-- output. They are given in mcl_furnaces.
awards.register_achievement("mcl:acquireIron", {
@ -158,9 +181,89 @@ awards.register_achievement("mcl:snipeSkeleton", {
-- Triggered in mcl_portals
awards.register_achievement("mcl:buildNetherPortal", {
title = S("Into the Nether"),
title = S("We Need to Go Deeper"),
description = S("Use obsidian and a fire starter to construct a Nether portal."),
icon = "default_obsidian.png",
icon = "mcl_fire_flint_and_steel.png",
})
awards.register_achievement("mcl:enterEndPortal", {
title = S("The End?"),
description = S("Or the beginning?\nHint: Enter an end portal."),
icon = "mcl_end_end_stone.png",
})
awards.register_achievement("mcl:theNether", {
title = S("The Nether"),
description = S("Bring summer clothes.\nHint: Enter the Nether."),
icon = "mcl_nether_netherrack.png",
})
-- Triggered in mcl_totems
awards.register_achievement("mcl:postMortal", {
title = S("Postmortal"),
description = S("Use a Totem of Undying to cheat death."),
icon = "mcl_totems_totem.png",
})
-- Triggered in mcl_beds
awards.register_achievement("mcl:sweetDreams", {
title = S("Sweet Dreams"),
description = S("Sleep in a bed to change your respawn point."),
icon = "mcl_beds_bed_red.png",
})
awards.register_achievement("mcl:notQuiteNineLives", {
title = S('Not Quite "Nine" Lives'),
description = S("Charge a Respawn Anchor to the maximum."),
icon = "respawn_anchor_side4.png",
})
-- Triggered in mobs_mc
awards.register_achievement("mcl:whatAdeal", {
title = S("What A Deal!"),
description = S("Successfully trade with a Villager."),
icon = "mcl_core_emerald.png",
})
awards.register_achievement("mcl:tacticalFishing", {
title = S("Tactical Fishing"),
description = S("Catch a fish... without a fishing rod!"),
icon = "pufferfish_bucket.png",
})
-- Triggered in mcl_fishing
awards.register_achievement("mcl:fishyBusiness", {
title = S("Fishy Business"),
description = S("Catch a fish.\nHint: Catch a fish, salmon, clownfish, or pufferfish."),
icon = "mcl_fishing_fishing_rod.png",
})
-- Triggered in mcl_compass
awards.register_achievement("mcl:countryLode", {
title = S("Country Lode,\nTake Me Home"),
description = S("Use a compass on a Lodestone."),
icon = "lodestone_side4.png",
})
-- Triggered in mcl_smithing_table
awards.register_achievement("mcl:seriousDedication", {
title = S("Serious Dedication"),
description = S("Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices."),
icon = "farming_tool_netheritehoe.png",
})
-- Triggered in mcl_brewing
awards.register_achievement("mcl:localBrewery", {
title = S("Local Brewery"),
description = S("Brew a Potion.\nHint: Take a potion or glass bottle out of the brewing stand."),
icon = "mcl_potions_potion_overlay.png^[colorize:#F82423:"..tostring(127).."^mcl_potions_potion_bottle.png",
})
-- Triggered in mcl_enchanting
awards.register_achievement("mcl:enchanter", {
title = S("Enchanter"),
description = S("Enchant an item using an Enchantment Table."),
icon = "mcl_enchanting_book_enchanted.png",
})
-- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.)

View File

@ -19,7 +19,7 @@ Getting an Upgrade=
Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=
Hot Topic=
Into Fire=
Into the Nether=
We Need to Go Deeper=
Iron Belly=
Librarian=
Mine emerald ore.=
@ -47,3 +47,29 @@ Use a crafting table to craft a wooden hoe from wooden planks and sticks.=
Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=
Use obsidian and a fire starter to construct a Nether portal.=
Use wheat to craft a bread.=
Who is Cutting Onions?=
Pick up a crying obsidian from the floor.=
Hidden in the Depths=
Pick up an Ancient Debris from the floor.=
The Nether=
Bring summer clothes.@nHint: Enter the Nether.=
Isn't It Iron Pick=
Craft a iron pickaxe using sticks and iron.=
Postmortal=
Use a Totem of Undying to cheat death.=
Sweet Dreams=
Sleep in a bed to change your respawn point.=
Not Quite "Nine" Lives=
Charge a Respawn Anchor to the maximum.=
What A Deal!=
Successfully trade with a Villager.=
Fishy Business=
Catch a fish.@nHint: Catch a fish, salmon, clownfish, or pufferfish.=
Country Lode,@nTake Me Home=
Use a compass on a Lodestone.=
Serious Dedication=
Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices.=
Local Brewery=
Brew a Potion.@nHint: Take a potion or glass bottle out of the brewing stand.=
Enchanter=
Enchant an item using an Enchantment Table.=

View File

@ -117,7 +117,6 @@ for _, def in pairs(bud_def) do
walkable = false,
light_source = def.light_source,
groups = {
dig_by_water = 1,
destroy_by_lava_flow = 1,
dig_by_piston = 1,
pickaxey = 1,
@ -162,7 +161,6 @@ minetest.register_node("mcl_amethyst:amethyst_cluster",{
walkable = false,
light_source = 7,
groups = {
dig_by_water = 1,
destroy_by_lava_flow = 1,
dig_by_piston = 1,
pickaxey = 1,

View File

@ -84,6 +84,19 @@ local function distinguish_tool_and_material(input1, input2)
end
end
-- Helper function to make sure update_anvil_slots NEVER overstacks the output slot
local function fix_stack_size(stack)
if not stack or stack == "" then return "" end
local count = stack:get_count()
local max_count = stack:get_stack_max()
if count > max_count then
stack:set_count(max_count)
count = max_count
end
return count
end
-- Update the inventory slots of an anvil node.
-- meta: Metadata of anvil node
local function update_anvil_slots(meta)
@ -213,6 +226,7 @@ local function update_anvil_slots(meta)
-- Set the new output slot
if new_output then
fix_stack_size(new_output)
inv:set_stack("output", 1, new_output)
end
end

View File

@ -114,6 +114,10 @@ function mcl_armor.register_set(def)
for k, v in pairs(element_groups) do
groups[k] = v
end
local upgrade_item = nil
if def._mcl_upgradable and def._mcl_upgrade_item_material then
upgrade_item = itemstring:gsub("_[%l%d]*$",def._mcl_upgrade_item_material)
end
minetest.register_tool(itemstring, {
description = S(def.description .. " " .. (descriptions[name] or element.description)),
@ -133,6 +137,8 @@ function mcl_armor.register_set(def)
_on_break = on_break_callbacks[name] or def.on_break,
_mcl_armor_element = name,
_mcl_armor_texture = textures[name] or modname .. "_" .. itemname .. ".png",
_mcl_upgradable = def._mcl_upgradable,
_mcl_upgrade_item = upgrade_item
})
if def.craft_material then

View File

@ -49,6 +49,8 @@ mcl_armor.register_set({
},
repair_material = "mcl_core:iron_ingot",
cook_material = "mcl_core:iron_nugget",
sound_equip = "mcl_armor_equip_iron",
sound_unequip = "mcl_armor_unequip_iron",
})
mcl_armor.register_set({
@ -64,6 +66,8 @@ mcl_armor.register_set({
},
craft_material = "mcl_core:iron_ingot",
cook_material = "mcl_core:iron_nugget",
sound_equip = "mcl_armor_equip_iron",
sound_unequip = "mcl_armor_unequip_iron",
})
mcl_armor.register_set({
@ -79,6 +83,27 @@ mcl_armor.register_set({
},
toughness = 2,
craft_material = "mcl_core:diamond",
sound_equip = "mcl_armor_equip_diamond",
sound_unequip = "mcl_armor_unequip_diamond",
_mcl_upgradable = true,
_mcl_upgrade_item_material = "_netherite",
})
mcl_armor.register_set({
name = "netherite",
description = "Netherite",
durability = 555,
enchantability = 10,
points = {
head = 3,
torso = 8,
legs = 6,
feet = 3,
},
toughness = 2,
craft_material = "mcl_nether:netherite_ingot",
sound_equip = "mcl_armor_equip_diamond",
sound_unequip = "mcl_armor_unequip_diamond",
})
mcl_armor.register_protection_enchantment({

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

View File

@ -76,6 +76,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
-- save respawn position when entering bed
if spawn_mod and mcl_spawn.set_spawn_pos(player, bed_pos, nil) then
minetest.chat_send_player(name, S("New respawn position set!"))
awards.unlock(player:get_player_name(), "mcl:sweetDreams")
end
-- No sleeping if too far away

View File

@ -39,6 +39,9 @@ for i=0,4 do
elseif string.match(node.name, "mcl_beds:respawn_anchor_charged_") then
minetest.chat_send_player(player.get_player_name(player), S"New respawn position set!")
mcl_spawn.set_spawn_pos(player, pos, nil)
if i == 4 then
awards.unlock(player:get_player_name(), "mcl:notQuiteNineLives")
end
end
end
@ -88,11 +91,11 @@ for i=0,4 do
end
minetest.register_craft({ --TODO: Please change this crafting recipe once crying obsidian is implemented!
minetest.register_craft({
output = "mcl_beds:respawn_anchor",
recipe = {
{"mcl_core:obsidian", "mcl_core:obsidian", "mcl_core:obsidian"},
{"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"},
{"mcl_nether:glowstone", "mcl_nether:glowstone", "mcl_nether:glowstone"},
{"mcl_core:obsidian", "mcl_core:obsidian", "mcl_core:obsidian"}
{"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"}
}
})

View File

@ -35,10 +35,14 @@ minetest.register_node("mcl_bells:bell", {
is_ground_content = false,
groups = {pickaxey=2, deco_block=1 },
sounds = mcl_sounds.node_sound_metal_defaults(),
_mcl_blast_resistance = 6,
_mcl_blast_resistance = 5,
_mcl_hardness = 5,
on_rightclick = mcl_bells.ring_once,
use_texture_alpha = "clip",
mesecons = {effector = {
action_on = mcl_bells.ring_once,
rules = mesecon.rules.flat,
}},
})
if has_mcl_wip then

View File

@ -1,2 +1,3 @@
name = mcl_bells
optional_depends = mcl_wip
depends = mesecons
optional_depends = mcl_wip

View File

@ -13,8 +13,8 @@ minetest.register_node("mcl_blackstone:blackstone", {
sounds = mcl_sounds.node_sound_stone_defaults(),
is_ground_content = false,
groups = {cracky = 3, pickaxey=2, material_stone=1, cobble=1},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
minetest.register_node("mcl_blackstone:blackstone_gilded", {
description = S("Gilded Blackstone"),
@ -53,8 +53,8 @@ minetest.register_node("mcl_blackstone:nether_gold", {
{items = {"mcl_blackstone:nether_gold"}, rarity = 8},
}
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_blast_resistance = 3,
_mcl_hardness = 3,
_mcl_silk_touch_drop = true,
_mcl_fortune_drop = mcl_core.fortune_drop_ore,
})
@ -67,8 +67,8 @@ minetest.register_node("mcl_blackstone:basalt_polished", {
on_rotate = on_rotate,
is_ground_content = false,
groups = {cracky = 3, pickaxey=2, material_stone=1},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_blast_resistance = 4.2,
_mcl_hardness = 1.25,
})
minetest.register_node("mcl_blackstone:basalt", {
description = S("Basalt"),
@ -79,8 +79,17 @@ minetest.register_node("mcl_blackstone:basalt", {
on_rotate = on_rotate,
is_ground_content = false,
groups = {cracky = 3, pickaxey=2, material_stone=1},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_blast_resistance = 4.2,
_mcl_hardness = 1.25,
})
minetest.register_node("mcl_blackstone:basalt_smooth", {
description = S("Smooth Basalt"),
tiles = {"mcl_blackstone_basalt_smooth.png"},
sounds = mcl_sounds.node_sound_stone_defaults(),
is_ground_content = false,
groups = {cracky = 3, pickaxey=2, material_stone=1},
_mcl_blast_resistance = 4.2,
_mcl_hardness = 1.25,
})
minetest.register_node("mcl_blackstone:blackstone_polished", {
description = S("Polished Blackstone"),
@ -88,7 +97,7 @@ minetest.register_node("mcl_blackstone:blackstone_polished", {
sounds = mcl_sounds.node_sound_stone_defaults(),
is_ground_content = false,
groups = {cracky = 3, pickaxey=2, material_stone=1},
_mcl_blast_resistance = 2,
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
})
minetest.register_node("mcl_blackstone:blackstone_chiseled_polished", {
@ -97,8 +106,8 @@ minetest.register_node("mcl_blackstone:blackstone_chiseled_polished", {
sounds = mcl_sounds.node_sound_stone_defaults(),
is_ground_content = false,
groups = {cracky = 3, pickaxey=2, material_stone=1},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
minetest.register_node("mcl_blackstone:blackstone_brick_polished", {
description = S("Polished Blackstone Bricks"),
@ -106,8 +115,8 @@ minetest.register_node("mcl_blackstone:blackstone_brick_polished", {
sounds = mcl_sounds.node_sound_stone_defaults(),
is_ground_content = false,
groups = {cracky = 3, pickaxey=2, material_stone=1},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
minetest.register_node("mcl_blackstone:quartz_brick", {
description = S("Quartz Bricks"),
@ -116,8 +125,8 @@ minetest.register_node("mcl_blackstone:quartz_brick", {
is_ground_content = false,
sounds = mcl_sounds.node_sound_stone_defaults(),
groups = {cracky = 3, pickaxey=2, material_stone=1},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_blast_resistance = 0.8,
_mcl_hardness = 0.8,
})
minetest.register_node("mcl_blackstone:soul_soil", {
description = S("Soul Soil"),
@ -314,36 +323,7 @@ for s=1, #specialstones do
end
if minetest.settings:get_bool("mcl_generate_ores", true) then
minetest.register_ore({
ore_type = "scatter",
ore = "mcl_blackstone:blackstone_gilded",
wherein = "mcl_blackstone:blackstone",
clust_scarcity = 4775,
clust_num_ores = 2,
clust_size = 2,
y_min = mcl_vars.mg_nether_min,
y_max = mcl_vars.mg_nether_max,
})
minetest.register_ore({
ore_type = "scatter",
ore = "mcl_blackstone:nether_gold",
wherein = "mcl_nether:netherrack",
clust_scarcity = 830,
clust_num_ores = 5,
clust_size = 3,
y_min = mcl_vars.mg_nether_min,
y_max = mcl_vars.mg_nether_max,
})
minetest.register_ore({
ore_type = "scatter",
ore = "mcl_blackstone:nether_gold",
wherein = "mcl_nether:netherrack",
clust_scarcity = 1660,
clust_num_ores = 4,
clust_size = 2,
y_min = mcl_vars.mg_nether_min,
y_max = mcl_vars.mg_nether_max,
})
end
--]]
--soul torch

View File

@ -288,7 +288,8 @@ local function blast_furnace_node_timer(pos, elapsed)
-- Cooking
--
local el = elapsed_game_time
-- Run the blast_furnace at twice the speed of a furnace.
local el = elapsed_game_time * 2
-- Check if we have cookable content: cookable
local aftercooked
@ -329,13 +330,12 @@ local function blast_furnace_node_timer(pos, elapsed)
elseif active then
el = math.min(el, fuel_totaltime - fuel_time)
-- The furnace is currently active and has enough fuel
fuel_time = (fuel_time + el) *2 --multiply speed of fuel consumption to match proper output
fuel_time = fuel_time + el
end
-- If there is a cookable item then check if it is ready yet
if cookable and active then
-- In the src_time variable, the *2 is the multiplication that makes the blast furnace work faster than a normal furnace.
src_time = (src_time + el)*2
src_time = src_time + el
-- Place result in dst list if done
if src_time >= cooked.time then
inv:add_item("dst", cooked.item)

View File

@ -188,7 +188,8 @@ function ARROW_ENTITY.on_step(self, dtime)
-- The radius of 3 is fairly liberal, but anything lower than than will cause
-- arrow to hilariously go through mobs often.
-- TODO: Implement an ACTUAL collision detection (engine support needed).
local objs = minetest.get_objects_inside_radius(pos, 1.5)
local closest_object
local closest_distance
@ -196,32 +197,33 @@ function ARROW_ENTITY.on_step(self, dtime)
self._deflection_cooloff = self._deflection_cooloff - dtime
end
-- Iterate through all objects and remember the closest attackable object
for k, obj in pairs(objs) do
local ok = false
-- Arrows can only damage players and mobs
if obj:is_player() then
ok = true
elseif obj:get_luaentity() then
if (obj:get_luaentity().is_mob or obj:get_luaentity()._hittable_by_projectile) then
local arrow_dir = self.object:get_velocity()
--create a raycast from the arrow based on the velocity of the arrow to deal with lag
local raycast = minetest.raycast(pos, vector.add(pos, vector.multiply(arrow_dir, 0.1)), true, false)
for hitpoint in raycast do
if hitpoint.type == "object" then
-- find the closest object that is in the way of the arrow
local ok = false
if hitpoint.ref:is_player() then
ok = true
elseif hitpoint.ref:get_luaentity() then
if (hitpoint.ref:get_luaentity().is_mob or hitpoint.ref:get_luaentity()._hittable_by_projectile) then
ok = true
end
end
end
if ok then
local dist = vector.distance(pos, obj:get_pos())
if not closest_object or not closest_distance then
closest_object = obj
closest_distance = dist
elseif dist < closest_distance then
closest_object = obj
closest_distance = dist
if ok then
local dist = vector.distance(hitpoint.ref:get_pos(), pos)
if not closest_object or not closest_distance then
closest_object = hitpoint.ref
closest_distance = dist
elseif dist < closest_distance then
closest_object = hitpoint.ref
closest_distance = dist
end
end
end
end
-- If an attackable object was found, we will damage the closest one only
if closest_object then
local obj = closest_object
local is_player = obj:is_player()
@ -249,7 +251,7 @@ function ARROW_ENTITY.on_step(self, dtime)
-- Punch target object but avoid hurting enderman.
if not lua or lua.name ~= "mobs_mc:enderman" then
if not self._in_player then
damage_particles(self.object:get_pos(), self._is_critical)
damage_particles(vector.add(pos, vector.multiply(self.object:get_velocity(), 0.1)), self._is_critical)
end
if mcl_burning.is_burning(self.object) then
mcl_burning.set_on_fire(obj, 5)
@ -304,6 +306,8 @@ function ARROW_ENTITY.on_step(self, dtime)
minetest.after(150, function()
self.object:remove()
end)
else
self.object:remove()
end
end
end

View File

@ -151,7 +151,7 @@ S("The speed and damage of the arrow increases the longer you charge. The regula
})
minetest.register_tool("mcl_bows:crossbow_loaded", {
description = S("Corssbow"),
description = S("Crossbow"),
_tt_help = S("Launches arrows"),
_doc_items_longdesc = S("Corssbow are ranged weapons to shoot arrows at your foes.").."\n"..
S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."),
@ -181,7 +181,7 @@ S("The speed and damage of the arrow increases the longer you charge. The regula
itemstack:get_meta():set_string("active", "true")
return itemstack
end,
groups = {weapon=1,weapon_ranged=1,crossbow=1,enchantability=1},
groups = {weapon=1,weapon_ranged=1,crossbow=1,enchantability=1,not_in_creative_inventory=1},
_mcl_uses = 326,
})

View File

@ -410,29 +410,34 @@ function ARROW_ENTITY.on_step(self, dtime)
end
-- Iterate through all objects and remember the closest attackable object
for k, obj in pairs(objs) do
local ok = false
-- Arrows can only damage players and mobs
if obj:is_player() then
ok = true
elseif obj:get_luaentity() then
if (obj:get_luaentity().is_mob or obj:get_luaentity()._hittable_by_projectile) then
local arrow_dir = self.object:get_velocity()
--create a raycast from the arrow based on the velocity of the arrow to deal with lag
local raycast = minetest.raycast(pos, vector.add(pos, vector.multiply(arrow_dir, 0.1)), true, false)
for hitpoint in raycast do
if hitpoint.type == "object" then
-- find the closest object that is in the way of the arrow
local ok = false
if hitpoint.ref:is_player() then
ok = true
elseif hitpoint.ref:get_luaentity() then
if (hitpoint.ref:get_luaentity().is_mob or hitpoint.ref:get_luaentity()._hittable_by_projectile) then
ok = true
end
end
end
if ok then
local dist = vector.distance(pos, obj:get_pos())
if not closest_object or not closest_distance then
closest_object = obj
closest_distance = dist
elseif dist < closest_distance then
closest_object = obj
closest_distance = dist
if ok then
local dist = vector.distance(hitpoint.ref:get_pos(), pos)
if not closest_object or not closest_distance then
closest_object = hitpoint.ref
closest_distance = dist
elseif dist < closest_distance then
closest_object = hitpoint.ref
closest_distance = dist
end
end
end
end
-- If an attackable object was found, we will damage the closest one only
if closest_object then

View File

@ -369,6 +369,9 @@ local function allow_take(pos, listname, index, stack, player)
minetest.record_protection_violation(pos, name)
return 0
else
if listname == "stand" then
awards.unlock(name, "mcl:localBrewery")
end
return stack:get_count()
end
end

View File

@ -29,15 +29,15 @@ local is_creative_enabled = minetest.is_creative_enabled
local is_protected = minetest.is_protected
local record_protection_violation = minetest.record_protection_violation
if mod_mcl_core then
minetest.register_craft({
output = "mcl_buckets:bucket_empty 1",
recipe = {
{"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"},
{"", "mcl_core:iron_ingot", ""},
},
})
end
minetest.register_craft({
output = "mcl_buckets:bucket_empty 1",
recipe = {
{"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"},
{"", "mcl_core:iron_ingot", ""},
},
})
mcl_buckets = {
liquids = {},
@ -88,9 +88,7 @@ end
local pointable_sources = {}
local function bucket_raycast(user)
--local pos = user:get_pos()
local pos = user:get_pos()
--local pos = vector.add(user:get_pos(), user:get_bone_position("Head_Control"))
pos.y = pos.y + user:get_properties().eye_height
local look_dir = user:get_look_dir()
look_dir = vector.multiply(look_dir, 5)
@ -100,7 +98,6 @@ local function bucket_raycast(user)
if ray then
for pointed_thing in ray do
if pointed_thing and pointable_sources[get_node(pointed_thing.above).name] then
--minetest.chat_send_all("found!")
return {under=pointed_thing.under,above=pointed_thing.above}
end
end
@ -242,7 +239,6 @@ local function on_place_bucket_empty(itemstack, user, pointed_thing)
if liquid_name then
local liquid_def = mcl_buckets.liquids[liquid_name]
if liquid_def then
--minetest.chat_send_all("test")
-- Fill bucket, but not in Creative Mode
-- FIXME: remove this line
--if not is_creative_enabled(user:get_player_name()) then
@ -282,6 +278,12 @@ local function on_place_bucket_empty(itemstack, user, pointed_thing)
new_bucket = ItemStack("mcl_buckets:bucket_river_water")
end
sound_take("mclx_core:river_water_source", pointed_thing.under)
elseif nn == "mcl_cauldrons:cauldron_3_lava" then
set_node(pointed_thing.under, {name="mcl_cauldrons:cauldron"})
if not is_creative_enabled(user:get_player_name()) then
new_bucket = ItemStack("mcl_buckets:bucket_lava")
end
sound_take("mcl_core:lava_source", pointed_thing.under)
end
if new_bucket then
return give_bucket(new_bucket, itemstack, user)
@ -366,7 +368,6 @@ minetest.register_craftitem("mcl_buckets:bucket_empty", {
_doc_items_longdesc = S("A bucket can be used to collect and release liquids."),
_doc_items_usagehelp = S("Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else."),
_tt_help = S("Collects liquids"),
--liquids_pointable = true,
inventory_image = "bucket.png",
stack_max = 16,
_on_dispense = function(stack, pos, droppos, dropnode, dropdir)

View File

@ -10,13 +10,6 @@ local function sound_place(itemname, pos)
end
end
--[[local sound_take = function(itemname, pos)
local def = minetest.registered_nodes[itemname]
if def and def.sounds and def.sounds.dug then
minetest.sound_play(def.sounds.dug, {gain=1.0, pos = pos, pitch = 1 + math.random(-10, 10)*0.005}, true)
end
end]]
if mod_mcl_core then
-- Lava bucket
mcl_buckets.register_liquid({
@ -29,11 +22,21 @@ if mod_mcl_core then
end
end,
source_take = {"mcl_core:lava_source", "mcl_nether:nether_lava_source"},
on_take = function(user)
if has_awards and user and user:is_player() then
awards.unlock(user:get_player_name(), "mcl:hotStuff")
end
end,
on_take = function(user)
if has_awards and user and user:is_player() then
awards.unlock(user:get_player_name(), "mcl:hotStuff")
end
end,
extra_check = function(pos, placer)
local nn = minetest.get_node(pos).name
if minetest.get_item_group(nn, "cauldron") ~= 0 then
if nn ~= "mcl_cauldrons:cauldron_3_lava" then
minetest.set_node(pos, {name="mcl_cauldrons:cauldron_3_lava"})
end
sound_place("mcl_core:lava_source", pos)
return false, true
end
end,
bucketname = "mcl_buckets:bucket_lava",
inventory_image = "bucket_lava.png",
name = S("Lava Bucket"),

View File

@ -0,0 +1,21 @@
mcl_campfires
===============
Adds the campfire and its soul variant.
License of code
---------------
See the main MineClone 2 README.md file.
Authors:
Gerold55 - Code Start + Models?
PrairieWind - Improved and Cleaned Up Code, and added the soul campfire and crafting recipes.
cora - Added burning damage.
License of media
----------------
See the main MineClone 2 README.md file for license on most of the textures.
For the following textures:
mcl_campfires_campfire_inv.png
mcl_campfires_soul_campfire_inv.png
License: CC0 1.0 Universal (CC0 1.0)
Author: RandomLegoBrick

View File

@ -0,0 +1,145 @@
-- ||||||||||||||||||||||||||||||||
-- ||||||||||| CAMPFIRES ||||||||||
-- ||||||||||||||||||||||||||||||||
-- TO-DO:
-- * Add Smoke Particles
-- * Add Spark Particles
-- * Add Cooking Meat
-- * Add Working Sounds
local S = minetest.get_translator(minetest.get_current_modname())
local campfires = {
{ name = "Campfire", lightlevel = 15, techname = "campfire", damage = 1, drops = "mcl_core:charcoal_lump 2" },
{ name = "Soul Campfire", lightlevel = 10, techname = "soul_campfire", damage = 2, drops = "mcl_blackstone:soul_soil" },
}
for _, campfire in pairs(campfires) do
-- Define Campfire
minetest.register_node("mcl_campfires:" .. campfire.techname, {
description = S(campfire.name),
_tt_help = S("Cooks food and keeps bees happy."),
_doc_items_longdesc = S("Campfires have multiple uses, including keeping bees happy, cooking raw meat and fish, and as a trap."),
inventory_image = "mcl_campfires_" .. campfire.techname .. "_inv.png",
drawtype = "mesh",
mesh = "mcl_campfires_campfire.obj",
tiles = {{name="mcl_campfires_log.png"},},
groups = { handy=1, axey=1, material_wood=1, not_in_creative_inventory=1, campfire=1, },
paramtype = "light",
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
if player:get_wielded_item():get_name() == "mcl_fire:flint_and_steel" then
node.name = "mcl_campfires:" .. campfire.techname .. "_lit"
minetest.set_node(pos, node)
end
end,
drop = campfire.drops,
_mcl_silk_touch_drop = {"mcl_campfires:" .. campfire.techname},
mcl_sounds.node_sound_wood_defaults(),
selection_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, -.05, .5}, --left, bottom, front, right, top
},
collision_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, -.05, .5},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
--Define Lit Campfire
minetest.register_node("mcl_campfires:" .. campfire.techname .. "_lit", {
description = S(campfire.name),
_tt_help = S("Cooks food and keeps bees happy."),
_doc_items_longdesc = S("Campfires have multiple uses, including keeping bees happy, cooking raw meat and fish, and as a trap."),
inventory_image = "mcl_campfires_" .. campfire.techname .. "_inv.png",
drawtype = "mesh",
mesh = "mcl_campfires_campfire_lit.obj",
tiles = {{
name="mcl_campfires_" .. campfire.techname .. "_fire.png",
animation={
type="vertical_frames",
aspect_w=16,
aspect_h=16,
length=2.0
}},
{name="mcl_campfires_" .. campfire.techname .. "_log_lit.png",
animation={
type="vertical_frames",
aspect_w=16,
aspect_h=16,
length=2.0
}}
},
groups = { handy=1, axey=1, material_wood=1, campfire=1, lit_campfire=1 },
paramtype = "light",
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
if player:get_wielded_item():get_name():find("shovel") then
node.name = "mcl_campfires:" .. campfire.techname
minetest.set_node(pos, node)
minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true)
end
end,
drop = campfire.drops,
_mcl_silk_touch_drop = {"mcl_campfires:" .. campfire.techname .. "_lit"},
light_source = campfire.lightlevel,
mcl_sounds.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {-.5, -.5, -.5, .5, -.05, .5}, --left, bottom, front, right, top
},
collision_box = {
type = "fixed",
fixed = {-.5, -.5, -.5, .5, -.05, .5},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
damage_per_second = campfire.damage,
})
end
minetest.register_craft({
output = "mcl_campfires:campfire_lit",
recipe = {
{ "", "mcl_core:stick", "" },
{ "mcl_core:stick", "group:coal", "mcl_core:stick" },
{ "group:tree", "group:tree", "group:tree" },
}
})
minetest.register_craft({
output = "mcl_campfires:soul_campfire_lit",
recipe = {
{ "", "mcl_core:stick", "" },
{ "mcl_core:stick", "group:soul_block", "mcl_core:stick" },
{ "group:tree", "group:tree", "group:tree" },
}
})
local function burn_in_campfire(obj)
local p = obj:get_pos()
if p then
local n = minetest.find_node_near(p,0.4,{"group:lit_campfire"},true)
if n then
mcl_burning.set_on_fire(obj, 5)
end
end
end
local etime = 0
minetest.register_globalstep(function(dtime)
etime = dtime + etime
if etime < 0.5 then return end
etime = 0
for _,pl in pairs(minetest.get_connected_players()) do
burn_in_campfire(pl)
end
for _,ent in pairs(minetest.luaentities) do
if ent.is_mob then
burn_in_campfire(ent.object)
end
end
end)

View File

@ -0,0 +1,4 @@
Campfire=
Soul Campfire=
Cooks food and keeps bees happy.=
Campfires have multiple uses, including keeping bees happy, cooking raw meat and fish, and as a trap.=

View File

@ -0,0 +1,3 @@
name = mcl_campfires
depends = mcl_sounds
author = PrairieWind, Gerold55

View File

@ -0,0 +1,224 @@
# Blender v2.78 (sub 0) OBJ File: ''
# www.blender.org
mtllib campfire.mtl
o nodebox4
v 0.500000 -0.312500 0.250000
v 0.500000 -0.312500 0.500000
v 0.500000 -0.062500 0.500000
v 0.500000 -0.062500 0.250000
v -0.500000 -0.312500 0.250000
v -0.500000 -0.312500 0.500000
v -0.500000 -0.062500 0.500000
v -0.500000 -0.062500 0.250000
v 0.500000 -0.312500 0.500000
v 0.500000 -0.062500 0.500000
v -0.500000 -0.062500 0.500000
v -0.500000 -0.312500 0.500000
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vn -1.0000 0.0000 0.0000
vn 0.0000 -0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
usemtl none
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/1 6/6/1 7/7/1 8/8/1
f 1/9/2 4/10/2 8/11/2 5/5/2
f 1/9/3 2/12/3 6/13/3 5/5/3
f 4/14/3 3/15/3 7/16/3 8/17/3
f 9/18/2 10/19/2 11/20/2 12/21/2
o nodebox4.001
v 0.500000 -0.312500 -0.498288
v 0.500000 -0.312500 -0.248288
v 0.500000 -0.062500 -0.248288
v 0.500000 -0.062500 -0.498288
v -0.500000 -0.312500 -0.498288
v -0.500000 -0.312500 -0.248288
v -0.500000 -0.062500 -0.248288
v -0.500000 -0.062500 -0.498288
v 0.500000 -0.312500 -0.248288
v 0.500000 -0.062500 -0.248288
v -0.500000 -0.062500 -0.248288
v -0.500000 -0.312500 -0.248288
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vn -1.0000 0.0000 0.0000
vn 0.0000 -0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
usemtl none
s 1
f 13/22/4 14/23/4 15/24/4 16/25/4
f 17/26/4 18/27/4 19/28/4 20/29/4
f 13/30/5 16/31/5 20/32/5 17/26/5
f 13/30/6 14/33/6 18/34/6 17/26/6
f 16/35/6 15/36/6 19/37/6 20/38/6
f 21/39/5 22/40/5 23/41/5 24/42/5
o nodebox3
v 0.250000 -0.500000 -0.500000
v 0.250000 -0.437500 -0.500000
v -0.250000 -0.437500 -0.500000
v -0.250000 -0.500000 -0.500000
v 0.250000 -0.500000 0.500000
v 0.250000 -0.437500 0.500000
v -0.250000 -0.437500 0.500000
v -0.250000 -0.500000 0.500000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.1250
vt 0.0000 0.1250
vt 1.0000 0.0000
vt 1.0000 0.1250
vt 0.0000 0.1250
vt 1.0000 0.5000
vt 0.0000 0.5000
vt 0.0001 0.0001
vt 1.0000 0.0000
vt 1.0000 0.5000
vt 0.0000 0.5000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
usemtl none_NONE
s 1
f 25/43/7 29/44/7 30/45/7 26/46/7
f 28/47/7 32/48/7 31/49/7 27/50/7
usemtl none
f 25/51/8 26/52/8 27/53/8 28/47/8
f 29/54/8 30/55/8 31/56/8 32/48/8
f 25/51/9 29/57/9 32/58/9 28/59/9
f 26/46/9 30/60/9 31/61/9 27/62/9
o nodebox4.003
v -0.248335 -0.500045 0.508619
v -0.498333 -0.500045 0.509533
v -0.498334 -0.250045 0.509533
v -0.248335 -0.250045 0.508619
v -0.251992 -0.500045 -0.491375
v -0.501991 -0.500045 -0.490460
v -0.501991 -0.250045 -0.490460
v -0.251992 -0.250045 -0.491375
v -0.498333 -0.500045 0.509533
v -0.498334 -0.250045 0.509533
v -0.501991 -0.250045 -0.490460
v -0.501991 -0.500045 -0.490460
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vn -0.0037 -0.0000 -1.0000
vn -1.0000 0.0000 0.0037
vn -0.0000 -1.0000 -0.0000
usemtl none
s 1
f 33/63/10 34/64/10 35/65/10 36/66/10
f 37/67/10 38/68/10 39/69/10 40/70/10
f 33/71/11 36/72/11 40/73/11 37/67/11
f 33/71/12 34/74/12 38/75/12 37/67/12
f 36/76/12 35/77/12 39/78/12 40/79/12
f 41/80/11 42/81/11 43/82/11 44/83/11
o nodebox4.002
v 0.499948 -0.500045 0.505882
v 0.249950 -0.500045 0.506796
v 0.249950 -0.250045 0.506796
v 0.499948 -0.250045 0.505882
v 0.496291 -0.500045 -0.494111
v 0.246293 -0.500045 -0.493197
v 0.246293 -0.250045 -0.493197
v 0.496291 -0.250045 -0.494111
v 0.249950 -0.500045 0.506796
v 0.249950 -0.250045 0.506796
v 0.246293 -0.250045 -0.493197
v 0.246293 -0.500045 -0.493197
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vn -0.0037 0.0000 -1.0000
vn -1.0000 -0.0000 0.0037
vn -0.0000 -1.0000 -0.0000
usemtl none
s 1
f 45/84/13 46/85/13 47/86/13 48/87/13
f 49/88/13 50/89/13 51/90/13 52/91/13
f 45/92/14 48/93/14 52/94/14 49/88/14
f 45/92/15 46/95/15 50/96/15 49/88/15
f 48/97/15 47/98/15 51/99/15 52/100/15
f 53/101/14 54/102/14 55/103/14 56/104/14

View File

@ -0,0 +1,35 @@
# Blender MTL File: 'campfire.blend'
# Material Count: 3
newmtl Material.001
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd G:\minetest-0.4.16-win641\textures\Pixel Perfection v4.0\mcl_campfire_fire.png
newmtl none
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd \home\nathan\Downloads\mcl_campfire_log.png
newmtl none_NONE
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd \\home\\nathan\\Downloads\\mcl_campfire_log.png

View File

@ -0,0 +1,248 @@
# Blender v2.78 (sub 0) OBJ File: 'campfire.blend'
# www.blender.org
mtllib campfire1.mtl
o nodebox4.005_nodebox4.006
v 0.243779 -0.499707 -0.497529
v 0.493779 -0.499707 -0.497421
v 0.493779 -0.249707 -0.497421
v 0.243779 -0.249707 -0.497529
v 0.243349 -0.499707 0.502471
v 0.493349 -0.499707 0.502578
v 0.493349 -0.249707 0.502578
v 0.243349 -0.249707 0.502471
v 0.493779 -0.499707 -0.497421
v 0.493779 -0.249707 -0.497421
v 0.493349 -0.499707 0.502578
v 0.493349 -0.249707 0.502578
vt -0.0000 0.7500
vt -0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt -0.0000 0.7500
vt -0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt -0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt -0.0000 0.7500
vn -0.0004 0.0000 1.0000
vn 1.0000 -0.0000 0.0004
vn -0.0000 -1.0000 0.0000
usemtl none
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/1 6/6/1 7/7/1 8/8/1
f 1/9/2 4/10/2 8/11/2 5/5/2
f 1/9/3 2/12/3 6/13/3 5/5/3
f 4/14/3 3/15/3 7/16/3 8/17/3
f 9/18/2 10/19/2 12/20/2 11/21/2
o nodebox4.004_nodebox4.005
v -0.500021 -0.499707 -0.497848
v -0.250021 -0.499707 -0.497741
v -0.250021 -0.249707 -0.497741
v -0.500021 -0.249707 -0.497848
v -0.500451 -0.499707 0.502152
v -0.250451 -0.499707 0.502259
v -0.250451 -0.249707 0.502259
v -0.500451 -0.249707 0.502152
v -0.250021 -0.499707 -0.497741
v -0.250021 -0.249707 -0.497741
v -0.250451 -0.499707 0.502259
v -0.250451 -0.249707 0.502259
vt -0.0000 0.7500
vt -0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt -0.0000 0.7500
vt -0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt -0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt -0.0000 0.7500
vn -0.0004 0.0000 1.0000
vn 1.0000 -0.0000 0.0004
vn -0.0000 -1.0000 0.0000
usemtl none
s off
f 13/22/4 14/23/4 15/24/4 16/25/4
f 17/26/4 18/27/4 19/28/4 20/29/4
f 13/30/5 16/31/5 20/32/5 17/26/5
f 13/30/6 14/33/6 18/34/6 17/26/6
f 16/35/6 15/36/6 19/37/6 20/38/6
f 21/39/5 22/40/5 24/41/5 23/42/5
o nodebox4.001_nodebox4.004
v 0.500000 -0.312500 -0.493800
v 0.500000 -0.312500 -0.243800
v 0.500000 -0.062500 -0.243800
v 0.500000 -0.062500 -0.493800
v -0.500000 -0.312500 -0.493800
v -0.500000 -0.312500 -0.243800
v -0.500000 -0.062500 -0.243800
v -0.500000 -0.062500 -0.493800
v 0.500000 -0.312500 -0.243800
v 0.500000 -0.062500 -0.243800
v -0.500000 -0.312500 -0.243800
v -0.500000 -0.062500 -0.243800
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.7500
vn -1.0000 0.0000 0.0000
vn 0.0000 -0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
usemtl none
s off
f 25/43/7 26/44/7 27/45/7 28/46/7
f 29/47/7 30/48/7 31/49/7 32/50/7
f 25/51/8 28/52/8 32/53/8 29/47/8
f 25/51/9 26/54/9 30/55/9 29/47/9
f 28/56/9 27/57/9 31/58/9 32/59/9
f 33/60/8 34/61/8 36/62/8 35/63/8
o Plane
v -0.311754 -0.438770 -0.196249
v 0.276360 -0.438621 0.247948
v -0.311276 0.135801 -0.196634
v 0.276838 0.135950 0.247562
v -0.274993 -0.438696 0.270317
v 0.240407 -0.438696 -0.218656
v -0.275322 0.135875 0.269969
v 0.240077 0.135875 -0.219003
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 1.0000
vt -0.0000 1.0000
vn -0.6027 0.0010 0.7980
vn 0.6883 0.0008 0.7255
usemtl Material.001
s off
f 37/64/10 38/65/10 40/66/10 39/67/10
f 41/68/11 42/69/11 44/70/11 43/71/11
o nodebox3
v 0.250000 -0.500000 -0.500000
v 0.250000 -0.500000 0.500000
v 0.250000 -0.437500 0.500000
v 0.250000 -0.437500 -0.500000
v -0.250000 -0.500000 -0.500000
v -0.250000 -0.500000 0.500000
v -0.250000 -0.437500 0.500000
v -0.250000 -0.437500 -0.500000
vt 1.0000 0.0000
vt 1.0000 0.0625
vt 0.0000 0.0625
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.0625
vt 0.0000 0.0625
vt 0.0000 0.0000
vt 1.0000 0.4375
vt 0.0000 0.4375
vt 0.0001 0.0001
vt 0.9999 0.0001
vt 1.0000 0.5000
vt 0.0000 0.5000
vt 0.0001 0.0001
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
vn -1.0000 0.0000 0.0000
usemtl none
s off
f 45/72/12 48/73/12 52/74/12 49/75/12
f 46/76/12 47/77/12 51/78/12 50/79/12
f 45/72/13 46/80/13 50/81/13 49/82/13
f 48/83/13 47/84/13 51/85/13 52/86/13
usemtl none_NONE
f 45/87/14 46/88/14 47/89/14 48/90/14
f 49/75/14 50/79/14 51/91/14 52/92/14
o nodebox4
v 0.500000 -0.312500 0.250000
v 0.500000 -0.312500 0.500000
v 0.500000 -0.062500 0.500000
v 0.500000 -0.062500 0.250000
v -0.500000 -0.312500 0.250000
v -0.500000 -0.312500 0.500000
v -0.500000 -0.062500 0.500000
v -0.500000 -0.062500 0.250000
v 0.500000 -0.312500 0.500000
v 0.500000 -0.062500 0.500000
v -0.500000 -0.312500 0.500000
v -0.500000 -0.062500 0.500000
vt -0.0000 0.7500
vt 0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt -0.0000 0.7500
vt -0.0000 0.5000
vt 0.2500 0.5000
vt 0.2500 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 1.0000
vt 0.0000 1.0000
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt -0.0000 0.7500
vt 1.0000 0.7500
vt 1.0000 1.0000
vt 0.0000 1.0000
vt -0.0000 0.7500
vn -1.0000 0.0000 0.0000
vn 0.0000 -0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
usemtl none
s off
f 53/93/15 54/94/15 55/95/15 56/96/15
f 57/97/15 58/98/15 59/99/15 60/100/15
f 53/101/16 56/102/16 60/103/16 57/97/16
f 53/101/17 54/104/17 58/105/17 57/97/17
f 56/106/17 55/107/17 59/108/17 60/109/17
f 61/110/16 62/111/16 64/112/16 63/113/16

View File

@ -0,0 +1,225 @@
# Blender v2.79 (sub 7) OBJ File: 'campfire.blend'
# www.blender.org
o Plane
v -0.240246 -0.438696 -0.141059
v 0.205043 -0.438696 0.192756
v -0.239959 0.135875 -0.141442
v 0.205331 0.135875 0.192373
v -0.216088 -0.438696 0.214432
v 0.181502 -0.438696 -0.162771
v -0.216417 0.135875 0.214085
v 0.181172 0.135875 -0.163119
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt -0.000000 1.000000
vn -0.5998 0.0008 0.8001
vn 0.6883 0.0008 0.7255
g Plane_Plane_Material.001
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 5/5/2 6/6/2 8/7/2 7/8/2
o nodebox3
v 0.250000 -0.500000 -0.500000
v 0.250000 -0.500000 0.500000
v 0.250000 -0.437500 0.500000
v 0.250000 -0.437500 -0.500000
v -0.250000 -0.500000 -0.500000
v -0.250000 -0.500000 0.500000
v -0.250000 -0.437500 0.500000
v -0.250000 -0.437500 -0.500000
v 0.243779 -0.499707 -0.497529
v 0.493779 -0.499707 -0.497421
v 0.493779 -0.249707 -0.497421
v 0.243779 -0.249707 -0.497529
v 0.243349 -0.499707 0.502471
v 0.493349 -0.499707 0.502579
v 0.493349 -0.249707 0.502578
v 0.243349 -0.249707 0.502471
v 0.493779 -0.499707 -0.497421
v 0.493779 -0.249707 -0.497421
v 0.493349 -0.499707 0.502579
v 0.493349 -0.249707 0.502578
v -0.500021 -0.499707 -0.497848
v -0.250021 -0.499707 -0.497741
v -0.250021 -0.249707 -0.497741
v -0.500021 -0.249707 -0.497848
v -0.500451 -0.499707 0.502152
v -0.250451 -0.499707 0.502259
v -0.250451 -0.249707 0.502259
v -0.500451 -0.249707 0.502152
v -0.250021 -0.499707 -0.497741
v -0.250021 -0.249707 -0.497741
v -0.250451 -0.499707 0.502259
v -0.250451 -0.249707 0.502259
v 0.500000 -0.312500 -0.493800
v 0.500000 -0.312500 -0.243800
v 0.500000 -0.062500 -0.243800
v 0.500000 -0.062500 -0.493800
v -0.500000 -0.312500 -0.493800
v -0.500000 -0.312500 -0.243800
v -0.500000 -0.062500 -0.243800
v -0.500000 -0.062500 -0.493800
v 0.500000 -0.312500 -0.243800
v 0.500000 -0.062500 -0.243800
v -0.500000 -0.312500 -0.243800
v -0.500000 -0.062500 -0.243800
v 0.500000 -0.312500 0.250000
v 0.500000 -0.312500 0.500000
v 0.500000 -0.062500 0.500000
v 0.500000 -0.062500 0.250000
v -0.500000 -0.312500 0.250000
v -0.500000 -0.312500 0.500000
v -0.500000 -0.062500 0.500000
v -0.500000 -0.062500 0.250000
v 0.500000 -0.312500 0.500000
v 0.500000 -0.062500 0.500000
v -0.500000 -0.312500 0.500000
v -0.500000 -0.062500 0.500000
vt 0.999982 0.000018
vt 1.000000 0.062500
vt 0.000000 0.062500
vt 0.000018 0.000018
vt 0.999982 0.000018
vt 1.000000 0.062500
vt 0.000000 0.062500
vt 0.000018 0.000018
vt 1.000000 0.437500
vt 0.000000 0.437500
vt 0.000071 0.000071
vt 0.999929 0.000071
vt 1.000000 0.500000
vt 0.000000 0.500000
vt 0.000071 0.000071
vt -0.000000 0.750000
vt -0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt -0.000000 0.750000
vt -0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.750000
vt -0.000000 0.750000
vt -0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt -0.000000 0.750000
vt -0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.750000
vt 0.000000 0.750000
vt 0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt 0.000000 0.750000
vt 0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.750000
vt -0.000000 0.750000
vt 0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt -0.000000 0.750000
vt -0.000000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.750000
vt 1.000000 0.750000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.750000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
vn -0.0004 0.0000 1.0000
vn 1.0000 -0.0000 0.0004
vn -1.0000 0.0000 0.0000
g nodebox3_nodebox3_none
s off
f 9/9/3 12/10/3 16/11/3 13/12/3
f 10/13/3 11/14/3 15/15/3 14/16/3
f 9/9/4 10/17/4 14/18/4 13/19/4
f 12/20/4 11/21/4 15/22/4 16/23/4
f 17/24/5 18/25/5 19/26/5 20/27/5
f 21/28/5 22/29/5 23/30/5 24/31/5
f 17/32/6 20/33/6 24/34/6 21/28/6
f 17/32/4 18/35/4 22/36/4 21/28/4
f 20/37/4 19/38/4 23/39/4 24/40/4
f 25/41/6 26/42/6 28/43/6 27/44/6
f 29/45/5 30/46/5 31/47/5 32/48/5
f 33/49/5 34/50/5 35/51/5 36/52/5
f 29/53/6 32/54/6 36/55/6 33/49/6
f 29/53/4 30/56/4 34/57/4 33/49/4
f 32/58/4 31/59/4 35/60/4 36/61/4
f 37/62/6 38/63/6 40/64/6 39/65/6
f 41/66/7 42/67/7 43/68/7 44/69/7
f 45/70/7 46/71/7 47/72/7 48/73/7
f 41/74/3 44/75/3 48/76/3 45/70/3
f 41/74/4 42/77/4 46/78/4 45/70/4
f 44/79/4 43/80/4 47/81/4 48/82/4
f 49/83/3 50/84/3 52/85/3 51/86/3
f 53/87/7 54/88/7 55/89/7 56/90/7
f 57/91/7 58/92/7 59/93/7 60/94/7
f 53/95/3 56/96/3 60/97/3 57/91/3
f 53/95/4 54/98/4 58/99/4 57/91/4
f 56/100/4 55/101/4 59/102/4 60/103/4
f 61/104/3 62/105/3 64/106/3 63/107/3
g nodebox3_nodebox3_none_NONE
f 9/108/7 10/109/7 11/110/7 12/111/7
f 13/12/7 14/16/7 15/112/7 16/113/7

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -5,7 +5,7 @@ local S = minetest.get_translator(minetest.get_current_modname())
-- TODO: Extinguish fire of burning entities
-- Convenience function because the cauldron nodeboxes are very similar
local create_cauldron_nodebox = function(water_level)
local function create_cauldron_nodebox(water_level)
local floor_y
if water_level == 0 then -- empty
floor_y = -0.1875
@ -36,12 +36,6 @@ local create_cauldron_nodebox = function(water_level)
}
end
local cauldron_nodeboxes = {}
for w=0,3 do
cauldron_nodeboxes[w] = create_cauldron_nodebox(w)
end
-- Empty cauldron
minetest.register_node("mcl_cauldrons:cauldron", {
description = S("Cauldron"),
@ -55,7 +49,7 @@ minetest.register_node("mcl_cauldrons:cauldron", {
paramtype = "light",
is_ground_content = false,
groups = {pickaxey=1, deco_block=1, cauldron=1},
node_box = cauldron_nodeboxes[0],
node_box = create_cauldron_nodebox(0),
selection_box = { type = "regular" },
tiles = {
"mcl_cauldrons_cauldron_inner.png^mcl_cauldrons_cauldron_top.png",
@ -68,12 +62,15 @@ minetest.register_node("mcl_cauldrons:cauldron", {
})
-- Template function for cauldrons with water
local register_filled_cauldron = function(water_level, description, river_water)
local function register_filled_cauldron(water_level, description, liquid)
local id = "mcl_cauldrons:cauldron_"..water_level
local water_tex
if river_water then
if liquid == "river_water" then
id = id .. "r"
water_tex = "default_river_water_source_animated.png^[verticalframe:16:0"
elseif liquid == "lava" then
id = id .. "_lava"
water_tex = "default_lava_source_animated.png^[verticalframe:16:0"
else
water_tex = "default_water_source_animated.png^[verticalframe:16:0"
end
@ -85,8 +82,8 @@ local register_filled_cauldron = function(water_level, description, river_water)
paramtype = "light",
is_ground_content = false,
groups = {pickaxey=1, not_in_creative_inventory=1, cauldron=(1+water_level), cauldron_filled=water_level, comparator_signal=water_level},
node_box = cauldron_nodeboxes[water_level],
collision_box = cauldron_nodeboxes[0],
node_box = create_cauldron_nodebox(water_level),
collision_box = create_cauldron_nodebox(0),
selection_box = { type = "regular" },
tiles = {
"("..water_tex..")^mcl_cauldrons_cauldron_top.png",
@ -106,14 +103,12 @@ local register_filled_cauldron = function(water_level, description, river_water)
end
-- Filled cauldrons (3 levels)
register_filled_cauldron(1, S("Cauldron (1/3 Water)"))
register_filled_cauldron(2, S("Cauldron (2/3 Water)"))
register_filled_cauldron(3, S("Cauldron (3/3 Water)"))
if minetest.get_modpath("mclx_core") then
register_filled_cauldron(1, S("Cauldron (1/3 River Water)"), true)
register_filled_cauldron(2, S("Cauldron (2/3 River Water)"), true)
register_filled_cauldron(3, S("Cauldron (3/3 River Water)"), true)
for i=1,3 do
register_filled_cauldron(i, S("Cauldron (" ..i .. "/3 Water)"))
register_filled_cauldron(i, S("Cauldron (" ..i .. "/3 Water)"),"lava")
if minetest.get_modpath("mclx_core") then
register_filled_cauldron(i, S("Cauldron (" ..i .. "/3 Water)"),"river_water")
end
end
minetest.register_craft({
@ -125,19 +120,36 @@ minetest.register_craft({
}
})
minetest.register_abm({
label = "cauldrons",
nodenames = {"group:cauldron_filled"},
interval = 0.5,
chance = 1,
action = function(pos, node)
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.4)) do
if mcl_burning.is_burning(obj) then
mcl_burning.extinguish(obj)
local new_group = minetest.get_item_group(node.name, "cauldron_filled") - 1
minetest.swap_node(pos, {name = "mcl_cauldrons:cauldron" .. (new_group == 0 and "" or "_" .. new_group)})
break
local function cauldron_extinguish(obj,pos)
local node = minetest.get_node(pos)
if mcl_burning.is_burning(obj) then
mcl_burning.extinguish(obj)
local new_group = minetest.get_item_group(node.name, "cauldron_filled") - 1
minetest.swap_node(pos, {name = "mcl_cauldrons:cauldron" .. (new_group == 0 and "" or "_" .. new_group)})
end
end
local etime = 0
minetest.register_globalstep(function(dtime)
etime = dtime + etime
if etime < 0.5 then return end
etime = 0
for _,pl in pairs(minetest.get_connected_players()) do
local n = minetest.find_node_near(pl:get_pos(),0.4,{"group:cauldron_filled"},true)
if n and not minetest.get_node(n).name:find("lava") then
cauldron_extinguish(pl,n)
elseif n and minetest.get_node(n).name:find("lava") then
mcl_burning.set_on_fire(pl, 5)
end
end
for _,ent in pairs(minetest.luaentities) do
if ent.object:get_pos() and ent.is_mob then
local n = minetest.find_node_near(ent.object:get_pos(),0.4,{"group:cauldron_filled"},true)
if n and not minetest.get_node(n).name:find("lava") then
cauldron_extinguish(ent.object,n)
elseif n and minetest.get_node(n).name:find("lava") then
mcl_burning.set_on_fire(ent.object, 5)
end
end
end
})
end)

View File

@ -1,3 +1,3 @@
name = mcl_cauldrons
depends = mcl_core, mcl_sounds
optional_depends = mclx_core, doc
optional_depends = mclx_core, doc, mcl_burning

View File

@ -189,6 +189,7 @@ minetest.register_globalstep(function(dtime)
if string_find(stack:get_name(), "_lodestone") then
stack:set_name("mcl_compass:" .. compass_frame .. "_lodestone")
awards.unlock(player:get_player_name(), "mcl:countryLode")
else
stack:set_name("mcl_compass:" .. compass_frame)
end
@ -284,7 +285,7 @@ minetest.register_craft({
output = "mcl_compass:lodestone",
recipe = {
{"mcl_core:stonebrickcarved","mcl_core:stonebrickcarved","mcl_core:stonebrickcarved"},
{"mcl_core:stonebrickcarved", "mcl_core:diamondblock", "mcl_core:stonebrickcarved"},
{"mcl_core:stonebrickcarved", "mcl_nether:netherite_ingot", "mcl_core:stonebrickcarved"},
{"mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved"}
}
})

View File

@ -34,7 +34,7 @@ minetest.register_node("mcl_copper:block", {
groups = {pickaxey = 2, building_block = 1},
sounds = mcl_sounds.node_sound_metal_defaults(),
_mcl_blast_resistance = 6,
_mcl_hardness = 5,
_mcl_hardness = 3,
})
minetest.register_node("mcl_copper:block_exposed", {

View File

@ -1698,3 +1698,68 @@ function mcl_core.after_snow_destruct(pos)
local node = minetest.get_node(npos)
mcl_core.clear_snow_dirt(npos, node)
end
-- Obsidian crying
local crobby_psdef = {
amount = 1,
time = 0.9, --everything longer than 1 is a coord exploit
minvel = vector.new(0,-2,0),
maxvel = vector.new(0,-0.5,0),
minacc = vector.new(0,-10,0),
maxacc = vector.new(0,-8,0),
minexptime = 1,
maxexptime = 6,
minsize = 1.5,
maxsize = 2,
collisiondetection = true,
collision_removal = true,
object_collision = true,
vertical = true,
texture = "mcl_core_crying_obsidian_tear.png",
}
local crobby_psdef2 = {
amount = 1,
time = 0.9, --everything longer than 1 is a coord exploit
minvel = vector.new(0,-0.01,0),
maxvel = vector.new(0,-0.005,0),
minacc = vector.new(0,-0.1,0),
maxacc = vector.new(0,-0.01,0),
minexptime = 2,
maxexptime = 3,
minsize = 0.3,
maxsize = 0.6,
collisiondetection = true,
collision_removal = true,
object_collision = true,
vertical = true,
texture = "mcl_core_crying_obsidian_tear.png",
}
minetest.register_abm({
label = "Obsidian cries",
nodenames = {"mcl_core:crying_obsidian"},
interval = 5,
chance = 10,
action = function(pos, node)
minetest.after(math.random(0.1,1.5),function()
crobby_psdef.minpos = vector.offset(pos,-0.6,-0.51,-0.6)
crobby_psdef.maxpos = vector.offset(pos,0.6,0.51,0.6)
minetest.add_particlespawner(crobby_psdef)
crobby_psdef2.minpos = vector.offset(pos,-0.51,-0.51,-0.51)
crobby_psdef2.maxpos = vector.offset(pos,-0.5,0.51,-0.5)
minetest.add_particlespawner(crobby_psdef2)
crobby_psdef2.minpos = vector.offset(pos,0.51,-0.51,-0.51)
crobby_psdef2.maxpos = vector.offset(pos,0.5,0.51,-0.5)
minetest.add_particlespawner(crobby_psdef2)
crobby_psdef2.minpos = vector.offset(pos,0.51,-0.51,0.51)
crobby_psdef2.maxpos = vector.offset(pos,0.5,0.51,0.5)
minetest.add_particlespawner(crobby_psdef2)
crobby_psdef2.minpos = vector.offset(pos,-0.51,-0.51,0.51)
crobby_psdef2.maxpos = vector.offset(pos,-0.5,0.51,0.5)
minetest.add_particlespawner(crobby_psdef2)
end)
end
})

View File

@ -389,7 +389,7 @@ minetest.register_node("mcl_core:dirt_with_grass", {
return mcl_core.on_snowable_construct(pos)
end,
_mcl_snowed = "mcl_core:dirt_with_grass_snow",
_mcl_blast_resistance = 0.5,
_mcl_blast_resistance = 0.6,
_mcl_hardness = 0.6,
_mcl_silk_touch_drop = true,
})
@ -434,7 +434,7 @@ minetest.register_node("mcl_core:mycelium", {
on_construct = mcl_core.on_snowable_construct,
_mcl_snowed = "mcl_core:mycelium_snow",
_mcl_blast_resistance = 0.5,
_mcl_blast_resistance = 0.6,
_mcl_hardness = 0.6,
_mcl_silk_touch_drop = true,
})
@ -451,8 +451,8 @@ minetest.register_node("mcl_core:podzol", {
sounds = mcl_sounds.node_sound_dirt_defaults(),
on_construct = mcl_core.on_snowable_construct,
_mcl_snowed = "mcl_core:podzol_snow",
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
_mcl_blast_resistance = 0.8,
_mcl_hardness = 0.8,
_mcl_silk_touch_drop = true,
})
mcl_core.register_snowed_node("mcl_core:podzol_snow", "mcl_core:podzol", nil, nil, false, S("Podzol with Snow"))
@ -556,8 +556,8 @@ minetest.register_node("mcl_core:sandstonesmooth", {
stack_max = 64,
groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 0.8,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
})
minetest.register_node("mcl_core:sandstonecarved", {
@ -581,8 +581,8 @@ minetest.register_node("mcl_core:sandstonesmooth2", {
stack_max = 64,
groups = {pickaxey=1, sandstone=1, normal_sandstone=1, building_block=1, material_stone=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 0.8,
_mcl_hardness = 0.8,
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
})
-- red sandstone --
@ -775,7 +775,7 @@ minetest.register_node("mcl_core:goldblock", {
groups = {pickaxey=4, building_block=1},
sounds = mcl_sounds.node_sound_metal_defaults(),
_mcl_blast_resistance = 6,
_mcl_hardness = 5,
_mcl_hardness = 3,
})
minetest.register_node("mcl_core:diamondblock", {
@ -831,6 +831,19 @@ minetest.register_node("mcl_core:obsidian", {
end,
})
minetest.register_node("mcl_core:crying_obsidian", {
description = S("Crying Obsidian"),
_doc_items_longdesc = S("Crying obsidian is a luminous obsidian that can generate as part of ruined portals."),
tiles = {"default_obsidian.png^mcl_core_crying_obsidian.png"},
is_ground_content = false,
light_source = 10,
sounds = mcl_sounds.node_sound_stone_defaults(),
stack_max = 64,
groups = {pickaxey=5, building_block=1, material_stone=1},
_mcl_blast_resistance = 1200,
_mcl_hardness = 50,
})
minetest.register_node("mcl_core:ice", {
description = S("Ice"),
_doc_items_longdesc = S("Ice is a solid block usually found in cold areas. It melts near block light sources at a light level of 12 or higher. When it melts or is broken while resting on top of another block, it will turn into a water source."),
@ -1062,8 +1075,8 @@ minetest.register_node("mcl_core:snowblock", {
on_construct = mcl_core.on_snow_construct,
after_destruct = mcl_core.after_snow_destruct,
drop = "mcl_throwing:snowball 4",
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
_mcl_blast_resistance = 0.1,
_mcl_hardness = 0.1,
_mcl_silk_touch_drop = true,
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

View File

@ -0,0 +1,485 @@
local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname)
local modpath = minetest.get_modpath(modname)
-- Warped and Crimson fungus
-- by debiankaios
-- adapted for mcl2 by cora
local function generate_warped_tree(pos)
minetest.place_schematic(pos,modpath.."/schematics/warped_fungus_1.mts","random",nil,false,"place_center_x,place_center_z")
end
function generate_crimson_tree(pos)
minetest.place_schematic(pos,modpath.."/schematics/crimson_fungus_1.mts","random",nil,false,"place_center_x,place_center_z")
end
function grow_twisting_vines(pos, moreontop)
local y = pos.y + 1
while not (moreontop == 0) do
if minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "air" then
minetest.set_node({x = pos.x, y = y, z = pos.z}, {name="mcl_crimson:twisting_vines"})
moreontop = moreontop - 1
y = y + 1
elseif minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "mcl_crimson:twisting_vines" then
y = y + 1
else
moreontop = 0
end
end
end
minetest.register_node("mcl_crimson:warped_fungus", {
description = S("Warped Fungus Mushroom"),
drawtype = "plantlike",
tiles = { "farming_warped_fungus.png" },
inventory_image = "farming_warped_fungus.png",
wield_image = "farming_warped_fungus.png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1},
light_source = 1,
selection_box = {
type = "fixed",
fixed = { -3/16, -0.5, -3/16, 3/16, -2/16, 3/16 },
},
node_placement_prediction = "",
on_rightclick = function(pos, node, pointed_thing, player, itemstack)
if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then
local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z})
if nodepos.name == "mcl_crimson:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then
local random = math.random(1, 5)
if random == 1 then
generate_warped_tree(pos)
end
end
end
end,
_mcl_blast_resistance = 0,
})
minetest.register_node("mcl_crimson:twisting_vines", {
description = S("Twisting Vines"),
drawtype = "plantlike",
tiles = { "twisting_vines_plant.png" },
inventory_image = "twisting_vines.png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
climbable = true,
buildable_to = true,
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
selection_box = {
type = "fixed",
fixed = { -3/16, -0.5, -3/16, 3/16, 0.5, 3/16 },
},
node_placement_prediction = "",
on_rightclick = function(pos, node, pointed_thing, itemstack)
if pointed_thing:get_wielded_item():get_name() == "mcl_crimson:twisting_vines" then
itemstack:take_item()
grow_twisting_vines(pos, 1)
elseif pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then
itemstack:take_item()
grow_twisting_vines(pos, math.random(1, 3))
end
end,
drop = {
max_items = 1,
items = {
{items = {"mcl_crimson:twisting_vines"}, rarity = 3},
},
},
_mcl_shears_drop = true,
_mcl_silk_touch_drop = true,
_mcl_fortune_drop = {
items = {
{items = {"mcl_crimson:twisting_vines"}, rarity = 3},
},
items = {
{items = {"mcl_crimson:twisting_vines"}, rarity = 1.8181818181818181},
},
"mcl_crimson:twisting_vines",
"mcl_crimson:twisting_vines",
},
_mcl_blast_resistance = 0,
})
minetest.register_node("mcl_crimson:nether_sprouts", {
description = S("Nether Sprouts"),
drawtype = "plantlike",
tiles = { "nether_sprouts.png" },
inventory_image = "nether_sprouts.png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
buildable_to = true,
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
selection_box = {
type = "fixed",
fixed = { -4/16, -0.5, -4/16, 4/16, 0, 4/16 },
},
node_placement_prediction = "",
drop = "",
_mcl_shears_drop = true,
_mcl_silk_touch_drop = false,
_mcl_blast_resistance = 0,
})
minetest.register_node("mcl_crimson:warped_roots", {
description = S("Warped Roots"),
drawtype = "plantlike",
tiles = { "warped_roots.png" },
inventory_image = "warped_roots.png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
buildable_to = true,
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
selection_box = {
type = "fixed",
fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 },
},
node_placement_prediction = "",
_mcl_silk_touch_drop = false,
_mcl_blast_resistance = 0,
})
minetest.register_node("mcl_crimson:warped_wart_block", {
description = S("Warped Wart Block"),
tiles = {"warped_wart_block.png"},
groups = {handy = 1, hoe = 7, swordy = 1, deco_block = 1},
_mcl_hardness = 2,
})
minetest.register_node("mcl_crimson:shroomlight", {
description = S("Shroomlight"),
tiles = {"shroomlight.png"},
groups = {handy = 1, hoe = 7, swordy = 1, leafdecay = 5, leaves = 1, deco_block = 1},
light_source = minetest.LIGHT_MAX,
_mcl_hardness = 2,
})
minetest.register_node("mcl_crimson:warped_hyphae", {
description = S("Warped Hyphae"),
_doc_items_longdesc = S("The stem of a warped hyphae"),
_doc_items_hidden = false,
tiles = {
"warped_hyphae.png",
"warped_hyphae.png",
"warped_hyphae_side.png",
"warped_hyphae_side.png",
"warped_hyphae_side.png",
"warped_hyphae_side.png",
},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_stripped_variant = "mcl_crimson:stripped_warped_hyphae",
})
minetest.register_node("mcl_crimson:warped_nylium", {
description = S("Warped Nylium"),
tiles = {
"warped_nylium.png",
"mcl_nether_netherrack.png",
"mcl_nether_netherrack.png^warped_nylium_side.png",
"mcl_nether_netherrack.png^warped_nylium_side.png",
"mcl_nether_netherrack.png^warped_nylium_side.png",
"mcl_nether_netherrack.png^warped_nylium_side.png",
},
paramtype2 = "facedir",
is_ground_content = true,
drop = "mcl_nether:netherrack",
groups = {pickaxey=1, building_block=1, material_stone=1},
_mcl_hardness = 0.4,
_mcl_blast_resistance = 0.4,
_mcl_silk_touch_drop = true,
})
--Stem bark, stripped stem and bark
minetest.register_node("mcl_crimson:warped_hyphae_bark", {
description = S("Warped Hyphae Bark"),
_doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."),
tiles = {"warped_hyphae_side.png"},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
is_ground_content = false,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_stripped_variant = "mcl_crimson:stripped_warped_hyphae_bark",
})
minetest.register_craft({
output = "mcl_crimson:warped_hyphae_bark 3",
recipe = {
{ "mcl_crimson:warped_hyphae", "mcl_crimson:warped_hyphae" },
{ "mcl_crimson:warped_hyphae", "mcl_crimson:warped_hyphae" },
},
})
minetest.register_node("mcl_crimson:stripped_warped_hyphae", {
description = S("Stripped warped hyphae"),
_doc_items_longdesc = S("The stripped hyphae of a warped fungus"),
_doc_items_hidden = false,
tiles = {"warped_stem_stripped_top.png", "warped_stem_stripped_top.png", "warped_stem_stripped_side.png"},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("mcl_crimson:stripped_warped_hyphae_bark", {
description = S("Stripped warped hyphae bark"),
_doc_items_longdesc = S("The stripped hyphae bark of a warped fungus"),
tiles = {"crimson_stem_stripped_side.png"},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
is_ground_content = false,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_craft({
output = "mcl_crimson:stripped_warped_hyphae_bark 3",
recipe = {
{ "mcl_crimson:stripped_warped_hyphae", "mcl_crimson:stripped_warped_hyphae" },
{ "mcl_crimson:stripped_warped_hyphae", "mcl_crimson:stripped_warped_hyphae" },
},
})
minetest.register_node("mcl_crimson:warped_hyphae_wood", {
description = S("Warped Hyphae Wood"),
tiles = {"warped_hyphae_wood.png"},
groups = {handy = 5,axey = 1, flammable = 3, wood=1,building_block = 1, material_wood = 1, fire_encouragement = 5, fire_flammability = 20},
paramtype2 = "facedir",
_mcl_hardness = 2,
})
mcl_stairs.register_stair_and_slab_simple("warped_hyphae_wood", "mcl_crimson:warped_hyphae_wood", S("Warped Stair"), S("Warped Slab"), S("Double Warped Slab"))
minetest.register_craft({
output = "mcl_crimson:warped_hyphae_wood 4",
recipe = {
{"mcl_crimson:warped_hyphae"},
},
})
minetest.register_craft({
output = "mcl_crimson:warped_nylium 2",
recipe = {
{"mcl_crimson:warped_wart_block"},
{"mcl_nether:netherrack"},
},
})
minetest.register_abm({
label = "mcl_crimson:warped_fungus",
nodenames = {"mcl_crimson:warped_fungus"},
interval = 11,
chance = 128,
action = function(pos)
local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0))
if nodepos.name == "mcl_crimson:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then
if pos.y < -28400 then
generate_warped_tree(pos)
end
end
end
})
minetest.register_node("mcl_crimson:crimson_fungus", {
description = S("Crimson Fungus Mushroom"),
drawtype = "plantlike",
tiles = { "farming_crimson_fungus.png" },
inventory_image = "farming_crimson_fungus.png",
wield_image = "farming_crimson_fungus.png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1},
light_source = 1,
selection_box = {
type = "fixed",
fixed = { -3/16, -0.5, -3/16, 3/16, -2/16, 3/16 },
},
node_placement_prediction = "",
on_rightclick = function(pos, node, pointed_thing, player)
if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then
local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0))
if nodepos.name == "mcl_crimson:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then
local random = math.random(1, 5)
if random == 1 then
generate_crimson_tree(pos)
end
end
end
end,
_mcl_blast_resistance = 0,
})
minetest.register_node("mcl_crimson:crimson_roots", {
description = S("Crimson Roots"),
drawtype = "plantlike",
tiles = { "crimson_roots.png" },
inventory_image = "crimson_roots.png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
buildable_to = true,
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
selection_box = {
type = "fixed",
fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 },
},
node_placement_prediction = "",
_mcl_silk_touch_drop = false,
_mcl_blast_resistance = 0,
})
minetest.register_node("mcl_crimson:crimson_hyphae", {
description = S("Crimson Hyphae"),
_doc_items_longdesc = S("The stem of a crimson hyphae"),
_doc_items_hidden = false,
tiles = {
"crimson_hyphae.png",
"crimson_hyphae.png",
"crimson_hyphae_side.png",
"crimson_hyphae_side.png",
"crimson_hyphae_side.png",
"crimson_hyphae_side.png",
},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_stripped_variant = "mcl_crimson:stripped_crimson_hyphae",
})
--Stem bark, stripped stem and bark
minetest.register_node("mcl_crimson:crimson_hyphae_bark", {
description = S("Crimson Hyphae Bark"),
_doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."),
tiles = {"crimson_hyphae_side.png"},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
is_ground_content = false,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_stripped_variant = "mcl_crimson:stripped_crimson_hyphae_bark",
})
minetest.register_craft({
output = "mcl_crimson:crimson_hyphae_bark 3",
recipe = {
{ "mcl_crimson:crimson_hyphae", "mcl_crimson:crimson_hyphae" },
{ "mcl_crimson:crimson_hyphae", "mcl_crimson:crimson_hyphae" },
},
})
minetest.register_node("mcl_crimson:stripped_crimson_hyphae", {
description = S("Stripped Crimson Hyphae"),
_doc_items_longdesc = S("The stripped stem of a crimson hyphae"),
_doc_items_hidden = false,
tiles = {"crimson_stem_stripped_top.png", "crimson_stem_stripped_top.png", "crimson_stem_stripped_side.png"},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("mcl_crimson:stripped_crimson_hyphae_bark", {
description = S("Stripped Crimson Hyphae Bark"),
_doc_items_longdesc = S("The stripped wood of a crimson hyphae"),
tiles = {"crimson_stem_stripped_side.png"},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
sounds = mcl_sounds.node_sound_wood_defaults(),
is_ground_content = false,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_craft({
output = "mcl_crimson:stripped_crimson_hyphae_bark 3",
recipe = {
{ "mcl_crimson:stripped_crimson_hyphae", "mcl_crimson:stripped_crimson_hyphae" },
{ "mcl_crimson:stripped_crimson_hyphae", "mcl_crimson:stripped_crimson_hyphae" },
},
})
minetest.register_node("mcl_crimson:crimson_hyphae_wood", {
description = S("Crimson Hyphae Wood"),
tiles = {"crimson_hyphae_wood.png"},
groups = {handy = 5, axey = 1, wood = 1, building_block = 1, material_wood = 1},
paramtype2 = "facedir",
_mcl_hardness = 2,
})
minetest.register_node("mcl_crimson:crimson_nylium", {
description = S("Crimson Nylium"),
tiles = {
"crimson_nylium.png",
"mcl_nether_netherrack.png",
"mcl_nether_netherrack.png^crimson_nylium_side.png",
"mcl_nether_netherrack.png^crimson_nylium_side.png",
"mcl_nether_netherrack.png^crimson_nylium_side.png",
"mcl_nether_netherrack.png^crimson_nylium_side.png",
},
groups = {pickaxey = 1, building_block = 1, material_stone = 1},
paramtype2 = "facedir",
is_ground_content = true,
drop = "mcl_nether:netherrack",
_mcl_hardness = 0.4,
_mcl_blast_resistance = 0.4,
_mcl_silk_touch_drop = true,
})
minetest.register_craft({
output = "mcl_crimson:crimson_hyphae_wood 4",
recipe = {
{"mcl_crimson:crimson_hyphae"},
},
})
minetest.register_craft({
output = "mcl_crimson:crimson_nylium 2",
recipe = {
{"mcl_nether:nether_wart"},
{"mcl_nether:netherrack"},
},
})
mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_wood", "mcl_crimson:crimson_hyphae_wood", "Crimson Stair", "Crimson Slab", "Double Crimson Slab")
minetest.register_abm({
label = "mcl_crimson:crimson_fungus",
nodenames = {"mcl_crimson:crimson_fungus"},
interval = 11,
chance = 128,
action = function(pos)
local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0))
if nodepos.name == "mcl_crimson:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then
if pos.y < -28400 then
generate_crimson_tree(pos)
end
end
end
})

View File

@ -0,0 +1,24 @@
# textdomain: mcl_crimson
Warped Fungus Mushroom=Wirrpilz
Twisting Vines=Zwirbelranken
Nether Sprouts=Nethersprossen
Warped Roots=Wirrwurzeln
Warped Wart Block=Wirrwarzenblock
Shroomlight=Pilzlicht
Warped Hyphae=Wirrhyphe
Warped Nylium=Wirr-Nezel
Warped Checknode - only to check!=Wirr Checkblock - Nur zum checken!
Warped Hyphae Wood=Wirrhyphen Holz
Warped Stair=Wirrtreppe
Warped Slab=Wirrstufe
Double Warped Slab=Doppelte Wirrstufe
Crimson Fungus Mushroom=Karmesinpilz
Crimson Roots=Karmesinwurzeln
Crimson Hyphae=Karmesinhyphe
Crimson Hyphae Wood=Karmesinhyphenholz
Crimson Stair=Karmesintreppe
Crimson Slab=Karmesinstufe
Double Crimson Slab=Doppelte Karmesinstufe
Crimson Nylium=Karmesin-Nezel
Crimson Checknode - only to check!=Karmesin Checkblock - Nur zum checken!

View File

@ -0,0 +1,23 @@
# textdomain: mcl_crimson
Warped Fungus Mushroom=Champignon tordu
Twisting Vines=Liane tordue
Nether Sprouts=Racines du nether
Warped Roots=Racines tordues
Warped Wart Block=Bloc de verrues tordu
Shroomlight=Champilampe
Warped Hyphae=Tige tordue
Warped Nylium=Nylium tordu
Warped Checknode - only to check!=Bloc de vérification tordu - seulement pour vérifier !
Warped Hyphae Wood=Planches tordues
Warped Stair=Escalier tordu
Warped Slab=Dalle tordue
Crimson Fungus Mushroom=Champignon écarlate
Crimson Roots=Racines écarlates
Crimson Hyphae=Tige écarlate
Crimson Hyphae Wood=Planches écarlates
Crimson Stair=Escalier écarlate
Crimson Slab=Dalle écarlate
Double Crimson Slab=Dalle double écarlate
Crimson Nylium=Nylium écarlate
Crimson Checknode - only to check!=Bloc de vérification écarlate - seulement pour vérifier !

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