Compare commits

...

480 Commits

Author SHA1 Message Date
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 e50ad7d6de Merge pull request 'Fix a crash with rocket explosion' (#4178) from fix_rocket_crash into master
Reviewed-on: MineClone2/MineClone2#4178
Reviewed-by: 𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 <mrrar@noreply.git.minetest.land>
2024-03-21 00:15:50 +00:00
the-real-herowl 4b6d63739c Fix a crash with rocket explosion
Defensive check
2024-03-20 19:13:44 -05:00
syl 21dbc25f13 Improve french translation (#4194)
Made a few improvements in the french translation.
Revert a change (oeil->œil) which make harder to search items by typing theirs names. Because "œ" is not in the AZERTY keyboard.

Reviewed-on: MineClone2/MineClone2#4194
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: syl <syl@gresille.org>
Co-committed-by: syl <syl@gresille.org>
2024-03-07 20:04:02 +00:00
Eliy21 7bfbaac772 Fix damage animation and player invul crash in mcl_playerplus (#4176)
Reviewed-on: MineClone2/MineClone2#4176
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2024-02-04 17:31:11 +00:00
the-real-herowl 87abd0f4dc Merge pull request 'Colored Leather Armor' (#4024) from AFCMS/MineClone2:colored-leather-2 into master
Reviewed-on: MineClone2/MineClone2#4024
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-02-02 03:25:08 +00:00
the-real-herowl 03b8ad15e3 Privs for colorizing command and comment cleanup 2024-02-02 04:07:41 +01:00
the-real-herowl fc6fe3f1ed Crafting colorized leather armor 2024-02-02 03:05:57 +00:00
the-real-herowl 3fa4cf6d52 Cauldron leather armor washing 2024-02-02 03:05:57 +00:00
the-real-herowl 3d799266c3 Finished leather armor colorizing 2024-02-02 03:05:57 +00:00
AFCMS caa82c40c9 Colored Leather Armor 2024-02-02 03:05:57 +00:00
the-real-herowl 8c19d4b9b8 Merge pull request 'Add glazed terracotta pillars' (#4117) from Potiron/MineClone2:master into master
Reviewed-on: MineClone2/MineClone2#4117
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-02-02 02:50:36 +00:00
the-real-herowl c31226041f Merge pull request 'Fixed ghast hitbox' (#4156) from ghast_fix into master
Reviewed-on: MineClone2/MineClone2#4156
2024-01-28 12:56:06 +00:00
the-real-herowl b3bcd949b9 Merge pull request 'Change on scaffolding placement checking' (#4164) from JoseDouglas26/MineClone2:scaffolding_bug_fix into master
Reviewed-on: MineClone2/MineClone2#4164
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-25 13:30:41 +00:00
the-real-herowl a8ad631864 Added ghast achievement and nerfed ghast
* ghast now attacks less frequently
* killing ghast with a ghast fireball now awards an achievement
2024-01-25 14:29:08 +01:00
the-real-herowl 1478960b7f Improved ghast combat
* ghast fireballs can now hit the shooter (used to just fly through)
* improved ghast aim
* increased ghast fireball lifetime
* mob projectile lifetime is now counted in seconds (was in ticks)
* improved variable naming
* improved default mob projectile deflecting (applies to ghast fireball)
2024-01-25 02:51:36 +00:00
the-real-herowl f41990c1d0 Fixed ghast hitbox 2024-01-25 02:51:36 +00:00
José Douglas da Silva Souza 77a6ac1ef3 Protection check 2024-01-25 02:23:15 +00:00
José Douglas da Silva Souza 9b9271e5df Change on scaffolding placement checking 2024-01-25 02:23:15 +00:00
the-real-herowl 1175be45fb Merge pull request 'Add MC hold to eat delay' (#4144) from Eliy21/MineClone2:eating_delay into master
Reviewed-on: MineClone2/MineClone2#4144
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-25 02:06:14 +00:00
the-real-herowl f444efbb03 Merge pull request 'Make cactus be able to damage mobs' (#4149) from Eliy21/MineClone2:cactus_mob_damage into master
Reviewed-on: MineClone2/MineClone2#4149
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-25 01:57:22 +00:00
chmodsayshello a2a38b7b3d Merge pull request 'Fixed a crash' (#4154) from fix_capes_crash into master
Reviewed-on: MineClone2/MineClone2#4154
Reviewed-by: chmodsayshello <chmodsayshello@hotmail.com>
2024-01-22 20:20:31 +00:00
Eliy21 aa4f8ba6cc Add medium size mob distinction in the cactus mob damage area reach code 2024-01-21 09:18:43 +00:00
Eliy21 b645a2ab67 Remove commented out cactus mob damage code 2024-01-21 09:18:43 +00:00
Eliy21 d41d29be58 Add distinction between regular sized mobs and large mobs in the cactus mob damage area reach 2024-01-21 09:18:43 +00:00
Eliy21 434bb33f72 Add mob cactus damage logic to /mcl_mobs/physics.lua 2024-01-21 09:18:43 +00:00
Eliy21 d37840e022 Comment out cactus mob damage logic in preperation to move code logic to /mcl_mobs/physics.lua 2024-01-21 09:18:43 +00:00
Eliy21 aea5c6f7be Make cactus be able to damage mobs 2024-01-21 09:18:43 +00:00
Eliy21 5154dce8d0 Use table.update() on mcl_hunger.eat_internal[name] in the item eat code 2024-01-21 09:03:27 +00:00
Eliy21 c0a5c63601 Fix sus stew item frame duplication bug 2024-01-21 09:03:27 +00:00
Eliy21 473c85c543 Fix bucket milk item frame duplication bug 2024-01-21 09:03:27 +00:00
Eliy21 86c10002a6 Fix golden apple item frame duplication bug 2024-01-21 09:03:27 +00:00
Eliy21 b56424a0b6 Integrate mcl_hunger.is_eating(name) API into item eat code 2024-01-21 09:03:27 +00:00
Eliy21 93dff87a5e Add mcl_hunger.is_eating(name) API 2024-01-21 09:03:27 +00:00
Eliy21 be711ea727 Change beetroot soup food group to not be categorized as a drink and be eaten with particles 2024-01-21 09:03:27 +00:00
Eliy21 7b42779fe2 Change rabbit stew food group to not be categorized as a drink and be eaten with particles 2024-01-21 09:03:27 +00:00
Eliy21 11d0062255 Change mushroom stew food group to not be categorized as a drink and be eaten with particles 2024-01-21 09:03:27 +00:00
Eliy21 4dd04b4c91 Fix sus stew not leaving bowl after use 2024-01-21 09:03:27 +00:00
Eliy21 109aed75df Fix sus stew not having eating particle & sound effects and eating slow speed getting stuck on login 2024-01-21 09:03:27 +00:00
James Clarke 184f1575ee Added mcl_eating_delay setting in settingtypes.txt 2024-01-21 09:03:27 +00:00
Eliy21 7561e1dc95 Make sus stew handle delayed eating 2024-01-21 09:03:27 +00:00
Eliy21 bee44f41b6 Make milk bucket handle delayed eating 2024-01-21 09:03:27 +00:00
Eliy21 b2b2dc4090 Make golden apples handle delayed eating 2024-01-21 09:03:27 +00:00
Eliy21 a78b308a75 Make potions handle delayed eating 2024-01-21 09:03:27 +00:00
Eliy21 cc7a2e0b41 Add eating delay entry to changelog.txt 2024-01-21 09:03:27 +00:00
Eliy21 996a5a6d47 Integrate delayed eating to item eat code 2024-01-21 09:03:27 +00:00
Eliy21 4c8efca4e6 Add eating delay code 2024-01-21 09:03:27 +00:00
SmokeyDope 2d2b64006b add nether vine placement checks for top and bottom of nodes (#4129)
This adds placement checks to weeping and twisting vines, weeping vines should only be placed on bottom of nodes and twisting vines should only be placed on top of nodes.

Most of the work for this was done by JoseDouglas26. This was made with their permission, I just had to tweak the code a bit to get twisting vines to place right. Thank you Jose!

Reviewed-on: MineClone2/MineClone2#4129
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: SmokeyDope <smokey@tilde.team>
Co-committed-by: SmokeyDope <smokey@tilde.team>
2024-01-21 06:28:41 +00:00
emptyshore 8e103cf615 Mobs should not anger towards the player if damage is disabled. (#4114)
Co-authored-by: Mateusz Uzdowski <mateusz@silverstripe.com>
Reviewed-on: MineClone2/MineClone2#4114
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: emptyshore <emptyshore@noreply.git.minetest.land>
Co-committed-by: emptyshore <emptyshore@noreply.git.minetest.land>
2024-01-21 05:37:54 +00:00
the-real-herowl d1ac98a019 Fixed a crash
Crash when the cape field is not set.
It is not set when joining an old world with the capes PR applied.
Also trimmed trailing.
2024-01-21 03:09:11 +00:00
codiac d3c591915f Fix light check and limit Y level for slime chunk spawn. (#4139)
Reviewed-on: MineClone2/MineClone2#4139
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: codiac <codiac@inbox.lv>
Co-committed-by: codiac <codiac@inbox.lv>
2024-01-21 02:52:36 +00:00
the-real-herowl b507838e13 Merge pull request 'Overhaul Texture_Converter.py and Conversion_Table.csv' (#4133) from Impulse/MineClone2:texture-conversion-120 into master
Reviewed-on: MineClone2/MineClone2#4133
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-21 02:25:22 +00:00
Doods b944a70059 added piglin (did I fix git?) 2024-01-21 02:19:29 +00:00
Doods 9397e736a8 just a hotfix, doesn't count (true finish (at least for the conversion table.csv) 2024-01-21 02:19:29 +00:00
Doods b7ea609422 last minute changes 4 (hopefully final) 2024-01-21 02:19:29 +00:00
Doods 23a3d53ca6 last minute change 3 2024-01-21 02:19:29 +00:00
Doods 7e31f015fe Last minute changes #2 2024-01-21 02:19:29 +00:00
Doods f1fda9b412 last minute changes 2024-01-21 02:19:29 +00:00
James Clarke 1a2b9e5930 More fixes 2024-01-21 02:19:29 +00:00
Doods bb29dade32 Added: trapdoors (partial), berrels, blackstone, basalt, beehive, bee nest, bell item, soul soil, light items (0 to 15), honey(comb) and things I forgot 2024-01-21 02:19:29 +00:00
James Clarke 961ee13ba1 Converted utils os.system commands to useing the more pythonic: wand, library. And partially converted armor os.system commands to wand too. 2024-01-21 02:19:29 +00:00
James Clarke efd19bd0ee Added requirements.txt 2024-01-21 02:19:29 +00:00
James Clarke fe8612d944 Made terms clearer in gui.py 2024-01-21 02:19:29 +00:00
James Clarke c586e480ed Fixed crash bug with GUI 2024-01-21 02:19:29 +00:00
James Clarke 0da8428eef Made minetest directory handling, platform indiependent 2024-01-21 02:19:29 +00:00
James Clarke ddfbd331c9 Refactor convert_textures code, seperated special cases into its own module 2024-01-21 02:19:29 +00:00
James Clarke 47b6bd5539 GUI Now functional 2024-01-21 02:19:29 +00:00
James Clarke 16cdc9fd12 Seperated common convert code from CLI and GUI so they can both use it 2024-01-21 02:19:29 +00:00
James Clarke 2904e3119f Started on GUI and seperating code so GUI and CLI can share it 2024-01-21 02:19:29 +00:00
James Clarke e04f4d3b2a Added --all flag. 2024-01-21 02:19:29 +00:00
James Clarke 0584fc4ebf Fixed find_highest_minecraft_version, got rid of hardcoded major-minor version string. 2024-01-21 02:19:29 +00:00
James Clarke 1147a9715a Added --default flag 2024-01-21 02:19:29 +00:00
James Clarke e05e46bc59 Added Conversion Table validator. 2024-01-21 02:19:29 +00:00
Doods 7793a31f0e Added: stripped logs, planks, recovery compass, amethyst, netherite stuff 2024-01-21 02:19:29 +00:00
James Clarke a6753806cc Refactored code: split up into different functions and modules. 2024-01-21 02:19:29 +00:00
Doods a25bdfbc90 added: loom, lodestone, tropical fish patterens, trim templates, fletching table (partial), craftguide seach icon, renamed armor stand item, renames dyes 2024-01-21 02:19:29 +00:00
James Clarke 254fe4d98e Replace getopt code with argparse as its more modern. 2024-01-21 02:19:29 +00:00
James Clarke 6324c805eb Added PIL dependency and added pixel dimentions autodetection 2024-01-21 02:19:29 +00:00
James Clarke 3103969bdc Got rid of redundent "Target path" field as its always "./textures" 2024-01-21 02:19:29 +00:00
Doods 7cb17eefa1 testing to make sure I know how to use git + adding 10 textures 2024-01-21 02:19:29 +00:00
James Clarke 4f0ad6de6d Extra tools 2024-01-21 02:19:29 +00:00
James Clarke 59ffda6e86 Added my internal tools 2024-01-21 02:19:29 +00:00
James Clarke 1b7cde697a Updated Grass,Fern,Vine,Lily Pad and leaves to MC 1.19+ 2024-01-21 02:19:29 +00:00
James Clarke bae95fea09 Updated rails to MC1.19+ 2024-01-21 02:19:29 +00:00
James Clarke 5f6173b999 Some fixes to the conversion script to make rails work in MC1.9+ Packs 2024-01-21 02:19:29 +00:00
James Clarke bd113dd902 Added Missing textures to Conversion_Table.csv 2024-01-21 02:19:29 +00:00
James Clarke 557ea75c5d Added more textures to Conversion_Table.csv 2024-01-21 02:19:29 +00:00
James Clarke 98a5f07ef8 Added support for cherry blossoms MC 1.20+ 2024-01-21 02:19:29 +00:00
James Clarke 29fe5e5b40 Added more entries and modified existing to Conversion_Table.csv 2024-01-21 02:19:29 +00:00
James Clarke a5573aab26 Updated Conversion Table 2024-01-21 02:19:29 +00:00
James Clarke 17da379269 Changed 108 textures to work with 1.19 MC 2024-01-21 02:19:29 +00:00
James Clarke 566bc8a02b Added support for MC1.19 Resource Packs 2024-01-21 02:19:29 +00:00
Eliy21 44bd1c7b71 Reduce sweet berry bush slowdown (#4150)
Reviewed-on: MineClone2/MineClone2#4150
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2024-01-21 01:07:14 +00:00
the-real-herowl ac8ff800ec Merge pull request 'Farming fortune drop bug fix' (#4121) from JoseDouglas26/MineClone2:mcl_farming_fortune into master
Reviewed-on: MineClone2/MineClone2#4121
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-20 04:46:02 +00:00
JoseDouglas26 3b60a8eb18 Farming fortune drop bug fix 2024-01-20 04:03:25 +00:00
the-real-herowl 681175c463 Merge pull request 'Show elytra animation when using elytra' (#4108) from elytra into master
Reviewed-on: MineClone2/MineClone2#4108
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-20 04:02:44 +00:00
the-real-herowl 3dafeb7505 Merge pull request 'Set all mob spawn chance weights according to mc now that weights are actually taken into account' (#4035) from Bakawun/MineClone2:mob_chance into master
Reviewed-on: MineClone2/MineClone2#4035
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-20 04:00:13 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 4c0bad754e Show elytra animation when using elytra 2024-01-20 03:41:38 +00:00
PrWalterB 899c45534f Adding occitan translation for CORE and ENTITIES 2024-01-20 04:28:46 +01:00
the-real-herowl cfd41d458a Merge pull request 'Add capes' (#4046) from capes into master
Reviewed-on: MineClone2/MineClone2#4046
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-20 03:26:10 +00:00
the-real-herowl 41c6773fd4 Merge pull request 'Spawning: fix random weighted choice' (#4025) from Bakawun/MineClone2:random_select into master
Reviewed-on: MineClone2/MineClone2#4025
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-20 03:15:24 +00:00
the-real-herowl 27c3760da1 Merge pull request 'Ghast: align attributes with mc' (#4014) from Bakawun/MineClone2:ghast into master
Reviewed-on: MineClone2/MineClone2#4014
2024-01-20 03:14:16 +00:00
James Clarke aa4d5738c7 Fix Survival Inventory Tab API (#4147)
* restored some old code that had gone missing
* fixed the survival inventory tab API not working
* fixed some grammar

Reviewed-on: MineClone2/MineClone2#4147
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: James David Clarke <james@jamesdavidclarke.com>
Co-committed-by: James David Clarke <james@jamesdavidclarke.com>
2024-01-20 00:42:56 +00:00
the-real-herowl 59ad110e6b Merge pull request 'Fix mcl_shields is_blocking crash when object not found under player' (#4134) from Impulse/MineClone2:mcl-shields-crash-fix into master
Reviewed-on: MineClone2/MineClone2#4134
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-15 14:22:33 +00:00
James Clarke ee24b24c68 Fix indentation 2024-01-15 14:19:51 +00:00
James Clarke f94e7fc52f Fix mcl_shields is_blocking crash when object not found under player 2024-01-15 14:19:51 +00:00
chmodsayshello 45c84b1f1d fix formspec 2024-01-13 19:50:09 +01:00
chmodsayshello 96dbcc45d0 fix cape being registered twice 2024-01-13 19:50:09 +01:00
chmodsayshello bfe333ef60 fix cape rendering conflicts
The elytra and the normal cape were able to render at the same time while wearing an elytra.
2024-01-13 19:50:09 +01:00
chmodsayshello 89eb0f9b3e remove test selector_func 2024-01-13 19:50:09 +01:00
chmodsayshello 146b0ade37 update elytra cape instantly 2024-01-13 19:50:09 +01:00
chmodsayshello 0f91b763e9 add cape api 2024-01-13 19:50:09 +01:00
chmodsayshello aeccc94687 remove sha1 unlocking for minetest cape 2024-01-13 19:50:09 +01:00
the-real-herowl d3881fc1d1 Fix crash and trim trailing 2024-01-13 19:50:09 +01:00
chmodsayshello b47fae0ed4 fix string length method call 2024-01-13 19:50:08 +01:00
chmodsayshello 180c8fb73e add capes 2024-01-13 19:50:04 +01:00
the-real-herowl c70ae8e535 Merge pull request 'Add hunger debug setting' (#4127) from add-hunger-debug-setting into master
Reviewed-on: MineClone2/MineClone2#4127
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-13 03:47:41 +00:00
𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 c1115c9cef Merge pull request 'Fixed an invalid player object crash' (#4131) from player_crash_fix into master
Reviewed-on: MineClone2/MineClone2#4131
Reviewed-by: 𝕵𝖔𝖍𝖆𝖓𝖓𝖊𝖘 𝕱𝖗𝖎𝖙𝖟 <mrrar@noreply.git.minetest.land>
2024-01-11 20:00:02 +00:00
pineaulo 7af5e79afc Colors rework 2024-01-11 09:11:27 +01:00
the-real-herowl 12b3e34f88 Fix a crash
Defensive check for nonexistent player
2024-01-11 03:45:10 +00:00
bakawun 4d90dfab0e Spawning: add a comment to clarify what the random select is doing 2024-01-10 11:22:13 +01:00
bakawun b2b63266b7 Spawning: break mob selection loop when out of bounds 2024-01-10 11:22:13 +01:00
bakawun d151e79fb9 Spawning: remove unused summary_chance 2024-01-10 11:22:13 +01:00
bakawun e419e6d63b Spawning: remove another unused perlin var 2024-01-10 11:22:13 +01:00
cora 55517154bd Mob spawning: Remove unused vars 2024-01-10 11:22:13 +01:00
bakawun 402e4e7b79 Spawning: fix random weighted choice 2024-01-10 11:22:13 +01:00
the-real-herowl 59c5d54cbe Merge pull request 'Add and fix some german translations' (#4132) from Tuxilio/MineClone2:german-translation into master
Reviewed-on: MineClone2/MineClone2#4132
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-08 13:54:55 +00:00
tuxilio 4b5afee4bb Add and fix some german translations 2024-01-08 13:35:41 +00:00
the-real-herowl 3c2247d7c8 Merge pull request 'mobs:piglin: use (alt) zombified piglin sounds' (#4083) from Bakawun/MineClone2:piglin_sounds into master
Reviewed-on: MineClone2/MineClone2#4083
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-08 08:47:16 +00:00
the-real-herowl 324fd0dc4a Merge pull request 'Add missing Hoglin/Zoglin sounds' (#4082) from Bakawun/MineClone2:hoglin_sounds into master
Reviewed-on: MineClone2/MineClone2#4082
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-08 08:45:33 +00:00
bakawun cd033aa4ff mobs:zoglin:sounds: adress review comment 2024-01-08 09:30:12 +01:00
bakawun 1f3c7913dd mobs:piglin:sounds: adress review comment 2024-01-08 09:26:03 +01:00
the-real-herowl 18db66c431 Merge pull request 'Changes in mcl_util.rotate_axis_and_place and bamboo on_place callback' (#4123) from JoseDouglas26/MineClone2:bamboo_rotation into master
Reviewed-on: MineClone2/MineClone2#4123
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-08 07:14:12 +00:00
JoseDouglas26 cc3f092185 Changes in rotation code and bamboo rotation 2024-01-08 05:55:36 +00:00
the-real-herowl 9f64facbf9 Merge pull request 'Nylium can be turned into netherrack' (#4124) from JoseDouglas26/MineClone2:nylium_into_netherrack into master 2024-01-08 03:12:54 +01:00
JoseDouglas26 6694babbde nylium can be turned into netherrack 2024-01-08 03:08:56 +01:00
SmokeyDope fc204c8717 Merge pull request 'Fix typo in pumpkin.lua' (#4122) from fix_pumpkin_typo_pumkin into master
Reviewed-on: MineClone2/MineClone2#4122
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-08 02:02:20 +00:00
SmokeyDope c664216104 Merge pull request 'Compressed Cobblestone' (#4119) from mcl_compressed_blocks into master
Reviewed-on: MineClone2/MineClone2#4119
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-01-08 01:20:14 +00:00
SmokeyDope cd3426b5ce Adjust hardness & blast resistance for compressed cobblestone blocks 2024-01-08 01:07:46 +00:00
the-real-herowl 9867c73eb3 Merge pull request 'Added colored end rod variants' (#4111) from end_rods_variants into master
Reviewed-on: MineClone2/MineClone2#4111
2024-01-08 00:57:31 +00:00
the-real-herowl 3db02bb022 Merge pull request 'Added colored redstone lamps' (#4115) from redstone_lamp_variants into master
Reviewed-on: MineClone2/MineClone2#4115
2024-01-08 00:56:36 +00:00
SmokeyDope 3c7597b75e Add hunger debug to settingtypes.txt 2024-01-06 22:50:40 +00:00
SmokeyDope 7bf3fbf13c Fix typo in pumpkin.lua 2024-01-05 17:06:22 +00:00
SmokeyDope fc7133f1a8 compressed cobblestone textures pt 2 2024-01-03 18:23:17 +00:00
SmokeyDope 05eb3bb8aa compressed cobblestone textures pt 1 2024-01-03 18:22:47 +00:00
SmokeyDope 7583caca9b mcl_compressed_blocks initial comit 2024-01-03 18:21:51 +00:00
pineaulo 411e3e161f Add terracotta pillars 2024-01-02 21:03:39 +01:00
the-real-herowl 882531b9fc Refactored end rod coloring code 2024-01-01 02:53:20 +01:00
the-real-herowl 0b5c15d05f Updated translation files 2024-01-01 02:18:01 +01:00
the-real-herowl cd930365b0 Added colored redstone lamps 2024-01-01 02:07:06 +01:00
the-real-herowl ce56f396b1 Merge pull request 'Fix translation files syntax errors' (#4092) from megustanlosfrijoles/frijolesclone2:fix-translation-files-syntax-errors into master
Reviewed-on: MineClone2/MineClone2#4092
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-30 23:25:49 +00:00
the-real-herowl ba297001b4 Merge pull request 'mcl_tt Spanish translation' (#4093) from megustanlosfrijoles/frijolesclone2:mcl_tt-spanish-translation into master
Reviewed-on: MineClone2/MineClone2#4093
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-30 23:23:53 +00:00
the-real-herowl 24eca01c3f Added translations for colored end rods 2023-12-31 00:20:15 +01:00
the-real-herowl 4e3cf9e04b Added colored end rod variants 2023-12-31 00:07:16 +01:00
the-real-herowl d285a48fed Merge pull request 'release/0.86.2' (#4110) from release/0.86.2 into master
Reviewed-on: MineClone2/MineClone2#4110
2023-12-30 04:38:49 +00:00
the-real-herowl d3d1bdf8d2 Post-hotfix revert game.conf to SNAPSHOT version 2023-12-30 05:34:24 +01:00
the-real-herowl f306d3768e Update game.conf for hotfix release 0.86.2 2023-12-30 05:33:27 +01:00
the-real-herowl 7463b97c69 Added hotfix notes to the release notes for 0.86 2023-12-30 05:32:10 +01:00
the-real-herowl d11526f8e8 Merge pull request 'Finish PVP Combat Parity with the rest + PVP Tweaks' (#4078) from Eliy21/MineClone2:combat_fixes into master
Reviewed-on: MineClone2/MineClone2#4078
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-30 04:21:18 +00:00
the-real-herowl 8021a6a723 Merge pull request 'Hotfix 0.86.2' (#4109) from hotfix_0_86_2_branch into master
Reviewed-on: MineClone2/MineClone2#4109
2023-12-30 04:01:05 +00:00
the-real-herowl 1bad5659cf Fixed a cryptic error message
Migrated it to mcl_log and maded it clearer
2023-12-30 04:53:17 +01:00
the-real-herowl befd98b83e Fixed XP orb texture breaking randomly
It used undefined engine behaviour.
It's unclear how it even worked *sometimes*.
2023-12-30 04:13:13 +01:00
the-real-herowl 13341df20b Optimized some textures for size 2023-12-29 13:50:22 +01:00
the-real-herowl f866b56d06 Merge pull request 'Workaround for bows, crossbow and spyglass on mobile' (#4104) from mobile_bow_workaround into master
Reviewed-on: MineClone2/MineClone2#4104
2023-12-27 19:41:57 +00:00
José M 4a407679c0 Translate mcl_tt to spanish 2023-12-25 23:41:49 -06:00
the-real-herowl 39f98ec6fb Updated doc strings for bow and crossbow
Mentioned the zoom key
2023-12-25 23:56:39 +01:00
the-real-herowl 9e3d7ce0f4 Added a workaround for mobile using zoom key
* Bow can now be used with zoom key aside of RMB
* Crossbow can now be loaded with zoom key as well
* Spyglass can now be used with zoom key
2023-12-25 23:50:06 +01:00
the-real-herowl cb7878249d Merge pull request 'release_0_86_another_look' (#4100) from release_0_86_another_look into master
Reviewed-on: MineClone2/MineClone2#4100
2023-12-24 05:35:00 +00:00
the-real-herowl 939905b9d8 Post-release set version 0.87.0-SNAPSHOT 2023-12-24 06:31:35 +01:00
the-real-herowl b1f7fecb59 Add release notes for 0.86 2023-12-24 06:29:39 +01:00
the-real-herowl 3d58878750 Updated release credits and set version for v0.86 2023-12-24 06:27:13 +01:00
the-real-herowl b6938bad90 Merge pull request 'Fix a heisenbug' (#4098) from depends_patch into master
Reviewed-on: MineClone2/MineClone2#4098
2023-12-24 05:04:49 +00:00
the-real-herowl 9df4e2e95e Merge pull request 'Added shepherd functionality' (#4099) from shepherd into master
Reviewed-on: MineClone2/MineClone2#4099
2023-12-24 05:00:35 +00:00
the-real-herowl a2a4da5aed Added shepherd functionality 2023-12-24 05:48:41 +01:00
the-real-herowl e1d5899aa5 Remove unneeded dependencies
This patches a heisenbug to be investigated later
2023-12-24 01:27:29 +01:00
the-real-herowl dd7d56a385 Merge pull request 'br_pt_translation by JoseDouglas26' (#4095) from br_pt_translation into master
Reviewed-on: MineClone2/MineClone2#4095
2023-12-23 20:31:49 +00:00
the-real-herowl 4bb46d7d30 Merge pull request 'New sunflower mesh (by JoseDouglas26)' (#4094) from sunflower_mesh_update into master
Reviewed-on: MineClone2/MineClone2#4094
2023-12-23 20:24:45 +00:00
the-real-herowl 8071d0fbef Merge pull request 'Nerfed vexes and evokers' (#4076) from vex_evoker_fixes into master
Reviewed-on: MineClone2/MineClone2#4076
2023-12-23 20:19:24 +00:00
the-real-herowl 60c0483c12 Merge pull request 'Nerfed slime and magma cube attack range' (#4075) from slime_fixes into master
Reviewed-on: MineClone2/MineClone2#4075
2023-12-23 20:18:23 +00:00
cora 29d40ef553 Mix down new mob sounds to mono 2023-12-23 09:39:12 +01:00
JoseDouglas26 d59a6c6a00 mesecons_delayer pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 c20a37486e mesecons_pressureplates pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 85bc643442 mesecons_lightstone pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 907e037430 mcl_dispensers pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 7b93c65c45 mcl_droppers pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 73bcb0026f mcl_observers pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 01abafe50f mesecons_button pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 e28207f44e mesecons_walllever pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 a5370bc63d mcl_target pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 f904512e61 mcl_comparators pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 c1e3c69800 mcl_monster_eggs pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 d0697c70cc mcl_fire pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 bef3253d5c mcl_enchanting pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 ad099ed7c2 mcl_grindstone pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 a2b7549456 mcl_mangrove pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 f8ef5a15c5 mcl_death_messages pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 6c4101dc12 mcl_hoppers pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 8c0d9cc450 mcl_info pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 1f370bf1f2 hudbars pt_BR translation 2023-12-22 23:45:08 +01:00
JoseDouglas26 6bffaf56d2 mcl_dye and mcl_smithing_table translation fixes 2023-12-22 23:45:08 +01:00
JoseDouglas26 04b77db7fa mcl_books and mcl_bows pt_BR translation fixes 2023-12-22 23:45:08 +01:00
JoseDouglas26 aeeb5acc25 mcl_armor pt_BR translation correction 2023-12-22 23:45:08 +01:00
JoseDouglas26 9a8a6764d1 mcl_doors and mcl_fences pt_BR translation fixes 2023-12-22 23:45:07 +01:00
JoseDouglas26 3047568ed4 mcl_maps pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 2a8da574f0 mcl_ocean pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 00bf5f0331 mcl_smoker pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 2d5b57c60d mcl_experience pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 b476c703f1 mcl_lectern pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 8f3936792f mcl_cocoas pt_BR translation missing 2023-12-22 23:45:07 +01:00
JoseDouglas26 8816e9fc61 mcl_throwing pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 e291d9918e mcl_stonecutter pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 bd19c8fe67 mcl_mud pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 7f36116146 screwdriver pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 8afa57b914 mcl_sus_stew pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 bc186560b4 mcl_hamburger pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 ae470f8809 mcl_armor pt_BR translation missing 2023-12-22 23:45:07 +01:00
JoseDouglas26 8b1ad1c217 mcl_smithing_table pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 0638c67cf7 mcl_shields pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 3f0e77b971 mcl_bamboo pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 3e131a213f mcl_villages pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 d7c8c7a54a mcl_privs pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 fcd4a610e5 mcl_commands pt_BR translation missing 2023-12-22 23:45:07 +01:00
JoseDouglas26 cde4bc797e mcl_commands pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 cb6b4253d2 findbiome pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 6480c6923a mcl_music pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 487f78d663 mcl_hunger pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 908c46ce34 mcl_loom pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 90a758c002 mcl_lightning_rods pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 3a89d367b0 mclx_fences pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 6dac652241 mclx_core pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 4a3369205e mcl_wool pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 8b02d7b0b2 mcl_walls pt_BR translation fix 2023-12-22 23:45:07 +01:00
JoseDouglas26 184a098964 mcl_torches pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 d57fbb047d mcl_sponges pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 1c3003c85b mcl_spawn pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 188f1cdaa6 mcl_itemframes pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 e536822b4d mcl_tools pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 c6fc911c12 mcl_heads pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 cb0c67b05f mcl_fishing pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 427724ced2 mcl_ver_info pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 799462c4b4 mcl_credits pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 334ac81f58 mcl_fences pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 840381f73f mcl_fletching_table pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 21a10751d1 mcl_lanterns pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 09a063256b mcl_wip pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 9701526d16 mcl_skins pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 e2746adea8 mcl_furnaces pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 a93ce7af1f mcl_inventory pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 3684cb8d2a mcl_cherry_blossom pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 0626c3329b mcl_sculk pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 5489bf20ea mcl_beehives pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 232740b5e6 mcl_totems pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 6f7ac46f05 mcl_jukebox pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 1524f63a6d mcl_hbarmor pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 60377c56cd mcl_tt pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 b0b120dd28 mcl_walls pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 34c23bd578 mcl_tnt pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 9be815956c mcl_signs pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 2da67765a0 mcl_flowers pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 01641b5a8c mcl_flowerpots pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 9371ed5c48 mcl_spyglass pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 527577cbcc mcl_raw_ores pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 86d5e748bb mcl_craftguide pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 6cbd985974 mcl_honey pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 6f9b70a98d mcl_fireworks pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 76e941cbb6 doc_items pt_BR translation missing translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 aef093ef4e doc_items pt_BR translation correction 2023-12-22 23:45:07 +01:00
JoseDouglas26 f824f109e2 mcl_structures pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 a3ccd4d032 lightning pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 419456b835 mcl_weather pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 72a144f0b2 mcl_void_damage pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 f379a06998 mcl_raids pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 947d20ae96 mcl_mobs pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 5c06c28b0f mobs_mc pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 df02770470 mcl_minecarts pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 51dc10c9ea mcl_paintings pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 2370d155c9 mcl_falling_nodes pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 ad3ec48ec9 mcl_boats pt_BR translation 2023-12-22 23:45:07 +01:00
JoseDouglas26 beb06315ac mcl_explosions pt_BR translation 2023-12-22 23:45:07 +01:00
the-real-herowl 569dd69188 Increase sunflower height 2023-12-22 23:36:49 +01:00
the-real-herowl 92ee9c0557 Remove the wrong separate sunflower definition 2023-12-22 23:06:08 +01:00
JoseDouglas26 f63e5d3c19 fix facing west 2023-12-22 23:03:11 +01:00
JoseDouglas26 4d5d595310 changes requested in sunflower definitions 2023-12-22 22:55:09 +01:00
JoseDouglas26 f9972aef01 new lower mesh and selection box 2023-12-22 22:53:55 +01:00
JoseDouglas26 85d21fa1e9 new sunflower mesh 2023-12-22 22:53:43 +01:00
JoseDouglas26 e6a64cfc69 Sound and mining sunflower bug fixes 2023-12-22 22:53:31 +01:00
JoseDouglas26 dd5a9178d9 sunflower mapgen bug fix 2023-12-22 22:53:10 +01:00
JoseDouglas26 113f07581b new sunflower mesh 2023-12-22 22:52:50 +01:00
Eliy21 10dcdb7d6b Remove unnecessary player vector magnitude calculation 2023-12-21 15:52:26 +00:00
José M ec8f3f5530 Start the beggining of the mcl_tt spanish translation 2023-12-21 00:18:40 -06:00
José M 74ab3ffeee Add missing placeholder(s) in doc_items.pt.tr translation: '@1' 2023-12-20 23:55:39 -06:00
José M 9d62c4ca5e Fix missing placeholder(s) in mesecons_commandblock.es.tr translation: '@1' '@2' 2023-12-20 23:46:30 -06:00
José M c9d221976b Escape equals signs in translation file mcl_doc_basics.it.tr 2023-12-20 23:40:33 -06:00
José M 0d1a6d91e9 Remove an unescaped equals sign in mcl_info.fr.tr translation 2023-12-20 23:24:03 -06:00
José M 0f82c623d5 Add missing placeholder(s) in mcl_farming.fr.tr translation: '@1' 2023-12-20 23:15:12 -06:00
the-real-herowl a1d390bd4d Merge pull request 'Fix translation files syntax errors' (#4091) from megustanlosfrijoles/frijolesclone2:fix-translation-files-syntax-errors into master
Reviewed-on: MineClone2/MineClone2#4091
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-21 02:05:08 +00:00
José M 325c6ab4ca Escape equals signs in translation file mcl_deepslate.pt_BR.tr 2023-12-20 19:13:30 -06:00
José M dc4c559ad9 Escape equals sign in translation 2023-12-20 19:04:46 -06:00
José M 1f52b7051a Add missing placeholder(s) in translation: '@1' 2023-12-20 18:58:15 -06:00
José M 5e28ff2d06 Delete non-empty translation in mcl_enchanting template file 2023-12-20 18:34:16 -06:00
José M d5eda7352c Remove whitespace-only translation in mcl_blast_furnace template file 2023-12-20 18:29:13 -06:00
ancientmarinerdev 5071855d00 Merge pull request 'Fix wrong argument when piston dig calls on_dignode callbacks (Credit: Cora)' (#4089) from bamboo_crash_fix into master
Reviewed-on: MineClone2/MineClone2#4089
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-20 21:28:07 +00:00
cora 4cfd4ef6ce Fix wrong argument when piston dig calls on_dignode callbacks 2023-12-20 16:54:36 +00:00
Eliy21 96fa6c251e Counteract self forward velocity when hit by players in pvp 2023-12-20 15:50:37 +00:00
Eliy21 e19de85990 Adjust the difference between sprinting & walking knockbacks for a more seemless transition 2023-12-19 17:19:09 +00:00
Eliy21 76bff2b540 Add minimum pvp knockbacks to other meele weapons 2023-12-19 16:49:48 +00:00
Eliy21 ff882707de Rework moving majority of the added velocity knockbacks into sprinting 2023-12-19 16:15:41 +00:00
Eliy21 d7ed37ef25 Remove redundant knockback limiter 2023-12-19 15:31:29 +00:00
Michieal ceada2fcec Merge pull request 'Fix translation files syntax errors' (#4061) from megustanlosfrijoles/frijolesclone2:warning-fix2 into master
Reviewed-on: MineClone2/MineClone2#4061
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Merged-by: michieal
2023-12-19 01:15:43 +00:00
the-real-herowl 99cc88ac42 Merge pull request 'Update spanish translations and fix syntax errors' (#4060) from megustanlosfrijoles/frijolesclone2:es-translations-syntax into master
Reviewed-on: MineClone2/MineClone2#4060
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-18 23:25:48 +00:00
Michieal 56ebb5ac09 Merge pull request 'Fix the FOV issues with Bows, Sprinting and Spyglasses.' (#4045) from Fix-FOV into master
Reviewed-on: MineClone2/MineClone2#4045
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-18 23:19:43 +00:00
the-real-herowl 8a5058e032 Unified and refactored FOV API code 2023-12-18 22:50:52 +00:00
the-real-herowl e312955a14 Made spyglass reset instant 2023-12-18 22:50:52 +00:00
the-real-herowl 5afd0aa255 Fixed the exclusive modifiers not being exclusive 2023-12-18 22:50:52 +00:00
Michieal 98b6ead591 Fixed a couple of errors
Removed a debug statement that was broken.
Changed `modififer` to `modifier` in a code block.
2023-12-18 22:50:52 +00:00
the-real-herowl 040ce8288e Script and documentation cleanup 2023-12-18 22:50:52 +00:00
the-real-herowl f9b192e68f Updated credits 2023-12-18 22:50:52 +00:00
the-real-herowl 08241f6ea3 Updated the api.md file 2023-12-18 22:50:52 +00:00
the-real-herowl 5bf6608483 Made bow unfocus faster 2023-12-18 22:50:52 +00:00
the-real-herowl 42ec62562d Moved sprinting into the new FOV api 2023-12-18 22:50:52 +00:00
the-real-herowl 7f5ce4e033 Fixed modifier application and removal 2023-12-18 22:50:52 +00:00
the-real-herowl 3a007e3bb1 Re-registered FOV mods using new API version 2023-12-18 22:50:52 +00:00
the-real-herowl a650f8b368 Made fovapi registration more robust 2023-12-18 22:50:52 +00:00
Michieal 580a1caa38 Reworked some of the Apply_Modifier code to help prevent errors. 2023-12-18 22:50:52 +00:00
Michieal 2f8389d3f5 Put in check to prevent Trying to Reference a Nil error in Apply_Modifier. 2023-12-18 22:50:52 +00:00
Michieal 4f3f59f4bc Put in checks to prevent repeatedly applying the same FOV modifier.
Added short circuit to remove_modifier if the modifier is not currently applied.
2023-12-18 22:50:52 +00:00
Michieal 36f661743e Set up the Bows to use the new FOV API. Bows now zoom in and clear out the zoom. 2023-12-18 22:50:52 +00:00
Michieal 0a17bbe731 Added reset for player respawning to remove FOV modifiers.
Fixed missing on_end call in remove_all_modifiers.
Added mcl_fovapi to Bows, Sprint, and Spyglass.
Set up the Spyglass to use the new FOV API.
2023-12-18 22:50:52 +00:00
Michieal 6cfb55e853 Added reset for player respawning to remove FOV modifiers.
Fixed missing on_end call in remove_all_modifiers.
Added mcl_fovapi to Bows, Sprint, and Spyglass.
2023-12-18 22:50:52 +00:00
Michieal bf41e116a1 Fleshed out the API Documentation.
Modified missing pieces of code.
2023-12-18 22:50:52 +00:00
Michieal fc80d4fb9f Initial API state. 2023-12-18 22:50:52 +00:00
Michieal 11c5d36c55 Initial Commit. 2023-12-18 22:50:52 +00:00
Eliy21 44c656502f Add a prevention in case players get stuck with the damage animation 2023-12-18 22:04:12 +00:00
Eliy21 fe90424ee4 Add pvp knockback reduction when moving towards player while attacking 2023-12-18 21:42:26 +00:00
Eliy21 14cec16c63 Increase enchanted bow knockback 2023-12-18 21:31:38 +00:00
bakawun cc470b9d88 mobs:hoglin: fix conversion of tabs to spaces 2023-12-18 11:08:09 +01:00
bakawun ee51a500b2 mobs:piglin: use (alt) zombified piglin sounds 2023-12-18 10:57:39 +01:00
bakawun 7f823f0155 mobs:hoglin:add licence information 2023-12-18 10:38:23 +01:00
bakawun f5ba0b7981 mobs:zoglin: use hoglin sound .2 2023-12-18 10:31:08 +01:00
bakawun e202f20869 mobs:hoglin: use sound .1 for random and
reuse hurt sound for death
2023-12-18 09:58:37 +01:00
bakawun 692b101212 mobs:hoglin: add missing sounds
these were made by epCode and lincenced under
LGPL-3.0.
downloaded from
49a838e733
2023-12-18 09:51:58 +01:00
the-real-herowl 07147e9d5b Make slime+magmacube collision boxes rotate properly 2023-12-18 02:56:43 +01:00
the-real-herowl d44b00a20e Merge pull request 'Shulker improvements and homing mob projectiles' (#4000) from Bakawun/MineClone2:Shulker_shot_speed into master
Reviewed-on: MineClone2/MineClone2#4000
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-18 00:54:04 +00:00
Eliy21 12109e7f44 Add player damage animation 2023-12-17 21:18:57 +00:00
Eliy21 200f7451eb Remove unnecessary invul code & add damage animation code 2023-12-17 21:15:55 +00:00
Eliy21 c39e55e2d4 Add minimum knockback to crossbow 2023-12-17 20:01:35 +00:00
Eliy21 6d7ae8ba2d Add minimum unenchanted knockback to bow 2023-12-17 19:59:18 +00:00
Eliy21 8612350fa7 Make vertical pvp knockback floatiness reduction include moving hits 2023-12-17 17:48:39 +00:00
Eliy21 0a8874ecad Make vertical pvp knockbacks less floaty 2023-12-17 16:39:04 +00:00
Eliy21 e8ee9c4463 Remove obsolete work-around code 2023-12-16 12:58:58 +00:00
Eliy21 32e91b45ae Add vertical pvp knockbacks from downward hits & reduce pvp kb on half block angled upward hits 2023-12-16 11:48:16 +00:00
Eliy21 8fbd72c142 Optimize code by calling get_enchantment function only once 2023-12-16 09:46:18 +00:00
Eliy21 cfab59d68a Rebalanced moving pvp knockbacks 2023-12-16 09:20:29 +00:00
Eliy21 33e8337bbb Finish remaining excessive vertical pvp knockback prevention adjustments when hit from below 2023-12-16 07:58:26 +00:00
Eliy21 f799596db9 Make vertical pvp knockbacks respect attack reach limit & complete excess vertical kb prevention 2023-12-15 22:56:02 +00:00
Eliy21 9b9747b3d8 Prevent excessive vertical knockbacks if hit by a player from below 2023-12-15 21:02:07 +00:00
Eliy21 c9692c6224 Fix player invulnerability not getting disabled permanently bug 2023-12-15 19:49:04 +00:00
Eliy21 cd83305f07 Make the vertical lift on pvp knockback similar to MC 2023-12-15 18:17:15 +00:00
Eliy21 d7b10d18d8 Fix not being able to give minimum knockback to players when both near and lower than them 2023-12-15 16:27:09 +00:00
Eliy21 8e2c5249f5 Fix comment on player invul code 2023-12-15 15:59:08 +00:00
Eliy21 ca556c052f Prevent pvp knockbacks when invulnerable 2023-12-15 15:52:26 +00:00
Eliy21 60367cdbe0 Revert unreliable bugfix
There are times when the continuous damage when punching players does not happen so will not fix at the moment as using other weapons does still work.
2023-12-15 15:42:49 +00:00
Eliy21 ae169b2814 Add fix to crash when moving bought villager trade item to empty sell slot bug by JoseDouglas26 (#4079)
Add fix to #4062 by JoseDouglas26 MineClone2/MineClone2#4062 (comment)

Reviewed-on: MineClone2/MineClone2#4079
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2023-12-15 03:09:48 +00:00
bakawun cee5bbc206 mobs:fix typo in homing function 2023-12-14 16:50:23 +01:00
Eliy21 6b439fd1de Add maximum pvp knockback limit & approximate enchant knockback distance to be similar to MC 2023-12-14 11:57:55 +00:00
Eliy21 bf9e487fa9 Adjust minimum pvp knockback to be closer to MC 2023-12-14 09:27:28 +00:00
Eliy21 49af5d2013 Rebalance minimum pvp knockback to account for added knockbacks when moving 2023-12-14 08:51:34 +00:00
Eliy21 ed507d8509 Remove unnecessary space in the attack reach limit on mobs code 2023-12-14 08:15:55 +00:00
Eliy21 b2507c3640 Make fire aspect enchant respect attack reach limit 2023-12-14 08:12:13 +00:00
Eliy21 85b1f5247a Add vertical lift & minimum pvp knockback 2023-12-14 07:46:16 +00:00
Eliy21 2b71462c1e Prevent knockback if player is beyond attack reach limit 2023-12-13 20:36:54 +00:00
Eliy21 b0e33793ec Fix a potential bug that could bypass attack reach limit when a stronger attack breaches the invul 2023-12-13 20:04:15 +00:00
Eliy21 96aaf89036 Readjust pvp enchant knockback to make the running knockback difference more pronounced 2023-12-13 18:49:08 +00:00
Eliy21 a8c2d4534a Nerf long pvp enchanted knockbacks especially when running 2023-12-13 17:42:42 +00:00
Eliy21 a8806fe04e Add player invulnerability & fix not continuously damaging players when holding the attack key
Player invulnerability is the same as Minecraft's Damage Immunity https://minecraft.wiki/w/Damage#Immunity

The old code for some reason only allows a few damage by holding and does not continuously damage other players after a few hits
2023-12-13 17:34:42 +00:00
Wbjitscool ebd733be82 update's the campfire's fire burning animation to make it look better (#4077)
improve the look of the campfire's flame/burning animation

Reviewed-on: MineClone2/MineClone2#4077
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Wbjitscool <dwsda121@gmail.com>
Co-committed-by: Wbjitscool <dwsda121@gmail.com>
2023-12-13 05:22:41 +00:00
the-real-herowl a2c8d13f04 Nerfed vexes and evokers 2023-12-13 04:51:56 +01:00
the-real-herowl 610bcab0d6 Merge pull request 'Update's the stonecutter animation speed to match to the MC's one' (#4074) from stonecutter_fixes into master
Reviewed-on: MineClone2/MineClone2#4074
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-13 03:14:27 +00:00
the-real-herowl ed205190e4 Nerfed slime and magma cube attack range 2023-12-13 04:10:01 +01:00
Wbjitscool 07eb70e9be Update mods/ITEMS/mcl_stonecutter/init.lua 2023-12-13 02:39:25 +00:00
the-real-herowl b3da7a473d Merge pull request 'Move deepslate ore registration within generation check' (#4070) from Zasco/MineClone2:master into master
Reviewed-on: MineClone2/MineClone2#4070
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-13 02:06:25 +00:00
bakawun bc101314df mobs:shulker:use on_attack to set shoot interval
to between 1 and 6 seconds
2023-12-13 02:42:08 +01:00
the-real-herowl 69903aa4ec Fixed crashes 2023-12-13 02:42:08 +01:00
bakawun 686646b86d Shulker: align armor value with mc and set it to 0 when opened 2023-12-13 02:42:08 +01:00
bakawun 789c9a9a6d Shulker: make bullet speed match mc
speed is 5 according to https://www.gmbinder.com/share/-MelLRYIg8yCfuAqQ82g#:~:text=After%20doing%20some%20experimentation%20I,~5%20blocks%2Fsecond).
2023-12-13 02:42:08 +01:00
cora cf51c60527 Fix shulker bullets ignoring armor 2023-12-13 02:42:08 +01:00
cora 55fe71d73b Add a get_arrow_hit_func function to mcl_mobs
reason for this is that player:punch used by most mobs ignores armor
worn by player
2023-12-13 02:42:08 +01:00
cora 58bb26a7ef Make shulker bullets homing 2023-12-13 02:42:08 +01:00
cora f5079f1568 Add an option for mob arrows to be "homing" 2023-12-13 02:42:08 +01:00
Bakawun b4511fb8c7 Shulker, add missing false statement 2023-12-13 02:42:08 +01:00
Bakawun b02a3deec7 Shulker; fix attack open animation, improve peek 2023-12-13 02:42:08 +01:00
Bakawun 26cfdf0b7c Shulker: randomize shoot interval
Randomize shoot interval to between 1 and 5.5 seconds and set default shoot interval to 5.5
2023-12-13 02:42:08 +01:00
Bakawun 8d34ff2a9a Shulker: Make shulker peek periodically
Adjust walk and animation settings so the shulker peeks out randomly.
2023-12-13 02:42:08 +01:00
Bakawun e6ddc03d3c Shulker: lower shoot interval to 1 second
In this video we can see the shulkers are shooting at a rate of once per second.
https://youtube.com/shorts/8tUFaSZ4b7I?si=sszp4cnyXR4dXg9B

The wiki confirms this but mentions a range of 1 to 5.5 seconds. 
I think this range is caused by the shulker closing and stopping shots for a few seconds but no longer than the max interval of 5.5

https://minecraft.fandom.com/wiki/Shulker#:~:text=The%20shulker%20continues%20firing%20every,unaffected%20by%20Levitation%20when%20hit
2023-12-13 02:42:08 +01:00
Zasco 351e31a889 Move deepslate ore registration within generation check 2023-12-12 23:16:51 +00:00
Bakawun 5f3c901f11 Ghast: align attributes with mc
Ghast should spawn much more rarely than they currently do
I set the value to 1/4th of the original value before 72000 was set as an attempt to lower spawn rates, it actually increased them.

Align View distance, sound distance and shot interval with mc wiki.
https://minecraft.fandom.com/wiki/Ghast

Align fireball velocity with mc issue tracker
https://bugs.mojang.com/browse/MC-238286
2023-12-11 09:58:41 +01:00
the-real-herowl aff4216ccf Merge pull request 'on_attack callback fix' (#4065) from on_attack_callback into master
Reviewed-on: MineClone2/MineClone2#4065
2023-12-10 23:55:47 +00:00
the-real-herowl 8b00fff4cb Remove dangling else 2023-12-11 00:54:30 +01:00
the-real-herowl cf70de0ecc Add an on_attack callback for mobs (#4064)
Added an on_attack callback that allows to execute additional custom logic after each attack.

Reviewed-on: MineClone2/MineClone2#4064
Co-authored-by: the-real-herowl <wiktor_t-i@proton.me>
Co-committed-by: the-real-herowl <wiktor_t-i@proton.me>
2023-12-10 16:10:33 +00:00
José M 6dce3b4bc4 Remove whitespace-only translation in template file 2023-12-10 01:56:19 -06:00
José M a60540c17e Remove a non empty translation in template file 2023-12-10 01:47:35 -06:00
José M 19fd075a2f Add the textdomain line in mcl_beehives.dk.tr
This will remove the warning that is shown when running Wuzzy's Minetest_Translation_tools and will contribute to the issue 3540
2023-12-10 01:16:43 -06:00
José M 1ac65305d6 Fix a typo in mcl_honey.es.tr 2023-12-10 00:13:40 -06:00
José M 8dcb62aa56 Fix a typo in mcl_honey.es.tr 2023-12-10 00:11:07 -06:00
José M 1d2a7b35d8 Update mcl_honey.es.tr 2023-12-10 00:07:17 -06:00
José M 02e7ff41d5 Update mcl_fire.es.tr and fix syntax errors 2023-12-09 23:42:32 -06:00
the-real-herowl d4797e13af Merge pull request 'release_0_85_fire_and_stone' (#4049) from release_0_85_fire_and_stone into master
Reviewed-on: MineClone2/MineClone2#4049
Reviewed-by: ancientmarinerdev <ancientmariner_dev@proton.me>
2023-12-08 23:05:13 +00:00
the-real-herowl 3caa99a409 Post-release set version 0.86.0-SNAPSHOT 2023-12-09 00:03:41 +01:00
the-real-herowl ca71e949a8 Credits update 2023-12-09 00:01:19 +01:00
the-real-herowl 9a7e39654c Minor credits update 2023-12-09 00:01:19 +01:00
the-real-herowl 333db53e7b Add release notes for 0.85 2023-12-09 00:01:19 +01:00
the-real-herowl 47f920c9df Updated release credits and set version for 0.85 2023-12-09 00:01:19 +01:00
the-real-herowl bb66f81999 Merge pull request 'Combat rebalancing' (#4036) from combat_rebalancing into master
Reviewed-on: MineClone2/MineClone2#4036
2023-12-08 22:06:06 +00:00
the-real-herowl a344755894 Merge pull request 'horse: drops: remove 2nd saddle, add armor' (#4047) from Bakawun/MineClone2:horse into master
Reviewed-on: MineClone2/MineClone2#4047
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-07 01:02:38 +00:00
the-real-herowl c03366aa12 Merge pull request 'Fix syntax errors and update spanish translations' (#4050) from megustanlosfrijoles/frijolesclone2:master into master
Reviewed-on: MineClone2/MineClone2#4050
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-06 23:36:09 +00:00
José M bb1e572287 Update mcl_compass.es.tr and fix syntax errors 2023-12-05 18:39:29 -06:00
Eliy21 4127d120d2 Add server privs restriction to mcl_villages build tool (#4043)
<!--
Please follow our contributing guidelines first:
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CONTRIBUTING.md#how-you-can-help-as-a-programmer

By submitting this pull request, you agree to follow our Code of Conduct:
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CODE_OF_CONDUCT.md
-->

Fixes #4022

### Testing
-Make a new world, check host server and go into creative mode
-Since you're the server you have the server privs so get the mcl_villages build tool item in creative inventory and use it to see if it works
-Have someone join your server and give them the same item to use and see if they are restricted from using it

Reviewed-on: MineClone2/MineClone2#4043
Reviewed-by: chmodsayshello <chmodsayshello@hotmail.com>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2023-12-05 12:49:49 +00:00
Eliy21 86dad4693e Add warning log if players with 0 hp joined (#4051)
Reviewed-on: MineClone2/MineClone2#4051
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2023-12-05 08:21:37 +00:00
José M f39fe17895 Update mesecons_lightsone spanish translation
Fixed a syntaxis error at line 3 and added the missing translation for line 4
2023-12-04 22:51:50 -06:00
Eliy21 0673fcc25b Respawn dead players when they login so they don't get stuck without the death formspec (#4041)
Hopefully will prevent the dead player not respawning when logging in bug from happening

Reviewed-on: MineClone2/MineClone2#4041
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2023-12-05 01:08:50 +00:00
the-real-herowl 589de76613 Fixed a code branch never being run 2023-12-05 01:59:05 +01:00
the-real-herowl 1857341b59 Fixed player knockback from arrows 2023-12-05 00:58:10 +00:00
the-real-herowl 46d9c66000 Fixed mobs executing custom on_punch with punch fail 2023-12-05 00:58:10 +00:00
the-real-herowl cca6645524 Added player damage invulnerability 2023-12-05 00:58:10 +00:00
the-real-herowl 24ffd64cad Knockback fixes 2023-12-05 00:58:10 +00:00
the-real-herowl e29654a0f6 Revert healing interval default to the lower value 2023-12-05 00:58:10 +00:00
José Muñoz 027e0e8337 Fix a typo in the spanish translation (#4039)
Reviewed-on: MineClone2/MineClone2#4039
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: José Muñoz <dr.cabra@disroot.org>
Co-committed-by: José Muñoz <dr.cabra@disroot.org>
2023-12-05 00:05:39 +00:00
bakawun 2ba73f832c horse: drops: remove 2nd saddle, add armor 2023-12-04 20:17:39 +01:00
chmodsayshello 4b63ff1c2a Merge pull request 'Fix "sleeping player hud" sometimes showing decimal numbers' (#4038) from player_sleeping_hudfix into master
Reviewed-on: MineClone2/MineClone2#4038
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-12-02 19:37:05 +00:00
chmodsayshello 43e7a952ac use math.ceil to get amount of needed players 2023-11-30 22:29:56 +01:00
codiac 4cf865a36c Fix passive threshold in nether and end (#4030)
Fix light check for passive mobs in other dimensions. It is apparently the same in all dimensions. If a mob has it's own spawn_check function then that should be used regardless of it's type.

Fixes #4029

Reviewed-on: MineClone2/MineClone2#4030
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: codiac <codiac@inbox.lv>
Co-committed-by: codiac <codiac@inbox.lv>
2023-11-28 02:45:18 +00:00
Eliy21 b57f6be81d Make showing advancement chat messages into a setting (#4032)
Reviewed-on: MineClone2/MineClone2#4032
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2023-11-28 01:37:45 +00:00
the-real-herowl cd40861b3b Merge pull request 'Add stonecutter functionality' (#3999) from stonecutter_functionality into master
Reviewed-on: MineClone2/MineClone2#3999
2023-11-27 23:37:57 +00:00
the-real-herowl 19728c5a19 Merge pull request 'hopper reimplementation' (#3980) from Morik666/MineClone2:hopper into master
Reviewed-on: MineClone2/MineClone2#3980
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2023-11-27 23:34:47 +00:00
Kostinatyn Tsiupa 1da7bb0bdc hopper reimplementation
Reimplemented hoppers and all (blast_furnace, furnace, smoker, composters, double chaets, shulker_boxes, droppers, bookshelvs and brewing_stands) connected nodes
2023-11-27 14:33:01 +02:00
bakawun 25fa21ddbd Set all mob spawn chance weights according to mc now that weights are actually taken into account 2023-11-27 10:47:55 +01:00
the-real-herowl 1044163717 Fixed the ambiguous /clear command being dangerous (#4026)
Implements #3826

Reviewed-on: MineClone2/MineClone2#4026
Co-authored-by: the-real-herowl <wiktor_t-i@proton.me>
Co-committed-by: the-real-herowl <wiktor_t-i@proton.me>
2023-11-27 02:22:39 +00:00
ThePython10110 570ea114ec Fix weathered cut copper crafting (#4033)
Just fixing a typo.

Reviewed-on: MineClone2/MineClone2#4033
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: ThePython10110 <thepython10110@noreply.git.minetest.land>
Co-committed-by: ThePython10110 <thepython10110@noreply.git.minetest.land>
2023-11-27 02:21:48 +00:00
the-real-herowl 8fd988da11 Increased cut copper recipe output 2023-11-25 23:52:04 +00:00
the-real-herowl f1c5f0ca1c Fixed duplication bug 2023-11-25 23:52:04 +00:00
the-real-herowl b4080b6275 Credits update in mod.conf 2023-11-25 23:52:04 +00:00
the-real-herowl bb48e47488 Made stonecutter player metadata consistent 2023-11-25 23:52:04 +00:00
the-real-herowl a6025b751a Uneven crafts support
-taking part of the resulting stack now produces well-defined results
-stonecutter won't allow amount undivisible by recipe count anymore
2023-11-25 23:52:04 +00:00
the-real-herowl af2f58248f Added the ability to stonecut up to full stack 2023-11-25 23:52:04 +00:00
AFCMS e324a1a74b Make inventory use the util functions 2023-11-25 23:52:04 +00:00
AFCMS 4836418cf6 Rework Stonecutter 2023-11-25 23:52:04 +00:00
AFCMS a001f84786 Add utility functions to clean inventory lists 2023-11-25 23:52:04 +00:00
AFCMS 2128dd4c15 Add basic table ordered keys iterator 2023-11-25 23:52:04 +00:00
the-real-herowl c183da7714 Updated README 2023-11-25 23:52:04 +00:00
the-real-herowl fd17bf1a29 Removed old implementation groups 2023-11-25 23:52:04 +00:00
the-real-herowl 0c7b4d473c Copper blocks stonecutter recipes 2023-11-25 23:52:04 +00:00
the-real-herowl 6ebd3ccb7d Third batch of stonecutter recipes
-deepslate
-blackstone
-quartz bricks
2023-11-25 23:52:04 +00:00
the-real-herowl d46b9071a0 Added nether and end stonecutter recipes 2023-11-25 23:52:04 +00:00
the-real-herowl ead2e772c2 First batch of stonecutter recipes under new API
-core blocks
-stairs
-slabs
-walls
2023-11-25 23:52:04 +00:00
the-real-herowl 19cea45c17 Stonecutter fixes and improvements
-improved stonecutter API, making it more robust
-fixed a dupe bug
2023-11-25 23:52:04 +00:00
the-real-herowl b252e577ec Implement recipe registering API 2023-11-25 23:52:04 +00:00
Chris Page 12568a6749 use on_destruct instead of after dig node 2023-11-25 23:52:04 +00:00
Chris Page 559f500322 Update readme for stonecutter 2023-11-25 23:52:04 +00:00
Chris Page 40fb043de2 Add stage so smooth items can't be reverted 2023-11-25 23:52:04 +00:00
Chris Page 5dda3033a5 Prevent input from being a selectable option 2023-11-25 23:52:04 +00:00
Chris Page 524c9c1bcc Dupe glitch fizes and remove item label 2023-11-25 23:52:04 +00:00
Chris Page a9f26fb354 use item groups to determine the cuttable items 2023-11-25 23:52:04 +00:00
Chris Page 01d43bb33a Remove unused meta on drop items 2023-11-25 23:52:04 +00:00
Chris Page ca37ce5744 Remove hardcoded one element array 2023-11-25 23:52:04 +00:00
Chris Page 5f0ad98dae Use node group for items that can be used in the stonecutter 2023-11-25 23:52:04 +00:00
Chris Page 0e60231c2e Only reset output if input is empty 2023-11-25 23:52:04 +00:00
Chris Page 7fcc2e3be3 Minor output fixes 2023-11-25 23:52:04 +00:00
Chris Page 356045b3e3 Add comments and drop items when destroyed 2023-11-25 23:52:04 +00:00
Chris Page 07d2759ae4 Check if item is a slab or not 2023-11-25 23:52:04 +00:00
Chris Page 9da07af370 Check if item can be made into stairs, slabs and walls 2023-11-25 23:52:04 +00:00
Chris Page 47990eec2b begin adding check if item canbe cut 2023-11-25 23:52:04 +00:00
Chris Page 7523727521 take output from stonecutter 2023-11-25 23:52:04 +00:00
Chris Page 2af08c3188 clear formspec on taking input item 2023-11-25 23:52:04 +00:00
Chris Page 45532ebe6d Add gui to list craft recipes for some stones 2023-11-25 23:52:04 +00:00
3raven 86da47b922 French translation update (#4006)
Update french translation, add missing chain, fix typo

Reviewed-on: MineClone2/MineClone2#4006
Reviewed-by: AFCMS <afcm.contact@gmail.com>
Co-authored-by: 3raven <3raven@noreply.git.minetest.land>
Co-committed-by: 3raven <3raven@noreply.git.minetest.land>
2023-11-25 01:08:06 +00:00
Eliy21 7cbba73d50 Combat (mostly PvE) rebalancing (#4005)
-Added short mob invulnerability time after being hit
-Added separate shorter range for hitting mobs (as opposed to node interaction)
-Reworked mob knockback
-Slowed down natural health regeneration from saturation
-Added a setting for the saturation health regen speed

Reviewed-on: MineClone2/MineClone2#4005
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: Eliy21 <eliy21@noreply.git.minetest.land>
Co-committed-by: Eliy21 <eliy21@noreply.git.minetest.land>
2023-11-23 00:32:23 +00:00
José M 4df6f82c64 Fix spanish translation errors (#4018)
Reviewed-on: MineClone2/MineClone2#4018
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: José M <dr.cabra@disroot.org>
Co-committed-by: José M <dr.cabra@disroot.org>
2023-11-18 22:20:02 +00:00
chmodsayshello 6ee2dbe70c Add MineCraft like sleeping player hud (#4011)
This adds a sleeping hud/actionbar that'll be displayed to players currently not sleeping.

Reviewed-on: MineClone2/MineClone2#4011
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
Co-authored-by: chmodsayshello <chmodsayshello@hotmail.com>
Co-committed-by: chmodsayshello <chmodsayshello@hotmail.com>
2023-11-18 21:21:17 +00:00
the-real-herowl 613ab897b2 Merge pull request 'Fix item not dropping at tool last use' (#4009) from tool_destruction into master
Reviewed-on: MineClone2/MineClone2#4009
2023-11-18 01:32:01 +00:00
the-real-herowl e53d9ec8d7 Added comments 2023-11-18 02:31:07 +01:00
the-real-herowl 378b8f8f6c Fix item not dropping at tool last use 2023-11-13 13:35:12 +01:00
444 changed files with 9210 additions and 2710 deletions

2
.gitignore vendored
View File

@ -6,3 +6,5 @@
/.idea/ /.idea/
*.xcf *.xcf
.Rproj.user .Rproj.user
prompt.txt
__pycache__

View File

@ -8,30 +8,32 @@
## Maintainers ## Maintainers
* AncientMariner * AncientMariner
* Nicu * Herowl
## Previous Maintainers ## Previous Maintainers
* Fleckenstein * Fleckenstein
* cora * cora
* Nicu
## Developers ## Developers
* AFCMS * AFCMS
* epCode * epCode
* chmodsayshello * chmodsayshello
* PrairieWind
* MrRar * MrRar
* FossFanatic * FossFanatic
* SmokeyDope * SmokeyDope
* Faerraven / Michieal
* Codiac
## Past Developers ## Past Developers
* jordan4ibanez * jordan4ibanez
* iliekprogrammar * iliekprogrammar
* kabou * kabou
* kay27 * kay27
* Faerraven / Michieal
* MysticTempest * MysticTempest
* NO11 * NO11
* SumianVoice * SumianVoice
* PrairieWind
## Contributors ## Contributors
* RandomLegoBrick * RandomLegoBrick
@ -112,6 +114,21 @@
* Niterux * Niterux
* appgurueu * appgurueu
* seventeenthShulker * seventeenthShulker
* DinoNuggies4665
* basxto
* Morik666
* Eliy21
* mdk
* Alessandra Lozoya
* VanicGame
* ThePython10110
* Araca
* Montandalar
* mim
* Dark
* Bakawun
* JoseDouglas26
* Zasco
## Music ## Music
* Jordach for the jukebox music compilation from Big Freaking Dig * Jordach for the jukebox music compilation from Big Freaking Dig
@ -155,6 +172,7 @@
* cora * cora
* Faerraven / Michieal * Faerraven / Michieal
* PrairieWind * PrairieWind
* ChrisPHP
## 3D Models ## 3D Models
* 22i * 22i
@ -162,6 +180,7 @@
* epCode * epCode
* Faerraven / Michieal * Faerraven / Michieal
* SumianVoice * SumianVoice
* thunder1035
## Textures ## Textures
* XSSheep * XSSheep
@ -181,6 +200,8 @@
* Aeonix_Aeon * Aeonix_Aeon
* Wbjitscool * Wbjitscool
* SmokeyDope * SmokeyDope
* thunder1035
* Herowl
## Translations ## Translations
* Wuzzy * Wuzzy
@ -200,6 +221,10 @@
* Temak * Temak
* megustanlosfrijoles * megustanlosfrijoles
* kbundg * kbundg
* Isaac Dennis
* ADLON
* Sab Pyrope
* JoseDouglas26
## Funders ## Funders
* 40W * 40W

View File

@ -170,16 +170,8 @@ These groups are used mostly for informational purposes
* `ammo_bow=1`: Item is used as ammo for bows * `ammo_bow=1`: Item is used as ammo for bows
* `non_combat_armor=1`: Item can be equipped as armor, but is not made for combat (e.g. zombie head, pumpkin) * `non_combat_armor=1`: Item can be equipped as armor, but is not made for combat (e.g. zombie head, pumpkin)
* `container`: Node is a container which physically stores items within and has at least 1 inventory * `container`: Node is a container which physically stores items within and has at least 1 inventory
* `container=2`: Has one inventory with list name `"main"`. Items can be placed and taken freely * `container=1`: Container type, which does not allow hoppers to transfer items
* `container=3`: Same as `container=2`, but shulker boxes can not be inserted * `container=2`: Items can be placed and taken freely. Can have inventory with list name `"main"` or define `_mcl_hoppers_on_try_pull`, `_mcl_hoppers_on_try_push`, `_mcl_hoppers_on_after_pull`, `_mcl_hoppers_on_after_push` to play along hoppers nicely.
* `container=4`: Furnace-like, has lists `"src"`, `"fuel"` and `"dst"`.
It is expected that this also reacts on `on_timer`;
the node timer must be started from other mods when they add into `"src"` or `"fuel"`
* `container=5`: Left part of a 2-part horizontal connected container. Both parts have a `"main"` inventory
list. Both inventories are considered to belong together. This is used for large chests.
* `container=6`: Same as above, but for the right part.
* `container=7`: Has inventory list "`main`", no movement allowed
* `container=1`: Other/unspecified container type
* `spawn_egg=1`: Spawn egg * `spawn_egg=1`: Spawn egg
* `pressure_plate=1`: Pressure plate (off) * `pressure_plate=1`: Pressure plate (off)

View File

@ -1,4 +1,4 @@
title = MineClone 2 title = MineClone 2
description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more. description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more.
disallowed_mapgens = v6 disallowed_mapgens = v6
version=0.85.0-SNAPSHOT version=0.87.0-SNAPSHOT

View File

@ -31,6 +31,7 @@ local known_controls = {
aux1 = true, aux1 = true,
down = true, down = true,
up = true, up = true,
zoom = true,
} }
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)

View File

@ -0,0 +1,2 @@
# textdomain:mcl_explosions
@1 was caught in an explosion.=@1 z-es mòrt dins una explosion

View File

@ -0,0 +1,2 @@
# textdomain:mcl_explosions
@1 was caught in an explosion.=@1 foi pego(a) em uma explosão.

View File

@ -22,6 +22,30 @@ function table.update_nil(t, ...)
return t return t
end end
---Works the same as `pairs`, but order returned by keys
---
---Taken from https://www.lua.org/pil/19.3.html
---@generic T: table, K, V, C
---@param t T
---@param f? fun(a: C, b: C):boolean
---@return fun():K, V
function table.pairs_by_keys(t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0 -- iterator variable
local function iter() -- iterator function
i = i + 1
if a[i] == nil then
return nil
else
return a[i], t[a[i]]
end
end
return iter
end
local LOGGING_ON = minetest.settings:get_bool("mcl_logging_default", false) local LOGGING_ON = minetest.settings:get_bool("mcl_logging_default", false)
local LOG_MODULE = "[MCL2]" local LOG_MODULE = "[MCL2]"
function mcl_util.mcl_log(message, module, bypass_default_logger) function mcl_util.mcl_log(message, module, bypass_default_logger)
@ -136,7 +160,7 @@ function mcl_util.rotate_axis_and_place(itemstack, placer, pointed_thing, infini
return return
end end
local undef = minetest.registered_nodes[unode.name] local undef = minetest.registered_nodes[unode.name]
if undef and undef.on_rightclick then if undef and undef.on_rightclick and not invert_wall then
undef.on_rightclick(pointed_thing.under, unode, placer, undef.on_rightclick(pointed_thing.under, unode, placer,
itemstack, pointed_thing) itemstack, pointed_thing)
return return
@ -174,26 +198,12 @@ function mcl_util.rotate_axis_and_place(itemstack, placer, pointed_thing, infini
local p2 local p2
if is_y then if is_y then
if invert_wall then p2 = 0
if fdir == 3 or fdir == 1 then
p2 = 12
else
p2 = 6
end
end
elseif is_x then elseif is_x then
if invert_wall then
p2 = 0
else
p2 = 12 p2 = 12
end
elseif is_z then elseif is_z then
if invert_wall then
p2 = 0
else
p2 = 6 p2 = 6
end end
end
minetest.set_node(pos, {name = wield_name, param2 = p2}) minetest.set_node(pos, {name = wield_name, param2 = p2})
if not infinitestacks then if not infinitestacks then
@ -241,34 +251,25 @@ function mcl_util.get_double_container_neighbor_pos(pos, param2, side)
end end
end end
-- Iterates through all items in the given inventory and --- Selects item stack to transfer from
-- returns the slot of the first item which matches a condition. ---@param src_inventory InvRef Source innentory to pull from
-- Returns nil if no item was found. ---@param src_list string Name of source inventory list to pull from
--- source_inventory: Inventory to take the item from ---@param dst_inventory InvRef Destination inventory to push to
--- source_list: List name of the source inventory from which to take the item ---@param dst_list string Name of destination inventory list to push to
--- destination_inventory: Put item into this inventory ---@param condition? fun(stack: ItemStack) Condition which items are allowed to be transfered.
--- destination_list: List name of the destination inventory to which to put the item into ---@return integer Item stack number to be transfered
--- condition: Function which takes an itemstack and returns true if it matches the desired item condition. function mcl_util.select_stack(src_inventory, src_list, dst_inventory, dst_list, condition)
--- If set to nil, the slot of the first item stack will be taken unconditionally. local src_size = src_inventory:get_size(src_list)
-- dst_inventory and dst_list can also be nil if condition is nil.
function mcl_util.get_eligible_transfer_item_slot(src_inventory, src_list, dst_inventory, dst_list, condition)
local size = src_inventory:get_size(src_list)
local stack local stack
for i = 1, size do for i = 1, src_size do
stack = src_inventory:get_stack(src_list, i) stack = src_inventory:get_stack(src_list, i)
if not stack:is_empty() and (condition == nil or condition(stack, src_inventory, src_list, dst_inventory, dst_list)) then if not stack:is_empty() and dst_inventory:room_for_item(dst_list, stack) and ((condition == nil or condition(stack))) then
return i return i
end end
end end
return nil return nil
end end
-- Returns true if itemstack is a shulker box
local function is_not_shulker_box(itemstack)
local g = minetest.get_item_group(itemstack:get_name(), "shulker_box")
return g == 0 or g == nil
end
-- Moves a single item from one inventory to another. -- Moves a single item from one inventory to another.
--- source_inventory: Inventory to take the item from --- source_inventory: Inventory to take the item from
--- source_list: List name of the source inventory from which to take the item --- source_list: List name of the source inventory from which to take the item
@ -279,13 +280,6 @@ end
-- Returns true on success and false on failure -- Returns true on success and false on failure
-- Possible failures: No item in source slot, destination inventory full -- Possible failures: No item in source slot, destination inventory full
function mcl_util.move_item(source_inventory, source_list, source_stack_id, destination_inventory, destination_list) function mcl_util.move_item(source_inventory, source_list, source_stack_id, destination_inventory, destination_list)
if source_stack_id == -1 then
source_stack_id = mcl_util.get_first_occupied_inventory_slot(source_inventory, source_list)
if source_stack_id == nil then
return false
end
end
if not source_inventory:is_empty(source_list) then if not source_inventory:is_empty(source_list) then
local stack = source_inventory:get_stack(source_list, source_stack_id) local stack = source_inventory:get_stack(source_list, source_stack_id)
if not stack:is_empty() then if not stack:is_empty() then
@ -303,150 +297,75 @@ function mcl_util.move_item(source_inventory, source_list, source_stack_id, dest
return false return false
end end
-- Moves a single item from one container node into another. Performs a variety of high-level --- Try pushing item from hopper inventory to destination inventory
-- checks to prevent invalid transfers such as shulker boxes into shulker boxes ---@param pos Vector
--- source_pos: Position ({x,y,z}) of the node to take the item from ---@param dst_pos Vector
--- destination_pos: Position ({x,y,z}) of the node to put the item into function mcl_util.hopper_push(pos, dst_pos)
--- source_list (optional): List name of the source inventory from which to take the item. Default is normally "main"; "dst" for furnace local hop_inv = minetest.get_meta(pos):get_inventory()
--- source_stack_id (optional): The inventory position ID of the source inventory to take the item from (-1 for slot of the first valid item; -1 is default) local hop_list = 'main'
--- destination_list (optional): List name of the destination inventory. Default is normally "main"; "src" for furnace
-- Returns true on success and false on failure.
function mcl_util.move_item_container(source_pos, destination_pos, source_list, source_stack_id, destination_list)
local dpos = table.copy(destination_pos)
local spos = table.copy(source_pos)
local snode = minetest.get_node(spos)
local dnode = minetest.get_node(dpos)
local dctype = minetest.get_item_group(dnode.name, "container") -- Get node pos' for item transfer
local sctype = minetest.get_item_group(snode.name, "container") local dst = minetest.get_node(dst_pos)
if not minetest.registered_nodes[dst.name] then return end
local dst_type = minetest.get_item_group(dst.name, "container")
if dst_type ~= 2 then return end
local dst_def = minetest.registered_nodes[dst.name]
-- Container type 7 does not allow any movement local dst_list = 'main'
if sctype == 7 then local dst_inv, stack_id
return false
end
-- Normalize double container by forcing to always use the left segment first if dst_def._mcl_hoppers_on_try_push then
local function normalize_double_container(pos, node, ctype) dst_inv, dst_list, stack_id = dst_def._mcl_hoppers_on_try_push(dst_pos, pos, hop_inv, hop_list)
if ctype == 6 then
pos = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "right")
if not pos then
return false
end
node = minetest.get_node(pos)
ctype = minetest.get_item_group(node.name, "container")
-- The left segment seems incorrect? We better bail out!
if ctype ~= 5 then
return false
end
end
return pos, node, ctype
end
spos, snode, sctype = normalize_double_container(spos, snode, sctype)
dpos, dnode, dctype = normalize_double_container(dpos, dnode, dctype)
if not spos or not dpos then return false end
local smeta = minetest.get_meta(spos)
local dmeta = minetest.get_meta(dpos)
local sinv = smeta:get_inventory()
local dinv = dmeta:get_inventory()
-- Default source lists
if not source_list then
-- Main inventory for most container types
if sctype == 2 or sctype == 3 or sctype == 5 or sctype == 6 or sctype == 7 then
source_list = "main"
-- Furnace: output
elseif sctype == 4 then
source_list = "dst"
-- Unknown source container type. Bail out
else else
return false local dst_meta = minetest.get_meta(dst_pos)
dst_inv = dst_meta:get_inventory()
stack_id = mcl_util.select_stack(hop_inv, hop_list, dst_inv, dst_list)
end
if stack_id ~= nil then
local ok = mcl_util.move_item(hop_inv, hop_list, stack_id, dst_inv, dst_list)
if dst_def._mcl_hoppers_on_after_push then
dst_def._mcl_hoppers_on_after_push(dst_pos)
end
if ok then
return true
end end
end end
-- Automatically select stack slot ID if set to automatic
if not source_stack_id then
source_stack_id = -1
end
if source_stack_id == -1 then
local cond = nil
-- Prevent shulker box inception
if dctype == 3 then
cond = is_not_shulker_box
end
source_stack_id = mcl_util.get_eligible_transfer_item_slot(sinv, source_list, dinv, dpos, cond)
if not source_stack_id then
-- Try again if source is a double container
if sctype == 5 then
spos = mcl_util.get_double_container_neighbor_pos(spos, snode.param2, "left")
smeta = minetest.get_meta(spos)
sinv = smeta:get_inventory()
source_stack_id = mcl_util.get_eligible_transfer_item_slot(sinv, source_list, dinv, dpos, cond)
if not source_stack_id then
return false return false
end end
-- Try pulling from source inventory to hopper inventory
---@param pos Vector
---@param src_pos Vector
function mcl_util.hopper_pull(pos, src_pos)
local hop_inv = minetest.get_meta(pos):get_inventory()
local hop_list = 'main'
-- Get node pos' for item transfer
local src = minetest.get_node(src_pos)
if not minetest.registered_nodes[src.name] then return end
local src_type = minetest.get_item_group(src.name, "container")
if src_type ~= 2 then return end
local src_def = minetest.registered_nodes[src.name]
local src_list = 'main'
local src_inv, stack_id
if src_def._mcl_hoppers_on_try_pull then
src_inv, src_list, stack_id = src_def._mcl_hoppers_on_try_pull(src_pos, pos, hop_inv, hop_list)
else else
return false local src_meta = minetest.get_meta(src_pos)
end src_inv = src_meta:get_inventory()
end stack_id = mcl_util.select_stack(src_inv, src_list, hop_inv, hop_list)
end end
-- Abort transfer if shulker box wants to go into shulker box if stack_id ~= nil then
if dctype == 3 then local ok = mcl_util.move_item(src_inv, src_list, stack_id, hop_inv, hop_list)
local stack = sinv:get_stack(source_list, source_stack_id) if src_def._mcl_hoppers_on_after_pull then
if stack and minetest.get_item_group(stack:get_name(), "shulker_box") == 1 then src_def._mcl_hoppers_on_after_pull(src_pos)
return false
end end
end end
-- Container type 7 does not allow any placement
if dctype == 7 then
return false
end
-- If it's a container, put it into the container
if dctype ~= 0 then
-- Automatically select a destination list if omitted
if not destination_list then
-- Main inventory for most container types
if dctype == 2 or dctype == 3 or dctype == 5 or dctype == 6 or dctype == 7 then
destination_list = "main"
-- Furnace source slot
elseif dctype == 4 then
destination_list = "src"
end
end
if destination_list then
-- Move item
local ok = mcl_util.move_item(sinv, source_list, source_stack_id, dinv, destination_list)
-- Try transfer to neighbor node if transfer failed and double container
if not ok and dctype == 5 then
dpos = mcl_util.get_double_container_neighbor_pos(dpos, dnode.param2, "left")
dmeta = minetest.get_meta(dpos)
dinv = dmeta:get_inventory()
ok = mcl_util.move_item(sinv, source_list, source_stack_id, dinv, destination_list)
end
-- Update furnace
if ok and dctype == 4 then
-- Start furnace's timer function, it will sort out whether furnace can burn or not.
minetest.get_node_timer(dpos):start(1.0)
end
return ok
end
end
return false
end
-- Returns the ID of the first non-empty slot in the given inventory list
-- or nil, if inventory is empty.
function mcl_util.get_first_occupied_inventory_slot(inventory, listname)
return mcl_util.get_eligible_transfer_item_slot(inventory, listname)
end end
local function drop_item_stack(pos, stack) local function drop_item_stack(pos, stack)
@ -1113,3 +1032,62 @@ function mcl_util.get_colorwallmounted_rotation(pos)
end end
end end
end end
---Move items from one inventory list to another, drop items that do not fit in provided pos and direction.
---@param src_inv mt.InvRef
---@param src_listname string
---@param out_inv mt.InvRef
---@param out_listname string
---@param pos mt.Vector Position to throw items at
---@param dir? mt.Vector Direction to throw items in
---@param insta_collect? boolean Enable instant collection, let players collect dropped items instantly. Default `false`
function mcl_util.move_list(src_inv, src_listname, out_inv, out_listname, pos, dir, insta_collect)
local src_list = src_inv:get_list(src_listname)
if not src_list then return end
for i, stack in ipairs(src_list) do
if out_inv:room_for_item(out_listname, stack) then
out_inv:add_item(out_listname, stack)
else
local p = vector.copy(pos)
p.x = p.x + (math.random(1, 3) * 0.2)
p.z = p.z + (math.random(1, 3) * 0.2)
local obj = minetest.add_item(p, stack)
if obj then
if dir then
local v = vector.copy(dir)
v.x = v.x * 4
v.y = v.y * 4 + 2
v.z = v.z * 4
obj:set_velocity(v)
mcl_util.mcl_log("item velocity calculated "..vector.to_string(v), "[mcl_util]")
end
if not insta_collect then
obj:get_luaentity()._insta_collect = false
end
end
end
stack:clear()
src_inv:set_stack(src_listname, i, stack)
end
end
---Move items from a player's inventory list to its main inventory list, drop items that do not fit in front of him.
---@param player mt.PlayerObjectRef
---@param src_listname string
function mcl_util.move_player_list(player, src_listname)
mcl_util.move_list(player:get_inventory(), src_listname, player:get_inventory(), "main",
vector.offset(player:get_pos(), 0, 1.2, 0),
player:get_look_dir(), false)
end
function mcl_util.is_it_christmas()
local date = os.date("*t")
if date.month == 12 and date.day >= 24 or date.month == 1 and date.day <= 7 then
return true
else
return false
end
end

View File

@ -12,6 +12,7 @@ Water vehicle=Véhicule aquatique
Sneak to dismount=Se baisser pour descendre Sneak to dismount=Se baisser pour descendre
Obsidian Boat=Bateau en obsidienne Obsidian Boat=Bateau en obsidienne
Mangrove Boat=Bateau en palétuvier Mangrove Boat=Bateau en palétuvier
Cherry Boat=Bateau en cerisier
Oak Chest Boat=Bateau en chêne avec coffre Oak Chest Boat=Bateau en chêne avec coffre
Spruce Chest Boat=Bateau en sapin avec coffre Spruce Chest Boat=Bateau en sapin avec coffre
Birch Chest Boat=Bateau en bouleau avec coffre Birch Chest Boat=Bateau en bouleau avec coffre
@ -19,3 +20,4 @@ Jungle Chest Boat=Bateau en acajou avec coffre
Acacia Chest Boat=Bateau en acacia avec coffre Acacia Chest Boat=Bateau en acacia avec coffre
Dark Oak Chest Boat=Bateau en chêne noir avec coffre Dark Oak Chest Boat=Bateau en chêne noir avec coffre
Mangrove Chest Boat=Bateau en palétuvier avec coffre Mangrove Chest Boat=Bateau en palétuvier avec coffre
Cherry Chest Boat=Bateau en cerisier avec coffre

View File

@ -0,0 +1,21 @@
# textdomain: mcl_boats
Acacia Boat=Barca de Cacèir
Birch Boat=Barca de Beç
Boat=Barca
Boats are used to travel on the surface of water.=Las barcas son utilizadas per voiatja per aigas.
Dark Oak Boat=Barca de Ròure Nèir
Jungle Boat=Barca d'Acajó
Oak Boat=Barca de Ròure
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Fasetz un clic dreit sobre una sorça d'aiga per plaça la barca. Fasetz un clic dreit sobre la barca per rintrar. Utilizatz [Gaucha] e [Dreita] per menar, [Davant] per accelerar e [Darrèir] per ralentir o racuolar. Utilizatz [Sneak] per z-o quitar, tustatz la barca per z-o faire tombar coma objècte.
Spruce Boat=Barca de Sap
Water vehicle=Veïcule per aiga
Sneak to dismount=Se baissar per descendre
Obsidian Boat=Barca d'Obsidiana
Mangrove Boat=Barca de Paletuvèir
Oak Chest Boat=Barca de Ròure embei una Mala
Spruce Chest Boat=Barca de Sap embei una Mala
Birch Chest Boat=Barca de Beç embei una Mala
Jungle Chest Boat=Barca d'Acajó embei una Mala
Acacia Chest Boat=Barca de Cacèir embei una Mala
Dark Oak Chest Boat=Barca de Ròure Nèir embei una Mala
Mangrove Chest Boat=Barca de Paletuvèir embei una Mala

View File

@ -0,0 +1,23 @@
# textdomain: mcl_boats
Acacia Boat=Barco de Acácia
Birch Boat=Barco de Bétula
Boat=Barco
Boats are used to travel on the surface of water.=Barcos são usados para viajar na superfície da água
Dark Oak Boat=Barco de Carvalho Escuro
Jungle Boat=Barco de Selva
Oak Boat=Barco de Carvalho
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Clique com o botão direito em uma fonte de água para posicionar o barco. Clique com o botão direito no barco para entrar nele. Use [Esquerda] e [Direita] para fazer curva, [Frente] para acelerar e [Trás] para frear e ir para trás. Use [Agachar] para deixar o barco, soque-o para fazê-lo dropar como um item.
Spruce Boat=Barco de Pinheiro
Water vehicle=Veículo aquático
Sneak to dismount=Agache para desmontar
Obsidian Boat=Barco de Obsidiana
Mangrove Boat=Barco de Mangue
Cherry Boat=Barco de Cerejeira
Oak Chest Boat=Barco de Carvalho com Baú
Spruce Chest Boat=Barco de Pinheiro com Baú
Birch Chest Boat=Barco de Bétula com Baú
Jungle Chest Boat=Barco de Selva com Baú
Acacia Chest Boat=Barco de Acácia com Baú
Dark Oak Chest Boat=Barco de Carvalho Escuro com Baú
Mangrove Chest Boat=Barco de Mangue com Baú
Cherry Chest Boat=Barco de Cerejeira com Baú

View File

@ -0,0 +1,3 @@
# textdomain: mcl_falling_nodes
@1 was smashed by a falling anvil.=@1 a estat espotit per un enclutge
@1 was smashed by a falling block.=@1 a estat espotit per un blòc

View File

@ -0,0 +1,3 @@
# textdomain: mcl_falling_nodes
@1 was smashed by a falling anvil.=@1 foi esmagado(a) por uma bigorna em queda.
@1 was smashed by a falling block.=@1 foi esmagado(a) por um bloco em queda.

View File

@ -362,6 +362,121 @@ function minetest.handle_node_drops(pos, drops, digger)
end end
end end
-- the following code is pulled from Minetest builtin without changes except for the call order being changed,
-- until a comment saying explicitly it's the end of such code
-- TODO if this gets a fix in the engine, remove the block of code
local function user_name(user)
return user and user:get_player_name() or ""
end
-- Returns a logging function. For empty names, does not log.
local function make_log(name)
return name ~= "" and minetest.log or function() end
end
function minetest.node_dig(pos, node, digger)
local diggername = user_name(digger)
local log = make_log(diggername)
local def = minetest.registered_nodes[node.name]
-- Copy pos because the callback could modify it
if def and (not def.diggable or
(def.can_dig and not def.can_dig(vector.copy(pos), digger))) then
log("info", diggername .. " tried to dig "
.. node.name .. " which is not diggable "
.. minetest.pos_to_string(pos))
return false
end
if minetest.is_protected(pos, diggername) then
log("action", diggername
.. " tried to dig " .. node.name
.. " at protected position "
.. minetest.pos_to_string(pos))
minetest.record_protection_violation(pos, diggername)
return false
end
log('action', diggername .. " digs "
.. node.name .. " at " .. minetest.pos_to_string(pos))
local wielded = digger and digger:get_wielded_item()
local drops = minetest.get_node_drops(node, wielded and wielded:get_name())
-- Check to see if metadata should be preserved.
if def and def.preserve_metadata then
local oldmeta = minetest.get_meta(pos):to_table().fields
-- Copy pos and node because the callback can modify them.
local pos_copy = vector.copy(pos)
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
local drop_stacks = {}
for k, v in pairs(drops) do
drop_stacks[k] = ItemStack(v)
end
drops = drop_stacks
def.preserve_metadata(pos_copy, node_copy, oldmeta, drops)
end
-- Handle drops
minetest.handle_node_drops(pos, drops, digger)
if wielded then
local wdef = wielded:get_definition()
local tp = wielded:get_tool_capabilities()
local dp = minetest.get_dig_params(def and def.groups, tp, wielded:get_wear())
if wdef and wdef.after_use then
wielded = wdef.after_use(wielded, digger, node, dp) or wielded
else
-- Wear out tool
if not minetest.is_creative_enabled(diggername) then
wielded:add_wear(dp.wear)
if wielded:get_count() == 0 and wdef.sound and wdef.sound.breaks then
minetest.sound_play(wdef.sound.breaks, {
pos = pos,
gain = 0.5
}, true)
end
end
end
digger:set_wielded_item(wielded)
end
local oldmetadata = nil
if def and def.after_dig_node then
oldmetadata = minetest.get_meta(pos):to_table()
end
-- Remove node and update
minetest.remove_node(pos)
-- Play sound if it was done by a player
if diggername ~= "" and def and def.sounds and def.sounds.dug then
minetest.sound_play(def.sounds.dug, {
pos = pos,
exclude_player = diggername,
}, true)
end
-- Run callback
if def and def.after_dig_node then
-- Copy pos and node because callback can modify them
local pos_copy = vector.copy(pos)
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
def.after_dig_node(pos_copy, node_copy, oldmetadata, digger)
end
-- Run script hook
for _, callback in ipairs(minetest.registered_on_dignodes) do
local origin = minetest.callback_origins[callback]
minetest.set_last_run_mod(origin.mod)
-- Copy pos and node because callback can modify them
local pos_copy = vector.copy(pos)
local node_copy = {name=node.name, param1=node.param1, param2=node.param2}
callback(pos_copy, node_copy, digger)
end
return true
end
-- end of code pulled from Minetest
-- Drop single items by default -- Drop single items by default
function minetest.item_drop(itemstack, dropper, pos) function minetest.item_drop(itemstack, dropper, pos)
if dropper and dropper:is_player() then if dropper and dropper:is_player() then

View File

@ -0,0 +1,36 @@
# textdomain: mcl_minecarts
Minecart=Vagonet
Minecarts can be used for a quick transportion on rails.=Los vagonet pòdon èsser utilizats per un transpòrt rapide per ralhs.
Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Los vagonets ròtlon mas per ralhs e seguisson totjorn la pista. A una joncion T embei ren davant, tòrnon a gaucha.
You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Podètz plaçar le vagonet per ralhs. Fasetz un clic dreit dessobre per çai rentrar. Tustatz z-o per z-o faire bojar.
To obtain the minecart, punch it while holding down the sneak key.=Per aver le vagonet, tustatz z-o embei la tocha sneak enfonçada.
A minecart with TNT is an explosive vehicle that travels on rail.=Un vagonet embei TNT z-es un vagonet explosiu que voiatja per ralhs.
Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=Plaçatz z-o per ralhs. Tustatz z-o per z-o desplaçar. La TNT z-es atubada embei un batifuòc o quand le vagonet z-es per un ralh d'activacion atubat.
To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Per obtenèr le vagonet e la TNT, tustatz z-o embei la tocha sneak enfonçada. Podètz pas faire quo si la TNT z-es atubada.
A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Un vagonet embei un fornil z-es un veïcule que voiatja per ralhs. Pòt se propulsar embei dau carburant.
Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=Plaçatz z-o per ralhs. Si li balhatz dau charbon, le fornil vai començar de borlar lòngtemps e porà rotlar. Tustatz z-o per z-o faire bojar.
To obtain the minecart and furnace, punch them while holding down the sneak key.=Per obtener le vagonet e le fornil, tustatz z-o embei la tocha sneak enfonçada.
Minecart with Chest=Vagonet embei una Mala
Minecart with Furnace=Vagonet embei un Fornil
Minecart with Command Block=Vagonet embei un Blòc de Comandas
Minecart with Hopper=Vagonet embei un Embure
Minecart with TNT=Vagonet embei de la TNT
Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Plaçatz z-o per sòu per construrre vostre chamin de fèrre, los ralhs se conectaron entre ilhs e faron de las corbas, de las junccions en T, en traversadas et en pentas au besonh.
Rail=Ralh
Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Los ralhs pòdon èsser utilizats per construrre los chamins de transpòrt per los vagonets. Los ralhs normaus ralentissons gentament los vagonet per causa de friccion.
Powered Rail=Ralh Atubat
Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Los ralhs pòdon èsser utilizats per construrre los chamins de transpòrt per los vagonets. Los ralhs atubats son per faire accelerar o frenar los vagonets.
Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sens energia de pèirotge, le ralh vai frenar los vagonets. Per que le ralh accelera los vagonets, alimentatz z-o embei de l'energia de pèirotge.
Activator Rail=Ralh d'Activacion
Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Los ralhs pòdon èsser utilizats per construrre los chamins de transpòrt per los vagonets. Los ralhs d'activacion son utilizats per activar daus vagonets speciaus.
To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Per activar le ralh, alimentatz z-o embei de l'energia de pèirotge e fasetz rotlar un vagonet per aqueste ralh.
Detector Rail=Ralh de Deteccion
Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Los ralhs pòdon èsser utilizats per construirre los chamins de transpòrt per los vagonets. Los ralhs de deteccion pòdon detectar un vagonet per ilhs e atubar un mecanisme de pèirotge.
To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Per detectar un vagonet e produrre de l'energia de pèirotge, conectatz le ralh a de la pèirotge e fasetz rotlar un vagonet per i-aul.
Track for minecarts=Pista per vagonets
Speed up when powered, slow down when not powered=Acceleratz quand z-es atubat, ralentissetz quand z-es pas atubat.
Activates minecarts when powered=Activa los vagonets quand pas atubat.
Emits redstone power when a minecart is detected=Emeta de l'energia de pèirotge quand un vagonet z-es detectat.
Vehicle for fast travel on rails=Veicule per voiatjar vistament per ralhs.
Can be ignited by tools or powered activator rail=Pòt èsser atubat embei daus otilhs o un ralh d'activacion
Sneak to dismount=Se baissar per descendre

View File

@ -0,0 +1,36 @@
# textdomain: mcl_minecarts
Minecart=Carrinho
Minecarts can be used for a quick transportion on rails.=Carrinhos podem ser usados para transporte rápido em trilhos.
Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Carrinhos viajam somente em trilhos e sempre seguem os traçados. Em uma junção em T sem linha reta à frente, eles viram à esquerda. A velocidade é afetada pelo tipo do trilho.
You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Você pode posicionar o carrinho em trilhos. Clique com o botão direito para entrar nele. Soque-o para fazê-lo mover.
To obtain the minecart, punch it while holding down the sneak key.=Para obter o carrinho, soque-o enquanto segura pressionada a tecla de agachar.
A minecart with TNT is an explosive vehicle that travels on rail.=Um carrinho com TNT é um veículo explosivo que viaja nos trilhos.
Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=Posicione-o nos trilhos. Soque-o para movê-lo. A TNT é acesa com um isqueiro ou quando o carrinho está sobre um trilho ativador energizado.
To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Para obter o carrinho e a TNT, soque-os enquanto segura pressionada a tecla de agachar. Você não consegue fazer isso se a TNT foi acesa.
A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Um carrinho com fornalha é um veículo que viaja nos trilhos. Se move por conta própria com combustível.
Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=Posicione-o nos trilhos. Se você o der um pouco de carvão, a fornalha vai começar a queimar por um longo tempo e o carrinho será capaz de se mover por conta própria. Soque-o para fazê-lo mover.
To obtain the minecart and furnace, punch them while holding down the sneak key.=Para obter o carrinho e a fornalha, soque-os enquanto segura pressionada a tecla de agachar.
Minecart with Chest=Carrinho com Baú
Minecart with Furnace=Carrinho com Fornalha
Minecart with Command Block=Carrinho com Bloco de Comandos
Minecart with Hopper=Carrinho com Funil
Minecart with TNT=Carrinho com TNT
Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Posicione-os no chão para construir suas linhas férreas, os trilhos vão conectar-se automaticamente uns nos outros e vão se transformar em curvas, junções em T, cruzamentos e rampas quando necessário.
Rail=Trilho
Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Trilhos normais freiam carrinhos gradativamente devido ao atrito.
Powered Rail=Trilho Energizador
Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Trilhos energizados são capazes de acelerar e frear carrinhos.
Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sem carga de redstone, o trilho vai frear os carrinhos. Para fazer o trilho acelerar os carrinhos, energize-o com uma carga de redstone.
Activator Rail=Trilho Ativador
Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Trilhos ativadores são usados para ativar carrinhos especiais.
To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Para fazer esse trilho ativar os carrinhos, energize-o com uma carga de redstone e envie um carrinho sobre esse pedaço de trilho.
Detector Rail=Trilho Detector
Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Trilhos podem ser usados para construir traçados de transporte para carrinhos. Um trilho detector é capaz de detectar um carrinho sobre ele e energizar mecanismos de redstone.
To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Para detectar um carrinho e providenciar carga de redstone, conecte-o em trilhas de redstone ou mecanismos de redstone e envie qualquer carrinho sobre esse trilho.
Track for minecarts=Traçado para carrinhos
Speed up when powered, slow down when not powered=Acelera quando energizado, desacelera quando não energizado
Activates minecarts when powered=Ativa carrinhos quando energizado
Emits redstone power when a minecart is detected=Emite carga de redstone quando um carrinho é detectado
Vehicle for fast travel on rails=Veículo para viajar rápido em trilhos
Can be ignited by tools or powered activator rail=Pode ser aceso por ferramentas ou trilho ativador energizado
Sneak to dismount=Agache para desmontar

View File

@ -32,6 +32,9 @@ function mob_class:feed_tame(clicker, feed_count, breed, tame, notake)
if not self.follow then if not self.follow then
return false return false
end end
if clicker:get_wielded_item():get_definition()._mcl_not_consumable then
return false
end
-- can eat/tame with item in hand -- can eat/tame with item in hand
if self.nofollow or self:follow_holding(clicker) then if self.nofollow or self:follow_holding(clicker) then
local consume_food = false local consume_food = false

View File

@ -35,14 +35,19 @@ function mob_class:day_docile()
end end
end end
-- attack player/mob -- get this mob to attack the object
function mob_class:do_attack(player) function mob_class:do_attack(object)
if self.state == "attack" or self.state == "die" then if self.state == "attack" or self.state == "die" then
return return
end end
self.attack = player
if object:is_player() and not minetest.settings:get_bool("enable_damage") then
return
end
self.attack = object
self.state = "attack" self.state = "attack"
-- TODO: Implement war_cry sound without being annoying -- TODO: Implement war_cry sound without being annoying
@ -516,6 +521,28 @@ end
-- deal damage and effects when mob punched -- deal damage and effects when mob punched
function mob_class:on_punch(hitter, tflp, tool_capabilities, dir) function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
local is_player = hitter:is_player()
local mob_pos = self.object:get_pos()
local player_pos = hitter:get_pos()
if is_player then
-- is mob out of reach?
if vector.distance(mob_pos, player_pos) > 3 then
return
end
-- is mob protected?
if self.protected and minetest.is_protected(mob_pos, hitter:get_player_name()) then
return
end
end
local time_now = minetest.get_us_time()
local time_diff = time_now - self.invul_timestamp
-- check for invulnerability time in microseconds (0.5 second)
if time_diff <= 500000 and time_diff >= 0 then
return
end
-- custom punch function -- custom punch function
if self.do_punch then if self.do_punch then
@ -532,20 +559,15 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
return return
end end
local is_player = hitter:is_player() local time_now = minetest.get_us_time()
if is_player then if is_player then
-- is mob protected?
if self.protected and minetest.is_protected(self.object:get_pos(), hitter:get_player_name()) then
return
end
if minetest.is_creative_enabled(hitter:get_player_name()) then if minetest.is_creative_enabled(hitter:get_player_name()) then
self.health = 0 self.health = 0
end end
-- set/update 'drop xp' timestamp if hitted by player -- set/update 'drop xp' timestamp if hitted by player
self.xp_timestamp = minetest.get_us_time() self.xp_timestamp = time_now
end end
@ -657,6 +679,9 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
-- do damage -- do damage
self.health = self.health - damage self.health = self.health - damage
-- give invulnerability
self.invul_timestamp = time_now
-- skip future functions if dead, except alerting others -- skip future functions if dead, except alerting others
if self:check_for_death( "hit", {type = "punch", puncher = hitter}) then if self:check_for_death( "hit", {type = "punch", puncher = hitter}) then
die = true die = true
@ -672,10 +697,10 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
if not v then return end if not v then return end
local r = 1.4 - math.min(punch_interval, 1.4) local r = 1.4 - math.min(punch_interval, 1.4)
local kb = r * (math.abs(v.x)+math.abs(v.z)) local kb = r * (math.abs(v.x)+math.abs(v.z))
local up = 2 local up = 2.625
if die==true then if die==true then
kb=kb*2 kb=kb*1.25
end end
-- if already in air then dont go up anymore when hit -- if already in air then dont go up anymore when hit
@ -689,7 +714,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
if tool_capabilities.damage_groups["knockback"] then if tool_capabilities.damage_groups["knockback"] then
kb = tool_capabilities.damage_groups["knockback"] kb = tool_capabilities.damage_groups["knockback"]
else else
kb = kb * 1.5 kb = kb * 1.25
end end
@ -699,9 +724,19 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
end end
if hitter and is_player then if hitter and is_player then
local wielditem = hitter:get_wielded_item() local wielditem = hitter:get_wielded_item()
kb = kb + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") kb = kb + 9 * mcl_enchanting.get_enchantment(wielditem, "knockback")
elseif luaentity and luaentity._knockback then -- add player velocity to mob knockback
local hv = hitter:get_velocity()
local dir_dot = (hv.x * dir.x) + (hv.z * dir.z)
local player_mag = math.sqrt((hv.x * hv.x) + (hv.z * hv.z))
local mob_mag = math.sqrt((v.x * v.x) + (v.z * v.z))
if dir_dot > 0 and mob_mag <= player_mag * 0.625 then
kb = kb + ((math.abs(hv.x) + math.abs(hv.z)) * r)
end
elseif luaentity and luaentity._knockback and die == false then
kb = kb + luaentity._knockback kb = kb + luaentity._knockback
elseif luaentity and luaentity._knockback and die == true then
kb = kb + luaentity._knockback * 0.25
end end
self._kb_turn = true self._kb_turn = true
self._turn_to=self.object:get_yaw()-1.57 self._turn_to=self.object:get_yaw()-1.57
@ -1201,6 +1236,9 @@ function mob_class:do_states_attack (dtime)
-- important for mcl_shields -- important for mcl_shields
ent._shooter = self.object ent._shooter = self.object
ent._saved_shooter_pos = self.object:get_pos() ent._saved_shooter_pos = self.object:get_pos()
if ent.homing then
ent._target = self.attack
end
end end
local amount = (vec.x * vec.x + vec.y * vec.y + vec.z * vec.z) ^ 0.5 local amount = (vec.x * vec.x + vec.y * vec.y + vec.z * vec.z) ^ 0.5
@ -1220,7 +1258,10 @@ function mob_class:do_states_attack (dtime)
elseif self.attack_type == "custom" and self.attack_state then elseif self.attack_type == "custom" and self.attack_state then
self.attack_state(self, dtime) self.attack_state(self, dtime)
else end
if self.on_attack then
self.on_attack(self, dtime)
end
end end
end

View File

@ -171,6 +171,7 @@ function mcl_mobs.register_mob(name, def)
xp_min = def.xp_min or 0, xp_min = def.xp_min or 0,
xp_max = def.xp_max or 0, xp_max = def.xp_max or 0,
xp_timestamp = 0, xp_timestamp = 0,
invul_timestamp = 0,
breath_max = def.breath_max or 15, breath_max = def.breath_max or 15,
breathes_in_water = def.breathes_in_water or false, breathes_in_water = def.breathes_in_water or false,
physical = true, physical = true,
@ -313,7 +314,8 @@ function mcl_mobs.register_mob(name, def)
return self:mob_activate(staticdata, def, dtime) return self:mob_activate(staticdata, def, dtime)
end, end,
attack_state = def.attack_state, attack_state = def.attack_state, -- custom attack state
on_attack = def.on_attack, -- called after attack, useful with otherwise predefined attack states (not custom)
harmed_by_heal = def.harmed_by_heal, harmed_by_heal = def.harmed_by_heal,
is_boss = def.is_boss, is_boss = def.is_boss,
dealt_effect = def.dealt_effect, dealt_effect = def.dealt_effect,
@ -332,6 +334,13 @@ function mcl_mobs.register_mob(name, def)
end -- END mcl_mobs.register_mob function end -- END mcl_mobs.register_mob function
function mcl_mobs.get_arrow_damage_func(damage, typ)
local typ = mcl_damage.types[typ] and typ or "arrow"
return function(projectile, object)
return mcl_util.deal_damage(object, damage, {type = typ})
end
end
-- register arrow for shoot attack -- register arrow for shoot attack
function mcl_mobs.register_arrow(name, def) function mcl_mobs.register_arrow(name, def)
@ -348,16 +357,18 @@ function mcl_mobs.register_arrow(name, def)
hit_node = def.hit_node, hit_node = def.hit_node,
hit_mob = def.hit_mob, hit_mob = def.hit_mob,
hit_object = def.hit_object, hit_object = def.hit_object,
homing = def.homing,
drop = def.drop or false, -- drops arrow as registered item when true drop = def.drop or false, -- drops arrow as registered item when true
collisionbox = {0, 0, 0, 0, 0, 0}, -- remove box around arrows collisionbox = {0, 0, 0, 0, 0, 0}, -- remove box around arrows
timer = 0, timer = 0,
switch = 0, switch = 0,
_lifetime = def._lifetime or 150, _lifetime = def._lifetime or 7,
owner_id = def.owner_id, owner_id = def.owner_id,
rotate = def.rotate, rotate = def.rotate,
on_punch = def.on_punch or function(self) on_punch = def.on_punch or function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)
local vel = self.object:get_velocity() local vel = self.object:get_velocity():length()
self.object:set_velocity({x=vel.x * -1, y=vel.y * -1, z=vel.z * -1}) self.object:set_velocity({x=dir.x * vel, y=dir.y * vel, z=dir.z * vel})
self._puncher = puncher
end, end,
collisionbox = def.collisionbox or {0, 0, 0, 0, 0, 0}, collisionbox = def.collisionbox or {0, 0, 0, 0, 0, 0},
automatic_face_movement_dir = def.rotate automatic_face_movement_dir = def.rotate
@ -367,7 +378,7 @@ function mcl_mobs.register_arrow(name, def)
on_step = def.on_step or function(self, dtime) on_step = def.on_step or function(self, dtime)
self.timer = self.timer + 1 self.timer = self.timer + dtime
local pos = self.object:get_pos() local pos = self.object:get_pos()
@ -420,26 +431,37 @@ function mcl_mobs.register_arrow(name, def)
end end
end end
if self.homing and self._target then
local p = self._target:get_pos()
if p then
if minetest.line_of_sight(self.object:get_pos(), p) then
self.object:set_velocity(vector.direction(self.object:get_pos(), p) * self.velocity)
end
else
self._target = nil
end
end
if self.hit_player or self.hit_mob or self.hit_object then if self.hit_player or self.hit_mob or self.hit_object then
for _,player in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do for _,object in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do
if self.hit_player if self.hit_player
and player:is_player() then and object:is_player() then
self.hit_player(self, player) self.hit_player(self, object)
self.object:remove(); self.object:remove();
return return
end end
local entity = player:get_luaentity() local entity = object:get_luaentity()
if entity if entity
and self.hit_mob and self.hit_mob
and entity.is_mob == true and entity.is_mob == true
and tostring(player) ~= self.owner_id and (tostring(object) ~= self.owner_id or self.timer > 2)
and entity.name ~= self.object:get_luaentity().name then and entity.name ~= self.object:get_luaentity().name then
self.hit_mob(self, player) self.hit_mob(self, object)
self.object:remove(); self.object:remove();
return return
end end
@ -447,9 +469,9 @@ function mcl_mobs.register_arrow(name, def)
if entity if entity
and self.hit_object and self.hit_object
and (not entity.is_mob) and (not entity.is_mob)
and tostring(player) ~= self.owner_id and (tostring(object) ~= self.owner_id or self.timer > 2)
and entity.name ~= self.object:get_luaentity().name then and entity.name ~= self.object:get_luaentity().name then
self.hit_object(self, player) self.hit_object(self, object)
self.object:remove(); self.object:remove();
return return
end end

View File

@ -0,0 +1,13 @@
# textdomain: mcl_mobs
Peaceful mode active! No monsters will spawn.=Mòde tranquile actiu! Gis de mostre vai aparèisser.
This allows you to place a single mob.=Quo permet de plaça una creatura.
Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Plaçatz z-o a l'endreit que volètz veire la creatura aparèisser. Las bèstias seron dejà domesticadas, defòra si laissatz la tocha se baissar enfonçada. Si z-o plaçatz sobre un generator de creaturas, chamjatz la creatura generada.
You need the “maphack” privilege to change the mob spawner.=Avètz besonh dau privilègi "maphack" per chamjar le generator de creaturas.
Name Tag=Étiquette de nom
A name tag is an item to name a mob.=Una etiqueta z-es un otilh per chamjar le nom de la creatura.
Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Davant d'utilizar l'etiqueta, vos fau li botar un nom embei una enclutge. Après, podètz utilizar l'etiqueta per nomar una creatura. L'etiqueta pòt èsser utilizada un còp.
Only peaceful mobs allowed!=Mas las creaturas pacificas son autorizadas!
Give names to mobs=Balha daus noms a las creaturas
Set name at anvil=Botar le nom embei l'enclutge
Removes specified mobs except nametagged and tamed ones. For the second parameter, use nametagged/tamed to select only nametagged/tamed mobs, or a range to specify a maximum distance from the player.=Lèva las creaturas specifiadas defòra de las que son nomadas o domesticadas. Per le paramètre segònd, utilizar nomat/domesticat per mas seleccionar las creaturas nomadas/domesticadas, o una distança per specifiar la distança maximum embei li joairi.
Default usage. Clearing hostile mobs. For more options please type: /help clearmobs=Usage par défaut. Lèva las creaturas ostilas. Per mai d'opcions, escriure : /help clearmobs

View File

@ -0,0 +1,13 @@
# textdomain: mcl_mobs
Peaceful mode active! No monsters will spawn.=Modo pacífico ativado! Nenhum monstro será gerado.
This allows you to place a single mob.=Isso permite você posicionar um único mob.
Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Posicione-o onde você deseja que o mob apareça. Animais serão gerados domesticados, a menos que você segure pressionada a tecla de agachar enquanto posiciona. Se você posicionar em um gerador de mobs, você muda o mob que será gerado.
You need the “maphack” privilege to change the mob spawner.=Você precisa do privilégio "maphack" para mudar o gerador de mobs.
Name Tag=Etiqueta
A name tag is an item to name a mob.=Uma etiqueta é um item para nomear um mob.
Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Antes de você usar a etiqueta, você precisa determinar um nome em uma bigorna. Assim você pode usar a etiqueta para nomear um mob. Isso consumirá a etiqueta.
Only peaceful mobs allowed!=Apenas mobs pacíficos permitidos!
Give names to mobs=Dá nome aos mobs
Set name at anvil=Determine um nome em uma bigorna
Removes specified mobs except nametagged and tamed ones. For the second parameter, use nametagged/tamed to select only nametagged/tamed mobs, or a range to specify a maximum distance from the player.=Remove mobs especifícos exceto os mobs nomeados ou domesticados. Como segundo parâmetro, use nametagged/tamed para selecionar apenas mobs nomeados/domesticados, ou um alcançe para especificar uma distância máxima em relação ao jogador.
Default usage. Clearing hostile mobs. For more options please type: /help clearmobs=Uso padrão. Eliminando mobs hostis. Para mais opções por favor digite: /help clearmobs

View File

@ -761,6 +761,61 @@ function mob_class:do_env_damage()
end end
end end
-- Cactus damage
local near = minetest.find_node_near(pos, 1, "mcl_core:cactus", true)
if not near and near ~= nil then
near = find_node_near({x=pos.x, y=pos.y-1, z=pos.z}, 1, "mcl_core:cactus", true)
end
if near then
-- is mob touching the cactus?
local dist = vector.distance(pos, near)
local dist_feet = vector.distance({x=pos.x, y=pos.y-1, z=pos.z}, near)
local large_mob = false
local medium_mob = false
if self.name == "mobs_mc:ender_dragon" or
self.name == "mobs_mc:ghast" or
self.name == "mobs_mc:guardian_elder" or
self.name == "mobs_mc:slime_big" or
self.name == "mobs_mc:magma_cube_big" or
self.name == "mobs_mc:wither" then
large_mob = true
elseif self.name == "mobs_mc:hoglin" or
self.name == "mobs_mc:zoglin" or
self.name == "mobs_mc:horse" or
self.name == "mobs_mc:skeleton_horse" or
self.name == "mobs_mc:zombie_horse" or
self.name == "mobs_mc:donkey" or
self.name == "mobs_mc:mule" or
self.name == "mobs_mc:iron_golem" or
self.name == "mobs_mc:polar_bear" or
self.name == "mobs_mc:spider" or
self.name == "mobs_mc:cave_spider" or
self.name == "mobs_mc:strider" then
medium_mob = true
end
if (not large_mob and not medium_mob and (dist < 1.03 or dist_feet < 1.6)) or (medium_mob and (dist < 1.165 or dist_feet < 1.73)) or (large_mob and (dist < 1.25 or dist_feet < 1.9)) then
if self.health ~= 0 then
self:damage_mob("cactus", 2)
if self:check_for_death("cactus", {type = "environment",
pos = pos, node = self.standing_in}) then
return true
end
end
end
end
-- is mob standing on the cactus?
if self.standing_on == "mcl_core:cactus" or self.standing_in == "mcl_core:cactus" or self.standing_under == "mcl_core:cactus" then
self:damage_mob("cactus", 2)
if self:check_for_death("cactus", {type = "environment",
pos = pos, node = self.standing_in}) then
return true
end
end
-- Drowning damage -- Drowning damage
if self.breath_max ~= -1 then if self.breath_max ~= -1 then
local drowning = false local drowning = false

72
mods/ENTITIES/mcl_mobs/spawning.lua Normal file → Executable file
View File

@ -16,7 +16,6 @@ local find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air
local get_biome_name = minetest.get_biome_name local get_biome_name = minetest.get_biome_name
local get_objects_inside_radius = minetest.get_objects_inside_radius local get_objects_inside_radius = minetest.get_objects_inside_radius
local get_connected_players = minetest.get_connected_players local get_connected_players = minetest.get_connected_players
local minetest_get_perlin = minetest.get_perlin
local math_random = math.random local math_random = math.random
local math_floor = math.floor local math_floor = math.floor
@ -97,19 +96,6 @@ local mobs_spawn = minetest.settings:get_bool("mobs_spawn", true) ~= false
local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false
local logging = minetest.settings:get_bool("mcl_logging_mobs_spawn",true) local logging = minetest.settings:get_bool("mcl_logging_mobs_spawn",true)
local noise_params = {
offset = 0,
scale = 3,
spread = {
x = 301,
y = 50,
z = 304,
},
seed = 100,
octaves = 3,
persistence = 0.5,
}
-- THIS IS THE BIG LIST OF ALL BIOMES - used for programming/updating mobs -- THIS IS THE BIG LIST OF ALL BIOMES - used for programming/updating mobs
-- Also used for missing parameter -- Also used for missing parameter
-- Please update the list when adding new biomes! -- Please update the list when adding new biomes!
@ -446,7 +432,6 @@ WARNING: BIOME INTEGRATION NEEDED -> How to get biome through lua??
local spawn_dictionary = {} local spawn_dictionary = {}
--this is where all of the spawning information is kept for mobs that don't naturally spawn --this is where all of the spawning information is kept for mobs that don't naturally spawn
local non_spawn_dictionary = {} local non_spawn_dictionary = {}
local summary_chance = 0
function mcl_mobs:spawn_setup(def) function mcl_mobs:spawn_setup(def)
if not mobs_spawn then return end if not mobs_spawn then return end
@ -508,7 +493,6 @@ function mcl_mobs:spawn_setup(def)
check_position = check_position, check_position = check_position,
on_spawn = on_spawn, on_spawn = on_spawn,
} }
summary_chance = summary_chance + chance
end end
function mcl_mobs:mob_light_lvl(mob_name, dimension) function mcl_mobs:mob_light_lvl(mob_name, dimension)
@ -612,10 +596,8 @@ function mcl_mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_
spawn_dictionary[key]["day_toggle"] = day_toggle spawn_dictionary[key]["day_toggle"] = day_toggle
spawn_dictionary[key]["check_position"] = check_position spawn_dictionary[key]["check_position"] = check_position
summary_chance = summary_chance + chance
end end
local two_pi = 2 * math.pi local two_pi = 2 * math.pi
local function get_next_mob_spawn_pos(pos) local function get_next_mob_spawn_pos(pos)
-- TODO We should consider spawning something a little further away sporadically. -- TODO We should consider spawning something a little further away sporadically.
@ -732,6 +714,9 @@ local function spawn_check(pos, spawn_def)
local sky_light = minetest.get_natural_light(pos) local sky_light = minetest.get_natural_light(pos)
local art_light = minetest.get_artificial_light(my_node.param1) local art_light = minetest.get_artificial_light(my_node.param1)
if mob_def.spawn_check then
return mob_def.spawn_check(pos, gotten_light, art_light, sky_light)
elseif mob_type == "monster" then
if dimension == "nether" then if dimension == "nether" then
if art_light <= nether_threshold then if art_light <= nether_threshold then
return true return true
@ -741,20 +726,16 @@ local function spawn_check(pos, spawn_def)
return true return true
end end
elseif dimension == "overworld" then elseif dimension == "overworld" then
if mob_type == "monster" then if art_light <= overworld_threshold and sky_light <= overworld_sky_threshold then
if mob_def.spawn_check then
return mob_def.spawn_check(pos, gotten_light, art_light, sky_light)
elseif art_light <= overworld_threshold and sky_light <= overworld_sky_threshold then
return true return true
end end
end
else else
if mob_def.spawn_check then -- passive threshold is apparently the same in all dimensions ...
return mob_def.spawn_check(pos, gotten_light, art_light, sky_light) if gotten_light > overworld_passive_threshold then
elseif gotten_light > overworld_passive_threshold then
return true return true
end end
end end
end
else else
if gotten_light >= spawn_def.min_light and gotten_light <= spawn_def.max_light then if gotten_light >= spawn_def.min_light and gotten_light <= spawn_def.max_light then
return true return true
@ -876,8 +857,6 @@ minetest.register_chatcommand("spawn_mob",{
if mobs_spawn then if mobs_spawn then
local perlin_noise
-- Get pos to spawn, x and z are randomised, y is range -- Get pos to spawn, x and z are randomised, y is range
@ -974,9 +953,21 @@ if mobs_spawn then
return spawning_position return spawning_position
end end
local cumulative_chance = nil
local mob_library_worker_table = nil
local function initialize_spawn_data()
if not mob_library_worker_table then
mob_library_worker_table = table_copy(spawn_dictionary)
end
if not cumulative_chance then
cumulative_chance = 0
for k, v in pairs(mob_library_worker_table) do
cumulative_chance = cumulative_chance + v.chance
end
end
end
local function spawn_a_mob(pos, cap_space_hostile, cap_space_non_hostile) local function spawn_a_mob(pos, cap_space_hostile, cap_space_non_hostile)
--create a disconnected clone of the spawn dictionary, prevents memory leak
local mob_library_worker_table = table_copy(spawn_dictionary)
local spawning_position = find_spawning_position(pos, FIND_SPAWN_POS_RETRIES) local spawning_position = find_spawning_position(pos, FIND_SPAWN_POS_RETRIES)
if not spawning_position then if not spawning_position then
@ -989,22 +980,25 @@ if mobs_spawn then
--output_mob_stats(mob_counts_wide) --output_mob_stats(mob_counts_wide)
--grab mob that fits into the spawning location --grab mob that fits into the spawning location
--randomly grab a mob, don't exclude any possibilities --use random weighted choice with replacement to grab a mob, don't exclude any possibilities
perlin_noise = perlin_noise or minetest_get_perlin(noise_params) --shuffle table once every loop to provide equal inclusion probability to all mobs
local noise = perlin_noise:get_3d(spawning_position) --repeat grabbing a mob to maintain existing spawn rates
local current_summary_chance = summary_chance local spawn_loop_counter = #mob_library_worker_table
while spawn_loop_counter > 0 do
table.shuffle(mob_library_worker_table) table.shuffle(mob_library_worker_table)
local mob_chance_offset = math_random(1, cumulative_chance)
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 local mob_index = 1
local mob_chance = mob_library_worker_table[mob_index].chance local mob_chance = mob_library_worker_table[mob_index].chance
local step_chance = mob_chance local step_chance = mob_chance
while step_chance < mob_chance_offset do while step_chance < mob_chance_offset do
mob_index = mob_index + 1 mob_index = mob_index + 1
if mob_index <= #mob_library_worker_table then
mob_chance = mob_library_worker_table[mob_index].chance mob_chance = mob_library_worker_table[mob_index].chance
step_chance = step_chance + mob_chance step_chance = step_chance + mob_chance
else
break
end
end end
--minetest.log(mob_def.name.." "..step_chance.. " "..mob_chance) --minetest.log(mob_def.name.." "..step_chance.. " "..mob_chance)
@ -1089,8 +1083,7 @@ if mobs_spawn then
end end
end end
current_summary_chance = current_summary_chance - mob_chance spawn_loop_counter = spawn_loop_counter - 1
table_remove(mob_library_worker_table, mob_index)
end end
end end
@ -1102,6 +1095,7 @@ if mobs_spawn then
timer = timer + dtime timer = timer + dtime
if timer < WAIT_FOR_SPAWN_ATTEMPT then return end if timer < WAIT_FOR_SPAWN_ATTEMPT then return end
initialize_spawn_data()
timer = 0 timer = 0
local players = get_connected_players() local players = get_connected_players()

View File

@ -0,0 +1,2 @@
# textdomain:mcl_paintings
Painting=Quadre

View File

@ -0,0 +1,2 @@
# textdomain:mcl_paintings
Painting=Pintura

View File

@ -305,6 +305,9 @@ Origin of those models:
* `mobs_mc_rabbit_random.*.ogg` (CC0) * `mobs_mc_rabbit_random.*.ogg` (CC0)
* Changes were made. * Changes were made.
* Source: <https://freesound.org/people/Alshred/> * Source: <https://freesound.org/people/Alshred/>
* [epCode]
* `extra_mobs_hoglin*.ogg` (LGPL 3.0)
* Source: <https://git.minetest.land/epCode/extra_mobs/src/branch/master/sounds>
Note: Many of these sounds have been more or less modified to fit the game. Note: Many of these sounds have been more or less modified to fit the game.

View File

@ -171,7 +171,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
4000, 100,
3, 3,
water-16, water-16,
water+1) water+1)

View File

@ -150,7 +150,7 @@ mcl_mobs:spawn_specific(
0, 0,
maxlight, maxlight,
20, 20,
5000, 100,
2, 2,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mobs_mc.water_level-1) mobs_mc.water_level-1)

View File

@ -151,7 +151,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
5000, 1000,
3, 3,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)

View File

@ -157,7 +157,7 @@ mcl_mobs:spawn_specific(
}, },
9, 9,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 17000, 30, 100,
3, 3,
mobs_mc.water_level, mobs_mc.water_level,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -266,7 +266,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
4000, 750,
3, 3,
water-16, water-16,
water+1) water+1)

View File

@ -207,7 +207,7 @@ mcl_mobs:spawn_specific(
9, 9,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
17000, 80,
10, 10,
mobs_mc.water_level, mobs_mc.water_level,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)
@ -225,7 +225,7 @@ mcl_mobs:spawn_specific(
9, 9,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
17000, 80,
5, 5,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -407,7 +407,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
20, 20,
16500, 1000,
2, 2,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -244,7 +244,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
4000, 70,
3, 3,
water-16, water-16,
water+1) water+1)

View File

@ -668,7 +668,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
3000, 100,
12, 12,
mcl_vars.mg_end_min, mcl_vars.mg_end_min,
mcl_vars.mg_end_max) mcl_vars.mg_end_max)
@ -816,7 +816,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
19000, 100,
2, 2,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)
@ -833,7 +833,7 @@ mcl_mobs:spawn_specific(
0, 0,
11, 11,
30, 30,
27500, 100,
4, 4,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)
@ -849,7 +849,7 @@ mcl_mobs:spawn_specific(
0, 0,
11, 11,
30, 30,
5000, 100,
4, 4,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)

View File

@ -20,7 +20,7 @@ mcl_mobs.register_mob("mobs_mc:ghast", {
hp_max = 10, hp_max = 10,
xp_min = 5, xp_min = 5,
xp_max = 5, xp_max = 5,
collisionbox = {-2, 5, -2, 2, 9, 2}, collisionbox = {-2, 0, -2, 2, 4, 2, rotate=true},
visual = "mesh", visual = "mesh",
mesh = "mobs_mc_ghast.b3d", mesh = "mobs_mc_ghast.b3d",
spawn_in_group = 1, spawn_in_group = 1,
@ -33,7 +33,7 @@ mcl_mobs.register_mob("mobs_mc:ghast", {
death = "mobs_mc_zombie_death", death = "mobs_mc_zombie_death",
attack = "mobs_fireball", attack = "mobs_fireball",
random = "mobs_eerie", random = "mobs_eerie",
distance = 16, distance = 80,
-- TODO: damage -- TODO: damage
-- TODO: better death -- TODO: better death
}, },
@ -50,11 +50,11 @@ mcl_mobs.register_mob("mobs_mc:ghast", {
run_start = 0, run_end = 40, run_start = 0, run_end = 40,
}, },
fall_damage = 0, fall_damage = 0,
view_range = 100, view_range = 64,
attack_type = "dogshoot", attack_type = "dogshoot",
arrow = "mobs_mc:fireball", arrow = "mobs_mc:fireball",
shoot_interval = 3.5, shoot_interval = 5,
shoot_offset = -5, shoot_offset = -0.5,
dogshoot_switch = 1, dogshoot_switch = 1,
dogshoot_count_max =1, dogshoot_count_max =1,
passive = false, passive = false,
@ -97,7 +97,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
72000, 400,
2, 2,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)
@ -107,8 +107,9 @@ mcl_mobs.register_arrow("mobs_mc:fireball", {
visual = "sprite", visual = "sprite",
visual_size = {x = 1, y = 1}, visual_size = {x = 1, y = 1},
textures = {"mcl_fire_fire_charge.png"}, textures = {"mcl_fire_fire_charge.png"},
velocity = 15, velocity = 5,
collisionbox = {-.5, -.5, -.5, .5, .5, .5}, collisionbox = {-.5, -.5, -.5, .5, .5, .5},
_lifetime = 10,
_is_fireball = true, _is_fireball = true,
hit_player = function(self, player) hit_player = function(self, player)
@ -130,6 +131,10 @@ mcl_mobs.register_arrow("mobs_mc:fireball", {
damage_groups = {fleshy = 6}, damage_groups = {fleshy = 6},
}, nil) }, nil)
mcl_mobs.mob_class.boom(self,self.object:get_pos(), 1, true) mcl_mobs.mob_class.boom(self,self.object:get_pos(), 1, true)
local ent = mob:get_luaentity()
if not ent or ent.health <= 0 then
awards.unlock(self._puncher:get_player_name(), "mcl:fireball_redir_serv")
end
end, end,
hit_node = function(self, pos, node) hit_node = function(self, pos, node)

View File

@ -237,7 +237,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX + 1, minetest.LIGHT_MAX + 1,
30, 30,
10000, 100,
3, 3,
water - 16, water - 16,
water) water)

View File

@ -31,8 +31,9 @@ local hoglin = {
} }, } },
visual_size = {x=3, y=3}, visual_size = {x=3, y=3},
sounds = { sounds = {
random = "extra_mobs_hoglin", random = "extra_mobs_hoglin.1",
damage = "extra_mobs_hoglin_hurt", damage = "extra_mobs_hoglin_hurt",
death = "extra_mobs_hoglin_hurt",
distance = 16, distance = 16,
}, },
jump = true, jump = true,
@ -92,6 +93,12 @@ local zoglin = table.copy(hoglin)
zoglin.description = S("Zoglin") zoglin.description = S("Zoglin")
zoglin.fire_resistant = 1 zoglin.fire_resistant = 1
zoglin.textures = {"extra_mobs_zoglin.png"} zoglin.textures = {"extra_mobs_zoglin.png"}
sounds = {
random = "extra_mobs_hoglin.2",
damage = "extra_mobs_hoglin_hurt",
death = "extra_mobs_hoglin_hurt",
distance = 16,
}
zoglin.do_custom = function() zoglin.do_custom = function()
return return
end end
@ -129,7 +136,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
6000, 200,
3, 3,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)

View File

@ -44,18 +44,6 @@ local function get_drops(self)
max = 2, max = 2,
looting = "common", looting = "common",
}) })
if self._saddle then
table.insert(self.drops,{name = "mcl_mobitems:saddle",
chance = 1,
min = 1,
max = 1,})
end
if self._chest then
table.insert(self.drops,{name = "mcl_chests:chest",
chance = 1,
min = 1,
max = 1,})
end
end end
-- Helper functions to determine equipment rules -- Helper functions to determine equipment rules
@ -245,10 +233,18 @@ local horse = {
on_die = function(self, pos) on_die = function(self, pos)
-- drop saddle when horse is killed while riding -- drop saddle when horse is killed
if self._saddle then if self._saddle then
minetest.add_item(pos, "mcl_mobitems:saddle") minetest.add_item(pos, "mcl_mobitems:saddle")
end end
-- drop chest when mule/donkey is killed
if self._chest then
minetest.add_item(pos, "mcl_chests:chest")
end
-- drop armor when horse is killed
if self._wearing_armor then
minetest.add_item(pos, self._horse_armor)
end
-- also detach from horse properly -- also detach from horse properly
if self.driver then if self.driver then
mcl_mobs.detach(self.driver, {x = 1, y = 0, z = 1}) mcl_mobs.detach(self.driver, {x = 1, y = 0, z = 1})
@ -401,6 +397,7 @@ local horse = {
-- Put on armor and take armor from player's inventory -- Put on armor and take armor from player's inventory
local armor = minetest.get_item_group(iname, "horse_armor") local armor = minetest.get_item_group(iname, "horse_armor")
self._horse_armor = iname self._horse_armor = iname
self._wearing_armor = true
local w = clicker:get_wielded_item() local w = clicker:get_wielded_item()
if not minetest.is_creative_enabled(clicker:get_player_name()) then if not minetest.is_creative_enabled(clicker:get_player_name()) then
w:take_item() w:take_item()
@ -612,7 +609,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 40,
4, 4,
mobs_mc.water_level+3, mobs_mc.water_level+3,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)
@ -635,7 +632,7 @@ mcl_mobs:spawn_specific(
9, 9,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 10,
4, 4,
mobs_mc.water_level+3, mobs_mc.water_level+3,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -291,7 +291,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 50,
5, 5,
mobs_mc.water_level+15, mobs_mc.water_level+15,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -21,6 +21,7 @@ Mule=Mule
Iron Golem=Golem de fer Iron Golem=Golem de fer
Llama=Lama Llama=Lama
Ocelot=Ocelot Ocelot=Ocelot
Cat=Chat
Parrot=Perroquet Parrot=Perroquet
Pig=Cochon Pig=Cochon
Polar Bear=Ours blanc Polar Bear=Ours blanc
@ -48,8 +49,15 @@ Witch=Sorcière
Wither=Wither Wither=Wither
Wolf=Loup Wolf=Loup
Husk=Zombie Momifié Husk=Zombie Momifié
Baby Husk=Bébé Zombie Momifié
Zombie=Zombie Zombie=Zombie
Zombie Piglin=Zombie Cochon Baby Zombie=Bébé Zombie
Piglin=Piglin
Baby Piglin=Bébé Piglin
Zombie Piglin=Piglin Zombie
Baby Zombie Piglin=Bébé Piglin Zombie
Sword Piglin=Piglin avec une épée
Piglin Brute=Piglin Barbare
Farmer=Fermier Farmer=Fermier
Fisherman=Pêcheur Fisherman=Pêcheur
Fletcher=Archer Fletcher=Archer
@ -69,5 +77,7 @@ Dolphin=Dauphin
Pillager=Pilleur Pillager=Pilleur
Tropical fish=Poisson tropical Tropical fish=Poisson tropical
Hoglin=Hoglin Hoglin=Hoglin
Baby hoglin=Bébé Hoglin
Zoglin=Zoglin
Strider=Arpenteur Strider=Arpenteur
Glow Squid=Poulpe Brillant Glow Squid=Poulpe Brillant

View File

@ -0,0 +1,73 @@
# textdomain: mobs_mc
Agent=Agent
Axolotl=Axolòtl
Bat=Ratapenada
Blaze=Flamor
Chicken=Polet
Cow=Vacha
Mooshroom=Vachairòla
Creeper=Creeper
Ender Dragon=Dragon de Finuèit
Enderman=Finuèairi
Endermite=Finuèibau
Ghast=Òrra
Elder Guardian=Ancian Gardian
Guardian=Gardian
Horse=Ega
Skeleton Horse=Ega Squeleta
Zombie Horse=Ega Zombia
Donkey=Asne
Mule=Miule
Iron Golem=Golem de Fèrre
Llama=Lamà
Ocelot=Ocelòt
Parrot=Papagai
Pig=Cochon
Polar Bear=Ors Blanc
Rabbit=Lapin
Killer Bunny=Lapin Tuaire
Sheep=Moton
Shulker=Coirafin
Silverfish=Peiçon d'Argent
Skeleton=Squeleta
Stray=Trainabiaça
Wither Skeleton=Squeleta Sechaire
Magma Cube=Cube de Magmà
Slime=Slime
Snow Golem=Golem d'Ivèrn
Spider=Aranha
Cave Spider=Aranha Venimósa
Squid=Pofre
Vex=Vex
Evoker=Invocataire
Illusioner=Fisiciaire
Villager=Vialatgés
Vindicator=Vindicataire
Zombie Villager=Vialatgés Zombia
Witch=Fachinèira
Wither=Le Sechaire
Wolf=Lop
Husk=Zombia Momificat
Zombie=Zombia
Zombie Piglin=Porcadés Zombia
Farmer=Boriaire
Fisherman=Peschaire
Fletcher=Archèir
Shepherd=Bergèir
Librarian=Bibliotecaire
Cartographer=Cartografe
Armorer=Armurèir
Leatherworker=Tanaire
Butcher=Maselèir
Weapon Smith=Farjaire d'Armas
Tool Smith=Farjaire d'Otilhs
Cleric=Clerc
Nitwit=Simple
Cod=Merluça
Salmon=Saumon
Dolphin=Daufin
Pillager=Pilhard
Tropical fish=Peiçon tropicau
Hoglin=Porcard
Strider=Trèva
Glow Squid=Pofre Lusent

View File

@ -0,0 +1,83 @@
# textdomain: mobs_mc
Agent=Agente
Axolotl=Axolote
Bat=Morcego
Blaze=Blaze
Chicken=Galinha
Cow=Vaca
Mooshroom=Coguvaca
Creeper=Creeper
Ender Dragon=Dragão do Fim
Enderman=Enderman
Endermite=Endermite
Ghast=Ghast
Elder Guardian=Guardião Ancião
Guardian=Guardião
Horse=Cavalo
Skeleton Horse=Cavalo Esqueleto
Zombie Horse=Cavalo Zumbi
Donkey=Burro
Mule=Mula
Iron Golem=Golem de Ferro
Llama=Lhama
Ocelot=Jaguatirica
Cat=Gato
Parrot=Papagaio
Pig=Porco
Polar Bear=Urso Polar
Rabbit=Coelho
Killer Bunny=Coelho Assassino
Sheep=Ovelha
Shulker=Shulker
Silverfish=Traça
Skeleton=Esqueleto
Stray=Esqueleto Errante
Wither Skeleton=Esqueleto Wither
Magma Cube=Cubo de Magma
Slime=Slime
Snow Golem=Golem de Neve
Spider=Aranha
Cave Spider=Aranha de Caverna
Squid=Lula
Vex=Vex
Evoker=Invocador
Illusioner=Ilusionista
Villager=Aldeão
Vindicator=Vingador
Zombie Villager=Aldeão Zumbi
Witch=Bruxa
Wither=Wither
Wolf=Lobo
Husk=Zumbi-Múmia
Baby Husk=Zumbi-Múmia Bebê
Zombie=Zumbi
Baby Zombie=Zumbi Bebê
Piglin=Piglin
Baby Piglin=Piglin Bebê
Zombie Piglin=Piglin Zumbi
Baby Zombie Piglin=Piglin Zumbi Bebê
Sword Piglin=Piglin Espadachim
Piglin Brute=Piglin Barbáro
Farmer=Fazendeiro
Fisherman=Pescador
Fletcher=Flecheiro
Shepherd=Pastor
Librarian=Bibliotecário
Cartographer=Cartógrafo
Armorer=Armoreiro
Leatherworker=Coureiro
Butcher=Açougueiro
Weapon Smith=Armeiro
Tool Smith=Ferramenteiro
Cleric=Clérigo
Nitwit=Palerma
Cod=Bacalhau
Salmon=Salmão
Dolphin=Golfinho
Pillager=Saqueador
Tropical fish=Peixe Tropical
Hoglin=Hoglin
Baby hoglin=Hoglin Bebê
Zoglin=Zoglin
Strider=Lavagante
Glow Squid=Lula Brilhante

View File

@ -186,7 +186,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 300,
5, 5,
mobs_mc.water_level+15, mobs_mc.water_level+15,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -235,7 +235,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
7, 7,
30000, 400,
1, 1,
mobs_mc.water_level+7, mobs_mc.water_level+7,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -258,7 +258,7 @@ mcl_mobs:spawn_specific(
9, 9,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 100,
8, 8,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -61,8 +61,10 @@ local piglin = {
} }, } },
visual_size = {x=1, y=1}, visual_size = {x=1, y=1},
sounds = { sounds = {
random = "extra_mobs_piglin", random = "mobs_mc_zombiepig_random",
damage = "extra_mobs_piglin_hurt", war_cry = "mobs_mc_zombiepig_war_cry", death = "mobs_mc_zombiepig_death",
damage = "mobs_mc_zombiepig_hurt.2",
death = "mobs_mc_zombiepig_death.2",
distance = 16, distance = 16,
}, },
jump = true, jump = true,
@ -397,7 +399,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
6000, 150,
3, 3,
mcl_vars.mg_lava_nether_max, mcl_vars.mg_lava_nether_max,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)
@ -413,7 +415,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
6000, 150,
3, 3,
mcl_vars.mg_lava_nether_max, mcl_vars.mg_lava_nether_max,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)
@ -429,7 +431,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
6000, 1000,
3, 3,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)
@ -446,7 +448,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
100000, 50,
4, 4,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)

View File

@ -86,7 +86,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
7000, 50,
3, 3,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -148,7 +148,7 @@ mcl_mobs:spawn_specific(
9, 9,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 40,
8, 8,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -220,7 +220,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
4000, 260,
3, 3,
water-16, water-16,
water+1) water+1)

View File

@ -111,7 +111,7 @@ mcl_mobs.register_mob("mobs_mc:sheep", {
run_start = 81, run_end = 121, run_speed = 60, run_start = 81, run_end = 121, run_speed = 60,
eat_start = 121, eat_start = 161, eat_loop = false, eat_start = 121, eat_start = 161, eat_loop = false,
}, },
follow = { "mcl_farming:wheat_item" }, follow = { "mcl_farming:wheat_item", "mcl_shepherd:shepherd_staff" },
view_range = 12, view_range = 12,
-- Eat grass -- Eat grass
@ -379,7 +379,7 @@ mcl_mobs:spawn_specific(
9, 9,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 120,
3, 3,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -35,7 +35,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", {
type = "monster", type = "monster",
spawn_class = "hostile", spawn_class = "hostile",
attack_type = "shoot", attack_type = "shoot",
shoot_interval = 0.5, shoot_interval = 6,
arrow = "mobs_mc:shulkerbullet", arrow = "mobs_mc:shulkerbullet",
shoot_offset = 0.5, shoot_offset = 0.5,
passive = false, passive = false,
@ -43,7 +43,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", {
hp_max = 30, hp_max = 30,
xp_min = 5, xp_min = 5,
xp_max = 5, xp_max = 5,
armor = 150, armor = 20,
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.99, 0.5}, collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.99, 0.5},
visual = "mesh", visual = "mesh",
mesh = "mobs_mc_shulker.b3d", mesh = "mobs_mc_shulker.b3d",
@ -51,7 +51,7 @@ mcl_mobs.register_mob("mobs_mc:shulker", {
-- TODO: sounds -- TODO: sounds
-- TODO: Make shulker dye-able -- TODO: Make shulker dye-able
visual_size = {x=3, y=3}, visual_size = {x=3, y=3},
walk_chance = 0, walk_chance = 10,
knock_back = false, knock_back = false,
jump = false, jump = false,
can_despawn = false, can_despawn = false,
@ -65,15 +65,19 @@ mcl_mobs.register_mob("mobs_mc:shulker", {
looting_factor = 0.0625}, looting_factor = 0.0625},
}, },
animation = { animation = {
stand_speed = 25, walk_speed = 0, run_speed = 50, punch_speed = 25, stand_speed = 25, walk_speed = 25, run_speed = 50, punch_speed = 25,
speed_normal = 25, speed_run = 50, speed_normal = 25, speed_run = 50,
stand_start = 0, stand_end = 25, stand_start = 0, stand_end = 25,
walk_start = 25, walk_end = 45, walk_start = 45, walk_end = 65,
run_start = 45, run_end = 85, walk_loop = false,
run_start = 65, run_end = 85,
run_loop = false,
punch_start = 80, punch_end = 100, punch_start = 80, punch_end = 100,
}, },
view_range = 16, view_range = 16,
fear_height = 0, fear_height = 0,
walk_velocity = 0,
run_velocity = 0,
noyaw = true, noyaw = true,
do_custom = function(self,dtime) do_custom = function(self,dtime)
local pos = self.object:get_pos() local pos = self.object:get_pos()
@ -81,12 +85,13 @@ mcl_mobs.register_mob("mobs_mc:shulker", {
self.object:set_yaw(0) self.object:set_yaw(0)
mcl_mobs:yaw(self, 0, 0, dtime) mcl_mobs:yaw(self, 0, 0, dtime)
end end
if self.state == "walk" or self.state == "stand" then
self.state = "stand"
self:set_animation("stand")
end
if self.state == "attack" then if self.state == "attack" then
self:set_animation("punch") self:set_animation("run")
self.armor = 0
elseif self.state == "stand" then
self.armor = 20
elseif self.state == "walk" or self.state == "run" then
self.armor = 0
end end
self.path.way = false self.path.way = false
self.look_at_players = false self.look_at_players = false
@ -149,6 +154,9 @@ mcl_mobs.register_mob("mobs_mc:shulker", {
end end
end end
end, end,
on_attack = function(self, dtime)
self.shoot_interval = math.random(1, 6)
end,
}) })
-- bullet arrow (weapon) -- bullet arrow (weapon)
@ -156,27 +164,12 @@ mcl_mobs.register_arrow("mobs_mc:shulkerbullet", {
visual = "sprite", visual = "sprite",
visual_size = {x = 0.25, y = 0.25}, visual_size = {x = 0.25, y = 0.25},
textures = {"mobs_mc_shulkerbullet.png"}, textures = {"mobs_mc_shulkerbullet.png"},
velocity = 6, velocity = 5,
homing = true,
hit_player = function(self, player) hit_player = mcl_mobs.get_arrow_damage_func(4),
player:punch(self.object, 1.0, { hit_mob = mcl_mobs.get_arrow_damage_func(4),
full_punch_interval = 1.0,
damage_groups = {fleshy = 4},
}, nil)
end,
hit_mob = function(self, mob)
mob:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 4},
}, nil)
end,
hit_node = function(self, pos, node)
end
}) })
mcl_mobs.register_egg("mobs_mc:shulker", S("Shulker"), "#946694", "#4d3852", 0) mcl_mobs.register_egg("mobs_mc:shulker", S("Shulker"), "#946694", "#4d3852", 0)
mcl_mobs:non_spawn_specific("mobs_mc:shulker","overworld",0,minetest.LIGHT_MAX+1) mcl_mobs:non_spawn_specific("mobs_mc:shulker","overworld",0,minetest.LIGHT_MAX+1)
--[[ --[[

View File

@ -299,7 +299,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
20, 20,
17000, 800,
2, 2,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)
@ -316,7 +316,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
10000, 800,
3, 3,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)
@ -336,7 +336,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
20, 20,
19000, 1200,
2, 2,
mobs_mc.water_level, mobs_mc.water_level,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -116,7 +116,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
5000, 500,
5, 5,
mcl_vars.mg_nether_min, mcl_vars.mg_nether_min,
mcl_vars.mg_nether_max) mcl_vars.mg_nether_max)

View File

@ -6,6 +6,7 @@ local MAPBLOCK_SIZE = 16
local seed = minetest.get_mapgen_setting("seed") local seed = minetest.get_mapgen_setting("seed")
local slime_chunk_match local slime_chunk_match
local slime_chunk_spawn_max = mcl_worlds.layer_to_y(40)
local x_modifier local x_modifier
local z_modifier local z_modifier
@ -166,11 +167,11 @@ local swamp_light_max = 7
local function slime_spawn_check(pos, environmental_light, artificial_light, sky_light) local function slime_spawn_check(pos, environmental_light, artificial_light, sky_light)
local maxlight = swamp_light_max local maxlight = swamp_light_max
if is_slime_chunk(pos) then if pos.y <= slime_chunk_spawn_max and is_slime_chunk(pos) then
maxlight = minetest.LIGHT_MAX + 1 maxlight = minetest.LIGHT_MAX + 1
end end
return artificial_light <= maxlight return math.max(artificial_light, sky_light) <= maxlight
end end
-- Slime -- Slime
@ -183,7 +184,7 @@ local slime_big = {
hp_max = 16, hp_max = 16,
xp_min = 4, xp_min = 4,
xp_max = 4, xp_max = 4,
collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02, rotate = true},
visual_size = {x=12.5, y=12.5}, visual_size = {x=12.5, y=12.5},
textures = {{"mobs_mc_slime.png", "mobs_mc_slime.png"}}, textures = {{"mobs_mc_slime.png", "mobs_mc_slime.png"}},
visual = "mesh", visual = "mesh",
@ -197,7 +198,7 @@ local slime_big = {
distance = 16, distance = 16,
}, },
damage = 4, damage = 4,
reach = 3, reach = 2.5,
armor = 100, armor = 100,
drops = {}, drops = {},
-- TODO: Fix animations -- TODO: Fix animations
@ -235,10 +236,10 @@ slime_small.hp_min = 4
slime_small.hp_max = 4 slime_small.hp_max = 4
slime_small.xp_min = 2 slime_small.xp_min = 2
slime_small.xp_max = 2 slime_small.xp_max = 2
slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51, rotate = true}
slime_small.visual_size = {x=6.25, y=6.25} slime_small.visual_size = {x=6.25, y=6.25}
slime_small.damage = 3 slime_small.damage = 3
slime_small.reach = 2.75 slime_small.reach = 2.25
slime_small.walk_velocity = 1.8 slime_small.walk_velocity = 1.8
slime_small.run_velocity = 1.8 slime_small.run_velocity = 1.8
slime_small.jump_height = 4.3 slime_small.jump_height = 4.3
@ -252,10 +253,10 @@ slime_tiny.hp_min = 1
slime_tiny.hp_max = 1 slime_tiny.hp_max = 1
slime_tiny.xp_min = 1 slime_tiny.xp_min = 1
slime_tiny.xp_max = 1 slime_tiny.xp_max = 1
slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505, rotate = true}
slime_tiny.visual_size = {x=3.125, y=3.125} slime_tiny.visual_size = {x=3.125, y=3.125}
slime_tiny.damage = 0 slime_tiny.damage = 1
slime_tiny.reach = 2.5 slime_tiny.reach = 2
slime_tiny.drops = { slime_tiny.drops = {
-- slimeball -- slimeball
{name = "mcl_mobitems:slimeball", {name = "mcl_mobitems:slimeball",
@ -321,7 +322,7 @@ cave_biomes,
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
12000, 1000,
4, 4,
cave_min, cave_min,
cave_max, cave_max,
@ -335,7 +336,7 @@ swampy_biomes,
0, 0,
swamp_light_max, swamp_light_max,
30, 30,
12000, 1000,
4, 4,
swamp_min, swamp_min,
swamp_max) swamp_max)
@ -348,7 +349,7 @@ cave_biomes,
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
8500, 1000,
4, 4,
cave_min, cave_min,
cave_max, cave_max,
@ -362,7 +363,7 @@ swampy_biomes,
0, 0,
swamp_light_max, swamp_light_max,
30, 30,
8500, 1000,
4, 4,
swamp_min, swamp_min,
swamp_max) swamp_max)
@ -375,7 +376,7 @@ cave_biomes,
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
10000, 1000,
4, 4,
cave_min, cave_min,
cave_max, cave_max,
@ -389,7 +390,7 @@ swampy_biomes,
0, 0,
swamp_light_max, swamp_light_max,
30, 30,
10000, 1000,
4, 4,
swamp_min, swamp_min,
swamp_max) swamp_max)
@ -403,7 +404,7 @@ local magma_cube_big = {
hp_max = 16, hp_max = 16,
xp_min = 4, xp_min = 4,
xp_max = 4, xp_max = 4,
collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02, rotate = true},
visual_size = {x=12.5, y=12.5}, visual_size = {x=12.5, y=12.5},
textures = {{ "mobs_mc_magmacube.png", "mobs_mc_magmacube.png" }}, textures = {{ "mobs_mc_magmacube.png", "mobs_mc_magmacube.png" }},
visual = "mesh", visual = "mesh",
@ -418,7 +419,7 @@ local magma_cube_big = {
walk_velocity = 2.5, walk_velocity = 2.5,
run_velocity = 2.5, run_velocity = 2.5,
damage = 6, damage = 6,
reach = 3, reach = 2.35,
armor = 53, armor = 53,
drops = { drops = {
{name = "mcl_mobitems:magma_cream", {name = "mcl_mobitems:magma_cream",
@ -463,10 +464,10 @@ magma_cube_small.hp_min = 4
magma_cube_small.hp_max = 4 magma_cube_small.hp_max = 4
magma_cube_small.xp_min = 2 magma_cube_small.xp_min = 2
magma_cube_small.xp_max = 2 magma_cube_small.xp_max = 2
magma_cube_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} magma_cube_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51, rotate = true}
magma_cube_small.visual_size = {x=6.25, y=6.25} magma_cube_small.visual_size = {x=6.25, y=6.25}
magma_cube_small.damage = 3 magma_cube_small.damage = 3
magma_cube_small.reach = 2.75 magma_cube_small.reach = 2.1
magma_cube_small.walk_velocity = .8 magma_cube_small.walk_velocity = .8
magma_cube_small.run_velocity = 2.0 magma_cube_small.run_velocity = 2.0
magma_cube_small.jump_height = 6 magma_cube_small.jump_height = 6
@ -485,13 +486,13 @@ magma_cube_tiny.hp_min = 1
magma_cube_tiny.hp_max = 1 magma_cube_tiny.hp_max = 1
magma_cube_tiny.xp_min = 1 magma_cube_tiny.xp_min = 1
magma_cube_tiny.xp_max = 1 magma_cube_tiny.xp_max = 1
magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505, rotate = true}
magma_cube_tiny.visual_size = {x=3.125, y=3.125} magma_cube_tiny.visual_size = {x=3.125, y=3.125}
magma_cube_tiny.walk_velocity = 1.02 magma_cube_tiny.walk_velocity = 1.02
magma_cube_tiny.run_velocity = 1.02 magma_cube_tiny.run_velocity = 1.02
magma_cube_tiny.jump_height = 4 magma_cube_tiny.jump_height = 4
magma_cube_tiny.damage = 3 magma_cube_tiny.damage = 3
magma_cube_tiny.reach = 2.5 magma_cube_tiny.reach = 2
magma_cube_tiny.armor = 50 magma_cube_tiny.armor = 50
magma_cube_tiny.drops = {} magma_cube_tiny.drops = {}
magma_cube_tiny.spawn_small_alternative = nil magma_cube_tiny.spawn_small_alternative = nil
@ -512,7 +513,7 @@ magma_cube_biomes,
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 100,
4, 4,
nether_min, nether_min,
nether_max) nether_max)
@ -525,7 +526,7 @@ magma_cube_biomes,
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15500, 100,
4, 4,
nether_min, nether_min,
nether_max) nether_max)
@ -538,7 +539,7 @@ magma_cube_biomes,
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
16000, 100,
4, 4,
nether_min, nether_min,
nether_max) nether_max)

Binary file not shown.

Binary file not shown.

View File

@ -287,7 +287,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
17000, 1000,
2, 2,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -211,7 +211,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
5500, 80,
3, 3,
water-16, water-16,
water+1) water+1)

View File

@ -225,7 +225,7 @@ mcl_mobs:spawn_setup({
}, },
min_height = mcl_vars.mg_nether_min, min_height = mcl_vars.mg_nether_min,
max_height = mcl_vars.mg_nether_max, max_height = mcl_vars.mg_nether_max,
chance = 2000, chance = 200,
}) })
mcl_mobs:spawn_setup({ mcl_mobs:spawn_setup({
@ -241,7 +241,7 @@ mcl_mobs:spawn_setup({
}, },
min_height = mcl_vars.mg_nether_min, min_height = mcl_vars.mg_nether_min,
max_height = mcl_vars.mg_nether_max, max_height = mcl_vars.mg_nether_max,
chance = 100, chance = 20,
}) })
-- spawn eggs -- spawn eggs

View File

@ -183,7 +183,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
4000, 750,
3, 3,
water-16, water-16,
water+1) water+1)

View File

@ -37,6 +37,7 @@ mcl_mobs.register_mob("mobs_mc:vex", {
walk_velocity = 3.2, walk_velocity = 3.2,
run_velocity = 5.9, run_velocity = 5.9,
attack_type = "dogfight", attack_type = "dogfight",
attack_frequency = 2,
sounds = { sounds = {
-- TODO: random -- TODO: random
death = "mobs_mc_vex_death", death = "mobs_mc_vex_death",
@ -63,10 +64,13 @@ mcl_mobs.register_mob("mobs_mc:vex", {
self.object:set_properties({textures=self.base_texture}) self.object:set_properties({textures=self.base_texture})
end end
else else
if self.base_texture[2] == "mobs_mc_vex_charging.png" then
self.base_texture[2] = "mobs_mc_vex.png"
end
if self.base_texture[1] ~= "default_tool_steelsword.png" then if self.base_texture[1] ~= "default_tool_steelsword.png" then
self.base_texture[1] = "default_tool_steelsword.png" self.base_texture[1] = "default_tool_steelsword.png"
self.object:set_properties({textures=self.base_texture})
end end
self.object:set_properties({textures=self.base_texture})
end end
-- Take constant damage if the vex' life clock ran out -- Take constant damage if the vex' life clock ran out

View File

@ -1941,6 +1941,7 @@ local trade_inventory = {
if not wanted2:is_empty() then if not wanted2:is_empty() then
inv:remove_item("input", inv:get_stack("wanted", 2)) inv:remove_item("input", inv:get_stack("wanted", 2))
end end
local name = player:get_player_name()
local trader = player_trading_with[name] local trader = player_trading_with[name]
minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name(),object=trader.object}, true) minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name(),object=trader.object}, true)
end end
@ -2335,7 +2336,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
20, 2,
4, 4,
mobs_mc.water_level+1, mobs_mc.water_level+1,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -42,6 +42,7 @@ mcl_mobs.register_mob("mobs_mc:evoker", {
run_velocity = 1.4, run_velocity = 1.4,
group_attack = true, group_attack = true,
attack_type = "dogfight", attack_type = "dogfight",
attack_frequency = 15,
-- Summon vexes -- Summon vexes
custom_attack = function(self, to_attack) custom_attack = function(self, to_attack)
if not spawned_vexes[self] then spawned_vexes[self] = {} end if not spawned_vexes[self] then spawned_vexes[self] = {} end
@ -64,7 +65,6 @@ mcl_mobs.register_mob("mobs_mc:evoker", {
table.insert(spawned_vexes[self],ent) table.insert(spawned_vexes[self],ent)
end end
end, end,
shoot_interval = 15,
passive = false, passive = false,
drops = { drops = {
{name = "mcl_core:emerald", {name = "mcl_core:emerald",
@ -86,6 +86,11 @@ mcl_mobs.register_mob("mobs_mc:evoker", {
}, },
view_range = 16, view_range = 16,
fear_height = 4, fear_height = 4,
on_spawn = function(self)
self.timer = 15
return true
end,
}) })
-- spawn eggs -- spawn eggs

View File

@ -225,7 +225,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
4090, 50,
4, 4,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -463,7 +463,7 @@ mcl_mobs.register_arrow("mobs_mc:wither_skull", {
}, },
velocity = 7, velocity = 7,
rotate = 90, rotate = 90,
_lifetime = 350, _lifetime = 15,
on_punch = function(self) end, on_punch = function(self) end,
-- direct hit -- direct hit
@ -516,7 +516,7 @@ mcl_mobs.register_arrow("mobs_mc:wither_skull_strong", {
}, },
velocity = 4, velocity = 4,
rotate = 90, rotate = 90,
_lifetime = 500, _lifetime = 25,
on_punch = function(self) end, on_punch = function(self) end,
-- direct hit -- direct hit

View File

@ -224,7 +224,7 @@ mcl_mobs:spawn_specific(
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
9000, 80,
7, 7,
mobs_mc.water_level+3, mobs_mc.water_level+3,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -243,7 +243,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
6000, 1000,
4, 4,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)
@ -332,7 +332,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
60000, 50,
4, 4,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)
@ -348,7 +348,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
6500, 2400,
4, 4,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)
@ -362,7 +362,7 @@ mcl_mobs:spawn_specific(
0, 0,
7, 7,
30, 30,
65000, 120,
4, 4,
mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_min,
mcl_vars.mg_overworld_max) mcl_vars.mg_overworld_max)

View File

@ -1,4 +1,3 @@
# textdomain: lightning # textdomain: lightning
@1 was struck by lightning.=@ 1 fue alcanzado por un rayo. Let lightning strike at the specified position or player.No parameter will strike yourself.=Deje que un rayo golpee en la posición especificada o jugador.Ningún parámetro le golpeará a usted mismo.
Let lightning strike at the specified position or yourself=Deje que un rayo golpee en la posición especificada o sobre usted mismo.
No position specified and unknown player=Ninguna posición especificada y jugador desconocido No position specified and unknown player=Ninguna posición especificada y jugador desconocido

View File

@ -0,0 +1,3 @@
# textdomain: lightning
Let lightning strike at the specified position or player. No parameter will strike yourself.=Deixa o relâmpago acertar a posição ou jogador especificado. Nenhum parâmetro irá acertar você mesmo.
No position specified and unknown player=Nenhuma posição especificada e jogador desconhecido

View File

@ -0,0 +1,2 @@
# textdomain: mcl_raids
Ominous Banner=Bannière de mauvais augure

View File

@ -0,0 +1,2 @@
# textdomain: mcl_raids
Ominous Banner=Estandarte Ameaçador

View File

@ -0,0 +1,3 @@
# textdomain: mcl_void_damage
The void is off-limits to you!=O vazio está fora dos limites para você!
@1 fell into the endless void.=@1 caiu em um vazio sem fim.

View File

@ -0,0 +1,8 @@
# textdomain: mcl_weather
Gives ability to control weather=Dá a habilidade de controlar o clima
Changes the weather to the specified parameter.=Muda o clima para o parâmetro especificado.
Error: No weather specified.=Erro: Nenhum clima especificado.
Error: Invalid parameters.=Erro: Parâmetros inválidos.
Error: Duration can't be less than 1 second.=Erro: Duração não pode ser menor que 1 segundo.
Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Erro: Clima especificado é inválido. Use "clear", "rain", "snow" ou "thunder".
Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Alterna entre clima limpo e clima com quedas (aleatoriamente chuva, tempestade ou neve)

View File

@ -120,12 +120,13 @@ mcl_weather.skycolor = {
override_day_night_ratio = function(player, ratio) override_day_night_ratio = function(player, ratio)
local meta = player:get_meta() local meta = player:get_meta()
local has_night_vision = meta:get_int("night_vision") == 1 local has_night_vision = meta:get_int("night_vision") == 1
local is_visited_shepherd = meta:get_int("mcl_shepherd:special") == 1
local arg local arg
-- Apply night vision only for dark sky -- Apply night vision only for dark sky
local is_dark = minetest.get_timeofday() > 0.8 or minetest.get_timeofday() < 0.2 or mcl_weather.state ~= "none" local is_dark = minetest.get_timeofday() > 0.8 or minetest.get_timeofday() < 0.2 or mcl_weather.state ~= "none"
local pos = player:get_pos() local pos = player:get_pos()
local dim = mcl_worlds.pos_to_dimension(pos) local dim = mcl_worlds.pos_to_dimension(pos)
if has_night_vision and is_dark and dim ~= "nether" and dim ~= "end" then if (has_night_vision or is_visited_shepherd) and is_dark and dim ~= "nether" and dim ~= "end" then
if ratio == nil then if ratio == nil then
arg = NIGHT_VISION_RATIO arg = NIGHT_VISION_RATIO
else else

View File

@ -123,7 +123,7 @@ any level=qualquer nível
level 0=nível 0 level 0=nível 0
level 0-@1=nivel 0-@1 level 0-@1=nivel 0-@1
unknown=desconhecido unknown=desconhecido
Unknown item (@1)=Item desconhecido Unknown item (@1)=Item desconhecido (@1)
• @1: @2= • @1: @2=
• @1: @2 HP= • @1: @2 HP=
• @1: @2, @3= • @1: @2, @3=

View File

@ -15,7 +15,7 @@
and = e and = e
1 second=1 segundo 1 second=1 segundo
A transparent block, basically empty space. It is usually left behind after digging something.=Um bloco transparente, basicamente um vazio. Isso geralmente fica no lugar de um bloco removido. A transparent block, basically empty space. It is usually left behind after digging something.=Um bloco transparente, basicamente um vazio. Isso geralmente fica no lugar de um bloco removido.
Air=Ár Air=Ar
Blocks=Blocos Blocks=Blocos
Building another block at this block will place it inside and replace it.=Construir outro bloco nesse bloco vai subistitui-lo. Building another block at this block will place it inside and replace it.=Construir outro bloco nesse bloco vai subistitui-lo.
Building this block is completely silent.=Construir esse bloco é completamente silencioso. Building this block is completely silent.=Construir esse bloco é completamente silencioso.
@ -129,12 +129,12 @@ Unknown item (@1)=Item desconhecido (@1)
• @1: @2, @3= • @1: @2, @3=
• Flowing range: @1= • Flowing range: @1=
• No flowing= • No flowing=
• Not renewable= • Not renewable=• Não renovável
• Renewable= • Renewable=• Renovável
• Viscosity: @1= • Viscosity: @1=• Viscosidade: @1
Itemstring: "@1"= Itemstring: "@1"=
Durability: @1 uses= Durability: @1 uses=Durabilidade: @1 usos
Durability: @1= Durability: @1=Durabilidade: @1
Mining durability:= Mining durability:=
• @1, level @2: @3 uses= • @1, level @2: @3 uses=
• @1, level @2: Unlimited= • @1, level @2: Unlimited=

View File

@ -0,0 +1,37 @@
# textdomain: craftguide
Any shulker box=Qualquer caixa shulker
Any wool=Qualquer lã
Any wood planks=Quaisquer tábuas de madeira
Any wood=Qualquer madeira
Any sand=Qualquer areia
Any normal sandstone=Qualquer arenito normal
Any red sandstone=Qualquer arenito vermelho
Any carpet=Qualquer carpete
Any dye=Qualquer tintura
Any water bucket=Qualquer balde de água
Any flower=Qualquer flor
Any mushroom=Qualquer cogumelo
Any wooden slab=Qualquer laje de madeira
Any wooden stairs=Quaisquer escadas de madeira
Any coal=Qualquer carvão
Any kind of quartz block=Qualquer tipo de bloco de quartzo
Any kind of purpur block=Qualquer tipo de bloco de purpúra
Any stone bricks=Quaisquer tijolos de pedra
Any stick=Qualquer graveto
Any item belonging to the @1 group=Qualquer item pertencente ao grupo @1
Any item belonging to the groups: @1=Qualquer item pertencente aos grupos: @1
Search=Pesquisar
Reset=Resetar
Previous page=Página anterior
Next page=Página posterior
Usage @1 of @2=Uso @1 de @2
Recipe @1 of @2=Receita @1 de @2
Burning time: @1=Tempo de queima: @1
Cooking time: @1=Tempo de cozimento: @1
Recipe is too big to be displayed (@1×@2)=Receita é muito grande para ser mostrada (@1x@2)
Shapeless=Sem forma
Cooking=Cozimento
Increase window size=Aumentar tamanho da janela
Decrease window size=Diminuir tamanho da janela
No item to show=Nenhum item para mostrar
Collect items to reveal more recipes=Colete itens para revelar mais receitas

View File

@ -2,6 +2,7 @@
Water can flow into this block and cause it to drop as an item.= Water can flow into this block and cause it to drop as an item.=
This block can be turned into dirt with a hoe.= This block can be turned into dirt with a hoe.=
This block can be turned into farmland with a hoe.= This block can be turned into farmland with a hoe.=
This block can be turned into grass path with a shovel.=
This block acts as a soil for all saplings.= This block acts as a soil for all saplings.=
This block acts as a soil for some saplings.= This block acts as a soil for some saplings.=
Sugar canes will grow on this block.= Sugar canes will grow on this block.=

View File

@ -447,7 +447,7 @@ The values for X, Y and Z work like this:=Les valeurs pour X, Y et Z fonctionnen
You can view your current position in the debug screen (open with [F5]).=Vous pouvez afficher votre position actuelle dans l'écran de débogage (ouvrir avec [F5]). You can view your current position in the debug screen (open with [F5]).=Vous pouvez afficher votre position actuelle dans l'écran de débogage (ouvrir avec [F5]).
# MCL2 extensions # MCL2 extensions
Creative Mode=Mode Creatif Creative Mode=Mode créatif
Enabling Creative Mode in MineClone 2 applies the following changes:=L'activation du mode créatif dans MineClone 2 applique les modifications suivantes : Enabling Creative Mode in MineClone 2 applies the following changes:=L'activation du mode créatif dans MineClone 2 applique les modifications suivantes :
• You keep the things you've placed=• Vous gardez les choses que vous avez placées • You keep the things you've placed=• Vous gardez les choses que vous avez placées
• Creative inventory is available to obtain most items easily=• Un inventaire créatif est disponible pour obtenir facilement la plupart des objets • Creative inventory is available to obtain most items easily=• Un inventaire créatif est disponible pour obtenir facilement la plupart des objets

View File

@ -25,7 +25,7 @@ Minetest is a free software game engine for games based on voxel gameplay, inspi
The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest (also called “subgames”) can, however, be much more complex than this.=L'utente è gettat* in un enorme mondo fatto di cubi o blocchi. Questi cubi normalmente compongono il panorama e possono essere tolti o messi quasi completamente liberamente. Usando gli oggetti raccolti, si possono assemblare nuovi strumenti e altri oggetti. I giochi in Minetest (chiamati anche "subgame") possono, comunque, essere molto più complessi. The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest (also called “subgames”) can, however, be much more complex than this.=L'utente è gettat* in un enorme mondo fatto di cubi o blocchi. Questi cubi normalmente compongono il panorama e possono essere tolti o messi quasi completamente liberamente. Usando gli oggetti raccolti, si possono assemblare nuovi strumenti e altri oggetti. I giochi in Minetest (chiamati anche "subgame") possono, comunque, essere molto più complessi.
A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Una caratteristica centrale di Minetest è la capacità integrata di usare moduli. I moduli modificano l'esperienza di gioco esistente. Possono essere tanto semplici da aggiungere qualche blocco decorativo o essere molto complessi, per esempio introducendo concetti di gioco totalmente nuovi, generare un tipo di mondo completamente diverso, e molte altre cose. A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Una caratteristica centrale di Minetest è la capacità integrata di usare moduli. I moduli modificano l'esperienza di gioco esistente. Possono essere tanto semplici da aggiungere qualche blocco decorativo o essere molto complessi, per esempio introducendo concetti di gioco totalmente nuovi, generare un tipo di mondo completamente diverso, e molte altre cose.
Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetest può essere giocato localmente o in rete assieme a più utenti. Il gioco in rete funzionerà immediatamente senza nessun modulo, senza bisogno di programmi aggiuntivi perché interamente forniti dal server. Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetest può essere giocato localmente o in rete assieme a più utenti. Il gioco in rete funzionerà immediatamente senza nessun modulo, senza bisogno di programmi aggiuntivi perché interamente forniti dal server.
Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums <https://forum.minetest.net/viewforum.php?f=48>.=Minetest generalmente include un gioco predefinito semplice, chiamato "Minetest Game" (mostrato nelle immagini 1 e 2). Probabilmente lo avete già. Altri giochi per Minetest possono essere scaricati dai forum ufficiali di Minetest <https://forum.minetest.net/viewforum.php?f=48>. Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums <https://forum.minetest.net/viewforum.php?f@=48>.=Minetest generalmente include un gioco predefinito semplice, chiamato "Minetest Game" (mostrato nelle immagini 1 e 2). Probabilmente lo avete già. Altri giochi per Minetest possono essere scaricati dai forum ufficiali di Minetest <https://forum.minetest.net/viewforum.php?f@=48>.
Sneaking=Strisciare Sneaking=Strisciare
Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Strisciare vi fa camminare più lentamente e vi impedisce di cadere dal bordo di un blocco. Sneaking makes you walk slower and prevents you from falling off the edge of a block.=Strisciare vi fa camminare più lentamente e vi impedisce di cadere dal bordo di un blocco.
To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Per strisciare, tenete premuto il tasto per strisciare (predefinito [Maiusc]). Quando lo rilasciate, smettete di strisciare. Fate attenzione: quando rilasciate il tasto per strisciare vicino a un orlo, potreste cadere! To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=Per strisciare, tenete premuto il tasto per strisciare (predefinito [Maiusc]). Quando lo rilasciate, smettete di strisciare. Fate attenzione: quando rilasciate il tasto per strisciare vicino a un orlo, potreste cadere!
@ -396,7 +396,7 @@ Note that “transparency” here only means that the block is able to carry bri
Coordinates=Coordinate Coordinates=Coordinate
The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Il mondo di Minetest è un grande cubo. E per questo, una posizione nel mondo può essere facilmente espressa tramite coordinate Cartesiane. Cioè, per ogni posizione nel mondo, esistono tre valori: X, Y e Z. The Minetest world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=Il mondo di Minetest è un grande cubo. E per questo, una posizione nel mondo può essere facilmente espressa tramite coordinate Cartesiane. Cioè, per ogni posizione nel mondo, esistono tre valori: X, Y e Z.
Like this: (5, 45, -12)=Come questi: (5, 45, -12) Like this: (5, 45, -12)=Come questi: (5, 45, -12)
This refers to the position where X=5, Y=45 and Z=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Ciò si riferisce alla posizione dove X=5 (si legga “X vale 5”, NdT), Y=45 e Z=-12. Le tre lettere sono chiamate “assi”: Y si riferisce all'altezza. X e Z si riferiscono alla posizione orizzontale. This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=Ciò si riferisce alla posizione dove X@=5 (si legga “X vale 5”, NdT), Y@=45 e Z@=-12. Le tre lettere sono chiamate “assi”: Y si riferisce all'altezza. X e Z si riferiscono alla posizione orizzontale.
The values for X, Y and Z work like this:=I valori di X, Y e Z funzionano così: The values for X, Y and Z work like this:=I valori di X, Y e Z funzionano così:
• If you go up, Y increases=• Se salite, Y aumenta • If you go up, Y increases=• Se salite, Y aumenta
• If you go down, Y decreases=• Se scendete, Y diminuisce • If you go down, Y decreases=• Se scendete, Y diminuisce

View File

@ -0,0 +1,48 @@
# textdomain: mcl_tt
Head armor=Armadura para la cabeza
Torso armor=Armadura para el torso
Legs armor=Armadura para las piernas
Feet armor=Armadura para los pies
Armor points: @1=Puntos de armadura: @1
Armor durability: @1=Durabilidad de armadura: @1
Protection: @1%=Protección: @1%
Hunger points: +@1=Puntos de hambre: +@1
Saturation points: +@1=Puntos de saturación: +@1
Deals damage when falling=Causa daño al caer
Grows on grass blocks or dirt=Crece sobre bloques de pasto o tierra
Grows on grass blocks, podzol, dirt or coarse dirt=Crece sobre bloques de pasto, podsol, tierra o tierra estéril
Flammable=Inflamable
Zombie view range: -50%=Rango de visión zombie: -50%
Skeleton view range: -50%=Rango de visión de esqueleto: -50%
Creeper view range: -50%=Rango de visión de creeper: -50%
Damage: @1=Daño: @1
Damage (@1): @2=Daño (@1): @2
Healing: @1=Curación: @1
Healing (@1): @2=Curación (@1): @2
Full punch interval: @1s=Intervalo de golpe completo: @1s
Contact damage: @1 per second=Daño por contacto: @1 por segundo
Contact healing: @1 per second=Curación por contacto: @1 por segundo
Drowning damage: @1=Dañor por ahogamiento: @1
Bouncy (@1%)=Rebota (@1%)
Luminance: @1=Luminancia: @1
Slippery=Resbaladizo
Climbable=Escalable
Climbable (only downwards)=Escalable (solo hacia abajo)
No jumping=No saltar
No swimming upwards=No nadar hacia arriba
No rising=No levantar
Fall damage: @1%=Daño por caída: @1%
Fall damage: +@1%=Daño por caída: @1%
No fall damage=Sin daño por caída
Mining speed: @1=Velocidad de minado: @1
Very fast=Muy rápido
Extremely fast=Extremadamente rápido
Fast=Rápido
Slow=Lento
Very slow=Muy lento
Painfully slow=Dolorosamente lento
Mining durability: @1=Durabilidad de minería: @1
Block breaking strength: @1=Fuerza para romper bloques: @1
@1 uses=@1 usos
Unlimited uses=Usos ilimitados
Durability: @1=Durabilidad: @1

View File

@ -0,0 +1,48 @@
# textdomain: mcl_tt
Head armor=Armadura de cabeça
Torso armor=Armadura de torso
Legs armor=Armadura de pernas
Feet armor=Armadura de pés
Armor points: @1=Pontos de armadura: @1
Armor durability: @1=Durabilidade da armadura: @1
Protection: @1%=Proteção: @1%
Hunger points: +@1=Pontos de fome: +@1
Saturation points: +@1=Pontos de saturação: +@1
Deals damage when falling=Dá dano enquanto cai
Grows on grass blocks or dirt=Cresce em blocos de grama ou terra
Grows on grass blocks, podzol, dirt or coarse dirt=Cresce em blocos de grama, podzol, terra ou terra infértil
Flammable=Inflamável
Zombie view range: -50%=Alcançe de visão do zumbi: -50%
Skeleton view range: -50%=Alcançe de visão do esqueleto: -50%
Creeper view range: -50%=Alcançe de visão do creeper: -50%
Damage: @1= Dano: @1
Damage (@1): @2=Dano (@1): @2
Healing: @1=Cura: @1
Healing (@1): @2=Cura (@1): @2
Full punch interval: @1s=Intervalo completo de batida: @1s
Contact damage: @1 per second=Dano por contaro: @1 por segundo
Contact healing: @1 per second=Cura por contato: @1 por segundo
Drowning damage: @1=Dano de afogamento: @1
Bouncy (@1%)=Saltitante (@1%)
Luminance: @1=Bliho: @1
Slippery=Escorregadio
Climbable=Escalável
Climbable (only downwards)=Escalável (apenas em descida)
No jumping=Sem pulo
No swimming upwards=Sem natação em subida
No rising=Sem levantamento
Fall damage: @1%=Dano de queda: @1%
Fall damage: +@1%=Dano de queda: +@1%
No fall damage=Sem dano de queda
Mining speed: @1=Velocidade de mineração: @1
Very fast=Muito rápido
Extremely fast=Extremamente rápido
Fast=Rápido
Slow=Lento
Very slow=Muito lento
Painfully slow=Dolorosamente lento
Mining durability: @1=Durabilidade de mineração: @1
Block breaking strength: @1=Força de quebra do bloco: @1
@1 uses=@1 usos
Unlimited uses=Usos ilimitados
Durability: @1=Durabilidade: @1

View File

@ -217,7 +217,9 @@ function awards.unlock(name, award)
-- Get award -- Get award
minetest.log("action", name.." has gotten award "..award) minetest.log("action", name.." has gotten award "..award)
if minetest.settings:get_bool("mcl_showAdvancementMessages", true) then
minetest.chat_send_all(S("@1 has made the advancement @2", name, minetest.colorize(mcl_colors.GREEN, "[" .. (awdef.title or award) .. "]"))) minetest.chat_send_all(S("@1 has made the advancement @2", name, minetest.colorize(mcl_colors.GREEN, "[" .. (awdef.title or award) .. "]")))
end
data.unlocked[award] = award data.unlocked[award] = award
awards.save() awards.save()

View File

@ -1,7 +1,7 @@
# textdomain:awards # textdomain:awards
@1: @2=@1: @2 @1: @2=@1: @2
@1 (got)=@1 (erhalten) @1 (got)=@1 (erhalten)
@1s awards:=Auszeichnungen von @: @1s awards:=Auszeichnungen von @1:
(Secret Advancement)=(Geheime Auszeichnung) (Secret Advancement)=(Geheime Auszeichnung)
Achievement gotten!=Auszeichnung erhalten! Achievement gotten!=Auszeichnung erhalten!
Achievement gotten:=Auszeichnung erhalten: Achievement gotten:=Auszeichnung erhalten:

View File

@ -62,3 +62,9 @@ Advancement “@1” does not exist.=Le progrès «@1» n'existe pas.
Mine a block: @1=Miner un bloc : @1 Mine a block: @1=Miner un bloc : @1
Mine blocks: @1×@2=Miner des blocs : @1×@2 Mine blocks: @1×@2=Miner des blocs : @1×@2
Awards are disabled, enable them first by using /awards enable!=Les récompenses sont désactivées, activez les d'abord en utilisant /awards enable ! Awards are disabled, enable them first by using /awards enable!=Les récompenses sont désactivées, activez les d'abord en utilisant /awards enable !
Goal Completed:=Objectif atteint :
Goal Completed!=Objectif atteint !
Goal Completed: @1=Objectif atteint : @1
Challenge Completed:=Défi relevé :
Challenge Completed!=Défi relevé !
Challenge Completed: @1=Défi relevé : @1

View File

@ -0,0 +1,6 @@
# textdomain: hudbars
Health=Saúde
Breath=Respiração
# Default format string for progress bar-style HUD bars, e.g. “Health 5/20”
@1: @2/@3=@1: @2/@3

View File

@ -550,6 +550,13 @@ awards.register_achievement("mcl:obsidian", {
type = "Advancement", type = "Advancement",
group = "Overworld", group = "Overworld",
}) })
awards.register_achievement("mcl:fireball_redir_serv", {
title = S("Fireball Redirection Service"),
description = S("Defeat a ghast with his own weapon."),
icon = "mcl_fire_fire_charge.png",
type = "Advancement",
group = "Nether",
})
awards.register_achievement("mcl:hero_of_the_village", { awards.register_achievement("mcl:hero_of_the_village", {
title = S("Hero of the Village"), title = S("Hero of the Village"),

View File

@ -108,7 +108,10 @@ Put lava in a bucket.=Pon lava en un cubo.
Hero of the Village=Héroe de la aldea Hero of the Village=Héroe de la aldea
Successfully defend a village from a raid=Defiende una aldea de una invasión Successfully defend a village from a raid=Defiende una aldea de una invasión
Voluntary Exile=Exilio voluntario Voluntary Exile=Exilio voluntario
Kill a raid captain. Maybe consider staying away from the local villages for the time being...=Mata al capitán de una invasión. Kill a raid captain. Maybe consider staying away from the local villages for the time being...=Mata al capitán de una invasión. Sería mejor alejarte de las aldeas por un tiempo...
Sería mejor alejarte de las aldeas por un tiempo...
Tactical Fishing=Pesca táctica Tactical Fishing=Pesca táctica
Catch a fish... without a fishing rod!=Atrapa a un pez... ¡sin una caña de pescar! Catch a fish... without a fishing rod!=Atrapa a un pez... ¡sin una caña de pescar!
Crafting a New Look=Forjando una nueva imagen
Craft a trimmed armor at a Smithing Table=Decora una armadura en una mesa de herrería
Smithing with Style=Forjando con estilo
Apply these smithing templates at least once: Spire, Snout, Rib, Ward, Silence, Vex, Tide, Wayfinder=Aplica estos moldes de herrería al menos una vez: agujas, hocico, costillas, guardián, silencio, vex, mareas, buscacaminos

View File

@ -15,7 +15,7 @@ Eat a cooked porkchop.=Mangez du porc cuit.
Eat a cooked rabbit.=Mangez du lapin cuit. Eat a cooked rabbit.=Mangez du lapin cuit.
Get really desperate and eat rotten flesh.=Soyez vraiment désespéré et mangez de la chair pourrie. Get really desperate and eat rotten flesh.=Soyez vraiment désespéré et mangez de la chair pourrie.
Getting Wood=Obtenir du bois Getting Wood=Obtenir du bois
Getting an Upgrade=Obtenir une augmentation de niveau Getting an Upgrade=Obtenir une amélioration
Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Frappez un squelette, wither squelette ou stray à l'arc et à la flèche à une distance d'au moins 20 mètres. Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Frappez un squelette, wither squelette ou stray à l'arc et à la flèche à une distance d'au moins 20 mètres.
Hot Topic=Sujet brûlant Hot Topic=Sujet brûlant
Into Fire=Dans le feu Into Fire=Dans le feu
@ -111,3 +111,7 @@ Voluntary Exile=Exil volontaire
Kill a raid captain. Maybe consider staying away from the local villages for the time being...=Tuez un capitaine de pillards. Mieux vaut rester loin des villages pour l'instant... Kill a raid captain. Maybe consider staying away from the local villages for the time being...=Tuez un capitaine de pillards. Mieux vaut rester loin des villages pour l'instant...
Tactical Fishing=Pêche tactique Tactical Fishing=Pêche tactique
Catch a fish... without a fishing rod!=Attrapez un poisson... sans canne à pêche ! Catch a fish... without a fishing rod!=Attrapez un poisson... sans canne à pêche !
Crafting a New Look=Motif de Jalousie
Craft a trimmed armor at a Smithing Table=Fabriquez une pièce d'armure ornée sur la table de forge
Smithing with Style=La classe de la cuirasse
Apply these smithing templates at least once: Spire, Snout, Rib, Ward, Silence, Vex, Tide, Wayfinder=Appliquez ces modèles de forge au moins une fois : Tour, Groin, Côte, Abîme, Silence, Vex, Marée, Éclaireur

View File

@ -5,10 +5,15 @@ Contributors=Contributeurs
Creator of MineClone=Créateur de MineClone Creator of MineClone=Créateur de MineClone
Creator of MineClone2=Créateur de MineClone2 Creator of MineClone2=Créateur de MineClone2
Developers=Développeurs Developers=Développeurs
Past Developers=Anciens Développeurs
Jump to speed up (additionally sprint)=Saut pour accélérer (peut être combiné avec sprint) Jump to speed up (additionally sprint)=Saut pour accélérer (peut être combiné avec sprint)
Maintainers=Mainteneurs Maintainers=Mainteneurs
Previous Maintainers=Anciens Mainteneurs
MineClone5=MineClone5 MineClone5=MineClone5
Original Mod Authors=Auteurs des mods originaux Original Mod Authors=Auteurs des mods originaux
Sneak to skip=Shift pour passer Sneak to skip=Shift pour passer
Textures=Textures Textures=Textures
Translations=Traductions Translations=Traductions
Music=Musique
Funders=Fondateurs
Special thanks=Remerciements spéciaux

View File

@ -0,0 +1,19 @@
# textdomain: mcl_credits
3D Models=Modelos 3D
A faithful Open Source clone of Minecraft=Um clone fiel Open Source do Minecraft
Contributors=Colaboradores
Creator of MineClone=Criador do MineClone
Creator of MineClone2=Criador do MineClone2
Developers=Desenvolvedores
Past Developers=Desenvolvedores Passados
Jump to speed up (additionally sprint)=Pule para acelerar (arrancada adicional)
Maintainers=Mantedores
Previous Maintainers=Mantedores Anteriores
MineClone5=MineClone5
Original Mod Authors=Autores Originais do Mod
Sneak to skip=Agache para pular
Textures=Texturas
Translations=Traduções
Music=Músicas
Funders=Financiadores
Special thanks=Agradecimentos especiais

View File

@ -10,30 +10,32 @@ return {
}}, }},
{S("Maintainers"), 0xFF51D5, { {S("Maintainers"), 0xFF51D5, {
"AncientMariner", "AncientMariner",
"Nicu", "Herowl",
}}, }},
{S("Previous Maintainers"), 0xFFFFFF, { {S("Previous Maintainers"), 0xFFFFFF, {
"Fleckenstein", "Fleckenstein",
"cora", "cora",
"Nicu",
}}, }},
{S("Developers"), 0xF84355, { {S("Developers"), 0xF84355, {
"AFCMS", "AFCMS",
"epCode", "epCode",
"chmodsayshello", "chmodsayshello",
"PrairieWind",
"MrRar", "MrRar",
"FossFanatic ", "FossFanatic ",
"SmokeyDope", "SmokeyDope",
"Faerraven / Michieal",
"Codiac",
}}, }},
{S("Past Developers"), 0xF84355, { {S("Past Developers"), 0xF84355, {
"jordan4ibanez", "jordan4ibanez",
"iliekprogrammar", "iliekprogrammar",
"kabou", "kabou",
"kay27", "kay27",
"Faerraven / Michieal",
"MysticTempest", "MysticTempest",
"NO11", "NO11",
"SumianVoice", "SumianVoice",
"PrairieWind",
}}, }},
{S("Contributors"), 0x52FF00, { {S("Contributors"), 0x52FF00, {
"RandomLegoBrick", "RandomLegoBrick",
@ -114,6 +116,21 @@ return {
"Niterux", "Niterux",
"appgurueu", "appgurueu",
"seventeenthShulker", "seventeenthShulker",
"DinoNuggies4665",
"basxto",
"Morik666",
"Eliy21",
"mdk",
"Alessandra Lozoya",
"VanicGame",
"ThePython10110",
"Araca",
"Montandalar",
"mim",
"Dark",
"Bakawun",
"JoseDouglas26",
"Zasco",
}}, }},
{S("Music"), 0xA60014, { {S("Music"), 0xA60014, {
"Jordach for the jukebox music compilation from Big Freaking Dig", "Jordach for the jukebox music compilation from Big Freaking Dig",
@ -157,6 +174,7 @@ return {
"cora", "cora",
"Faerraven / Michieal", "Faerraven / Michieal",
"PrairieWind", "PrairieWind",
"ChrisPHP",
}}, }},
{S("3D Models"), 0x0019FF, { {S("3D Models"), 0x0019FF, {
"22i", "22i",
@ -164,6 +182,7 @@ return {
"epCode", "epCode",
"Faerraven / Michieal", "Faerraven / Michieal",
"SumianVoice", "SumianVoice",
"thunder1035",
}}, }},
{S("Textures"), 0xFF9705, { {S("Textures"), 0xFF9705, {
"XSSheep", "XSSheep",
@ -180,8 +199,11 @@ return {
"Faerraven / Michieal", "Faerraven / Michieal",
"Nicu", "Nicu",
"Exhale", "Exhale",
"Aeonix_Aeon",
"Wbjitscool", "Wbjitscool",
"SmokeyDope", "SmokeyDope",
"thunder1035",
"Herowl",
}}, }},
{S("Translations"), 0x00FF60, { {S("Translations"), 0x00FF60, {
"Wuzzy", "Wuzzy",
@ -201,6 +223,10 @@ return {
"Temak", "Temak",
"megustanlosfrijoles", "megustanlosfrijoles",
"kbundg", "kbundg",
"Isaac Dennis",
"ADLON",
"Sab Pyrope",
"JoseDouglas26",
}}, }},
{S("Funders"), 0xF7FF00, { {S("Funders"), 0xF7FF00, {
"40W", "40W",

View File

@ -156,7 +156,6 @@ mcl_death_messages = {
plain = "@1 died a sweet death", plain = "@1 died a sweet death",
assist = "@1 was poked to death by a sweet berry bush whilst trying to escape @2", assist = "@1 was poked to death by a sweet berry bush whilst trying to escape @2",
}, },
-- Missing snowballs: The Minecraft wiki mentions them but the MC source code does not.
}, },
} }

View File

@ -0,0 +1,55 @@
# textdomain: mcl_death_messages
@1 went up in flames=@1 pegou fogo
@1 walked into fire whilst fighting @2=@1 caminhou no fogo enquanto lutava contra @2
@1 was struck by lightning=@1 foi atingido(a) por um raio
@1 was struck by lightning whilst fighting @2=@1 foi atingido(a) por um raio enquanto lutava contra @2
@1 burned to death=@1 queimou até a morte
@1 was burnt to a crisp whilst fighting @2=@1 foi queimado até a crocância enquanto lutava contra @2
@1 tried to swim in lava=@1 tentou nadar em lava
@1 tried to swim in lava to escape @2=@1 tentou nadar em lava para escapar de @2
@1 discovered the floor was lava=@1 descobriu que o chão era lava
@1 walked into danger zone due to @2=@1 caminhou numa zona perigosa por conta de @2
@1 suffocated in a wall=@1 sufocou em uma parede
@1 suffocated in a wall whilst fighting @2=@1 sufocou em uma parede enquanto lutava contra @2
@1 drowned=@1 se afogou
@1 drowned whilst trying to escape @2=@1 se afogou enquanto tentava escapar de @2
@1 starved to death=@1 morreu de fome
@1 starved to death whilst fighting @2=@1 morreu de fome enquanto lutava contra @2
@1 was pricked to death=@1 foi espetado até a morte
@1 walked into a cactus whilst trying to escape @2=@1 caminhou até um cacto enquanto tentava escapar de @2
@1 hit the ground too hard=@1 bateu muito forte no chão
@1 hit the ground too hard whilst trying to escape @2=@1 bateu muito forte no chão enquanto tentava escapar de @2
@1 experienced kinetic energy=@1 experienciou a energia cinética
@1 experienced kinetic energy whilst trying to escape @2=@1 experienciou a energia cinética enquanto tentava escapar de @2
@1 fell out of the world=@1 caiu do mundo
@1 didn't want to live in the same world as @2=@1 não queria viver no mesmo mundo que @2
@1 died=@1 morreu
@1 died because of @2=@1 morreu por conta de @2
@1 was killed by magic=@1 foi morto(a) por magia
@1 was killed by magic whilst trying to escape @2=@1 foi morto(a) por magia enquanto tentava escapar de @2
@1 was killed by @2 using magic=@1 foi morto(a) por @2 usando magia
@1 was killed by @2 using @3=@1 foi morto(a) por @2 usando @3
@1 was roasted in dragon breath=@1 foi assado(a) no bafo do dragão
@1 was roasted in dragon breath by @2=@1 foi assado(a) no bafo do dragão por @2
@1 withered away=@1 apodreceu
@1 withered away whilst fighting @2=@1 apodreceu enquanto lutava contra @2
@1 was shot by a skull from @2=@1 foi acertado(a) por um crânio vindo de @2
@1 was squashed by a falling anvil=@1 foi esmagado(a) por uma bigorna em queda
@1 was squashed by a falling anvil whilst fighting @2=@1 foi esmagado(a) por uma bigorna enquanto lutava contra @2
@1 was squashed by a falling block=@1 foi esmagado(a) por um bloco em queda
@1 was squashed by a falling block whilst fighting @2=@1 foi esmagado(a) por um bloco em queda enquanto lutava contra @2
@1 was slain by @2=@1 foi assassinado por @2
@1 was slain by @2 using @3=@1 foi assassinado por @2 usando @3
@1 was shot by @2=@1 foi acertado(a) por @2
@1 was shot by @2 using @3=@1 foi acertado(a) por @2 usando @3
@1 was fireballed by @2=@1 foi atingido(a) por uma bola de fogo de @2
@1 was fireballed by @2 using @3=@1 foi atingido(a) por uma bola de fogo de @2 usando @3
@1 was killed trying to hurt @2=@1 foi morto(a) tentando machucar @2
@1 tried to hurt @2 and died by @3=@1 tentou machucar @2 e morreu por conta de @3
@1 blew up=@1 explodiu
@1 was blown up by @2=@1 foi explodido por @2
@1 was blown up by @2 using @3=@1 foi explodido por @2 usando @3
@1 was squished too much=@1 foi esmagado(a) demais
@1 was squashed by @2=@1 foi esmagado(a) por @2
@1 went off with a bang=@1 saiu com um estrondo
@1 went off with a bang due to a firework fired by @2 from @3=@1 saiu com um estrondo por conta de um fogo de artifício disparado por @2 vindo de @3

View File

@ -0,0 +1,8 @@
# textdomain: mcl_experience
[[<player>] <xp>]=[[<jogador>] <xp>]
Gives a player some XP=Dá algum XP a um jogador
Error: Too many parameters!=Erro: Muitos parâmetros
Error: Incorrect value of XP=Erro: Valor incorreto de XP
Error: Player not found=Erro: Jogador não encontrado
Added @1 XP to @2, total: @3, experience level: @4=Adicionado @1 XP para @2, total: @3, nível de experiência: @4
Bottle o' Enchanting=Frasco de Experiência

View File

@ -155,7 +155,7 @@ minetest.register_entity("mcl_experience:orb", {
collisionbox = {-0.2, -0.2, -0.2, 0.2, 0.2, 0.2}, collisionbox = {-0.2, -0.2, -0.2, 0.2, 0.2, 0.2},
visual = "sprite", visual = "sprite",
visual_size = {x = 0.4, y = 0.4}, visual_size = {x = 0.4, y = 0.4},
textures = {name="mcl_experience_orb.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}}, textures = {"mcl_experience_orb.png"},
spritediv = {x = 1, y = 14}, spritediv = {x = 1, y = 14},
initial_sprite_basepos = {x = 0, y = 0}, initial_sprite_basepos = {x = 0, y = 0},
is_visible = true, is_visible = true,

View File

@ -0,0 +1,2 @@
# textdomain:hbarmor
Armor=Armadura

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