1
0
mirror of https://codeberg.org/tenplus1/mobs_redo.git synced 2025-07-14 14:20:29 +02:00

Compare commits

...

322 Commits

Author SHA1 Message Date
84377ee259 fix on_pick_up example in api.txt 2025-06-14 08:51:26 +01:00
5077217497 in peaceful mode dont register monster abm's 2025-06-03 13:41:39 +01:00
bae9cb12e2 add missing log level (thx Niklp) 2025-05-30 07:45:47 +01:00
126e5afc24 default active_block_range to 4 if not set 2025-05-26 07:23:15 +01:00
112c512c6e add mob repellent info 2025-05-25 13:32:46 +01:00
0f5b0e382d add recipe for mob repellent 2025-05-23 12:45:56 +01:00
5ed3a34cf3 remove self.attack_players check from do_punch 2025-05-20 08:13:06 +01:00
f44441c580 remove tester 2025-05-17 07:44:15 +01:00
2cf43ffc4e fix fear_height defaults 2025-05-17 07:43:26 +01:00
0d6b794fa0 default fear_height to 2 2025-05-16 10:46:45 +01:00
42da759407 tamed npc/animal wont attack players unless provoked 2025-05-15 15:44:22 +01:00
c0c4c3ea48 tweak general_attack 2025-05-15 14:34:38 +01:00
f5817061ce little tidy 2025-05-11 11:01:32 +01:00
43ad058efa change minetest. to core. 2025-05-04 12:25:59 +01:00
b977431e21 is_node_dangerous only if damage > 0 2025-05-01 08:01:12 +01:00
68b25c9d08 use tnt or mcl_explosions for mobs:boom 2025-04-11 10:12:30 +01:00
24adcae920 add self check in tnt boom 2025-04-11 08:46:01 +01:00
16a04547ab fix texture name 2025-04-10 09:42:58 +01:00
3a7b1bbfe6 added mobs_heart_particle.png 2025-04-09 15:15:41 +01:00
01a60d9a55 add particles to replace defaults 2025-04-09 15:11:47 +01:00
99f4fc1768 move deprecated functions from api to compatibility.lua 2025-04-08 08:33:25 +01:00
027620bfa3 tidy comments, change float var 2025-04-05 12:09:03 +01:00
854834f04e deprecate self.jump and add mobs.compatibility_check function. 2025-04-04 10:12:46 +01:00
5fb7b91db0 fix typo 2025-03-20 08:06:40 +00:00
badb889cf3 add 'mob_infotext' setting 2025-03-20 08:05:24 +00:00
ca7aeec95a add nil check on_punch 2025-03-18 08:06:40 +00:00
14f391bf2c add ukrainian translation (thx Fromkaniv) 2025-03-15 16:37:52 +00:00
0bf3915315 return func 2025-03-12 08:16:26 +00:00
b81c2aeab6 update dates, add sound_play check 2025-03-12 08:03:17 +00:00
0a62f05132 add mob repellent 2025-02-09 12:12:52 +00:00
9f472fb690 tweak do_jump 2025-02-04 15:06:59 +00:00
c62b013825 add pick_up and on_pick_up features. 2025-02-04 10:21:10 +00:00
4b825b3e86 call do_punch after damage calculated 2025-02-01 13:57:27 +00:00
f09b6d1730 pass mesh to arrow (thx kiedtl) 2025-01-20 08:00:26 +00:00
a3ede86365 update api.txt 2025-01-19 08:15:33 +00:00
4b556a4d16 pass damage to do_punch 2025-01-18 08:17:11 +00:00
01e015dc0f disable is_mob flag, something fishy with mineclonia 2025-01-17 08:08:24 +00:00
d7998a9ea7 abort on_step when mob expires (thx tour-ist) 2025-01-09 16:20:23 +00:00
57fe6cf2e3 tweak & tidy code, exploding mobs brighten and glow 2024-12-28 11:19:44 +00:00
b170b51f2d tweak do_jump so mobs dont jump on carpets 2024-12-26 11:08:36 +00:00
dca4159fc4 code tidy 2024-12-26 08:48:35 +00:00
219d477c2a wee tidy 2024-12-20 10:49:52 +00:00
c8e91d1958 tweak spawning 2024-12-19 07:36:23 +00:00
22d7ea79fd fix riding gravity 2024-12-13 15:49:52 +00:00
c24874a3bf fix map_load chance check 2024-12-08 10:33:54 +00:00
c25975e7ea fix typo 2024-12-02 06:34:28 +00:00
03ce8ada6b tweak/tidy, check env damage when riding mob 2024-12-01 12:18:44 +00:00
cc60499637 tweak n tidy 2024-11-30 12:35:22 +00:00
58792311c7 add immune_to check to is_node_dangerous function 2024-11-28 13:07:53 +00:00
527fe8c2d5 add nodes to immune_to ability. 2024-11-27 08:22:09 +00:00
6a7c221ce1 fix boom texture 2024-11-22 14:13:22 +00:00
b8052c817c replace empty var 2024-11-22 14:08:34 +00:00
e17ea86bf5 restore mobs:boom order 2024-11-22 08:11:25 +00:00
ca76558edd switch node/entity setting in mobs:boom 2024-11-21 15:35:07 +00:00
bde53c3475 add mobs:is_invisible() function, update api.txt 2024-11-16 08:16:55 +00:00
2e4664a5ce use invisibility mod api 2024-11-14 08:17:41 +00:00
39f9f8df31 add reach option to replace function. 2024-11-13 11:04:27 +00:00
1b1f681886 tidy spawning 2024-11-10 11:41:32 +00:00
627d468b9a add replace sound, tweak spawn egg y_pos 2024-10-28 13:27:39 +00:00
e9c3d6c505 add brazilian translation (thx pixelzone) 2024-10-26 10:21:27 +01:00
1f8ca901b5 fix russian typo 2024-10-23 08:02:34 +01:00
816461286b update russian translation (thx SkyBuilder1717) 2024-10-22 17:00:17 +01:00
430af1e91d add 'mobs_disable_damage_kb' setting 2024-10-20 09:19:52 +01:00
79fb4f7ead disable follow_stop 2024-10-19 15:06:59 +01:00
f746f4b1e0 fix knockback when breeding 2024-10-12 10:27:25 +01:00
e59fd53ee9 make sure def.gain has a value 2024-10-11 10:24:07 +01:00
faf511ff8c fix visharm indicate on active 2024-10-10 11:30:22 +01:00
a35afc8299 disable node hearing by default 2024-10-10 10:37:47 +01:00
219db764bf forgot def.loudness check 2024-10-02 15:51:05 +01:00
e4a5ead82c pass def onto hearing nodes 2024-10-02 15:13:37 +01:00
f4861ced2a add on_sound node support and example. 2024-10-02 14:57:07 +01:00
1dd81eb008 tweak mob hear function 2024-10-01 09:08:52 +01:00
64c6085f09 wee jump bug 2024-09-17 09:43:01 +01:00
e8e774566b tweak collision, falling and arrow drops. 2024-09-14 12:25:52 +01:00
e55bf4d951 mob hear nil check for player 2024-09-14 07:51:06 +01:00
f1b5a66049 lil tweak 2024-09-08 15:55:26 +01:00
26215cd221 add min_y and max_y to spawning abm/lbm's 2024-08-23 17:37:51 +01:00
29314186b3 tweak damage 2024-08-23 15:07:08 +01:00
dce2abfcfe add missing glass sounds 2024-08-11 08:41:25 +01:00
e561864e82 udpate api.txt 2024-08-11 08:17:02 +01:00
59c19fca98 update german translation 2024-08-10 17:39:01 +01:00
a8297e6a8e tidy and tweak code, implement sound check for mineclon* 2024-08-10 13:18:57 +01:00
bc6b8931da tidy code 2024-08-09 14:46:28 +01:00
3e24677649 Add basic mineclonia enchantments (sharpness, fire_aspect, knockback) 2024-08-09 09:15:06 +01:00
57d6859b93 tweak loudness calculation for mod hearing 2024-08-04 08:25:48 +01:00
1f6867bf25 alternative to using on_punch for hearing ability, remove food xp desc 2024-08-03 23:47:21 +01:00
b1da38456d quick value change for mob listening 2024-08-03 16:59:44 +01:00
341f92f118 harden sound_play checks 2024-08-03 11:56:52 +01:00
c3d74394a7 update readme 2024-08-03 11:43:14 +01:00
964451fd78 add mob hearing feature and self.on_sound() function 2024-08-03 11:35:28 +01:00
ef9f492bad update {eatable} function 2024-07-27 18:28:44 +01:00
79c85e0551 code tidy 2024-07-27 08:33:22 +01:00
cc14704651 add helper function for {eatable} 2024-07-26 17:00:58 +01:00
8115f61ac9 add {eatable} group to food items and update infotext 2024-07-26 14:42:34 +01:00
77b53b9054 fix timer bug 2024-07-16 07:21:50 +01:00
fc7269cc8c remove fallback node from inventory and update version 2024-07-01 09:28:05 +01:00
fb2a247d31 change fall_damage check to use true/false 2024-07-01 07:49:03 +01:00
03fbe477c3 shrink fallback node image 2024-06-29 08:25:15 +01:00
91be60be9b add fallback node for when [game] doesn't have dirt alias defined 2024-06-29 08:22:33 +01:00
e11f383589 harden mob limit check 2024-06-20 07:58:04 +01:00
313382dcaa increase go_to time to 20 and add force flag to do_attack 2024-05-25 07:50:16 +01:00
1536b9a5fc add mob_class:go_to(pos) function 2024-05-24 17:28:35 +01:00
be2d630fdf add ":" to beginning of egg registration to help with mobs registered outwith mod name 2024-05-05 07:55:49 +01:00
99bea53af3 make on_death compatible (return either player or nil) 2024-04-26 11:07:08 +01:00
d20dfa0b41 added check for on_death() function before api's own on_die() 2024-04-26 07:44:39 +01:00
e9180febc6 fix baby mob textures when grown 2024-04-25 08:29:48 +01:00
c4561a2207 mount.lua nil check 2024-04-16 10:41:01 +01:00
998637fc3d added infotext and mob follows improvements (thx Kazooo) 2024-04-08 08:37:59 +01:00
de0914312c stop swimming mobs going above water surface 2024-04-02 09:16:59 +01:00
5a6ec7080f attacking mobs should stay inside their own medium 2024-04-01 14:54:55 +01:00
129b24b159 add entity name in infotext 2024-03-12 11:13:16 +00:00
35cc60c355 tweak saddle recipe, fix spawner error 2024-03-08 15:04:58 +00:00
903b1e34df fix default self.state 2024-03-03 17:30:22 +00:00
87d13c857f replace :distance with get_distance() function 2024-03-03 17:09:30 +00:00
17dafff8ef add attack_ignore feature (thx ShadowOfHassen for idea) 2024-03-01 16:01:18 +00:00
95f3e98867 set is_ground_content for spawner and meat blocks (thx SwissAlpS) 2024-02-27 08:05:02 +00:00
b3b89e6dea fix spawner chance 2024-02-23 17:12:14 +00:00
822e78fd32 tweak player detection (thx whosit) 2024-02-23 17:09:42 +00:00
dd9b3d7add if punch_attack_uses is 0 then dont add wear to tool 2024-02-20 07:47:37 +00:00
d4a25064ea use alternative to colorspec_to_bytes 2024-02-01 08:34:46 +00:00
70118fc8da only update object props when changes (thx whosit) 2024-01-31 09:59:31 +00:00
7c7a7345af change nametag texture and description to stand out from mineclone version 2024-01-30 08:02:17 +00:00
ceefbcec39 add some missing mineclone groups 2024-01-29 16:01:59 +00:00
97771f8e65 add self.node_damage flag (true by default) 2024-01-26 13:05:43 +00:00
1cacb02a6a add missing formspec escape 2024-01-21 09:34:45 +00:00
47e91b9b6b add pint sized rune to shrink tamed animals 2024-01-12 10:44:39 +00:00
a6a3b44c96 ability to override initial_properties when using minetest.add_entity() 2023-12-29 08:41:45 +00:00
be7b6bc5fe can now add 'nametag = "mob name"' in mob definition 2023-12-05 08:23:04 +00:00
68076c7626 add back arrows physical setting 2023-12-02 07:47:13 +00:00
099d15d810 mob arrows now use raycasting to be more accurate 2023-11-29 12:11:45 +00:00
412066fc07 add support for visual_harm_1ndicators mod (thx Mantar) 2023-11-20 07:57:20 +00:00
bb66ffe335 simplify homing 2023-11-16 11:57:07 +00:00
682d76d7b3 add 'homing' setting to mob definition so that arrows can follow player when visible. 2023-11-16 10:00:10 +00:00
d1f23e8ed8 add spawn check for collisionbox 2023-11-11 07:33:30 +00:00
9e27f45663 add self.attack_patience to add custom times, add self.attack nil check to pathfinding 2023-11-06 07:56:18 +00:00
ac5486cc58 tidy code, stop mob attacking if player isnt seen for 11 seconds 2023-11-05 16:30:05 +00:00
712f7f85fd Fix mob damage and jumping when riding mob. 2023-10-28 15:22:45 +01:00
6049a1c140 update api.txt 2023-10-26 07:17:17 +01:00
ba79c2f1f1 check for fire/lava in mob collisionbox area 2023-10-26 07:15:55 +01:00
ed74f3c4c4 add :is_inside() function (thx cora for idea) 2023-10-24 09:34:20 +01:00
a62bfe3828 tweak spawn log msg 2023-10-22 11:48:21 +01:00
bf79985730 harden spawn log message 2023-10-22 11:35:40 +01:00
ce47b81da5 mobs:add_mob() can now set mob texture 2023-10-15 11:25:20 +01:00
768ef84bd8 use api functions for riding mob 2023-10-13 08:31:55 +01:00
71e620eb0f revert kb change 2023-10-12 08:23:41 +01:00
221029e857 add taming countdown infotext, fix knockback 2023-10-12 08:06:57 +01:00
e8adf9b244 only show breed infotext if mob can breed 2023-10-11 10:41:58 +01:00
457eb1838c code tweaks 2023-10-08 16:44:42 +01:00
7f1ad09870 fix nil var 2023-10-08 07:41:06 +01:00
812f18430c moved mob entities to use initial_properties 2023-10-07 12:13:07 +01:00
56f4eb4274 add missing prop checks, update WIP api 2023-10-05 14:05:41 +01:00
f1daaa4a14 update api.txt 2023-10-05 13:07:02 +01:00
6172203e0e change self.nametag to self._nametag (get_properties causing issue) 2023-10-05 12:56:15 +01:00
c173345135 use self.backup_properties instead of self.initial_properties 2023-10-05 11:54:44 +01:00
55bdc4c0a4 fix nametag glitch in add_mob 2023-10-04 17:16:22 +01:00
93e8d0f4fa use get/set properties for entity settings 2023-10-04 17:00:03 +01:00
d15389b675 add api_WIP.lua (initial_properties testing) 2023-10-03 16:27:27 +01:00
da54b9e141 backup existing vars into initial_properties for future compatibility 2023-09-30 11:30:51 +01:00
ca2758622c tidy breed function 2023-09-27 12:24:13 +01:00
9f9a522ec7 Revert initial_properties change, breaks too many routines 2023-09-26 07:48:48 +01:00
55e07dbdd3 add default to visual_size 2023-09-25 13:16:23 +01:00
96e4d5190e initial_properties #2 2023-09-23 13:42:23 +01:00
130d67a8f7 initial_properties update 2023-09-23 13:31:49 +01:00
7044e20382 fix typo 2023-08-17 07:30:28 +01:00
c48821df03 non-passive mobs fight back when attacked (thx fluxionary) 2023-08-16 09:00:35 +01:00
33c78e87d0 fix missing FS 2023-08-13 10:36:33 +01:00
3ca3d656cb update translation (thanks Niklp) 2023-08-13 10:07:09 +01:00
32231d5043 remove optional dependents (dye, farming) 2023-08-09 13:13:01 +01:00
131c932aa6 tweak for mineclone and 5.x 2023-08-09 13:08:54 +01:00
5e96602085 remove intllib 2023-08-08 16:58:57 +01:00
b1ad4451a7 add ":" to beginning of entity registration 2023-08-07 08:09:08 +01:00
af7eafc22c tweak velocity changes 2023-08-05 18:10:06 +01:00
042130baca added 'mob_log_spawn' setting to log mob spawning position. 2023-07-30 11:56:08 +01:00
747af786a8 player nil check for mob attach 2023-07-29 08:34:09 +01:00
8201c165e7 can now ride mobs redo mobs in mineclone2 2023-07-27 12:54:46 +01:00
07dce8208b harden is_player checks 2023-07-26 17:43:40 +01:00
e2ee5c62c7 tidy compat 2023-07-26 14:15:03 +01:00
f31cf75b24 better MineClone2 compatibility for api, items and crafts 2023-07-26 13:43:06 +01:00
3106c4c859 change mobs_swing.ogg to mono 2023-07-20 12:25:27 +01:00
dcc702848f can now add nodes to 'runaway_from' table 2023-07-15 08:58:18 +01:00
cc0798b617 add check to see what hit mob, player or entity for immune_to 2023-07-02 17:17:14 +01:00
e32d87c70d add damage_per_second nil check 2023-06-13 07:58:17 +01:00
cf18cd43de on_breed spawns child a little higher 2023-06-09 08:32:59 +01:00
70b562c371 remove htimer, tweak update_tag() 2023-06-07 08:21:34 +01:00
5f80d7a031 add mtobjid mod to optional dependencies, stop mob count going below 0 2023-06-06 08:49:45 +01:00
cc71ea4e95 tweak child textures when growing 2023-05-27 19:29:01 +01:00
b42f7c63c8 added check to be sure creatura mod enabled 2023-05-26 16:27:01 +01:00
05f0550876 monsters will always attack creatura mobs, anything else will defend it's owner if attacked. 2023-05-26 16:17:58 +01:00
194c9f7847 added 'mobs_attack_creatura' setting for monsters to attack Creatura mob mobs 2023-05-26 14:04:50 +01:00
267ee57837 fix jumping when on need to 2023-05-24 07:22:36 +01:00
992d6319de updated readme 2023-05-19 08:53:23 +01:00
b16eefa0ec add 'mob_node_timer_interval' and 'mob_main_timer_interval' settings to handle function timings 2023-05-19 08:46:37 +01:00
29bc2f27f2 have separate get_nodes function for nodes around mob, update api.txt 2023-05-18 11:19:28 +01:00
1e3d26937e tweak do_jump for better blockage checks 2023-05-18 08:53:08 +01:00
ce53afcfdb when attacking dont call unecessary functions every step 2023-05-17 11:36:55 +01:00
14a3dc83e5 if max_light_damage is 16 then use natural light value to damage mob 2023-05-14 10:44:12 +01:00
9c72f0559d update api.txt 2023-05-02 08:38:54 +01:00
9a5d4278ff if min/max light set to 15, only kill mob with natural light 2023-05-02 08:35:12 +01:00
f5ccec9b60 better way to reset pause_timer with "stand" order 2023-04-27 10:21:31 +01:00
6af671997b pause timer reset 2023-04-26 09:53:07 +01:00
eb6bc6e349 mobs ordered to "stand", fix knockback 2023-04-26 09:46:57 +01:00
ce9c30949c fix group attack anim reset, tidy code 2023-04-26 09:16:38 +01:00
6cce24f04e simplify yaw clamping 2023-04-25 12:54:54 +01:00
4bdd8eaa5f 2nd attempt at clamping yaw to stop spinny mobs 2023-04-23 16:34:35 +01:00
36a26d2d21 code tidy 2023-04-03 11:53:05 +01:00
6b9331064c add staticdata clean function, update api.txt 2023-04-03 08:08:37 +01:00
407b2e7b56 reset parent movement after baby born 2023-03-31 14:14:43 +01:00
5e67163d09 fix flying mobs sinking into water 2023-03-28 14:11:30 +01:00
81f99931fc fix nil check for on_spawn 2023-03-28 07:57:31 +01:00
d290062a33 fix friendly fire bug and add provide moveresult information to do_custom 2023-03-27 10:48:05 +01:00
cd4fb6f2a6 add friendly_fire mob setting for arrows (thx eschan145) 2023-03-26 08:31:40 +01:00
3bd2ee8129 code tidy, updated readme (thx eschan145) 2023-03-25 08:47:31 +00:00
076b9480b7 fix type and update readme 2023-03-17 10:30:26 +00:00
7e585b0bdc add check for 'injured' animation 2023-03-13 11:52:59 +00:00
0c2ddab172 fix env timer issue 2023-03-13 11:24:52 +00:00
f4aae8894f add mob_hit_effect switch so mob highlights when punched 2023-03-13 10:55:25 +00:00
c8e8401ac5 add mob_height_fix setting so it can be disabled. 2023-03-12 11:35:21 +00:00
733672127c add animation nil check 2023-03-10 08:09:15 +00:00
59fe1dd976 add return true to on punch 2023-03-04 07:21:54 +00:00
d7ba911181 turn/animate mob on knockback, code tidy 2023-03-03 11:56:49 +00:00
924a545788 update pathfinding defaults to add settings (thx Bla) 2023-02-27 18:13:32 +00:00
92b1a253f0 update api.txt 2023-02-17 09:33:44 +00:00
ba988d514c remove duplicate on_die info (thx Bastrabun) 2023-02-12 10:27:43 +00:00
61b544d493 better water avoidance and escape 2023-02-08 11:59:40 +00:00
bbcdc4b67d fix variable error (thx Niklp) 2023-01-19 17:46:07 +00:00
bbd7a08591 clean aliased mob staticdata 2022-12-22 13:19:24 +00:00
86b6a1a950 check staticdata for egg capture 2022-12-13 12:33:11 +00:00
54cb8f487e remove yaw clamping, causes mob jitters 2022-11-28 13:36:28 +00:00
a88222a744 update license.txt 2022-11-28 09:09:56 +00:00
d64c0aafeb update license.txt 2022-11-26 08:52:09 +00:00
4e963e6b90 update punch sound to cc0 version 2022-11-25 18:47:15 +00:00
d49c0727f1 replace meatblock textures with own, add raw meatblock 2022-11-24 13:22:09 +00:00
5c9e057ad1 add ability to read 'looting_level' from tool definition and meta for extra drops 2022-11-15 10:39:59 +00:00
b0df8145bd update settingtypes.txt 2022-10-31 15:14:52 +00:00
66c1cbe21e add ignore to .luacheckrc 2022-10-31 15:10:32 +00:00
232d1f2df1 update .luacheckrc 2022-10-31 15:08:12 +00:00
d4145ddd3d tidy some luacheckrc warnings 2022-10-31 15:05:34 +00:00
edf846c34c add .uacheckrc file (thanks Niklp) 2022-10-31 14:31:51 +00:00
33beec64dc fix peaceful player check 2022-10-27 16:57:53 +01:00
088bdc5350 localise math.deg 2022-10-21 12:14:11 +01:00
c003c2e72b fix smooth rotation jitters 2022-10-21 11:56:54 +01:00
1450b25ca4 mobs_class made global (be careful anyone changing this) 2022-10-15 08:50:27 +01:00
b74e75ef8b code tidy and default sounds fix 2022-10-07 10:29:23 +01:00
8e3a85546c api.txt updated with mapgen_dirt entry 2022-10-01 07:17:07 +01:00
561903d075 revert node position (git gui test) 2022-09-30 08:32:50 +01:00
bf7ff7ab5f fix node position 2022-09-30 08:31:30 +01:00
431d3844a6 tidy code 2022-09-29 14:15:21 +01:00
b4a8ce71c6 add damage_radius and texture to mobs:boom() 2022-09-22 08:04:58 +01:00
2935d1ee5d have mobs jump slightly when grown to avoid being caught in floor 2022-09-18 11:17:58 +01:00
5bc547b333 tweak mod following to work better 2022-09-06 11:32:50 +01:00
bad1be5c5a check pos/def for nil value in add_mob function 2022-09-03 16:13:41 +01:00
83f0b901a4 add self.messages field 2022-08-04 08:21:59 +01:00
e4ac59609a add mob protection to infotext 2022-07-31 10:20:32 +01:00
7ac8506dda add fallback node for is_node_dangerous 2022-07-29 18:52:28 +01:00
90df44aeaf comment unused vars 2022-07-22 14:12:30 +01:00
25ab9591e4 add 'can_leap' setting to mob def, update api.txt 2022-07-12 08:37:38 +01:00
8e6fa64f2d fix premature mob death and drops 2022-07-07 17:09:34 +01:00
ce7c4c1449 adjust mob count when using /clear_mobs 2022-07-04 11:00:52 +01:00
08dcdf382a add /clear_mobs command 2022-07-04 10:43:28 +01:00
d2a4150dcb extend mob reach when on top of player to fix issue 2022-06-28 08:08:35 +01:00
ca34cc2274 fix api typo (thanks bastrabun :) 2022-05-21 08:04:38 +01:00
168014b86f tidy api 2022-05-14 11:21:36 +01:00
6f8b6fe3f5 select proper animation for flying mobs 2022-05-01 08:15:25 +01:00
dd16d63e8e revert hover 2022-04-30 14:35:59 +01:00
7bb5e2b382 add "hover" animation 2022-04-30 12:26:36 +01:00
7b429df9e9 tweak riding functions 2022-04-21 08:28:35 +01:00
0e72f0ca81 tweak mobs.drive() speed (thanks auouymous) 2022-04-18 08:31:25 +01:00
fb42be6b28 nil checks 2022-03-14 08:29:25 +00:00
f54c3da9d7 add nil check 2022-03-13 16:30:20 +00:00
65e369e5fc add 0.4.x compatibility when riding mod 2022-03-01 09:04:38 +00:00
9f74408792 remove owner infotext if no owner present 2022-02-05 12:25:01 +00:00
18c7f0a422 update translation checks (thanks mckaygerhard) 2022-01-20 08:54:08 +00:00
2fb7bf2c66 update api.txt for mob_object change 2022-01-18 06:41:29 +00:00
f01e8a61d0 rename var 2022-01-16 07:44:53 +00:00
b756aa50f5 fix crash (thanks SwissalpS) 2022-01-16 07:05:49 +00:00
e83620553d add mobs:is_node_dangerous(self, nodename) global function 2022-01-15 09:41:21 +00:00
e5d1958e16 add nil checks for riding mobs 2022-01-03 17:35:51 +00:00
6a4a02f3fb fix translations (thanks nixnoxus) 2021-12-12 08:13:54 +00:00
5d88766b74 add pointed_thing to on_rightclick vars 2021-11-16 20:22:15 +00:00
d31da2d069 mod loaded msg 2021-11-14 14:21:32 +00:00
00db86c924 fix intllib return 2021-11-14 14:18:28 +00:00
26ec61ee29 lasso can pick up animal babies 2021-09-20 10:49:19 +01:00
a8ca00dc56 fix self.follow list 2021-09-05 08:16:40 +01:00
4c80a55c04 add breeding info on hover and items followed on shift+rightclick mob (thanks nixnoxus) 2021-08-16 10:48:16 +01:00
deee28fc59 added 'arrow_override' function to mob definition 2021-08-01 18:58:21 +01:00
ab44080ff8 do not despawn tamed monsters 2021-07-31 08:35:53 +01:00
9f46182bb4 remove need for default mod 2021-07-22 09:48:56 +01:00
2535b5636e add support for MarkBu's pathfinder mod 2021-07-22 09:34:21 +01:00
2d014a75c4 tweak "stand" mobs velocity 2021-07-21 19:38:41 +01:00
db3831dccf update api.txt 2021-07-14 15:53:20 +01:00
29b2204f7c add 'mobs_spawn_monster_protected' switch (thanks 0siribix) 2021-07-14 15:43:02 +01:00
7fbfd9d59c fix "stand" mobs fall jitter 2021-07-13 16:56:53 +01:00
e50d04a6aa fix facing fence jump bug 2021-06-14 09:30:03 +01:00
33589ebda0 improve pathfinding level 2 digging/building, add infotext, stop mob attack spin, tweak & tidy code 2021-06-13 09:39:59 +01:00
6670938c3d add mob height check for glitching through blocks 2021-06-11 22:25:00 +01:00
f131806008 add 'mob_smooth_rotate' setting 2021-06-01 14:17:25 +01:00
49325c9c8d fix weapon sound selection 2021-05-27 15:42:21 +01:00
8012250258 nil check for mount 2021-05-21 17:46:10 +01:00
ec44aa91c4 add 'damage_group' and 'damage_texture_modifier' settings to mob definition 2021-05-15 09:33:35 +01:00
f58841ab3e show current texture for mob reset stick 2021-05-10 14:57:21 +01:00
350fc3647c add extra settings to arrow definition 2021-05-04 08:02:43 +01:00
70c68f6ebc change so only players can push mobs 2021-04-18 09:05:16 +01:00
c023ecc36f reduce shapeless crafts 2021-04-13 21:09:34 +01:00
9be934ec25 make it possible to use advanced protector on normally protected mob 2021-04-13 12:41:09 +01:00
f6e16a5503 return actual damage position (created particle py), check for nil damage groups 2021-04-11 17:23:22 +01:00
c06d071220 allow players with 'protection_bypass' to rename owned tamed mobs 2021-04-07 10:35:36 +01:00
ccbfe93f12 players with protection_bypass can pick up owned animals from other players 2021-04-06 15:26:36 +01:00
6750d176ee tweak damage and protectors 2021-04-05 08:52:48 +01:00
246b2769f7 add level 2 mob protector 2021-04-04 22:25:40 +01:00
34b06df758 add ability to follow group: items 2021-03-23 17:09:26 +00:00
0f1f3b4fb3 simplify mobs floating in water 2021-03-18 20:23:55 +00:00
774ce6671f add 'ignore_invisibility' setting to mob definition 2021-03-10 08:14:42 +00:00
11e1d52cfb replace minetest 5.0 check 2021-02-06 17:10:50 +00:00
c158e84e28 stop grown child mobs sinking into blocks below 2021-02-03 21:29:26 +00:00
10e4dd92a0 spawner spawns mob in it's own medium (air, water etc.) 2021-01-21 11:10:17 +00:00
10053e05a9 update mod.conf info 2021-01-21 10:18:00 +00:00
425cadeb51 improve mount.lua (changes from lib_mount :) 2021-01-21 09:44:31 +00:00
2d1befacb3 nil check 2021-01-19 20:37:42 +00:00
ad2ccc5895 add a few compatibility groups to mob items 2021-01-14 19:24:40 +00:00
754321541a fix mob spawn height (thanks OgelGames) 2021-01-14 10:28:18 +00:00
622abd1486 hopefully fixed death animation crash when player away 2021-01-08 10:16:33 +00:00
55eb893a9a simple swimming fix to stop floaters 2021-01-07 10:42:10 +00:00
62 changed files with 4263 additions and 4914 deletions

25
.luacheckrc Normal file
View File

@ -0,0 +1,25 @@
unused_args = false
read_globals = {
"minetest",
"lucky_block",
"vector",
"table",
"invisibility",
"cmi",
"toolranks",
"pathfinder",
"tnt",
"ItemStack"
}
globals = {
"mobs",
"player_api",
"default"
}
ignore = {
"431", -- Shadowing an upvalue
"432", -- Shadowing an upvalue argument
}

4627
api.lua

File diff suppressed because it is too large Load Diff

379
api.txt
View File

@ -6,6 +6,17 @@ Welcome to the world of mobs in minetest and hopefully an easy guide to defining
your own mobs and having them appear in your worlds. your own mobs and having them appear in your worlds.
Quick Note
----------
Since the mobs redo api checks for nodes around the mob to function, it relies on a
default node incase anything goes wrong, so in the default game this is default:dirt
but for any custom game please make sure the following line is registered with your
preferred dirt node of choice:
minetest.register_alias("mapgen_dirt", "mymod:my_dirt_node")
Registering Mobs Registering Mobs
---------------- ----------------
@ -21,7 +32,6 @@ by it's own name e.g.
... and the 'definition' is a table which holds all of the settings and ... and the 'definition' is a table which holds all of the settings and
functions needed for the mob to work properly which contains the following: functions needed for the mob to work properly which contains the following:
'nametag' contains the name which is shown above mob.
'type' holds the type of mob that inhabits your world e.g. 'type' holds the type of mob that inhabits your world e.g.
"animal" usually docile and walking around. "animal" usually docile and walking around.
"monster" attacks player or npc on sight. "monster" attacks player or npc on sight.
@ -40,8 +50,10 @@ functions needed for the mob to work properly which contains the following:
set to 0 for jumping mobs only. set to 0 for jumping mobs only.
'randomly_turn' if set to false then mob will not turn to face player or 'randomly_turn' if set to false then mob will not turn to face player or
randomly turn while walking or standing. randomly turn while walking or standing.
'jump' when true allows your mob to jump updwards. 'jump' when true allows your mob to jump updwards[DEPRECATED].
'jump_height' holds the height your mob can jump, 0 to disable jumping. 'jump_height' holds the height your mob can jump, 0 to disable jumping.
'can_leap' when true obstacles like fences or pits wont stop a mob
from trying to jump out.
'stepheight' height of a block that your mob can easily walk up onto, 'stepheight' height of a block that your mob can easily walk up onto,
defaults to 1.1. defaults to 1.1.
'fly' when true allows your mob to fly around instead of walking. 'fly' when true allows your mob to fly around instead of walking.
@ -56,6 +68,9 @@ functions needed for the mob to work properly which contains the following:
'view_range' how many nodes in distance the mob can see a player. 'view_range' how many nodes in distance the mob can see a player.
'damage' how many health points the mob does to a player or another 'damage' how many health points the mob does to a player or another
mob when melee attacking. mob when melee attacking.
'damage_group' group in which damage is dealt, dedaults to "fleshy".
'damage_texture_modifier' applies texture modifier on hit e.g "^[brighten"
or default when enabled is "^[colorize:#c9900070".
'knock_back' when true has mobs falling backwards when hit, the greater 'knock_back' when true has mobs falling backwards when hit, the greater
the damage the more they move back. the damage the more they move back.
'fear_height' is how high a cliff or edge has to be before the mob stops 'fear_height' is how high a cliff or edge has to be before the mob stops
@ -66,28 +81,36 @@ functions needed for the mob to work properly which contains the following:
water. water.
'air_damage' holds damage per second inflicted to mob when standing in air. 'air_damage' holds damage per second inflicted to mob when standing in air.
'lava_damage' holds the damage per second inflicted to mobs when standing 'lava_damage' holds the damage per second inflicted to mobs when standing
in lava or fire or an ignition source. in lava.
'fire_damage' holds the damage per second inflicted to mobs when standing
'node_damage' True by default, will harm mobs when inside damage_per_second
nodes.
'light_damage' holds the damage per second inflicted to mobs when light 'light_damage' holds the damage per second inflicted to mobs when light
level is between the min and max values below level is between the min and max values below
'light_damage_min' minimum light value when mob is affected (default: 14) 'light_damage_min' minimum light value when mob is affected (default: 14)
'light_damage_max' maximum light value when mob is affected (default: 15) 'light_damage_max' maximum light value when mob is affected (default: 15)
When set to 16 then only natural light will kill mob.
'suffocation' when > 0 mobs will suffocate inside solid blocks and will be 'suffocation' when > 0 mobs will suffocate inside solid blocks and will be
hurt by the value given every second (0 to disable). hurt by the value given every second (0 to disable).
'floats' when set to 1 mob will float in water, 0 has them sink. 'floats' when True mob will float in water, otherwise they sink.
'follow' mobs follow player when holding any of the items which appear 'follow' mobs follow player when holding any of the items which appear
on this table, the same items can be fed to a mob to tame or on this table, the same items can be fed to a mob to tame or
breed e.g. {"farming:wheat", "default:apple"} breed e.g. {"farming:wheat", "default:apple", "group:fish"}
'reach' is how far the mob can attack player when standing 'reach' is how far the mob can attack player when standing
nearby, default is 3 nodes. nearby, default is 3 nodes.
'docile_by_day' when true has mobs wandering around during daylight 'docile_by_day' when true has mobs wandering around during daylight
hours and only attacking player at night or when hours and only attacking player at night or when
provoked. provoked.
'attack_chance' 0 to 100 chance the mob will attack (default is 5). 'attack_chance' 0 to 100 chance the mob will attack (default is 5),
set to 100 so that mob needs to be provoked to attack.
'attack_patience' Time in seconds before mob gives up attacking if
player isn't seen (Defaults to 11).
'attack_monsters' when true mob will attack monsters. 'attack_monsters' when true mob will attack monsters.
'attack_animals' when true mob will attack animals. 'attack_animals' when true mob will attack animals.
'attack_npcs' when true mob will attack npcs within range. 'attack_npcs' when true mob will attack npcs within range.
'attack_players' when true mob will attack players nearby. 'attack_players' when true mob will attack players nearby.
'attack_ignore' string or table of mob names not to attack.
'owner_loyal' when true non-docile tamed mobs attack anything player 'owner_loyal' when true non-docile tamed mobs attack anything player
punches when nearby. punches when nearby.
'group_attack' when true has same mob type grouping together to attack 'group_attack' when true has same mob type grouping together to attack
@ -118,6 +141,8 @@ functions needed for the mob to work properly which contains the following:
continue chasing. continue chasing.
'arrow' holds the pre-defined arrow object to shoot when 'arrow' holds the pre-defined arrow object to shoot when
attacking. attacking.
'arrow_override' function that allows tweaking of arrow entity from
inside mob definition (self) passed to function.
'dogshoot_switch' allows switching between attack types by using timers 'dogshoot_switch' allows switching between attack types by using timers
(1 for shoot, 2 for dogfight) (1 for shoot, 2 for dogfight)
'dogshoot_count_max' contains how many seconds before switching from 'dogshoot_count_max' contains how many seconds before switching from
@ -125,12 +150,18 @@ functions needed for the mob to work properly which contains the following:
'dogshoot_count2_max' contains how many seconds before switching from shoot 'dogshoot_count2_max' contains how many seconds before switching from shoot
to dogfight. to dogfight.
'shoot_interval' has the number of seconds between shots. 'shoot_interval' has the number of seconds between shots.
'shoot_offset' holds the y position added as to where the 'shoot_offset' holds the y position added as to where the
arrow/fireball appears on mob. arrow/fireball appears on mob.
'homing' When True arrows will follow player when visible.
'specific_attack' has a table of entity names that mob can also attack 'specific_attack' has a table of entity names that mob can also attack
e.g. {"player", "mobs_animal:chicken"}. e.g. {"player", "mobs_animal:chicken"}.
'runaway_from' contains a table with mob names to run away from, add 'friendly_fire` when set to false, mobs will not be able to harm other
"player" to list to runaway from player also. mobs of the same type with friendly fire arrows.
Defaults to true.
'runaway_from' contains a table with mob names or nodesto run away
from, add "player" to list to runaway from player also.
'ignore_invisibility' When true mob will still be able to see and attack
player even if invisible (invisibility mod only).
'blood_amount' contains the number of blood droplets to appear when 'blood_amount' contains the number of blood droplets to appear when
mob is hit. mob is hit.
'blood_texture' has the texture name to use for droplets e.g. 'blood_texture' has the texture name to use for droplets e.g.
@ -146,6 +177,9 @@ functions needed for the mob to work properly which contains the following:
{"default:gold_lump", -10} -- heals by 10 health points. {"default:gold_lump", -10} -- heals by 10 health points.
{"default:coal_block", 20} -- 20 damage when hit on head with coal blocks. {"default:coal_block", 20} -- 20 damage when hit on head with coal blocks.
{"all"} -- stops all weapons causing damage apart from those on list. {"all"} -- stops all weapons causing damage apart from those on list.
nodes can also be added so that node_per_second damage
does not affect the mob either e.g.
{"ethereal:crystal_spike", 0} -- causes no damage.
'makes_footstep_sound' when true you can hear mobs walking. 'makes_footstep_sound' when true you can hear mobs walking.
'sounds' this is a table with sounds of the mob 'sounds' this is a table with sounds of the mob
@ -197,8 +231,6 @@ functions needed for the mob to work properly which contains the following:
'rotate' custom model rotation, 0 = front, 90 = side, 180 = back, 'rotate' custom model rotation, 0 = front, 90 = side, 180 = back,
270 = other side. 270 = other side.
'glow' has mob glow without light source, 0 to 15 or nil to disable 'glow' has mob glow without light source, 0 to 15 or nil to disable
'double_melee_attack' when true has the api choose between 'punch' and
'punch2' animations. [DEPRECATED]
'animation' holds a table containing animation names and settings for use with 'animation' holds a table containing animation names and settings for use with
mesh models: mesh models:
@ -214,6 +246,9 @@ functions needed for the mob to work properly which contains the following:
'fly_start' when a mob is flying. 'fly_start' when a mob is flying.
'fly_end' 'fly_end'
'fly_speed' 'fly_speed'
'jump_start' when a mob is jumping
'jump_end'
'jump_speed'
'punch_start' when a mob melee attacks. 'punch_start' when a mob melee attacks.
'punch_end' 'punch_end'
'punch_speed' 'punch_speed'
@ -223,6 +258,9 @@ functions needed for the mob to work properly which contains the following:
'shoot_start' shooting animation. 'shoot_start' shooting animation.
'shoot_end' 'shoot_end'
'shoot_speed' 'shoot_speed'
'injured_start' when hit or damaged > 1 hp (if not set then 'walk' is used)
'injured_end'
'injured_speed'
'die_start' death animation 'die_start' death animation
'die_end' 'die_end'
'die_speed' 'die_speed'
@ -251,11 +289,12 @@ eating.
y offset by using this instead: y offset by using this instead:
{ {
{"group:grass", "air", 0}, {"group:grass", "air", 0},
{"default:dirt_with_grass", "default:dirt", -1} {"default:dirt_with_grass", "default:dirt", -1, 0}
} }
'replace_with' replace with what e.g. "air" or in chickens case "mobs:egg" 'replace_with' replace with what e.g. "air" or in chickens case "mobs:egg"
'replace_rate' how random should the replace rate be (typically 10) 'replace_rate' how random should the replace rate be (typically 10)
'replace_offset' +/- value to check specific node to replace 'replace_offset' +/- y offset value to check specific node to replace
'reach' horizontal reach around mob for replace, default is 0
'on_replace(self, pos, oldnode, newnode)' is called when mob is about to 'on_replace(self, pos, oldnode, newnode)' is called when mob is about to
replace a node. replace a node.
@ -270,17 +309,34 @@ eating.
properties. (DEPRECATED, use on_replace to make changes). properties. (DEPRECATED, use on_replace to make changes).
Pickup Items
------------
'pick_up' table of itemstrings the mob will pick up.
'on_pick_up' function that will be called on item pickup - arguments are
(self, itemtable) and can return nil or a a modified itemstack e.g.
on_pick_up = function(self, itemtable)
local istack = ItemStack(itemtable.itemstring)
print("-- took", istack:get_name())
istack:take_item()
return istack
end,
Custom Definition Functions Custom Definition Functions
--------------------------- ---------------------------
Along with the above mob registry settings we can also use custom functions to Along with the above mob registry settings we can also use custom functions to
enhance mob functionality and have them do many interesting things: enhance mob functionality and have them do many interesting things:
'on_die' a function that is called when the mob is killed the
parameters are (self, pos)
'on_rightclick' its same as in minetest.register_entity() 'on_rightclick' its same as in minetest.register_entity()
'on_blast' is called when an explosion happens near mob when using TNT 'on_blast' is called when an explosion happens near mob when using TNT
functions, parameters are (object, damage) and returns functions, parameters are (damage) and returns
(do_damage, do_knockback, drops) (do_damage, do_knockback, drops)
'on_spawn' is a custom function that runs on mob spawn with 'self' as 'on_spawn' is a custom function that runs on mob spawn with 'self' as
variable, return true at end of function to run only once. variable, return true at end of function to run only once.
@ -293,13 +349,16 @@ enhance mob functionality and have them do many interesting things:
'on_grown' is called when a child mob has grown up, only paramater is 'on_grown' is called when a child mob has grown up, only paramater is
(self). (self).
'do_punch' called when mob is punched with paramaters (self, hitter, 'do_punch' called when mob is punched with paramaters (self, hitter,
time_from_last_punch, tool_capabilities, direction), return time_from_last_punch, tool_capabilities, direction, damage),
false to stop punch damage and knockback from taking place. return false to stop punch damage and knockback from taking
place.
'custom_attack' when set this function is called instead of the normal mob 'custom_attack' when set this function is called instead of the normal mob
melee attack, parameters are (self, to_attack) and if true melee attack, parameters are (self, to_attack) and if true
is returned normal attack function continued. is returned normal attack function continued.
'on_die' a function that is called when mob is killed (self, pos), also 'on_die' a function that is called when mob is killed (self, pos), also
has access to self.cause_of_death table. has access to self.cause_of_death table.
'on_death' Official engine version of above when mob killed (self, killer),
'killer' is only returned if player killed the mob.
'on_flop' function called when flying or swimmimng mob is no longer in 'on_flop' function called when flying or swimmimng mob is no longer in
air/water, (self) paramater and return true to skip the built air/water, (self) paramater and return true to skip the built
in api flop feature. in api flop feature.
@ -307,6 +366,24 @@ enhance mob functionality and have them do many interesting things:
active and which has access to all of the self.* variables active and which has access to all of the self.* variables
e.g. (self.health for health or self.standing_in for node e.g. (self.health for health or self.standing_in for node
status), return with 'false' to skip remainder of mob API. status), return with 'false' to skip remainder of mob API.
'on_sound' (self, def) called when mob is inside the hearing distance of
a sound, passes a def table containing:
'sound' the sound being played,
'pos' position the sound originated (only sounds with pos detected),
'gain' original gain of sound,
'distance' distance of mob from sound source,
'loudness' how loud sound is to mob (percentage of gain heard at distance)
'player' player name sound originated, [NOT IN USE]
'object' object reference sound originated, [NOT IN USE]
'max_hear_distance' max distance sound can be heard from source.
Hearing Nodes
-------------
If a node has the {on_sound = 1} group and an on_sound() function set as above then
nodes within 8 blocks of a sound will be activated and the function run. Check the
"mobs:hearing_vines" node as an example which has mesecons support when active.
Internal Variables Internal Variables
@ -315,12 +392,15 @@ Internal Variables
The mob api also has some preset variables and functions that it will remember The mob api also has some preset variables and functions that it will remember
for each mob. for each mob.
'self._cmi_is_mob' Used to determine wether entity is a mobs redo mob when True.
'self.health' contains current health of mob (cannot exceed 'self.health' contains current health of mob (cannot exceed
self.hp_max) self.hp_max)
'self.texture_list' contains list of all mob textures 'self.texture_list' contains list of all mob textures
'self.child_texture' contains mob child texture when growing up 'self.child_texture' contains mob child texture when growing up
'self.base_texture' contains current skin texture which was randomly 'self.base_texture' contains current skin texture which was randomly
selected from textures list selected from textures list
'self.texture_mods' contains a list of textures to overlay above the mobs
base texture (used for horse saddle)
'self.gotten' this is used for obtaining milk from cow and wool from 'self.gotten' this is used for obtaining milk from cow and wool from
sheep sheep
'self.horny' when animal fed enough it is set to true and animal can 'self.horny' when animal fed enough it is set to true and animal can
@ -333,7 +413,11 @@ for each mob.
dogs dogs
'self.order' set to "follow" or "stand" so that npc will follow owner 'self.order' set to "follow" or "stand" so that npc will follow owner
or stand it's ground or stand it's ground
'self.nametag' contains the name of the mob which it can show above 'self._nametag' contains the name of the mob which it can show above
'self.pause_timer' used to stop mob thinking when punched so that knockback
can take effect.
'self.disable_falling' currently used on spider mob when climbing walls, stops
the mob from experiencing gravity when true.
'self.state' Current mob state. 'self.state' Current mob state.
"stand": no movement (except turning around) "stand": no movement (except turning around)
"walk": walk or move around aimlessly "walk": walk or move around aimlessly
@ -342,6 +426,42 @@ for each mob.
"flop": bounce around aimlessly "flop": bounce around aimlessly
(for swimming mobs that have stranded) (for swimming mobs that have stranded)
"die": during death "die": during death
'self.standing_on' Node name mob is standing on.
'self.standing_in' Node name mob is standing inside.
'self.looking_at' Node name in front of mob.
'self.looking_above'Node name in front/above mob.
'self.facing_fence' True if mob facing node containing "wall", "fence", "gate"
in it's name.
Internal Functions
------------------
Each mob contains a set of functions that can be called for use internally or from
another mod entirely, replace mob_class with the mob entity variable:
mob_class:mob_sound(sound) -- play sound at mob position
mob_class:do_attack(player [, force]) -- if not already attacking, attack object given,
forced being true stops attacking current target and focuses on one given
mob_class:stop_attack() -- stops mob attacking
mob_class:collision() -- checks for player collision with mob and returns {x, z} vector
mob_class:set_velocity(velocity) -- move at velocity in the facing direction
mob_class:get_velocity() -- returns mob speed value
mob_class:set_yaw(yaw, delay) -- change mob yaw, delay is for smooth rotation (default:0)
mob_class:yaw_to_pos(pos, delay) -- rotates mod to look at position and returns new yaw
mob_class:set_animation(animation, force) -- set mob animation
mob_class:line_of_sight(pos1, pos2) -- internal line of sight function
mob_class:attempt_flight_correction(override) -- check for stuck flying mobs and fix
mob_class:update_tag(newname) -- update nametag or give new name
mob_class:do_jump() -- check if mob can jump then jump
mob_class:follow_holding(clicker) -- return True if mob likes what player is holding
mob_class:day_docile() -- return True if mob docile during current daytime
mob_class:mob_expire(pos, dtime) -- check if mob is to despawn
mob_class:get_nodes() -- get specific nodes around mob
mob_class:on_blast(damage) -- function called when mob in blast area
mob_class:is_inside(itemtable) -- returns True is mob collisionbox inside any node/group
in table
mob_class:go_to(pos) -- makes mob go to that position or nearby
Adding Mobs in World Adding Mobs in World
@ -406,7 +526,7 @@ the mobs:spawn, so it is recommended to use the above instead.
mobs:register_spawn(name, nodes, max_light, min_light, chance, mobs:register_spawn(name, nodes, max_light, min_light, chance,
active_object_count, max_height, day_toggle) active_object_count, max_height, day_toggle)
mobs:spawn_specfic(name, nodes, neighbors, min_light, max_light, interval, mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval,
chance, active_object_count, min_height, max_height, day_toggle, on_spawn) chance, active_object_count, min_height, max_height, day_toggle, on_spawn)
A simpler way to handle mob spawns has been added with the mobs:spawn(def) A simpler way to handle mob spawns has been added with the mobs:spawn(def)
@ -430,6 +550,12 @@ true the mob will not spawn.
'name' is the name of the animal/monster 'name' is the name of the animal/monster
mobs:node_ok(pos, fallback)
This global function gets the node at pos and if not registered will return the
fallback node instead.
Particle Effects Particle Effects
---------------- ----------------
@ -459,9 +585,13 @@ This function registers a arrow for mobs with the attack type shoot.
'definition' is a table with the following values: 'definition' is a table with the following values:
'visual' same is in minetest.register_entity() 'visual' same is in minetest.register_entity()
'visual_size' same is in minetest.register_entity() 'visual_size' same is in minetest.register_entity()
'mesh' same is in minetest.register_entity()
'textures' same is in minetest.register_entity() 'textures' same is in minetest.register_entity()
'collide_with_objects' same as above
'velocity' the velocity of the arrow 'velocity' the velocity of the arrow
'drop' if set to true any arrows hitting a node will drop as item 'drop' if set to true any arrows hitting a node will drop as item,
if number given then chance (1/num) of item dropping will
be used. arrow "mymob:myarrow" will use item of same name.
'hit_player' a function that is called when the arrow hits a player; 'hit_player' a function that is called when the arrow hits a player;
this function should hurt the player, the parameters are this function should hurt the player, the parameters are
(self, player) (self, player)
@ -481,7 +611,7 @@ This function registers a arrow for mobs with the attack type shoot.
0 for no glow) 0 for no glow)
'rotate' integer value in degrees to rotate arrow 'rotate' integer value in degrees to rotate arrow
'on_step' is a custom function when arrow is active, nil for 'on_step' is a custom function when arrow is active, nil for
default. default. (self, dtime, moveresult)
'on_punch' is a custom function when arrow is punched, nil by default 'on_punch' is a custom function when arrow is punched, nil by default
'collisionbox' is hitbox table for arrow, {-.1,-.1,-.1,.1,.1,.1} by default. 'collisionbox' is hitbox table for arrow, {-.1,-.1,-.1,.1,.1,.1} by default.
'lifetime' contains float value for how many seconds arrow exists in 'lifetime' contains float value for how many seconds arrow exists in
@ -510,10 +640,12 @@ Explosion Function
mobs:explosion(pos, radius) -- DEPRECATED!!! use mobs:boom() instead mobs:explosion(pos, radius) -- DEPRECATED!!! use mobs:boom() instead
mobs:boom(self, pos, radius) mobs:boom(self, pos, damage_radius, entity_radius, texture)
'self' mob entity 'self' mob entity
'pos' centre position of explosion 'pos' centre position of explosion
'radius' radius of explosion (typically set to 3) 'damage_radius' radius of node damage (typically 3)
'entity_radius' radius of explosion to players and mobs
'texture' particle texture during explosion, defaults to "tnt_smoke.png"
This function generates an explosion which removes nodes in a specific radius This function generates an explosion which removes nodes in a specific radius
and damages any entity caught inside the blast radius. Protection will limit and damages any entity caught inside the blast radius. Protection will limit
@ -670,7 +802,7 @@ returns true if a mob can see the player or victim.
Use this instead: Use this instead:
mob_class:line_of_sight(pos1, pos2, stepsize) entity:line_of_sight(pos1, pos2, stepsize)
mobs:can_spawn(pos, name) mobs:can_spawn(pos, name)
@ -680,24 +812,46 @@ space to spawn mob [name], if so then a new position is returned for use,
otherwise nil is returned. otherwise nil is returned.
mobs:is_node_dangerous(mob_object, nodename)
This function returns true if the node name given is harmful to the mob (mob_object),
it is mainly used when a mob is near a node it has to avoid.
Looting Level
-------------
If a tool is used with 'looting_level' defined under tool_capabilities then mobs can drop
extra items per level up to a maximum of 3 levels. 'looting_level' can also be read from
the tools own meta to override the default.
External Settings for "minetest.conf" External Settings for "minetest.conf"
------------------------------------ ------------------------------------
'mob_log_spawn' When True will log spawning position of mobs.
'mob_node_timer_interval' How often mobs get nodes around them (0.25 is default)
for every 1/4 second.
'mob_main_timer_interval' How often mobs run main functions (1.0 is default) for
every one second.
'enable_damage' if true monsters will attack players (default is true) 'enable_damage' if true monsters will attack players (default is true)
'only_peaceful_mobs' if true only animals will spawn in game (default is 'only_peaceful_mobs' if true only animals will spawn in game (default is
false) false)
'mobs_attack_creatura' When True mobs redo mobs will attack Creatura mod mobs.
'mobs_disable_blood' if false blood effects appear when mob is hit (default 'mobs_disable_blood' if false blood effects appear when mob is hit (default
is false) is false)
'mob_hit_effect' False by default, when True and mobs are hit then
damage_texture_modifier is used to highlight mob.
'mobs_spawn_protected' if set to false then mobs will not spawn in protected 'mobs_spawn_protected' if set to false then mobs will not spawn in protected
areas (default is true) areas (default is true)
'mobs_spawn_monster_protected' if set to false then monsters will not spawn in
protected areas (default is true)
'remove_far_mobs' if true then untamed mobs that are outside players 'remove_far_mobs' if true then untamed mobs that are outside players
visual range will be removed (default is true) visual range will be removed (default is true)
'mobname' can change specific mob chance rate (0 to disable) and 'mobname' can change specific mob chance rate (0 to disable) and
spawn number e.g. mobs_animal:cow = 1000,5 spawn number e.g. mobs_animal:cow = 1000,5
'mob_difficulty' sets difficulty level (health and hit damage 'mob_difficulty' sets difficulty level (health and hit damage
multiplied by this number), defaults to 1.0. multiplied by this number), defaults to 1.0.
'mob_show_health' if false then punching mob will not show health status
(true by default)
'mob_chance_multiplier' multiplies chance of all mobs spawning and can be set 'mob_chance_multiplier' multiplies chance of all mobs spawning and can be set
to 0.5 to have mobs spawn more or 2.0 to spawn less. to 0.5 to have mobs spawn more or 2.0 to spawn less.
e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of
@ -707,12 +861,31 @@ External Settings for "minetest.conf"
'mobs_drop_items' when false mobs no longer drop items when they die. 'mobs_drop_items' when false mobs no longer drop items when they die.
'mobs_griefing' when false mobs cannot break blocks when using either 'mobs_griefing' when false mobs cannot break blocks when using either
pathfinding level 2, replace functions or mobs:boom pathfinding level 2, replace functions or mobs:boom
'mobs_can_hear' True by default, allows mobs to hear sound around them.
function. function.
'mob_nospawn_range' Minimum range a mob can spawn near player (def: 12) 'mob_nospawn_range' Minimum range a mob can spawn near player (def: 12)
'mob_active_limit' Number of active mobs in game, 0 for unlimited 'mob_active_limit' Number of active mobs in game, 0 for unlimited
'mob_area_spawn' When true will check surrounding area the size of the 'mob_area_spawn' When true will check surrounding area the size of the
mob for obstructions before spawning, otherwise it mob for obstructions before spawning, otherwise it
defaults to checking the height of the mob only. defaults to checking the height of the mob only.
'mob_smooth_rotate' Enables smooth rotation when mobs turn by default.
'mob_height_fix' Disabled by default, increases smaller mob heights so they
cannot glitch through certain nodes.
'mob_pathfinding_enable' Enable pathfinding.
'mob_pathfinding_stuck_timeout' How long before stuck mobs start searching. (default 3.0)
'mob_pathfinding_stuck_path_timeout' How long will mob follow path before giving up. (default 5.0)
'mob_pathfinding_algorithm' Which pathfinding algorithm to use Dijkstra (default), A*_noprefetch (AStar_noprefetch) or A* (AStar)
(A* names differ cause Minetest doesn´t allow "*" in settings)
'mob_pathfinding_searchdistance' max search distance from search positions (default 16)
'mob_pathfinding_max_jump' max jump height for pathfinding (default 4)
'mob_pathfinding_max_drop' max drop height for pathfinding (default 6)
'mobs_can_hear' Enabled by default, overrides minetest.sound_play and enables
nearby mobs to run a custom on_sound function.
'mobs_can_hear_node' Disabled by default, allows nearby nodes to hear and run a
custom on_sound function.
'mobs_disable_damage_kb' Knockback is calculated by hit damage or uses knockback value
from the weapon used, this setting lets you disable the former.
'mob_infotext' True by default, shows mob information when you hover over one.
Players can override the spawn chance for each mob registered by adding a line Players can override the spawn chance for each mob registered by adding a line
to their minetest.conf file with a new value, the lower the value the more each to their minetest.conf file with a new value, the lower the value the more each
@ -728,130 +901,42 @@ mobs_animal:cow = 8000,4 <-- 4 cows per mapblock at 8000 spawn chance
mobs_monster:dirt_monster = ,20 <-- 20 dirt monsters per mapblock mobs_monster:dirt_monster = ,20 <-- 20 dirt monsters per mapblock
Node Sounds
-----------
Mobs Redo will detect wether the Default mod or MineClone/VoxeLibre mod is active and
store whichever sound set is available inside the following to save any mob mobs
having to detect it themselves:
mobs.node_sound_defaults()
mobs.node_sound_stone_defaults()
mobs.node_sound_dirt_defaults()
mobs.node_sound_sand_defaults()
mobs.node_sound_gravel_defaults()
mobs.node_sound_wood_defaults()
mobs.node_sound_leaves_defaults()
mobs.node_sound_ice_defaults()
mobs.node_sound_metal_defaults()
mobs.node_sound_water_defaults()
mobs.node_sound_snow_defaults()
mobs.node_sound_glass_defaults()
Rideable Horse Example Mob Rideable Horse Example Mob
-------------------------- --------------------------
mobs:register_mob("mob_horse:horse", { See mob_horse mod https://codeberg.org/tenplus1/mob_horse
type = "animal",
visual = "mesh",
visual_size = {x = 1.20, y = 1.20},
mesh = "mobs_horse.x",
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.25, 0.4},
animation = {
speed_normal = 15,
speed_run = 30,
stand_start = 25,
stand_end = 75,
walk_start = 75,
walk_end = 100,
run_start = 75,
run_end = 100,
},
textures = {
{"mobs_horse.png"},
{"mobs_horsepeg.png"},
{"mobs_horseara.png"}
},
fear_height = 3,
runaway = true,
fly = false,
walk_chance = 60,
view_range = 5,
follow = {"farming:wheat"},
passive = true,
hp_min = 12,
hp_max = 16,
armor = 200,
lava_damage = 5,
fall_damage = 5,
water_damage = 1,
makes_footstep_sound = true,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 2, max = 3}
},
sounds = {
random = "horse_neigh.ogg",
damage = "horse_whinney.ogg",
},
do_custom = function(self, dtime)
-- set needed values if not already present External Functions
if not self.v2 then ------------------
self.v2 = 0
self.max_speed_forward = 6
self.max_speed_reverse = 2
self.accel = 6
self.terrain_type = 3
self.driver_attach_at = {x = 0, y = 20, z = -2}
self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_scale = {x = 1, y = 1}
end
-- if driver present allow control of horse These are a list of utility functions that can be called from 3rd party mods.
if self.driver then
mobs.drive(self, "walk", "stand", false, dtime) mobs:alias_mob(old_name, new_name)
mobs:is_invisible(self, player_name)
return false -- skip rest of mob functions mobs:is_dangerous(self, nodename)
end mobs:yaw_to_pos(self, target, rotation_steps)
mobs:line_of_sight(self, pos1, pos2)
return true mobs:set_animation(self, animation)
end, mobs:yaw(self, yaw, rotation_steps)
on_die = function(self, pos)
-- drop saddle when horse is killed while riding
-- also detach from horse properly
if self.driver then
minetest.add_item(pos, "mobs:saddle")
mobs.detach(self.driver, {x = 1, y = 0, z = 1})
end
end,
on_rightclick = function(self, clicker)
-- make sure player is clicking
if not clicker or not clicker:is_player() then
return
end
-- feed, tame or heal horse
if mobs:feed_tame(self, clicker, 10, true, true) then
return
end
-- make sure tamed horse is being clicked by owner only
if self.tamed and self.owner == clicker:get_player_name() then
local inv = clicker:get_inventory()
-- detatch player already riding horse
if self.driver and clicker == self.driver then
mobs.detach(clicker, {x = 1, y = 0, z = 1})
-- add saddle back to inventory
if inv:room_for_item("main", "mobs:saddle") then
inv:add_item("main", "mobs:saddle")
else
minetest.add_item(clicker.get_pos(), "mobs:saddle")
end
-- attach player to horse
elseif not self.driver
and clicker:get_wielded_item():get_name() == "mobs:saddle" then
self.object:set_properties({stepheight = 1.1})
mobs.attach(self, clicker)
-- take saddle from inventory
inv:remove_item("main", "mobs:saddle")
end
end
-- used to capture horse with magic lasso
mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
end
})

41
compatibility.lua Normal file
View File

@ -0,0 +1,41 @@
-- called after mob registration to check for older settings
function mobs.compatibility_check(self)
-- simple mobs rotation setting
if self.drawtype == "side" then self.rotate = math.rad(90) end
-- replace floats var from number to bool
if self.floats == 1 then self.floats = true
elseif self.floats == 0 then self.floats = false end
end
-- deprecated functions
function mobs:yaw(entity, yaw, delay)
entity:set_yaw(yaw, delay)
end
function mobs:set_animation(entity, anim)
entity:set_animation(anim)
end
function mobs:line_of_sight(entity, pos1, pos2)
return entity:line_of_sight(pos1, pos2)
end
function mobs:yaw_to_pos(entity, target, rot)
return entity:yaw_to_pos(target, rot)
end
function mobs:register_spawn(name, nodes, max_light, min_light, chance,
active_object_count, max_height, day_toggle)
mobs:spawn_specific(name, nodes, {"air"}, min_light, max_light, 30,
chance, active_object_count, -31000, max_height, day_toggle)
end
function mobs:explosion(pos, radius)
mobs:boom({sounds = {explode = "tnt_explode"}}, pos, radius, radius, "mobs_tnt_smoke.png")
end

View File

@ -1,45 +1,113 @@
local S = mobs.intllib local S = core.get_translator("mobs")
local FS = function(...) return core.formspec_escape(S(...)) end
local mc2 = core.get_modpath("mcl_core")
local mod_def = core.get_modpath("default")
-- name tag -- determine which sounds to use, default or mcl_sounds
minetest.register_craftitem("mobs:nametag", {
description = S("Name Tag"),
inventory_image = "mobs_nametag.png",
groups = {flammable = 2}
})
if minetest.get_modpath("dye") and minetest.get_modpath("farming") then local function sound_helper(snd)
minetest.register_craft({
type = "shapeless", mobs[snd] = (mod_def and default[snd]) or (mc2 and mcl_sounds[snd])
output = "mobs:nametag", or function() return {} end
recipe = {"default:paper", "dye:black", "farming:string"}
})
end end
sound_helper("node_sound_defaults")
sound_helper("node_sound_stone_defaults")
sound_helper("node_sound_dirt_defaults")
sound_helper("node_sound_sand_defaults")
sound_helper("node_sound_gravel_defaults")
sound_helper("node_sound_wood_defaults")
sound_helper("node_sound_leaves_defaults")
sound_helper("node_sound_ice_defaults")
sound_helper("node_sound_metal_defaults")
sound_helper("node_sound_water_defaults")
sound_helper("node_sound_snow_defaults")
sound_helper("node_sound_glass_defaults")
-- helper function to add {eatable} group to food items
function mobs.add_eatable(item, hp)
local def = core.registered_items[item]
if def then
local groups = table.copy(def.groups) or {}
groups.eatable = hp ; groups.flammable = 2
core.override_item(item, {groups = groups})
end
end
-- recipe items
local items = {
paper = mc2 and "mcl_core:paper" or "default:paper",
dye_black = mc2 and "mcl_dye:black" or "dye:black",
dye_red = mc2 and "mcl_dye:red" or "dye:red",
string = mc2 and "mcl_mobitems:string" or "farming:string",
stick = mc2 and "mcl_core:stick" or "default:stick",
diamond = mc2 and "mcl_core:diamond" or "default:diamond",
steel_ingot = mc2 and "mcl_core:iron_ingot" or "default:steel_ingot",
gold_block = mc2 and "mcl_core:goldblock" or "default:goldblock",
diamond_block = mc2 and "mcl_core:diamondblock" or "default:diamondblock",
stone = mc2 and "mcl_core:stone" or "default:stone",
mese_crystal = mc2 and "mcl_core:gold_ingot" or "default:mese_crystal",
wood = mc2 and "mcl_core:wood" or "default:wood",
fence_wood = mc2 and "group:fence_wood" or "default:fence_wood",
meat_raw = mc2 and "mcl_mobitems:beef" or "group:food_meat_raw",
meat_cooked = mc2 and "mcl_mobitems:cooked_beef" or "group:food_meat",
obsidian = mc2 and "mcl_core:obsidian" or "default:obsidian"
}
-- name tag
core.register_craftitem("mobs:nametag", {
description = S("Name Tag") .. " " .. S("\nRight-click Mobs Redo mob to apply"),
inventory_image = "mobs_nametag.png",
groups = {flammable = 2, nametag = 1}
})
core.register_craft({
output = "mobs:nametag",
recipe = {
{ items.paper, items.dye_black, items.string }
}
})
-- leather -- leather
minetest.register_craftitem("mobs:leather", {
core.register_craftitem("mobs:leather", {
description = S("Leather"), description = S("Leather"),
inventory_image = "mobs_leather.png", inventory_image = "mobs_leather.png",
groups = {flammable = 2} groups = {flammable = 2, leather = 1}
}) })
-- raw meat -- raw meat
minetest.register_craftitem("mobs:meat_raw", {
core.register_craftitem("mobs:meat_raw", {
description = S("Raw Meat"), description = S("Raw Meat"),
inventory_image = "mobs_meat_raw.png", inventory_image = "mobs_meat_raw.png",
on_use = minetest.item_eat(3), on_use = core.item_eat(3),
groups = {food_meat_raw = 1, flammable = 2} groups = {food_meat_raw = 1}
}) })
mobs.add_eatable("mobs:meat_raw", 3)
-- cooked meat -- cooked meat
minetest.register_craftitem("mobs:meat", {
core.register_craftitem("mobs:meat", {
description = S("Meat"), description = S("Meat"),
inventory_image = "mobs_meat.png", inventory_image = "mobs_meat.png",
on_use = minetest.item_eat(8), on_use = core.item_eat(8),
groups = {food_meat = 1, flammable = 2} groups = {food_meat = 1}
}) })
minetest.register_craft({ mobs.add_eatable("mobs:meat", 8)
core.register_craft({
type = "cooking", type = "cooking",
output = "mobs:meat", output = "mobs:meat",
recipe = "mobs:meat_raw", recipe = "mobs:meat_raw",
@ -47,193 +115,185 @@ minetest.register_craft({
}) })
-- lasso -- lasso
minetest.register_tool("mobs:lasso", {
core.register_tool("mobs:lasso", {
description = S("Lasso (right-click animal to put in inventory)"), description = S("Lasso (right-click animal to put in inventory)"),
inventory_image = "mobs_magic_lasso.png", inventory_image = "mobs_magic_lasso.png",
groups = {flammable = 2} groups = {flammable = 2}
}) })
if minetest.get_modpath("farming") then core.register_craft({
minetest.register_craft({ output = "mobs:lasso",
output = "mobs:lasso", recipe = {
recipe = { { items.string, "", items.string},
{"farming:string", "", "farming:string"}, { "", items.diamond, "" },
{"", "default:diamond", ""}, { items.string, "", items.string }
{"farming:string", "", "farming:string"} }
} })
})
end
minetest.register_alias("mobs:magic_lasso", "mobs:lasso") core.register_alias("mobs:magic_lasso", "mobs:lasso")
-- net -- net
minetest.register_tool("mobs:net", {
core.register_tool("mobs:net", {
description = S("Net (right-click animal to put in inventory)"), description = S("Net (right-click animal to put in inventory)"),
inventory_image = "mobs_net.png", inventory_image = "mobs_net.png",
groups = {flammable = 2} groups = {flammable = 2}
}) })
if minetest.get_modpath("farming") then core.register_craft({
minetest.register_craft({ output = "mobs:net",
output = "mobs:net", recipe = {
recipe = { { items.stick, "", items.stick },
{"group:stick", "", "group:stick"}, { items.stick, "", items.stick },
{"group:stick", "", "group:stick"}, { items.string, items.stick, items.string }
{"farming:string", "group:stick", "farming:string"} }
} })
})
end
-- shears (right click to shear animal) -- shears (right click to shear animal)
minetest.register_tool("mobs:shears", {
core.register_tool("mobs:shears", {
description = S("Steel Shears (right-click to shear)"), description = S("Steel Shears (right-click to shear)"),
inventory_image = "mobs_shears.png", inventory_image = "mobs_shears.png",
groups = {flammable = 2} groups = {flammable = 2}
}) })
minetest.register_craft({ core.register_craft({
output = "mobs:shears", output = "mobs:shears",
recipe = { recipe = {
{"", "default:steel_ingot", ""}, { "", items.steel_ingot, "" },
{"", "group:stick", "default:steel_ingot"} { "", items.stick, items.steel_ingot }
} }
}) })
-- protection rune -- protection rune
minetest.register_craftitem("mobs:protector", {
core.register_craftitem("mobs:protector", {
description = S("Mob Protection Rune"), description = S("Mob Protection Rune"),
inventory_image = "mobs_protector.png", inventory_image = "mobs_protector.png",
groups = {flammable = 2} groups = {flammable = 2}
}) })
minetest.register_craft({ core.register_craft({
output = "mobs:protector", output = "mobs:protector",
recipe = { recipe = {
{"default:stone", "default:stone", "default:stone"}, { items.stone, items.stone, items.stone },
{"default:stone", "default:goldblock", "default:stone"}, { items.stone, items.gold_block, items.stone },
{"default:stone", "default:stone", "default:stone"} { items.stone, items.stone, items.stone }
}
})
-- protection rune (level 2)
core.register_craftitem("mobs:protector2", {
description = S("Mob Protection Rune (Level 2)"),
inventory_image = "mobs_protector2.png",
groups = {flammable = 2}
})
core.register_craft({
output = "mobs:protector2",
recipe = {
{ "mobs:protector", items.mese_crystal, "mobs:protector" },
{ items.mese_crystal, items.diamond_block, items.mese_crystal },
{ "mobs:protector", items.mese_crystal, "mobs:protector" }
}
})
-- mob repellent node
core.register_node("mobs:mob_repellent", {
description = S("Mob Repellent (Stops mobs spawning within 16 block radius)"),
tiles = {"mobs_repellent.png"},
is_ground_content = false,
groups = {handy = 1, cracky = 3},
sounds = mobs.node_sound_stone_defaults()
})
core.register_craft({
output = "mobs:mob_repellent",
recipe = {
{ items.obsidian, items.dye_red, items.obsidian },
{ items.obsidian, "mobs:protector", items.obsidian },
{ items.obsidian, items.obsidian, items.obsidian }
} }
}) })
-- saddle -- saddle
minetest.register_craftitem("mobs:saddle", {
core.register_craftitem("mobs:saddle", {
description = S("Saddle"), description = S("Saddle"),
inventory_image = "mobs_saddle.png", inventory_image = "mobs_saddle.png",
groups = {flammable = 2} groups = {flammable = 2, saddle = 1}
}) })
minetest.register_craft({ core.register_craft({
output = "mobs:saddle", output = "mobs:saddle",
recipe = { recipe = {
{"mobs:leather", "mobs:leather", "mobs:leather"}, {"group:leather", "group:leather", "group:leather"},
{"mobs:leather", "default:steel_ingot", "mobs:leather"}, {"group:leather", items.steel_ingot, "group:leather"},
{"mobs:leather", "default:steel_ingot", "mobs:leather"} {"group:leather", items.steel_ingot, "group:leather"}
} }
}) })
-- register mob fence if default found
-- make sure we can register fences if mod_def and default.register_fence then
if default.register_fence then
-- mob fence (looks like normal fence but collision is 2 high) -- mob fence (looks like normal fence but collision is 2 high)
default.register_fence("mobs:fence_wood", { default.register_fence("mobs:fence_wood", {
description = S("Mob Fence"), description = S("Mob Fence"),
texture = "default_wood.png", texture = "default_wood.png",
material = "default:fence_wood", material = "default:fence_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(), sounds = mobs.node_sound_wood_defaults(),
collision_box = { collision_box = {
type = "fixed", type = "fixed", fixed = {{-0.5, -0.5, -0.5, 0.5, 1.9, 0.5}}
fixed = {
{-0.5, -0.5, -0.5, 0.5, 1.9, 0.5},
} }
} })
}) end
-- mob fence top (has enlarged collisionbox to stop mobs getting over) -- mob fence top (has enlarged collisionbox to stop mobs getting over)
minetest.register_node("mobs:fence_top", {
core.register_node("mobs:fence_top", {
description = S("Mob Fence Top"), description = S("Mob Fence Top"),
drawtype = "nodebox", drawtype = "nodebox",
tiles = {"default_wood.png"}, tiles = {"default_wood.png"},
paramtype = "light", paramtype = "light",
is_ground_content = false, is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, axey = 1},
sounds = default.node_sound_wood_defaults(), sounds = mobs.node_sound_wood_defaults(),
node_box = { node_box = {type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}},
type = "fixed", collision_box = {type = "fixed", fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4}},
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} selection_box = {type = "fixed", fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4}}
},
collision_box = {
type = "fixed",
fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4}
},
selection_box = {
type = "fixed",
fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4}
}
}) })
minetest.register_craft({ core.register_craft({
output = "mobs:fence_top 12", output = "mobs:fence_top 12",
recipe = { recipe = {
{"group:wood", "group:wood", "group:wood"}, {"group:wood", "group:wood", "group:wood"},
{"", "default:fence_wood", ""} {"", items.fence_wood, ""}
} }
}) })
end
-- items that can be used as fuel -- items that can be used as fuel
minetest.register_craft({
type = "fuel",
recipe = "mobs:nametag",
burntime = 3
})
minetest.register_craft({ core.register_craft({type = "fuel", recipe = "mobs:nametag", burntime = 3})
type = "fuel", core.register_craft({type = "fuel", recipe = "mobs:lasso", burntime = 7})
recipe = "mobs:lasso", core.register_craft({type = "fuel", recipe = "mobs:net", burntime = 8})
burntime = 7 core.register_craft({type = "fuel", recipe = "mobs:leather", burntime = 4})
}) core.register_craft({type = "fuel", recipe = "mobs:saddle", burntime = 7})
core.register_craft({type = "fuel", recipe = "mobs:fence_wood", burntime = 7})
minetest.register_craft({ core.register_craft({type = "fuel", recipe = "mobs:fence_top", burntime = 2})
type = "fuel",
recipe = "mobs:net",
burntime = 8
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:leather",
burntime = 4
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:saddle",
burntime = 7
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:fence_wood",
burntime = 7
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:fence_top",
burntime = 2
})
-- this tool spawns same mob and adds owner, protected, nametag info -- this tool spawns same mob and adds owner, protected, nametag info
-- then removes original entity, this is used for fixing any issues. -- then removes original entity, this is used for fixing any issues.
-- also holding sneak while punching mob lets you change texture name.
local tex_obj local tex_obj
minetest.register_tool(":mobs:mob_reset_stick", { core.register_tool(":mobs:mob_reset_stick", {
description = S("Mob Reset Stick"), description = S("Mob Reset Stick"),
inventory_image = "default_stick.png^[colorize:#ff000050", inventory_image = "default_stick.png^[colorize:#ff000050",
stack_max = 1, stack_max = 1,
@ -241,12 +301,9 @@ minetest.register_tool(":mobs:mob_reset_stick", {
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "object" then if pointed_thing.type ~= "object" then return end
return
end
local obj = pointed_thing.ref local obj = pointed_thing.ref
local control = user:get_player_control() local control = user:get_player_control()
local sneak = control and control.sneak local sneak = control and control.sneak
@ -254,7 +311,7 @@ minetest.register_tool(":mobs:mob_reset_stick", {
if obj and not sneak then if obj and not sneak then
local self = obj:get_luaentity() local self = obj:get_luaentity()
local obj2 = minetest.add_entity(obj:get_pos(), self.name) local obj2 = core.add_entity(obj:get_pos(), self.name)
if obj2 then if obj2 then
@ -283,42 +340,37 @@ minetest.register_tool(":mobs:mob_reset_stick", {
tex_obj = obj tex_obj = obj
local name = user:get_player_name() -- get base texture
local tex = "" local bt = tex_obj:get_luaentity().base_texture[1]
minetest.show_formspec(name, "mobs_texture", "size[8,4]" if type(bt) ~= "string" then bt = "" end
local name = user:get_player_name()
core.show_formspec(name, "mobs_texture", "size[8,4]"
.. "field[0.5,1;7.5,0;name;" .. "field[0.5,1;7.5,0;name;"
.. minetest.formspec_escape(S("Enter texture:")) .. ";" .. tex .. "]" .. FS("Enter texture:") .. ";" .. bt .. "]"
.. "button_exit[2.5,3.5;3,1;mob_texture_change;" .. "button_exit[2.5,3.5;3,1;mob_texture_change;"
.. minetest.formspec_escape(S("Change")) .. "]") .. FS("Change") .. "]")
end end
end end
}) })
minetest.register_on_player_receive_fields(function(player, formname, fields) core.register_on_player_receive_fields(function(player, formname, fields)
-- right-clicked with nametag and name entered? -- right-clicked with nametag and name entered?
if formname == "mobs_texture" if formname == "mobs_texture" and fields.name and fields.name ~= "" then
and fields.name
and fields.name ~= "" then
-- does mob still exist? -- does mob still exist?
if not tex_obj if not tex_obj or not tex_obj:get_luaentity() then return end
or not tex_obj:get_luaentity() then
return
end
-- make sure nametag is being used to name mob -- make sure nametag is being used to name mob
local item = player:get_wielded_item() local item = player:get_wielded_item()
if item:get_name() ~= "mobs:mob_reset_stick" then if item:get_name() ~= "mobs:mob_reset_stick" then return end
return
end
-- limit name entered to 64 characters long -- limit name entered to 64 characters long
if fields.name:len() > 64 then if fields.name:len() > 64 then fields.name = fields.name:sub(1, 64) end
fields.name = fields.name:sub(1, 64)
end
-- update texture -- update texture
local self = tex_obj:get_luaentity() local self = tex_obj:get_luaentity()
@ -332,24 +384,117 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end end
end) end)
-- Meat Block
-- Meat Block (thanks to painterlypack.net for allowing me to use these textures) core.register_node("mobs:meatblock", {
minetest.register_node("mobs:meatblock", {
description = S("Meat Block"), description = S("Meat Block"),
tiles = {"mobs_meat_top.png", "mobs_meat_bottom.png", "mobs_meat_side.png"}, tiles = {"mobs_meat_top.png", "mobs_meat_bottom.png", "mobs_meat_side.png"},
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2}, groups = {choppy = 1, oddly_breakable_by_hand = 1, axey = 1, handy = 1},
sounds = default.node_sound_leaves_defaults(), is_ground_content = false,
on_place = minetest.rotate_node, sounds = mobs.node_sound_dirt_defaults(),
on_use = minetest.item_eat(20), on_place = core.rotate_node,
on_use = core.item_eat(20),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
}) })
minetest.register_craft({ mobs.add_eatable("mobs:meatblock", 20)
core.register_craft({
output = "mobs:meatblock", output = "mobs:meatblock",
type = "shapeless",
recipe = { recipe = {
"group:food_meat", "group:food_meat", "group:food_meat", { items.meat_cooked, items.meat_cooked, items.meat_cooked },
"group:food_meat", "group:food_meat", "group:food_meat", { items.meat_cooked, items.meat_cooked, items.meat_cooked },
"group:food_meat", "group:food_meat", "group:food_meat" { items.meat_cooked, items.meat_cooked, items.meat_cooked }
} }
}) })
-- Meat Block (raw)
core.register_node("mobs:meatblock_raw", {
description = S("Raw Meat Block"),
tiles = {"mobs_meat_raw_top.png", "mobs_meat_raw_bottom.png", "mobs_meat_raw_side.png"},
paramtype2 = "facedir",
groups = {choppy = 1, oddly_breakable_by_hand = 1, axey = 1, handy = 1},
is_ground_content = false,
sounds = mobs.node_sound_dirt_defaults(),
on_place = core.rotate_node,
on_use = core.item_eat(20),
_mcl_hardness = 0.8,
_mcl_blast_resistance = 1
})
mobs.add_eatable("mobs:meatblock_raw", 20)
core.register_craft({
output = "mobs:meatblock_raw",
recipe = {
{ items.meat_raw, items.meat_raw, items.meat_raw },
{ items.meat_raw, items.meat_raw, items.meat_raw },
{ items.meat_raw, items.meat_raw, items.meat_raw }
}
})
core.register_craft({
type = "cooking",
output = "mobs:meatblock",
recipe = "mobs:meatblock_raw",
cooktime = 30
})
-- hearing vines (if mesecons active it acts like blinkyplant)
local mod_mese = core.get_modpath("mesecons")
core.register_node("mobs:hearing_vines", {
description = S("Hearing Vines"),
drawtype = "firelike",
waving = 1,
tiles = {"mobs_hearing_vines.png"},
inventory_image = "mobs_hearing_vines.png",
wield_image = "mobs_hearing_vines.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, attached_node = 1, on_sound = 1},
sounds = mobs.node_sound_leaves_defaults(),
selection_box = {
type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16},
},
on_sound = function(pos, def)
if def.loudness > 0.5 then
core.set_node(pos, {name = "mobs:hearing_vines_active"})
end
end
})
core.register_node("mobs:hearing_vines_active", {
description = S("Active Hearing Vines"),
drawtype = "firelike",
waving = 1,
tiles = {"mobs_hearing_vines_active.png"},
inventory_image = "mobs_hearing_vines_active.png",
wield_image = "mobs_hearing_vines_active.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
light_source = 1,
damage_per_second = 4,
drop = "mobs:hearing_vines",
groups = {snappy = 3, flammable = 3, attached_node = 1, not_in_creative_inventory = 1},
sounds = mobs.node_sound_leaves_defaults(),
selection_box = {
type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16},
},
on_construct = function(pos)
core.get_node_timer(pos):start(1)
if mod_mese then mesecon.receptor_on(pos) end
end,
on_timer = function(pos)
core.set_node(pos, {name = "mobs:hearing_vines"})
if mod_mese then mesecon.receptor_off(pos) end
end
})

View File

@ -1,9 +0,0 @@
default
tnt?
dye?
farming?
invisibility?
intllib?
lucky_block?
cmi?
toolranks?

View File

@ -1 +0,0 @@
Adds a mob api for mods to add animals or monsters etc.

View File

@ -1,25 +1,38 @@
local path = minetest.get_modpath("mobs") local S = core.get_translator("mobs")
-- Peaceful player privilege -- peaceful player privilege
minetest.register_privilege("peaceful_player", {
core.register_privilege("peaceful_player", {
description = "Prevents Mobs Redo mobs from attacking player", description = "Prevents Mobs Redo mobs from attacking player",
give_to_singleplayer = false give_to_singleplayer = false
}) })
-- Mob API -- fallback node
dofile(path .. "/api.lua")
-- Rideable Mobs core.register_node("mobs:fallback_node", {
dofile(path .. "/mount.lua") description = S("Fallback Node"),
tiles = {"mobs_fallback.png"},
is_ground_content = false,
groups = {handy = 1, crumbly = 3, not_in_creative_inventory = 1},
drop = ""
})
-- Mob Items
dofile(path .. "/crafts.lua")
-- Mob Spawner local path = core.get_modpath("mobs")
dofile(path .. "/spawner.lua")
dofile(path .. "/api.lua") -- mob API
dofile(path .. "/mount.lua") -- rideable mobs
dofile(path .. "/crafts.lua") -- items and crafts
dofile(path .. "/spawner.lua") -- mob spawner
-- Lucky Blocks -- Lucky Blocks
dofile(path .. "/lucky_block.lua")
minetest.log("action", "[MOD] Mobs Redo loaded") if core.get_modpath("lucky_block") then
dofile(path .. "/lucky_block.lua")
end
print("[MOD] Mobs Redo loaded")

View File

@ -1,3 +0,0 @@
-- Support for the old multi-load method
dofile(minetest.get_modpath("intllib").."/init.lua")

View File

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2016 TenPlus1 Copyright (c) 2025 TenPlus1
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@ -19,3 +19,25 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
Textures borrowed from minetest_game (CC BY-SA 3.0):
mobs_tnt_smoke.png
mobs_bubble_particle.png
mobs_heart_particle.png
Textures under CC0 license by TenPlus1
mobs_fallback.png is dirt texture from original Minetest (CC-BY SA 3.0)
ShadowNinja (CC BY-SA 3.0):
tnt_smoke.png
mobs_swing.ogg by qubodup (CC0)
- http://freesound.org/people/qubodup/sounds/60012/
mobs_spell.ogg by littlerobotsoundfactory (CC0)
- http://freesound.org/people/LittleRobotSoundFactory/sounds/270396/
mobs_punch.ogg by Merrick079 (CC0)
- https://freesound.org/people/Merrick079/sounds/566436/

View File

@ -1,131 +0,0 @@
# Mobs Redo translation.
# Copyright (C) 2017 TenPlus1
# This file is distributed under the same license as the mobs package.
# Wuzzy <Wuzzy@mail.ru>, 2017
#
msgid ""
msgstr ""
"Project-Id-Version: mobs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2017-07-02 14:27+0200\n"
"Last-Translator: Wuzzy <almikes@aol.com>\n"
"Language-Team: \n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr "Kreatur wurde geschützt!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Gezähmt)"
#: api.lua
msgid "Not tamed!"
msgstr "Nicht gezähmt!"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 ist der Besitzer!"
#: api.lua
msgid "Missed!"
msgstr "Daneben!"
#: api.lua
msgid "Already protected!"
msgstr "Bereits geschützt!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 bei voller Gesundheit (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 wurde gezähmt!"
#: api.lua
msgid "Enter name:"
msgstr "Namen eingeben:"
#: api.lua
msgid "Rename"
msgstr "Umbenennen"
#: crafts.lua
msgid "Name Tag"
msgstr "Namensschild"
#: crafts.lua
msgid "Leather"
msgstr "Leder"
#: crafts.lua
msgid "Raw Meat"
msgstr "Rohes Fleisch"
#: crafts.lua
msgid "Meat"
msgstr "Fleisch"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lasso (Rechtsklick auf Tier, um es zu nehmen)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Netz (Rechtsklick auf Tier, um es zu nehmen)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Stahlschere (Rechtsklick zum Scheren)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Kreaturschutzrune"
#: crafts.lua
msgid "Saddle"
msgstr "Sattel"
#: crafts.lua
msgid "Mob Fence"
msgstr "Kreaturen Zaun"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Kreaturenspawner"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Kreatur MinLicht MaxLicht Menge SpielerEntfng"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Nicht aktiv (Einstellungen eingeben)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Spawner aktiv (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Kreaturenspawner-Einstellungen gescheitert!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"Syntax: „name min_licht[0-14] max_licht[0-14] max_mobs_im_gebiet[0 zum "
"Deaktivieren] distanz[1-20] y_versatz[-10 bis 10]“"

View File

@ -1,128 +0,0 @@
# Mobs Redo translation.
# Copyright (C) 2017 TenPlus1
# This file is distributed under the same license as the mobs package.
# Wuzzy <Wuzzy@mail.ru>, 2017
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-16 16:48+0200\n"
"PO-Revision-Date: 2017-07-16 16:48+0200\n"
"Last-Translator: Aleks <alexsinteck@icqmail.com>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr "El mob ha sido protegido!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Domesticado)"
#: api.lua
msgid "Not tamed!"
msgstr "No domesticado!"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 es el dueño!"
#: api.lua
msgid "Missed!"
msgstr "Perdido!"
#: api.lua
msgid "Already protected!"
msgstr "Ya está protegido!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 con salud llena (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 ha sido domesticado!"
#: api.lua
msgid "Enter name:"
msgstr "Ingrese nombre:"
#: api.lua
msgid "Rename"
msgstr "Renombrar"
#: crafts.lua
msgid "Name Tag"
msgstr "Nombrar etiqueta"
#: crafts.lua
msgid "Leather"
msgstr "Cuero"
#: crafts.lua
msgid "Raw Meat"
msgstr "Carne cruda"
#: crafts.lua
msgid "Meat"
msgstr "Carne"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lazo (click derecho en animal para colocar en inventario)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Red (click derecho en animal para colocar en inventario)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Tijera de acero (click derecho para esquilar)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Runa de protección de Mob"
#: crafts.lua
msgid "Saddle"
msgstr "Montura"
#: crafts.lua
msgid "Mob Fence"
msgstr ""
#: spawner.lua
msgid "Mob Spawner"
msgstr "Generador de Mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob LuzMin LuzMax Cantidad DistJugador"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Generador no activo (ingrese config)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Generador activo (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Configuracion de generador de Mob falló!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr "Sintaxis: “nombre luz_min[0-14] luz_max[0-14] max_mobs_en_area[0 para deshabilitar] "
"distancia[1-20] compensacion[-10 a 10]”"

View File

@ -1,136 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-29 09:13+0200\n"
"PO-Revision-Date: 2020-08-13 21:20+0500\n"
"Last-Translator: Olivier Dragon <odragon@protonmail.com>\n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** Mode pacifique activé - Aucun monstre ne sera généré"
#: api.lua
msgid "Mob has been protected!"
msgstr "L'animal a été protégé !"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (apprivoisé)"
#: api.lua
msgid "Not tamed!"
msgstr "Non-apprivoisé !"
#: api.lua
msgid "@1 is owner!"
msgstr "Appartient à @1 !"
#: api.lua
msgid "Missed!"
msgstr "Raté !"
#: api.lua
msgid "Already protected!"
msgstr "Déjà protégé !"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 est en pleine forme (@2) "
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 a été apprivoisé ! "
#: api.lua
msgid "Enter name:"
msgstr "Saisissez un nom :"
#: api.lua
msgid "Rename"
msgstr "Renommer"
#: crafts.lua
msgid "Name Tag"
msgstr "Étiquette de collier"
#: crafts.lua
msgid "Leather"
msgstr "Cuir"
#: crafts.lua
msgid "Raw Meat"
msgstr "Viande crue"
#: crafts.lua
msgid "Meat"
msgstr "Viande"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lasso (clic droit sur l'animal pour le mettre dans l'inventaire)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Filet (clic droit sur l'animal pour le mettre dans l'inventaire)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Ciseaux à laine (clic droit pour tondre)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Rune de protection des animaux"
#: crafts.lua
msgid "Saddle"
msgstr "Selle"
#: crafts.lua
msgid "Mob Fence"
msgstr "Clôture à animaux"
#: crafts.lua
msgid "Mob Fence Top"
msgstr "Haut de clôture à animaux"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Générateur de mob"
#: spawner.lua
msgid "(mob name) (min light) (max light) (amount) (player distance) (Y offset)"
msgstr "(Nom) (MinLumière) (MaxLumière) (Quantité) (Distance du Joueur) (Décalage en Y)"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Générateur non actif (entrez les paramètres)"
#: spawner.lua
msgid "Command:"
msgstr "Commande:"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Générateur actif (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Echec des paramètres du générateur"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr "Syntaxe : “nom min_lumière[0-14] max_lumière[0-14] max_mobs_dans_zone[0 pour désactiver] distance[1-20] décalage_y[-10 à 10]“"

View File

@ -1,131 +0,0 @@
# ITALIAN LOCALE FILE FOR THE MOBS REDO MODULE
# Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
# This file is distributed under the same license as the MOBS REDO package.
# Hamlet <h4mlet@riseup.net>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Italian locale file for the Mobs Redo module\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2020-05-11 13:33+0200\n"
"Last-Translator: Hamlet <hamlatgitlab@riseup.net>\n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2.1\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** Modalità pacifica attiva - non comparirà nessun mostro"
#: api.lua
msgid "Mob has been protected!"
msgstr "Il mob è stato protetto!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Addomesticato)"
#: api.lua
msgid "Not tamed!"
msgstr "Non addomesticato!"
#: api.lua
msgid "@1 is owner!"
msgstr "Il padrone è @1!"
#: api.lua
msgid "Missed!"
msgstr "Mancato!"
#: api.lua
msgid "Already protected!"
msgstr "Già protetto!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 in piena salute (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 è stato addomesticato!"
#: api.lua
msgid "Enter name:"
msgstr "Inserire il nome:"
#: api.lua
msgid "Rename"
msgstr "Rinomina"
#: crafts.lua
msgid "Name Tag"
msgstr "Targhetta"
#: crafts.lua
msgid "Leather"
msgstr "Pelle"
#: crafts.lua
msgid "Raw Meat"
msgstr "Carne cruda"
#: crafts.lua
msgid "Meat"
msgstr "Carne"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lazo (click di destro per mettere l'animale nell'inventario)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Rete (click destro per mettere l'animale nell'inventario)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Cesoie d'acciaio (click destro per tosare)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Runa di protezione per mob"
#: crafts.lua
msgid "Saddle"
msgstr "Sella"
#: crafts.lua
msgid "Mob Fence"
msgstr "Recinzione per mob"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Generatore di mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob LuceMin LuceMax Ammontare DistGiocat."
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Generatore inattivo (inserire le impostazioni)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Generatore attivo (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Impostazioni del generatore di mob fallite!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"Sintassi: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 per "
"disabilitare] distance[1-20] y_offset[-10 fino a 10]”"

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
#** Peaceful Mode Active - No Monsters Will Spawn= ** Peaceful Mode Active - No Monsters Will Spawn=** Friedlicher Modus aktiv - Es werden keine Monster spawnen
@1 (Tamed)=@1 (Gezähmt) Active Mob Limit Reached!=Aktives Mob-Limit erreicht!
@1 at full health (@2)=@1 bei voller Gesundheit (@2)
@1 has been tamed!=@1 wurde gezähmt!
@1 is owner!=@1 ist der Besitzer!
#Active Mob Limit Reached!=
Already protected!=Bereits geschützt!
#Change=
#Command:=
Enter name:=Namen eingeben:
#Enter texture:=
Lasso (right-click animal to put in inventory)=Lasso (Rechtsklick auf Tier, um es zu nehmen)
Leather=Leder
Meat=Fleisch
Missed!=Daneben!
Mob Fence=Kreaturen Zaun
#Mob Fence Top=
Mob Protection Rune=Kreaturschutzrune
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Kreaturenspawner-Einstellungen gescheitert!
Mob has been protected!=Kreatur wurde geschützt! Mob has been protected!=Kreatur wurde geschützt!
Name Tag=Namensschild @1 (Tamed)=@1 (Gezähmt)
Net (right-click animal to put in inventory)=Netz (Rechtsklick auf Tier, um es zu nehmen)
Not tamed!=Nicht gezähmt! Not tamed!=Nicht gezähmt!
Raw Meat=Rohes Fleisch @1 is owner!=@1 ist der Besitzer!
Missed!=Daneben!
Already protected!=Bereits geschützt!
@1 has been tamed!=@1 wurde gezähmt!
@1 follows:=@1 folgt:
@1 mobs removed.=@1 Mobs entfernt.
Enter name:=Namen eingeben:
Rename=Umbenennen Rename=Umbenennen
Saddle=Sattel Name Tag=Namensschild
Spawner Active (@1)=Spawner aktiv (@1) Leather=Leder
Spawner Not Active (enter settings)=Nicht aktiv (Einstellungen eingeben) Raw Meat=Rohes Fleisch
Meat=Fleisch
Lasso (right-click animal to put in inventory)=Lasso (Rechtsklick auf Tier, um es zu nehmen)
Net (right-click animal to put in inventory)=Netz (Rechtsklick auf Tier, um es zu nehmen)
Steel Shears (right-click to shear)=Stahlschere (Rechtsklick zum Scheren) Steel Shears (right-click to shear)=Stahlschere (Rechtsklick zum Scheren)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=Kreaturschutzrune
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=Kreaturschutzrune (Level 2)
Saddle=Sattel
Mob Fence=Kreaturen Zaun
Mob Fence Top=Kreaturen Zaun Oberteil
Mob Reset Stick=Kreatur reset Stock
Meat Block=Fleischblock
Raw Meat Block=Roher Fleischblock
Enter texture:=Textur eingeben:
Change=Ändern
Mob Spawner=Kreaturenspawner
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=(Kreaturenname) (Min. Licht) (Max. Licht) (Anzahl) (Spielerabstand) (Y-Offset)
Command:=Befehl:
Spawner Not Active (enter settings)=Nicht aktiv (Einstellungen eingeben)
Spawner Active (@1)=Spawner aktiv (@1)
Mob Spawner settings failed!=Kreaturenspawner-Einstellungen gescheitert!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
#** Peaceful Mode Active - No Monsters Will Spawn= ** Peaceful Mode Active - No Monsters Will Spawn=
#@1 (Tamed)= Active Mob Limit Reached!=
#@1 at full health (@2)= Mob has been protected!=
#@1 has been tamed!= @1 (Tamed)=
#@1 is owner!= Not tamed!=
#Active Mob Limit Reached!= @1 is owner!=
#Already protected!= Missed!=
#Change= Already protected!=
#Command:= @1 has been tamed!=
#Enter name:= @1 follows:=
#Enter texture:= @1 mobs removed.=
#Lasso (right-click animal to put in inventory)= Enter name:=
#Leather= Rename=
#Meat= Name Tag=
#Missed!= Leather=
#Mob Fence= Raw Meat=
#Mob Fence Top= Meat=
#Mob Protection Rune= Lasso (right-click animal to put in inventory)=
#Mob Reset Stick= Net (right-click animal to put in inventory)=
#Mob Spawner= Steel Shears (right-click to shear)=
#Mob Spawner settings failed!= Mob Protection Rune=
#Mob has been protected!= Mob Protection Rune (Level 2)=
#Name Tag= Saddle=
#Net (right-click animal to put in inventory)= Mob Fence=
#Not tamed!= Mob Fence Top=
#Raw Meat= Mob Reset Stick=
#Rename= Meat Block=
#Saddle= Raw Meat Block=
#Spawner Active (@1)= Enter texture:=
#Spawner Not Active (enter settings)= Change=
#Steel Shears (right-click to shear)= Mob Spawner=
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= (mob name) (min light) (max light) (amount) (player distance) (Y offset)=
#lifetimer expired, removed @1= Command:=
Spawner Not Active (enter settings)=
Spawner Active (@1)=
Mob Spawner settings failed!=
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
#** Peaceful Mode Active - No Monsters Will Spawn= ** Peaceful Mode Active - No Monsters Will Spawn=
@1 (Tamed)=@1 (Domesticado) Active Mob Limit Reached!=
@1 at full health (@2)=@1 con salud llena (@2)
@1 has been tamed!=@1 ha sido domesticado!
@1 is owner!=@1 es el dueño!
#Active Mob Limit Reached!=
Already protected!=Ya está protegido!
#Change=
#Command:=
Enter name:=Ingrese nombre:
#Enter texture:=
Lasso (right-click animal to put in inventory)=Lazo (click derecho en animal para colocar en inventario)
Leather=Cuero
Meat=Carne
Missed!=Perdido!
#Mob Fence=
#Mob Fence Top=
Mob Protection Rune=Runa de protección de Mob
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Configuracion de generador de Mob falló!
Mob has been protected!=El mob ha sido protegido! Mob has been protected!=El mob ha sido protegido!
Name Tag=Nombrar etiqueta @1 (Tamed)=@1 (Domesticado)
Net (right-click animal to put in inventory)=Red (click derecho en animal para colocar en inventario)
Not tamed!=No domesticado! Not tamed!=No domesticado!
Raw Meat=Carne cruda @1 is owner!=@1 es el dueño!
Missed!=Perdido!
Already protected!=Ya está protegido!
@1 has been tamed!=@1 ha sido domesticado!
@1 follows:=
@1 mobs removed.=
Enter name:=Ingrese nombre:
Rename=Renombrar Rename=Renombrar
Saddle=Montura Name Tag=Nombrar etiqueta
Spawner Active (@1)=Generador activo (@1) Leather=Cuero
Spawner Not Active (enter settings)=Generador no activo (ingrese config) Raw Meat=Carne cruda
Meat=Carne
Lasso (right-click animal to put in inventory)=Lazo (click derecho en animal para colocar en inventario)
Net (right-click animal to put in inventory)=Red (click derecho en animal para colocar en inventario)
Steel Shears (right-click to shear)=Tijera de acero (click derecho para esquilar) Steel Shears (right-click to shear)=Tijera de acero (click derecho para esquilar)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=Runa de protección de Mob
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=
Saddle=Montura
Mob Fence=
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=Generador no activo (ingrese config)
Spawner Active (@1)=Generador activo (@1)
Mob Spawner settings failed!=Configuracion de generador de Mob falló!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=** Mode pacifique activé - aucun monstre ne sera généré ** Peaceful Mode Active - No Monsters Will Spawn=** Mode pacifique activé - aucun monstre ne sera généré
@1 (Tamed)=@1 (apprivoisé)
@1 at full health (@2)=@1 est en pleine forme (@2)
@1 has been tamed!=@1 a été apprivoisé !
@1 is owner!=Appartient à @1 !
Active Mob Limit Reached!=Limite atteinte du nombre des êtres vivants actifs ! Active Mob Limit Reached!=Limite atteinte du nombre des êtres vivants actifs !
Already protected!=Déjà protégé ! Mob has been protected!=L'animal a été protégé !
Change=Changer @1 (Tamed)=@1 (apprivoisé)
Command:=Commande : Not tamed!=Non-apprivoisé !
Enter name:=Saisissez un nom : @1 is owner!=Appartient à @1 !
Enter texture:=Saisissez une texture :
Lasso (right-click animal to put in inventory)=Lasso (clic droit sur l'animal pour le mettre dans l'inventaire)
Leather=Cuir
Meat=Viande
Missed!=Raté ! Missed!=Raté !
Already protected!=Déjà protégé !
@1 has been tamed!=@1 a été apprivoisé !
@1 follows:=
@1 mobs removed.=
Enter name:=Saisissez un nom :
Rename=Renommer
Name Tag=Étiquette de collier
Leather=Cuir
Raw Meat=Viande crue
Meat=Viande
Lasso (right-click animal to put in inventory)=Lasso (clic droit sur l'animal pour le mettre dans l'inventaire)
Net (right-click animal to put in inventory)=Filet (clic droit sur l'animal pour le mettre dans l'inventaire)
Steel Shears (right-click to shear)=Ciseaux à laine (clic droit pour tondre)
Mob Protection Rune=Rune de protection des animaux
Mob Protection Rune (Level 2)=
Saddle=Selle
Mob Fence= Clôture à animaux Mob Fence= Clôture à animaux
Mob Fence Top=Haut de clôture à animaux Mob Fence Top=Haut de clôture à animaux
Mob Protection Rune=Rune de protection des animaux
Mob Reset Stick=Baguette de réinitialisation des êtres vivants Mob Reset Stick=Baguette de réinitialisation des êtres vivants
Meat Block=
Raw Meat Block=
Enter texture:=Saisissez une texture :
Change=Changer
Mob Spawner=Créateur d'êtres vivants Mob Spawner=Créateur d'êtres vivants
Mob Spawner settings failed!=Échec des paramètres du créateur d'être vivants ! (mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Mob has been protected!=L'animal a été protégé ! Command:=Commande :
Name Tag=Étiquette de collier
Net (right-click animal to put in inventory)=Filet (clic droit sur l'animal pour le mettre dans l'inventaire)
Not tamed!=Non-apprivoisé !
Raw Meat=Viande crue
Rename=Renommer
Saddle=Selle
Spawner Active (@1)=Créateur actif (@1)
Spawner Not Active (enter settings)=Créateur non actif (entrez les paramètres) Spawner Not Active (enter settings)=Créateur non actif (entrez les paramètres)
Steel Shears (right-click to shear)=Ciseaux à laine (clic droit pour tondre) Spawner Active (@1)=Créateur actif (@1)
Mob Spawner settings failed!=Échec des paramètres du créateur d'être vivants !
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=Syntaxe : «name min_lumière[0-14] max_lumière[0-14] max_être_vivant_dans_région[0 pour désactiver] distance_joueur[1-20] décalage_y[-10 to 10]» Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=Syntaxe : «name min_lumière[0-14] max_lumière[0-14] max_être_vivant_dans_région[0 pour désactiver] distance_joueur[1-20] décalage_y[-10 to 10]»
lifetimer expired, removed @1=Être immortel expiré ; @1 retiré

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=** Modalità pacifica attiva - non comparirà nessun mostro ** Peaceful Mode Active - No Monsters Will Spawn=** Modalità pacifica attiva - non comparirà nessun mostro
@1 (Tamed)=@1 (Addomesticato) Active Mob Limit Reached!=
@1 at full health (@2)=@1 in piena salute (@2)
@1 has been tamed!=@1 è stato addomesticato!
@1 is owner!=Il padrone è @1!
#Active Mob Limit Reached!=
Already protected!=Già protetto!
#Change=
#Command:=
Enter name:=Inserire il nome:
#Enter texture:=
Lasso (right-click animal to put in inventory)=Lazo (click di destro per mettere l'animale nell'inventario)
Leather=Pelle
Meat=Carne
Missed!=Mancato!
Mob Fence=Recinzione per mob
#Mob Fence Top=
Mob Protection Rune=Runa di protezione per mob
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Impostazioni del generatore di mob fallite!
Mob has been protected!=Il mob è stato protetto! Mob has been protected!=Il mob è stato protetto!
Name Tag=Targhetta @1 (Tamed)=@1 (Addomesticato)
Net (right-click animal to put in inventory)=Rete (click destro per mettere l'animale nell'inventario)
Not tamed!=Non addomesticato! Not tamed!=Non addomesticato!
Raw Meat=Carne cruda @1 is owner!=Il padrone è @1!
Missed!=Mancato!
Already protected!=Già protetto!
@1 has been tamed!=@1 è stato addomesticato!
@1 follows:=
@1 mobs removed.=
Enter name:=Inserire il nome:
Rename=Rinomina Rename=Rinomina
Saddle=Sella Name Tag=Targhetta
Spawner Active (@1)=Generatore attivo (@1) Leather=Pelle
Spawner Not Active (enter settings)=Generatore inattivo (inserire le impostazioni) Raw Meat=Carne cruda
Meat=Carne
Lasso (right-click animal to put in inventory)=Lazo (click di destro per mettere l'animale nell'inventario)
Net (right-click animal to put in inventory)=Rete (click destro per mettere l'animale nell'inventario)
Steel Shears (right-click to shear)=Cesoie d'acciaio (click destro per tosare) Steel Shears (right-click to shear)=Cesoie d'acciaio (click destro per tosare)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=Runa di protezione per mob
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=
Saddle=Sella
Mob Fence=Recinzione per mob
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=Generatore inattivo (inserire le impostazioni)
Spawner Active (@1)=Generatore attivo (@1)
Mob Spawner settings failed!=Impostazioni del generatore di mob fallite!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul ** Peaceful Mode Active - No Monsters Will Spawn=** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul
@1 (Tamed)=@1 (Jinak) Active Mob Limit Reached!=
@1 at full health (@2)=Mata kesihatan @1 telah penuh (@2)
@1 has been tamed!=@1 telah dijinakkan!
@1 is owner!=Ini hak milik @1!
#Active Mob Limit Reached!=
Already protected!=Telah dilindungi!
#Change=
#Command:=
Enter name:=Masukkan nama:
#Enter texture:=
Lasso (right-click animal to put in inventory)=Tanjul (klik-kanan haiwan untuk masukkan ke inventori)
Leather=Kulit
Meat=Daging Bakar
Missed!=Terlepas!
Mob Fence=Pagar Mob
#Mob Fence Top=
Mob Protection Rune=Rune Perlindungan Mob
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Penetapan Pewujud Mob gagal!
Mob has been protected!=Mob telah pun dilindungi! Mob has been protected!=Mob telah pun dilindungi!
Name Tag=Tanda Nama @1 (Tamed)=@1 (Jinak)
Net (right-click animal to put in inventory)=Jaring (klik-kanan haiwan untuk masukkan ke inventori)
Not tamed!=Belum dijinakkan! Not tamed!=Belum dijinakkan!
Raw Meat=Daging Mentah @1 is owner!=Ini hak milik @1!
Missed!=Terlepas!
Already protected!=Telah dilindungi!
@1 has been tamed!=@1 telah dijinakkan!
@1 follows:=
@1 mobs removed.=
Enter name:=Masukkan nama:
Rename=Namakan semula Rename=Namakan semula
Saddle=Pelana Name Tag=Tanda Nama
Spawner Active (@1)=Pewujud Mob Aktif (@1) Leather=Kulit
Spawner Not Active (enter settings)=Pewujud Mob Tidak Aktif (masukkan tetapan) Raw Meat=Daging Mentah
Meat=Daging Bakar
Lasso (right-click animal to put in inventory)=Tanjul (klik-kanan haiwan untuk masukkan ke inventori)
Net (right-click animal to put in inventory)=Jaring (klik-kanan haiwan untuk masukkan ke inventori)
Steel Shears (right-click to shear)=Ketam Keluli (klik-kanan untuk mengetam bulu biri-biri) Steel Shears (right-click to shear)=Ketam Keluli (klik-kanan untuk mengetam bulu biri-biri)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=Rune Perlindungan Mob
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=
Saddle=Pelana
Mob Fence=Pagar Mob
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=Pewujud Mob Tidak Aktif (masukkan tetapan)
Spawner Active (@1)=Pewujud Mob Aktif (@1)
Mob Spawner settings failed!=Penetapan Pewujud Mob gagal!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
#** Peaceful Mode Active - No Monsters Will Spawn= ** Peaceful Mode Active - No Monsters Will Spawn=
#@1 (Tamed)= Active Mob Limit Reached!=
@1 at full health (@2)=@1 em plena saude (@2) Mob has been protected!=
@1 has been tamed!=@1 foi domesticado! @1 (Tamed)=
@1 is owner!=Dono @1!
#Active Mob Limit Reached!=
#Already protected!=
#Change=
#Command:=
Enter name:=Insira um nome:
#Enter texture:=
Lasso (right-click animal to put in inventory)=Laço (clique-direito no animal para por no inventario)
Leather=Couro
Meat=Carne
Missed!=Faltou!
#Mob Fence=
#Mob Fence Top=
#Mob Protection Rune=
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Configuraçao de Spawnador do Mob falhou!
#Mob has been protected!=
Name Tag=Etiqueta
Net (right-click animal to put in inventory)=Net (clique-direito no animal para por no inventario)
Not tamed!=Indomesticado! Not tamed!=Indomesticado!
Raw Meat=Carne crua @1 is owner!=Dono @1!
Missed!=Faltou!
Already protected!=
@1 has been tamed!=@1 foi domesticado!
@1 follows:=
@1 mobs removed.=
Enter name:=Insira um nome:
Rename=Renomear Rename=Renomear
#Saddle= Name Tag=Etiqueta
Spawner Active (@1)=Spawnador Ativo (@1) Leather=Couro
Spawner Not Active (enter settings)=Spawnador Inativo (configurar) Raw Meat=Carne crua
Meat=Carne
Lasso (right-click animal to put in inventory)=Laço (clique-direito no animal para por no inventario)
Net (right-click animal to put in inventory)=Net (clique-direito no animal para por no inventario)
Steel Shears (right-click to shear)=Tesoura de Aço (clique-direito para tosquiar) Steel Shears (right-click to shear)=Tesoura de Aço (clique-direito para tosquiar)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=
Saddle=
Mob Fence=
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=Spawnador Inativo (configurar)
Spawner Active (@1)=Spawnador Ativo (@1)
Mob Spawner settings failed!=Configuraçao de Spawnador do Mob falhou!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

38
locale/mobs.pt_BR.tr Normal file
View File

@ -0,0 +1,38 @@
# textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=
Active Mob Limit Reached!=Limite de Mob Ativo Atingido!
Mob has been protected!=Mob foi protegido
@1 (Tamed)=@1 (Domesticado)
Not tamed!=Não domesticado!
@1 is owner!=Dono @1!
Missed!=Faltou!
Already protected!=
@1 has been tamed!=@1 foi domesticado!
@1 follows:=@1 Segue:
@1 mobs removed.=@1 mobs removido.
Enter name:=Insira um nome:
Rename=Renomear
Name Tag=Etiqueta
Leather=Couro
Raw Meat=Carne crua
Meat=Carne
Lasso (right-click animal to put in inventory)=Laço (clique-direito no animal para por no inventario)
Net (right-click animal to put in inventory)=Net (clique-direito no animal para por no inventario)
Steel Shears (right-click to shear)=Tesoura de Aço (clique-direito para tosquiar)
Mob Protection Rune=Runa de Proteção para Mob
Mob Protection Rune (Level 2)=Runa de Proteção para Mob (Nivel 2)
Saddle=Sela
Mob Fence= Cerca para mob
Mob Fence Top= Topo da cerca para mob
Mob Reset Stick=
Meat Block=Bloco de carne
Raw Meat Block=Bloco de Carne crua
Enter texture:=Insira a textura:
Change=Mudar
Mob Spawner=Spawner de mob
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=(Nome do mob) (min light) (max light) (amount) (player distance) (Y offset)
Command:=Comando:
Spawner Not Active (enter settings)=Spawner Inativo (configurar)
Spawner Active (@1)=Spawner Ativo (@1)
Mob Spawner settings failed!=Configuraçao de Spawner do Mob falhou!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=** Мирный модус активирован - монстры не спаунятся ** Peaceful Mode Active - No Monsters Will Spawn=** Мирный Режим Активен - Никаких Монстров Не Появиться
Active Mob Limit Reached!=Лимит Активных Мобов Достигнут!
Mob has been protected!=Моб был защищён!
@1 (Tamed)=@1 (Прирученный) @1 (Tamed)=@1 (Прирученный)
@1 at full health (@2)=@1 при полном здоровье (@2) Not tamed!=Не прирученный!
@1 has been tamed!=@1 приручен @1 is owner!=@1 владелец!
@1 is owner!=@1 владелец
#Active Mob Limit Reached!=
Already protected!=Уже защищен!
#Change=
#Command:=
Enter name:=Введите имя:
#Enter texture:=
Lasso (right-click animal to put in inventory)=Лассо (Правый клик - положить животное в инвентарь)
Leather=Кожа
Meat=Мясо
Missed!=Промазал! Missed!=Промазал!
Mob Fence=Забор от мобов Already protected!=Уже защищён!
#Mob Fence Top= @1 has been tamed!=@1 был приручен!
Mob Protection Rune=Защитная руна мобов @1 follows:=@1 следует:
#Mob Reset Stick= @1 mobs removed.=@1 мобов удалено.
#Mob Spawner= Enter name:=Введите имя:
Mob Spawner settings failed!=Настройки спаунера моба провалились
Mob has been protected!=Моб защищен!
Name Tag=Новый тэг
Net (right-click animal to put in inventory)=Сеть (Правый клик - положить животное в инвентарь)
Not tamed!=Не прирученный
Raw Meat=Сырое мясо
Rename=Переименовать Rename=Переименовать
Name Tag=Новый Тег
Leather=Кожа
Raw Meat=Сырое Мясо
Meat=Мясо
Lasso (right-click animal to put in inventory)=Лассо (Правый клик - положить животное в инвентарь)
Net (right-click animal to put in inventory)=Сеть (Правый клик - положить животное в инвентарь)
Steel Shears (right-click to shear)=Железные Ножницы (Правый клик - подстричь)
Mob Protection Rune=Руна Защиты Моба
Mob Protection Rune (Level 2)=Руна Защиты Моба (2 Уровень)
Saddle=Седло Saddle=Седло
Spawner Active (@1)=Активные спаунер (@1) Mob Fence=Забор для Мобов
Spawner Not Active (enter settings)=Спаунер не активен (введите настройки) Mob Fence Top=Верхний Забор для Мобов
Steel Shears (right-click to shear)=Ножницы (Правый клик - подстричь) Mob Reset Stick=Палка Сброса Моба
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Meat Block=Мясной Блок
#lifetimer expired, removed @1= Raw Meat Block=Сырой Мясной Блок
Enter texture:=Введите текстуру:
Change=Изменить
Mob Spawner=Спавнер Мобов
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=(имя моба) (минимальный свет) (максимальный свет) (количество) (дистанция игрока) (смещение Y)
Command:=Команда:
Spawner Not Active (enter settings)=Спавнер Не Активен (введите настройки)
Spawner Active (@1)=Спавнер Активен (@1)
Mob Spawner settings failed!=Настроить Спавнер Мобов не удалось!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=Синтаксис: “имя мин_свет[0-14] макс_свет[0-14] максобов_в_зоне[0 чтобы выключить] дистанция_игроков[1-20] смещение_y[-10 to 10]”

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
#** Peaceful Mode Active - No Monsters Will Spawn= ** Peaceful Mode Active - No Monsters Will Spawn=
#@1 (Tamed)= Active Mob Limit Reached!=
@1 at full health (@2)=@1 tam canında (@2) Mob has been protected!=
@1 has been tamed!=@1 tamamen evcilleştirilmiştir! @1 (Tamed)=
@1 is owner!=Sahibi @1!
#Active Mob Limit Reached!=
#Already protected!=
#Change=
#Command:=
Enter name:=İsim gir:
#Enter texture:=
Lasso (right-click animal to put in inventory)=Kement (hayvana sağ tıklayarak envantere koy)
Leather=Deri
Meat=Et
Missed!=Kaçırdın!
Mob Fence=Canavar Yaratıcı
#Mob Fence Top=
#Mob Protection Rune=
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Yaratıcı ayarları uygulanamadı.
#Mob has been protected!=
Name Tag=İsim etiketi
Net (right-click animal to put in inventory)=Ağ (hayvana sağ tıklayarak envantere koy)
Not tamed!=Evcil değil! Not tamed!=Evcil değil!
Raw Meat=Çiğ et @1 is owner!=Sahibi @1!
Missed!=Kaçırdın!
Already protected!=
@1 has been tamed!=@1 tamamen evcilleştirilmiştir!
@1 follows:=
@1 mobs removed.=
Enter name:=İsim gir:
Rename=Yeniden adlandır Rename=Yeniden adlandır
#Saddle= Name Tag=İsim etiketi
Spawner Active (@1)=Yaratıcı aktif (@1) Leather=Deri
Spawner Not Active (enter settings)=Yaratıcı aktif değil (ayarlara gir) Raw Meat=Çiğ et
Meat=Et
Lasso (right-click animal to put in inventory)=Kement (hayvana sağ tıklayarak envantere koy)
Net (right-click animal to put in inventory)=Ağ (hayvana sağ tıklayarak envantere koy)
Steel Shears (right-click to shear)=Çelik makas (sağ tıklayarak kes) Steel Shears (right-click to shear)=Çelik makas (sağ tıklayarak kes)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=
Saddle=
Mob Fence=Canavar Yaratıcı
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=Yaratıcı aktif değil (ayarlara gir)
Spawner Active (@1)=Yaratıcı aktif (@1)
Mob Spawner settings failed!=Yaratıcı ayarları uygulanamadı.
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

43
locale/mobs.uk.tr Normal file
View File

@ -0,0 +1,43 @@
# textdomain: mobs
Mobs Redo API=API для мобів
Simple and feature rich API to quickly add mobs into your world.=Простий і функціональний API для швидкого додавання мобів у світ.
Adds a mob api for mods to add animals or monsters etc.=Додає API для модів про тварин, монстрів тощо.
** Peaceful Mode Active - No Monsters Will Spawn=** Під час мирного режиму моби не спавняться
Active Mob Limit Reached!=Ліміт активних мобів досягнуто!
Mob has been protected!=Моб був захищений!
@1 (Tamed)=@1 (Приручений)
Not tamed!=Не приручений!
@1 is owner!=@1 є власником!
Missed!=Промах!
Already protected!=Уже захищено!
@1 has been tamed!=@1 приручено!
@1 follows:=@1 слідує:
@1 mobs removed.=@1 мобів видалено.
Enter name:=Введіть ім'я:
Rename=Перейменувати
Name Tag=Теґ для назви
Mob Repellent=Відлякувач мобів
Hearing Vines=Чутливі ліани
Leather=Шкіра
Raw Meat=Сире м'ясо
Meat=М'ясо
Lasso (right-click animal to put in inventory)=Ласо (ПКМ - покласти тварину в інвентар)
Net (right-click animal to put in inventory)=Сітка (ПКМ - покласти тварину в інвентар)
Steel Shears (right-click to shear)=Залізні ножиці (ПКМ - підстригти)
Mob Protection Rune=Руна Захисту Мобу
Mob Protection Rune (Level 2)=Руна Захисту Мобу (II рівень)
Saddle=Сідло
Mob Fence=Паркан для мобів
Mob Fence Top=Верхній паркан для мобів
Mob Reset Stick=Палиця скидання мобу
Meat Block=М'ясний блок
Raw Meat Block=Сирий м'ясний блок
Enter texture:=Введіть текстуру:
Change=Змінити
Mob Spawner=Спавнер мобів
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=(ім'я мобу) (мін. світло) (макс. світло) (кількість) (дистанція гравця) (зміщення Y)
Command:=Команда:
Spawner Not Active (enter settings)=Спавнер не активний (введіть налаштування)
Spawner Active (@1)=Спавнер активний (@1)
Mob Spawner settings failed!=Не вдалося налаштувати спавнер мобів!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=Синтаксис: “ім'я мін.світло[0-14] макс.світло[0-14] максобів_уоні[0 для вимкнення] дистанція_гравців[1-20] зміщення_y[-10 до 10]”

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=** 和平模式已激活——没有怪物会产生 ** Peaceful Mode Active - No Monsters Will Spawn=** 和平模式已激活——没有怪物会产生
@1 (Tamed)=@1已驯服 Active Mob Limit Reached!=
@1 at full health (@2)=@1已经满血@2
@1 has been tamed!=@1已经被驯服
@1 is owner!=@1 是主人
#Active Mob Limit Reached!=
Already protected!=已经被保护!
#Change=
#Command:=
Enter name:=输入名称:
#Enter texture:=
Lasso (right-click animal to put in inventory)=套索(右键单击动物以放入物品栏)
Leather=皮革
Meat=肉
Missed!=没抓住!
Mob Fence=Mob 栅栏
#Mob Fence Top=
Mob Protection Rune=Mob 保护符文
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Mob 孵化器设置失败!
Mob has been protected!=Mob 已经被保护了! Mob has been protected!=Mob 已经被保护了!
Name Tag=名称标签 @1 (Tamed)=@1已驯服
Net (right-click animal to put in inventory)=网(右键单击动物以放入物品栏)
Not tamed!=没有驯服! Not tamed!=没有驯服!
Raw Meat=生肉 @1 is owner!=@1 是主人
Missed!=没抓住!
Already protected!=已经被保护!
@1 has been tamed!=@1已经被驯服
@1 follows:=
@1 mobs removed.=
Enter name:=输入名称:
Rename=重新命名 Rename=重新命名
Saddle=鞍 Name Tag=名称标签
Spawner Active (@1)=孵化器正在运转(@1 Leather=皮革
Spawner Not Active (enter settings)=孵化器未使用(输入设置) Raw Meat=生肉
Meat=肉
Lasso (right-click animal to put in inventory)=套索(右键单击动物以放入物品栏)
Net (right-click animal to put in inventory)=网(右键单击动物以放入物品栏)
Steel Shears (right-click to shear)=钢剪(右键单击以剪切) Steel Shears (right-click to shear)=钢剪(右键单击以剪切)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=Mob 保护符文
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=
Saddle=鞍
Mob Fence=Mob 栅栏
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=孵化器未使用(输入设置)
Spawner Active (@1)=孵化器正在运转(@1
Mob Spawner settings failed!=Mob 孵化器设置失败!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,34 +1,38 @@
# textdomain:mobs # textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=** 和平模式已激活——沒有怪物會產生 ** Peaceful Mode Active - No Monsters Will Spawn=** 和平模式已激活——沒有怪物會產生
@1 (Tamed)=@1已馴服 Active Mob Limit Reached!=
@1 at full health (@2)=@1已經滿血@2
@1 has been tamed!=@1已經被馴服
@1 is owner!=@1 是主人
#Active Mob Limit Reached!=
Already protected!=已經被保護!
#Change=
#Command:=
Enter name:=輸入名稱:
#Enter texture:=
Lasso (right-click animal to put in inventory)=套索(右鍵單擊動物以放入物品欄)
Leather=皮革
Meat=肉
Missed!=沒抓住!
Mob Fence=Mob 柵欄
#Mob Fence Top=
Mob Protection Rune=Mob 保護符文
#Mob Reset Stick=
#Mob Spawner=
Mob Spawner settings failed!=Mob 孵化器設置失敗!
Mob has been protected!=Mob 已經被保護了! Mob has been protected!=Mob 已經被保護了!
Name Tag=名稱標籤 @1 (Tamed)=@1已馴服
Net (right-click animal to put in inventory)=網(右鍵單擊動物以放入物品欄)
Not tamed!=沒有馴服! Not tamed!=沒有馴服!
Raw Meat=生肉 @1 is owner!=@1 是主人
Missed!=沒抓住!
Already protected!=已經被保護!
@1 has been tamed!=@1已經被馴服
@1 follows:=
@1 mobs removed.=
Enter name:=輸入名稱:
Rename=重新命名 Rename=重新命名
Saddle=鞍 Name Tag=名稱標籤
Spawner Active (@1)=孵化器正在運轉(@1 Leather=皮革
Spawner Not Active (enter settings)=孵化器未使用(輸入設置) Raw Meat=生肉
Meat=肉
Lasso (right-click animal to put in inventory)=套索(右鍵單擊動物以放入物品欄)
Net (right-click animal to put in inventory)=網(右鍵單擊動物以放入物品欄)
Steel Shears (right-click to shear)=鋼剪(右鍵單擊以剪切) Steel Shears (right-click to shear)=鋼剪(右鍵單擊以剪切)
#Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”= Mob Protection Rune=Mob 保護符文
#lifetimer expired, removed @1= Mob Protection Rune (Level 2)=
Saddle=鞍
Mob Fence=Mob 柵欄
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=孵化器未使用(輸入設置)
Spawner Active (@1)=孵化器正在運轉(@1
Mob Spawner settings failed!=Mob 孵化器設置失敗!
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,131 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-05 23:40+0800\n"
"PO-Revision-Date: 2018-02-05 23:51+0800\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"Last-Translator: MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ms\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul"
#: api.lua
msgid "Mob has been protected!"
msgstr "Mob telah pun dilindungi!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Jinak)"
#: api.lua
msgid "Not tamed!"
msgstr "Belum dijinakkan!"
#: api.lua
msgid "@1 is owner!"
msgstr "Ini hak milik @1!"
#: api.lua
msgid "Missed!"
msgstr "Terlepas!"
#: api.lua
msgid "Already protected!"
msgstr "Telah dilindungi!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "Mata kesihatan @1 telah penuh (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 telah dijinakkan!"
#: api.lua
msgid "Enter name:"
msgstr "Masukkan nama:"
#: api.lua
msgid "Rename"
msgstr "Namakan semula"
#: crafts.lua
msgid "Name Tag"
msgstr "Tanda Nama"
#: crafts.lua
msgid "Leather"
msgstr "Kulit"
#: crafts.lua
msgid "Raw Meat"
msgstr "Daging Mentah"
#: crafts.lua
msgid "Meat"
msgstr "Daging Bakar"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Tanjul (klik-kanan haiwan untuk masukkan ke inventori)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Jaring (klik-kanan haiwan untuk masukkan ke inventori)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Ketam Keluli (klik-kanan untuk mengetam bulu biri-biri)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Rune Perlindungan Mob"
#: crafts.lua
msgid "Saddle"
msgstr "Pelana"
#: crafts.lua
msgid "Mob Fence"
msgstr "Pagar Mob"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Pewujud Mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob CahayaMin CahayaMax Amaun JarakPemain"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Pewujud Mob Tidak Aktif (masukkan tetapan)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Pewujud Mob Aktif (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Penetapan Pewujud Mob gagal!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"Sintaks: \"nama cahaya_minimum[0-14] cahaya_maksimum[0-14] "
"amaun_mob_maksimum[0 untuk lumpuhkan] jarak[1-20] ketinggian[-10 hingga 10]\""

View File

@ -1,133 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: mobs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2017-07-02 14:55+0200\n"
"Last-Translator: Wuzzy <almikes@aol.com>\n"
"Language-Team: \n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr ""
#: api.lua
msgid "@1 (Tamed)"
msgstr ""
#: api.lua
msgid "Not tamed!"
msgstr "Indomesticado!"
#: api.lua
msgid "@1 is owner!"
msgstr "Dono @1!"
#: api.lua
msgid "Missed!"
msgstr "Faltou!"
#: api.lua
msgid "Already protected!"
msgstr ""
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 em plena saude (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 foi domesticado!"
#: api.lua
msgid "Enter name:"
msgstr "Insira um nome:"
#: api.lua
msgid "Rename"
msgstr "Renomear"
#: crafts.lua
msgid "Name Tag"
msgstr "Etiqueta"
#: crafts.lua
msgid "Leather"
msgstr "Couro"
#: crafts.lua
msgid "Raw Meat"
msgstr "Carne crua"
#: crafts.lua
msgid "Meat"
msgstr "Carne"
#: crafts.lua
#, fuzzy
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Laço (clique-direito no animal para por no inventario)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Net (clique-direito no animal para por no inventario)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Tesoura de Aço (clique-direito para tosquiar)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr ""
#: crafts.lua
msgid "Saddle"
msgstr ""
#: crafts.lua
msgid "Mob Fence"
msgstr ""
#: spawner.lua
msgid "Mob Spawner"
msgstr "Spawnador de Mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob LuzMinima LuzMaxima Valor DistJogador"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Spawnador Inativo (configurar)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Spawnador Ativo (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Configuraçao de Spawnador do Mob falhou!"
#: spawner.lua
#, fuzzy
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"> nome luz_min[0-14] luz_max[0-14] max_mobs_na_area[0 para desabilitar] "
"distancia[1-20] y_offset[-10 a 10]"

View File

@ -1,129 +0,0 @@
# Russian translation for the mobs_redo mod.
# Copyright (C) 2018 TenPlus1
# This file is distributed under the same license as the mobs_redo package.
# Oleg720 <olegsiriak@yandex.ru>, 2017.
# CodeXP <codexp@gmx.net>, 2018.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-13 15:47+0200\n"
"PO-Revision-Date: 2018-03-23 22:22+0100\n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** Мирный модус активирован - монстры не спаунятся"
#: api.lua
msgid "Mob has been protected!"
msgstr "Моб защищен!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Прирученный)"
#: api.lua
msgid "Not tamed!"
msgstr "Не прирученный"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 владелец"
#: api.lua
msgid "Missed!"
msgstr "Промазал!"
#: api.lua
msgid "Already protected!"
msgstr "Уже защищен!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 при полном здоровье (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 приручен"
#: api.lua
msgid "Enter name:"
msgstr "Введите имя:"
#: api.lua
msgid "Rename"
msgstr "Переименовать"
#: crafts.lua
msgid "Name Tag"
msgstr "Новый тэг"
#: crafts.lua
msgid "Leather"
msgstr "Кожа"
#: crafts.lua
msgid "Raw Meat"
msgstr "Сырое мясо"
#: crafts.lua
msgid "Meat"
msgstr "Мясо"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Лассо (Правый клик - положить животное в инвентарь)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Сеть (Правый клик - положить животное в инвентарь)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Ножницы (Правый клик - подстричь)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Защитная руна мобов"
#: crafts.lua
msgid "Saddle"
msgstr "Седло"
#: crafts.lua
msgid "Mob Fence"
msgstr "Забор от мобов"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Спаунер моба"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr ""
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Спаунер не активен (введите настройки)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Активные спаунер (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Настройки спаунера моба провалились"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""

View File

@ -1,136 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr ""
#: api.lua
msgid "@1 (Tamed)"
msgstr ""
#: api.lua
msgid "Not tamed!"
msgstr ""
#: api.lua
msgid "@1 is owner!"
msgstr ""
#: api.lua
msgid "Missed!"
msgstr ""
#: api.lua
msgid "Already protected!"
msgstr ""
#: api.lua
msgid "@1 at full health (@2)"
msgstr ""
#: api.lua
msgid "@1 has been tamed!"
msgstr ""
#: api.lua
msgid "Enter name:"
msgstr ""
#: api.lua
msgid "Rename"
msgstr ""
#: crafts.lua
msgid "Name Tag"
msgstr ""
#: crafts.lua
msgid "Leather"
msgstr ""
#: crafts.lua
msgid "Raw Meat"
msgstr ""
#: crafts.lua
msgid "Meat"
msgstr ""
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr ""
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr ""
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr ""
#: crafts.lua
msgid "Mob Protection Rune"
msgstr ""
#: crafts.lua
msgid "Saddle"
msgstr ""
#: crafts.lua
msgid "Mob Fence"
msgstr ""
#: crafts.lua
msgid "Mob Fence Top"
msgstr ""
#: spawner.lua
msgid "Mob Spawner"
msgstr ""
#: spawner.lua
msgid "(mob name) (min light) (max light) (amount) (player distance) (Y offset)"
msgstr ""
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr ""
#@ spawner.lua
msgid "Command:"
msgstr ""
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr ""
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr ""
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""

38
locale/template.txt Normal file
View File

@ -0,0 +1,38 @@
# textdomain: mobs
** Peaceful Mode Active - No Monsters Will Spawn=
Active Mob Limit Reached!=
Mob has been protected!=
@1 (Tamed)=
Not tamed!=
@1 is owner!=
Missed!=
Already protected!=
@1 has been tamed!=
@1 follows:=
@1 mobs removed.=
Enter name:=
Rename=
Name Tag=
Leather=
Raw Meat=
Meat=
Lasso (right-click animal to put in inventory)=
Net (right-click animal to put in inventory)=
Steel Shears (right-click to shear)=
Mob Protection Rune=
Mob Protection Rune (Level 2)=
Saddle=
Mob Fence=
Mob Fence Top=
Mob Reset Stick=
Meat Block=
Raw Meat Block=
Enter texture:=
Change=
Mob Spawner=
(mob name) (min light) (max light) (amount) (player distance) (Y offset)=
Command:=
Spawner Not Active (enter settings)=
Spawner Active (@1)=
Mob Spawner settings failed!=
Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”=

View File

@ -1,133 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: mobs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2017-07-02 14:56+0200\n"
"Last-Translator: Wuzzy <almikes@aol.com>\n"
"Language-Team: \n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr ""
#: api.lua
msgid "@1 (Tamed)"
msgstr ""
#: api.lua
msgid "Not tamed!"
msgstr "Evcil değil!"
#: api.lua
msgid "@1 is owner!"
msgstr "Sahibi @1!"
#: api.lua
msgid "Missed!"
msgstr "Kaçırdın!"
#: api.lua
msgid "Already protected!"
msgstr ""
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 tam canında (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 tamamen evcilleştirilmiştir!"
#: api.lua
msgid "Enter name:"
msgstr "İsim gir:"
#: api.lua
msgid "Rename"
msgstr "Yeniden adlandır"
#: crafts.lua
msgid "Name Tag"
msgstr "İsim etiketi"
#: crafts.lua
msgid "Leather"
msgstr "Deri"
#: crafts.lua
msgid "Raw Meat"
msgstr "Çiğ et"
#: crafts.lua
msgid "Meat"
msgstr "Et"
#: crafts.lua
#, fuzzy
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Kement (hayvana sağ tıklayarak envantere koy)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Ağ (hayvana sağ tıklayarak envantere koy)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Çelik makas (sağ tıklayarak kes)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr ""
#: crafts.lua
msgid "Saddle"
msgstr ""
#: crafts.lua
msgid "Mob Fence"
msgstr "Canavar Yaratıcı"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Canavar Yaratıcı"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob MinIşık MaxIşık Miktar OyuncuMesafesi"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Yaratıcı aktif değil (ayarlara gir)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Yaratıcı aktif (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Yaratıcı ayarları uygulanamadı."
#: spawner.lua
#, fuzzy
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"> isim min_isik[0-14] max_isik[0-14] alandaki_max_canavar_sayisi[kapatmak "
"icin 0] mesafe[1-20] y_cikinti[-10 ve 10 arası]"

View File

@ -1,130 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# IFRFSX<1079092922@qq.com>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** 和平模式已激活——没有怪物会产生"
#: api.lua
msgid "Mob has been protected!"
msgstr "Mob 已经被保护了!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1已驯服"
#: api.lua
msgid "Not tamed!"
msgstr "没有驯服!"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 是主人"
#: api.lua
msgid "Missed!"
msgstr "没抓住!"
#: api.lua
msgid "Already protected!"
msgstr "已经被保护!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1已经满血@2"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1已经被驯服"
#: api.lua
msgid "Enter name:"
msgstr "输入名称:"
#: api.lua
msgid "Rename"
msgstr "重新命名"
#: crafts.lua
msgid "Name Tag"
msgstr "名称标签"
#: crafts.lua
msgid "Leather"
msgstr "皮革"
#: crafts.lua
msgid "Raw Meat"
msgstr "生肉"
#: crafts.lua
msgid "Meat"
msgstr "肉"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "套索(右键单击动物以放入物品栏)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "网(右键单击动物以放入物品栏)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "钢剪(右键单击以剪切)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Mob 保护符文"
#: crafts.lua
msgid "Saddle"
msgstr "鞍"
#: crafts.lua
msgid "Mob Fence"
msgstr "Mob 栅栏"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Mob 孵化器"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob/最小光量/最大光量/玩家距离"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "孵化器未使用(输入设置)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "孵化器正在运转(@1"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Mob 孵化器设置失败!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"语法: “物品名称 最小光亮[0-14] 最大光亮[0-14] 范围内的最大Mob数量[0 to disable] "
"距离[1-20] y_offset[-10 to 10]”"

View File

@ -1,130 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# IFRFSX<1079092922@qq.com>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** 和平模式已激活——沒有怪物會產生"
#: api.lua
msgid "Mob has been protected!"
msgstr "Mob 已經被保護了!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1已馴服"
#: api.lua
msgid "Not tamed!"
msgstr "沒有馴服!"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 是主人"
#: api.lua
msgid "Missed!"
msgstr "沒抓住!"
#: api.lua
msgid "Already protected!"
msgstr "已經被保護!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1已經滿血@2"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1已經被馴服"
#: api.lua
msgid "Enter name:"
msgstr "輸入名稱:"
#: api.lua
msgid "Rename"
msgstr "重新命名"
#: crafts.lua
msgid "Name Tag"
msgstr "名稱標籤"
#: crafts.lua
msgid "Leather"
msgstr "皮革"
#: crafts.lua
msgid "Raw Meat"
msgstr "生肉"
#: crafts.lua
msgid "Meat"
msgstr "肉"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "套索(右鍵單擊動物以放入物品欄)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "網(右鍵單擊動物以放入物品欄)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "鋼剪(右鍵單擊以剪切)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Mob 保護符文"
#: crafts.lua
msgid "Saddle"
msgstr "鞍"
#: crafts.lua
msgid "Mob Fence"
msgstr "Mob 柵欄"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Mob 孵化器"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob/最小光量/最大光量/玩家距離"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "孵化器未使用(輸入設置)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "孵化器正在運轉(@1"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Mob 孵化器設置失敗!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"語法: “物品名稱 最小光亮[0-14] 最大光亮[0-14] 範圍內的最大Mob數量[0 to disable] "
"距離[1-20] y_offset[-10 to 10]”"

View File

@ -1,18 +1,98 @@
if minetest.get_modpath("lucky_block") then local S = core.get_translator("mobs")
lucky_block:add_blocks({ -- add lucky blocks
{"dro", {"mobs:meat_raw"}, 5},
{"dro", {"mobs:meat"}, 5}, lucky_block:add_blocks({
{"dro", {"mobs:nametag"}, 1}, {"dro", {"mobs:meat_raw"}, 5},
{"dro", {"mobs:leather"}, 5}, {"dro", {"mobs:meat"}, 5},
{"dro", {"default:stick"}, 10}, {"dro", {"mobs:nametag"}, 1},
{"dro", {"mobs:net"}, 1}, {"dro", {"mobs:leather"}, 5},
{"dro", {"mobs:lasso"}, 1}, {"dro", {"default:stick"}, 10},
{"dro", {"mobs:shears"}, 1}, {"dro", {"mobs:net"}, 1},
{"dro", {"mobs:protector"}, 1}, {"dro", {"mobs:lasso"}, 1},
{"dro", {"mobs:fence_wood"}, 10}, {"dro", {"mobs:shears"}, 1},
{"dro", {"mobs:fence_top"}, 12}, {"dro", {"mobs:protector"}, 1},
{"lig"} {"dro", {"mobs:fence_wood"}, 10},
}) {"dro", {"mobs:fence_top"}, 12},
end {"lig"},
{"dro", {"mobs:mob_repellent"}, 1}
})
-- pint sized rune, use on tamed mob to shrink to half-size
core.register_craftitem(":mobs:pint_sized_rune", {
description = S("Pint Sized Rune"),
inventory_image = "mobs_pint_sized_rune.png",
groups = {flammable = 2},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "object" then return end
local name = user and user:get_player_name() or ""
local tool = user and user:get_wielded_item()
local tool_name = tool:get_name()
if tool_name ~= "mobs:pint_sized_rune" then return end
local self = pointed_thing.ref:get_luaentity()
if not self._cmi_is_mob then
core.chat_send_player(name, S("Not a Mobs Redo mob!"))
return
end
if not self.tamed then
core.chat_send_player(name, S("Not tamed!"))
return
end
if self.pint_size_potion then
core.chat_send_player(name, S("Potion already applied!"))
return
end
if not mobs.is_creative(user:get_player_name()) then
tool:take_item() -- take 1 rune
user:set_wielded_item(tool)
end
local pos = self.object:get_pos()
local prop = self.object:get_properties()
vis_size = {x = self.base_size.x * .5, y = self.base_size.y * .5}
self.base_size = vis_size
colbox = {
self.base_colbox[1] * .5, self.base_colbox[2] * .5,
self.base_colbox[3] * .5, self.base_colbox[4] * .5,
self.base_colbox[5] * .5, self.base_colbox[6] * .5}
self.base_colbox = colbox
selbox = {
self.base_selbox[1] * .5, self.base_selbox[2] * .5,
self.base_selbox[3] * .5, self.base_selbox[4] * .5,
self.base_selbox[5] * .5, self.base_selbox[6] * .5}
self.base_selbox = selbox
self.object:set_properties(
{visual_size = vis_size, collisionbox = colbox, selectionbox = selbox})
self.pint_size_potion = true
pos.y = pos.y + prop.collisionbox[5]
mobs:effect(pos, 25, "mobs_protect_particle.png", 0.5, 4, 2, 15)
self:mob_sound("mobs_spell")
end
})
core.register_craft({
output = "lucky_block:pint_sized_rune",
recipe = {{"lucky_block:pint_sized_potion", "mobs:protector"}}
})

View File

@ -1 +1,4 @@
name = mobs name = mobs
description = Adds a mob api for mods to add animals or monsters etc.
optional_depends = default, tnt, invisibility, lucky_block, cmi, toolranks, pathfinder, player_api, mtobjid, visual_harm_1ndicators, mcl_sounds, mesecons
min_minetest_version = 5.0

444
mount.lua
View File

@ -1,48 +1,38 @@
-- lib_mount by Blert2112 (edited by TenPlus1) -- lib_mount by Blert2112 (edited by TenPlus1)
local enable_crash = false local is_mc2 = core.get_modpath("mcl_mobs") -- MineClone2 check
local crash_threshold = 6.5 -- ignored if enable_crash=false
------------------------------------------------------------------------------ -- one of these is needed to ride mobs, otherwise no riding for you
-- if not core.get_modpath("player_api") and not is_mc2 then
-- Helper functions
--
local node_ok = function(pos, fallback) function mobs.attach() end
function mobs.detach() end
function mobs.fly() end
function mobs.drive() end
fallback = fallback or mobs.fallback_node return
local node = minetest.get_node_or_nil(pos)
if node and minetest.registered_nodes[node.name] then
return node
end
return {name = fallback}
end end
-- Localise some functions
local function node_is(pos) local abs, cos, floor, sin, sqrt, pi =
math.abs, math.cos, math.floor, math.sin, math.sqrt, math.pi
local node = node_ok(pos) -- helper functions
if node.name == "air" then local function node_is(entity)
return "air"
end
if minetest.get_item_group(node.name, "lava") ~= 0 then if not entity.standing_on then return "other" end
return "lava"
end
if minetest.get_item_group(node.name, "liquid") ~= 0 then if entity.standing_on == "air" then return "air" end
return "liquid"
end
if minetest.registered_nodes[node.name].walkable == true then local def = core.registered_nodes[entity.standing_on]
return "walkable"
end if def.groups.lava then return "lava" end
if def.groups.liquid then return "liquid" end
if def.groups.walkable then return "walkable" end
return "other" return "other"
end end
@ -50,78 +40,120 @@ end
local function get_sign(i) local function get_sign(i)
i = i or 0 if not i or i == 0 then return 0 end
if i == 0 then return i / abs(i)
return 0
else
return i / math.abs(i)
end
end end
local function get_velocity(v, yaw, y) local function get_velocity(v, yaw, y)
local x = -math.sin(yaw) * v local x = -sin(yaw) * v
local z = math.cos(yaw) * v local z = cos(yaw) * v
return {x = x, y = y, z = z} return {x = x, y = y, z = z}
end end
local function get_v(v) local function get_v(v)
return math.sqrt(v.x * v.x + v.z * v.z) return sqrt(v.x * v.x + v.z * v.z)
end end
local function force_detach(player) local function force_detach(player)
local attached_to = player:get_attach() local attached_to = player and player:get_attach()
if not attached_to then if not attached_to then return end
return
end
local entity = attached_to:get_luaentity() local entity = attached_to:get_luaentity()
if entity and entity.driver if entity and entity.driver and entity.driver == player then
and entity.driver == player then
entity.driver = nil entity.driver = nil
end end
player:set_detach() player:set_detach()
default.player_attached[player:get_player_name()] = false
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
default.player_set_animation(player, "stand" , 30)
player:set_properties({visual_size = {x = 1, y = 1} })
local name = player:get_player_name()
if is_mc2 then
mcl_player.player_attached[player:get_player_name()] = false
mcl_player.player_set_animation(player, "stand", 30)
else
player_api.player_attached[name] = false
player_api.set_animation(player, "stand", 30)
end
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
player:set_properties({visual_size = {x = 1, y = 1}})
end end
------------------------------------------------------------------------------- -- detach player on leaving
core.register_on_leaveplayer(function(player)
minetest.register_on_leaveplayer(function(player)
force_detach(player) force_detach(player)
end) end)
minetest.register_on_shutdown(function() -- detatch all players on shutdown
local players = minetest.get_connected_players()
core.register_on_shutdown(function()
local players = core.get_connected_players()
for i = 1, #players do for i = 1, #players do
force_detach(players[i]) force_detach(players[i])
end end
end) end)
minetest.register_on_dieplayer(function(player) -- detatch player when dead
core.register_on_dieplayer(function(player)
force_detach(player) force_detach(player)
return true return true
end) end)
------------------------------------------------------------------------------- -- find free position to detach player
local function find_free_pos(pos)
local check = {
{x = 1, y = 0, z = 0}, {x = 1, y = 1, z = 0}, {x = -1, y = 0, z = 0},
{x = -1, y = 1, z = 0}, {x = 0, y = 0, z = 1}, {x = 0, y = 1, z = 1},
{x = 0, y = 0, z = -1}, {x = 0, y = 1, z = -1}
}
for _, c in pairs(check) do
local npos = {x = pos.x + c.x, y = pos.y + c.y, z = pos.z + c.z}
local node = core.get_node_or_nil(npos)
if node and node.name then
local def = core.registered_nodes[node.name]
if def and not def.walkable and def.liquidtype == "none" then
return npos
end
end
end
return pos
end
-- are we a real player ?
local function is_player(player)
if player and type(player) == "userdata" and core.is_player(player) then
return true
end
end
-- attach player to mob entity
function mobs.attach(entity, player) function mobs.attach(entity, player)
local attach_at, eye_offset = {}, {} if not player then return end
entity.player_rotation = entity.player_rotation or {x = 0, y = 0, z = 0} entity.player_rotation = entity.player_rotation or {x = 0, y = 0, z = 0}
entity.driver_attach_at = entity.driver_attach_at or {x = 0, y = 0, z = 0} entity.driver_attach_at = entity.driver_attach_at or {x = 0, y = 0, z = 0}
@ -130,128 +162,144 @@ function mobs.attach(entity, player)
local rot_view = 0 local rot_view = 0
if entity.player_rotation.y == 90 then if entity.player_rotation.y == 90 then rot_view = pi / 2 end
rot_view = math.pi / 2
end local attach_at = entity.driver_attach_at
local eye_offset = entity.driver_eye_offset
attach_at = entity.driver_attach_at
eye_offset = entity.driver_eye_offset
entity.driver = player entity.driver = player
force_detach(player) force_detach(player)
if is_mc2 then
mcl_player.player_attached[player:get_player_name()] = true
else
player_api.player_attached[player:get_player_name()] = true
end
player:set_attach(entity.object, "", attach_at, entity.player_rotation) player:set_attach(entity.object, "", attach_at, entity.player_rotation)
default.player_attached[player:get_player_name()] = true
player:set_eye_offset(eye_offset, {x = 0, y = 0, z = 0}) player:set_eye_offset(eye_offset, {x = 0, y = 0, z = 0})
player:set_properties({ player:set_properties({
visual_size = { visual_size = {x = entity.driver_scale.x, y = entity.driver_scale.y}
x = entity.driver_scale.x,
y = entity.driver_scale.y
}
}) })
minetest.after(0.2, function(name) core.after(0.2, function()
local player = minetest.get_player_by_name(name)
if player then if is_player(player) then
default.player_set_animation(player, "sit" , 30)
if is_mc2 then
mcl_player.player_set_animation(player, "sit_mount" , 30)
else
player_api.set_animation(player, "sit", 30)
end
end end
end, player:get_player_name()) end)
player:set_look_horizontal(entity.object:get_yaw() - rot_view) player:set_look_horizontal(entity.object:get_yaw() - rot_view)
end end
-- detatch player from mob
function mobs.detach(player, offset) function mobs.detach(player)
force_detach(player) force_detach(player)
default.player_set_animation(player, "stand" , 30) core.after(0.1, function()
local pos = player:get_pos() if player and player:is_player() then
pos = { local pos = find_free_pos(player:get_pos())
x = pos.x + offset.x,
y = pos.y + 0.2 + offset.y, pos.y = pos.y + 0.5
z = pos.z + offset.z
}
minetest.after(0.1, function(name, pos)
local player = minetest.get_player_by_name(name)
if player then
player:set_pos(pos) player:set_pos(pos)
end end
end, player:get_player_name(), pos) end)
end end
-- vars
local damage_counter = 0
-- ride mob like car or horse
function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
local rot_steer, rot_view = math.pi/2, 0 local yaw = entity.object:get_yaw() or 0
local rot_view = 0
if entity.player_rotation.y == 90 then if entity.player_rotation.y == 90 then rot_view = pi / 2 end
rot_steer, rot_view = 0, math.pi/2
end
local acce_y = 0 local acce_y = 0
local velo = entity.object:get_velocity() local velo = entity.object:get_velocity() ; if not velo then return end
entity.v = get_v(velo) * get_sign(entity.v) entity.v = get_v(velo) * get_sign(entity.v)
-- process controls -- process controls
if entity.driver then if entity.driver then
--print ("---velo", get_v(velo))
local ctrl = entity.driver:get_player_control() local ctrl = entity.driver:get_player_control()
-- move forwards if ctrl.up then -- move forwards
if ctrl.up then
entity.v = entity.v + entity.accel / 10 entity.v = entity.v + entity.accel * dtime
-- move backwards elseif ctrl.down then -- move backwards
elseif ctrl.down then
if entity.max_speed_reverse == 0 and entity.v == 0 then if entity.max_speed_reverse == 0 and entity.v == 0 then return end
return
end
entity.v = entity.v - entity.accel / 10 entity.v = entity.v - entity.accel * dtime
end
-- mob rotation
local horz
if entity.alt_turn == true then
horz = yaw
if ctrl.left then horz = horz + 0.05
elseif ctrl.right then horz = horz - 0.05 end
else
horz = entity.driver:get_look_horizontal() or 0
end end
-- fix mob rotation
local horz = entity.driver:get_look_horizontal() or 0
entity.object:set_yaw(horz - entity.rotate) entity.object:set_yaw(horz - entity.rotate)
if can_fly then if can_fly then
-- fly up if ctrl.jump then -- fly up
if ctrl.jump then
velo.y = velo.y + 1 velo.y = velo.y + 1
if velo.y > entity.accel then velo.y = entity.accel end if velo.y > entity.accel then velo.y = entity.accel end
elseif velo.y > 0 then elseif velo.y > 0 then
velo.y = velo.y - 0.1
velo.y = velo.y - dtime
if velo.y < 0 then velo.y = 0 end if velo.y < 0 then velo.y = 0 end
end end
-- fly down if ctrl.sneak then -- fly down
if ctrl.sneak then
velo.y = velo.y - 1 velo.y = velo.y - 1
if velo.y < -entity.accel then velo.y = -entity.accel end if velo.y < -entity.accel then velo.y = -entity.accel end
elseif velo.y < 0 then elseif velo.y < 0 then
velo.y = velo.y + 0.1
velo.y = velo.y + dtime
if velo.y > 0 then velo.y = 0 end if velo.y > 0 then velo.y = 0 end
end end
else else
if ctrl.jump then -- jump (only when standing on solid surface)
-- jump if velo.y == 0
if ctrl.jump then and entity.standing_on ~= "air" and entity.standing_on ~= "ignore"
and core.get_item_group(entity.standing_on, "liquid") == 0 then
if velo.y == 0 then
velo.y = velo.y + entity.jump_height velo.y = velo.y + entity.jump_height
acce_y = acce_y + (acce_y * 3) + 1 acce_y = acce_y + (acce_y * 3) + 1
end end
@ -259,20 +307,45 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
end end
end end
local ni = node_is(entity)
-- env damage
if ni == "liquid" or ni == "lava" then
damage_counter = damage_counter + dtime
if damage_counter > 1 then
local damage = 0
if entity.lava_damage > 0 and ni == "lava" then
damage = entity.lava_damage
elseif entity.water_damage > 0 and ni == "liquid" then
damage = entity.water_damage
end
if damage >= 1 then
entity.object:punch(entity.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = damage}
}, nil)
end
damage_counter = 0
end
end
-- if not moving then set animation and return -- if not moving then set animation and return
if entity.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then if entity.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
if stand_anim then if stand_anim then entity:set_animation(stand_anim) end
mobs:set_animation(entity, stand_anim)
end
return return
end end
-- set moving animation -- set moving animation
if moving_anim then if moving_anim then entity:set_animation(moving_anim) end
mobs:set_animation(entity, moving_anim)
end
-- Stop! -- Stop!
local s = get_sign(entity.v) local s = get_sign(entity.v)
@ -283,65 +356,42 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
entity.object:set_velocity({x = 0, y = 0, z = 0}) entity.object:set_velocity({x = 0, y = 0, z = 0})
entity.v = 0 entity.v = 0
return return
end end
-- enforce speed limit forward and reverse -- enforce speed limit forward and reverse
local max_spd = entity.max_speed_reverse if entity.v > entity.max_speed_forward then
entity.v = entity.max_speed_forward
if get_sign(entity.v) >= 0 then elseif entity.v < -entity.max_speed_reverse then
max_spd = entity.max_speed_forward entity.v = -entity.max_speed_reverse
end
if math.abs(entity.v) > max_spd then
entity.v = entity.v - get_sign(entity.v)
end end
-- Set position, velocity and acceleration -- Set position, velocity and acceleration
local p = entity.object:get_pos() local p = entity.object:get_pos()
local new_velo
local new_acce = {x = 0, y = -9.8, z = 0} if not p then return end
local new_acce = {x = 0, y = entity.fall_speed, z = 0}
p.y = p.y - 0.5 p.y = p.y - 0.5
local ni = node_is(p)
local v = entity.v local v = entity.v
if ni == "air" then if ni == "air" then
if can_fly == true then if can_fly then new_acce.y = 0 ; acce_y = 0 end
new_acce.y = 0
end
elseif ni == "liquid" or ni == "lava" then elseif ni == "liquid" or ni == "lava" then
if ni == "lava" and entity.lava_damage ~= 0 then local terrain_type = entity.terrain_type
entity.lava_counter = (entity.lava_counter or 0) + dtime if terrain_type == 2 or terrain_type == 3 then
if entity.lava_counter > 1 then
minetest.sound_play("default_punch", {
object = entity.object,
max_hear_distance = 5
}, true)
entity.object:punch(entity.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = entity.lava_damage}
}, nil)
entity.lava_counter = 0
end
end
if entity.terrain_type == 2
or entity.terrain_type == 3 then
new_acce.y = 0 new_acce.y = 0
p.y = p.y + 1 p.y = p.y + 1
if node_is(p) == "liquid" then if core.get_item_group(entity.standing_in, "liquid") ~= 0 then
if velo.y >= 5 then if velo.y >= 5 then
velo.y = 5 velo.y = 5
@ -351,9 +401,13 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
new_acce.y = 5 new_acce.y = 5
end end
else else
if math.abs(velo.y) < 1 then if abs(velo.y) < 1 then
local pos = entity.object:get_pos() local pos = entity.object:get_pos()
pos.y = math.floor(pos.y) + 0.5
if not pos then return end
pos.y = floor(pos.y) + 0.5
entity.object:set_pos(pos) entity.object:set_pos(pos)
velo.y = 0 velo.y = 0
end end
@ -363,95 +417,73 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
end end
end end
new_velo = get_velocity(v, entity.object:get_yaw() - rot_view, velo.y) local new_velo = get_velocity(v, yaw - rot_view, velo.y)
new_acce.y = new_acce.y + acce_y new_acce.y = new_acce.y + acce_y
entity.object:set_velocity(new_velo) entity.object:set_velocity(new_velo)
entity.object:set_acceleration(new_acce) entity.object:set_acceleration(new_acce)
-- CRASH!
if enable_crash then
local intensity = entity.v2 - v
if intensity >= crash_threshold then
--print("----------- crash", intensity)
entity.object:punch(entity.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = intensity}
}, nil)
end
end
entity.v2 = v entity.v2 = v
end end
-- fly mob in facing direction (by D00Med, edited by TenPlus1)
-- directional flying routine by D00Med (edited by TenPlus1) function mobs.fly(entity, _, speed, shoots, arrow, moving_anim, stand_anim)
function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) local ctrl = entity.driver:get_player_control() ; if not ctrl then return end
local velo = entity.object:get_velocity() ; if not velo then return end
local ctrl = entity.driver:get_player_control()
local velo = entity.object:get_velocity()
local dir = entity.driver:get_look_dir() local dir = entity.driver:get_look_dir()
local yaw = entity.driver:get_look_horizontal() + 1.57 -- offset fix between old and new commands local yaw = entity.driver:get_look_horizontal() ; if not yaw then return end
local rot_steer, rot_view = math.pi / 2, 0
if entity.player_rotation.y == 90 then yaw = yaw + 1.57 -- fix from get_yaw to get_look_horizontal
rot_steer, rot_view = 0, math.pi / 2
end
if ctrl.up then if ctrl.up then
entity.object:set_velocity({
x = dir.x * speed, entity.object:set_velocity(
y = dir.y * speed + 2, {x = dir.x * speed, y = dir.y * speed + 2, z = dir.z * speed})
z = dir.z * speed
})
elseif ctrl.down then elseif ctrl.down then
entity.object:set_velocity({
x = -dir.x * speed, entity.object:set_velocity(
y = dir.y * speed + 2, {x = -dir.x * speed, y = dir.y * speed + 2, z = -dir.z * speed})
z = -dir.z * speed
})
elseif not ctrl.down or ctrl.up or ctrl.jump then elseif not ctrl.down or ctrl.up or ctrl.jump then
entity.object:set_velocity({x = 0, y = -2, z = 0}) entity.object:set_velocity({x = 0, y = -2, z = 0})
end end
entity.object:set_yaw(yaw + math.pi + math.pi / 2 - entity.rotate) entity.object:set_yaw(yaw + pi + pi / 2 - entity.rotate)
-- firing arrows -- firing arrows
if ctrl.LMB and ctrl.sneak and shoots then if ctrl.LMB and ctrl.sneak and shoots then
local pos = entity.object:get_pos() local pos = entity.object:get_pos()
local obj = minetest.add_entity({ local obj = core.add_entity({
x = pos.x + 0 + dir.x * 2.5, x = pos.x + 0 + dir.x * 2.5,
y = pos.y + 1.5 + dir.y, y = pos.y + 1.5 + dir.y,
z = pos.z + 0 + dir.z * 2.5}, arrow) z = pos.z + 0 + dir.z * 2.5}, arrow)
local ent = obj:get_luaentity() local ent = obj:get_luaentity()
if ent then if ent then
ent.switch = 1 -- for mob specific arrows ent.switch = 1 -- for mob specific arrows
ent.owner_id = tostring(entity.object) -- so arrows dont hurt entity you are riding ent.owner_id = tostring(entity.object) -- so arrows dont hurt mob
local vec = {x = dir.x * 6, y = dir.y * 6, z = dir.z * 6} local vec = {x = dir.x * 6, y = dir.y * 6, z = dir.z * 6}
local yaw = entity.driver:get_look_horizontal()
obj:set_yaw(yaw + math.pi / 2) yaw = entity.driver:get_look_horizontal()
obj:set_yaw(yaw + pi / 2)
obj:set_velocity(vec) obj:set_velocity(vec)
else else
obj:remove() obj:remove()
end end
end end
-- change animation if stopped
if velo.x == 0 and velo.y == 0 and velo.z == 0 then if velo.x == 0 and velo.y == 0 and velo.z == 0 then
entity:set_animation(stand_anim) -- stopped animation
mobs:set_animation(entity, stand_anim)
else else
-- moving animation entity:set_animation(moving_anim) -- moving animation
mobs:set_animation(entity, moving_anim)
end end
end end

517
readme.MD
View File

@ -1,92 +1,445 @@
# MOBS REDO for MINETEST
MOBS REDO for MINETEST Built from PilzAdam's original Simple Mobs with additional mobs by KrupnoPavel,
Zeg9, ExeterDad and AspireMint.
Built from PilzAdam's original Simple Mobs with additional mobs by KrupnoPavel, Zeg9, ExeterDad and AspireMint.
This mod contains the API only for adding your own mobs into the world, so please use the additional modpacks to add animals, monsters etc.
This mod contains the API only for adding your own mobs into the world, so
please use the additional modpacks to add animals, monsters, and npcs.
https://forum.minetest.net/viewtopic.php?f=11&t=9917 https://forum.minetest.net/viewtopic.php?f=11&t=9917
## Crafts
Crafts: - **Nametag**. Can be crafted by paper, black dye, and string. Can be used
to right-click on a tamed mob to give them a name.
- **Net**. Used to right-click tamed mobs to pick them up and place inside
inventory as a spawn egg.
- **Magic lasso**. Similar to nets but with a better chance of picking up
larger mobs.
- **Shears**. Used to right-click sheep and return 1-3 wool.
- **Protection Rune**. Protects tamed mobs from being harmed by other players.
- **Mob Fence and Fence Top**. Stops mobs escaping or glitching throughfences.
- Add mobs:mob_repellent block to stop mobs spawning within 16 node radius.
- Nametag (paper, black dye, string) can be used right-click on a tamed mob to give them a name. **Lucky Blocks**: 13
- Nets can be used to right-click tamed mobs to pick them up and place inside inventory as a spawn egg.
- Magic Lasso is similar to nets but with a better chance of picking up larger mobs.
- Shears are used to right-click sheep and return 1-3 wool.
- Protection Rune lets you protect tamed mobs from harm by other players
- Mob Fence and Fence Top (to stop mobs escaping/glitching through fences)
Lucky Blocks: 9 ## Changelog
### Version 1.62
* Added ability for mobs to hear using self.on_sound() function
* Added 'mobs_can_hear' setting to turn above feature on/off
* Added {eatable} group to food items and HP in description
* Fixed timer bug when attacking
* Fixed fall damage check when riding mob
* Calculate damage before do_punch function called
* Add function to check for dropped items and for mob to do something with them
### Version 1.61
* Fixed mob damage when riding mobs
* Added entity:is_inside(itemtable) function (thx cora)
* Added self.attack_patience value so mobs stop attacking unseen players
* Added self.homing so that arrows follow player when visible
* Added support for Visual Harm 1ndicators mod to show health bars
* Added self.node_damage flag which is true by default to enable damage_per_second node damage
* Added check for on_death() function before using mob api's own on_die() one
* Added mobs:fallback_node for when current [game] hasn't defined mapgen_dirt node
### Version 1.60
* Move mob and arrow entities to use initial_properties
* Spawn eggs check if mob is available when creating
* Used get/set_properties() within API for mob properties
* Moved nametag variable to self._nametag
* Tidied breeding function
* Better MineClone2 / MineClonia support added
* Tweaked and tidied code in places
### Version 1.57
* Added 'injured' animation when mob hurt
* Fixed yaw clamping to stop spinning mobs
* Added 'mob_node_timer_interval' and 'mob_main_timer_interval' settings
* Added ability for mobs to die only in natural daylight
* Refactored do_jump and added get_nodes function
* Many bug fixes and tweaks to improve performance
* Added 'mobs_attack_creatura' setting so that monsters can attack Creatura mobs
* Nodes can be added to 'runaway_from' table
* Better Mineclone2 compatibility with api, items and recipes
* Added 'mob_log_spawn' setting to log spawning of mobs and position
### Version 1.56
* Added `arrow_override` function to mob definition to tweak arrow entity settings
* Added injured animation and mob hit effect
* Tamed monsters no longer despawn when outside loaded map area
* `looting_level` can be read from tool definition or tool meta to add extra
drops when mob killed
### Version 1.55
* Added `peaceful_player` privilege and setting so mobs don't attack specific
players (thanks sfence)
* Added support for MarkBu's `pathfinder` mod, remove need for default mod
### Version 1.54
* **New support for swimming mobs**
- `on_flop` (for mobs not in water)
- `air_damage` added
* Added editable settings (thanks Wuzzy)
* Simplified animal breeding function
* Child mobs now take twenty minutes to grow up
* Reverted to simple mob spawning with setting to use area checks
### Version 1.53
* Added `on_map_load` settings to `mobs:spawn` so that mobs will only spawn
when new areas of map are loaded.
### Version 1.52
* Added `mob_active_limit` in settings to set number of mobs in game. The
default is 0, for unlimited mobs.
* Removed `{immortal}` from mob armor
* Fluid viscocity slows mobs (for example, water)
### Version 1.51
* Added node checks for dangerous nodes
* Add `mob_nospawn_range` setting
* Jumping and falling tweaks
* Spawn area check (thanks for idea wuzzy)
* Re-enabled mob suffocation
### Version 1.50
* Added new `line_of_sight` function that uses raycasting if Minetest 5.0 is
found, (thanks Astrobe)
* Added Chinese local
* Removed ability to spawn mobs if world anchor nearby (`technic` or
`simple_anchor` mods)
### Version 1.49
* Added `mobs:force_capture(self, player)` function
* API functions now use metatables thanks to bell07
### Version 1.48
* Added `mobs:set_velocity(self, velocity)` global function [deprecated]
### Version 1.47
* Added minimum and maximum light level for damage
* Mob damage changes
* Ignition sources checked for lava damage
### Version 1.46
* Mobs only drop rare items when killed by player. You can make change the
drops to rare items by using `drops.min = 0`
* Pathfinding no longer sees through walkable nodes
### Version 1.45
* Added fence top to add on top of any fence to stop mobs escaping
* New `line_of_sight` tweaked by `Astrobe`
### Version 1.44
* Added `ToolRanks` support for swords when attacking mobs
### Version 1.43
* Added general attack function and settings
* Better Minetest 0.4.16 compatibility
### Version 1.42
* Added `"all"` option to `immune_to` definition table
* Tidied floating mobs to be less intensive
### Version 1.41
* Mob pathfinding has been updated thanks to `Elkien3`
### Version 1.40
* Updated to use newer functions, requires Minetest 0.4.16+ to work
### Version 1.39
* **New custom functions**:
- `on_breed` (called when mobs have just been bred)
- `on_grown` (called when baby mobs have grown up)
- `do_punch` (called when the mob has been punched or damaged by another mob)
### Version 1.38
* Better entity checking
* Nametag setting
* `on_spawn` function added to mob registry
* Tweaked light damage
### Version 1.37
* Added support for `Raymoo`'s CMI (common mob interface) mod. See
https://forum.minetest.net/viewtopic.php?f=9&t=15448 for details
### Version 1.36
* Added death check. If the mob dies in fire/lava/with lava pick, then drops
are cooked
### Version 1.35
* Added `owner_loyal` flag for owned mobs to attack player enemies
* Fixed `group_attack`
### Version 1.34
* Added function to fly mob using directional movement (thanks D00Med for
flying code)
### Version 1.33
* Added functions to mount ride mobs:
- `mobs.attach`
- `mobs.detach`
- `mobs.drive`. Many thanks to `Blert2112`
### Version 1.32
* Added new spawn check to count specific mobs AND new `minetest.conf` setting
to chance spawn chance and numbers
* Added ability to protect tamed mobs
### Version 1.31
* Added `attack_animals` and `specific_attack` flags for custom monster
attacks
* Added 'mob_difficulty' .conf setting to make mobs harder
### Version 1.30
* Added support for `invisibility` mod
* Tweaked and tidied code
### Version 1.29
* Split original Mobs Redo into a modpack to make it easier to disable mob sets
(animal, monster, npc) or simply use the API itself for your own mod
### Version 1.28
* Added new damage system with ability for mob to be immune to weapons or
healed by them :)
### Version 1.27
* Added new sheep, lava flan and spawn egg textures
* New Lava Pick tool smelts what you dig
* New `atan` checking function
### Version 1.26
* Pathfinding feature added thanks to rnd
* When monsters attack they become scary smart in finding you :)
* Beehive produces honey now :)
### Version 1.25
* Mobs no longer spawn within 12 blocks of player or despawn within same
range
* Spawners now have player detection
* Tidy and tweak code
### Version 1.24
* Added feature where certain animals run away when punched
(`runaway = true` in mob definition)
### Version 1.23
* Added mob spawner block for admin to setup spawners in-game (place and
right-click to enter settings)
### Version 1.22
* Added ability to name tamed animals and NPCs using nametags
* NPCs will attack anyone who punches them apart from owner
### Version 1.21
* Added some more error checking to reduce `serialize.h` error and added height
checks for falling off cliffs (thanks `cmdskp`)
### Version 1.20
* Error checking added to remove bad mobs
* Out of map limit mobs and stop `serialize.h` error
### Version 1.19
* Chickens now drop egg items instead of placing the egg
* Throwing eggs result in ⅛ chance of spawning chick
### Version 1.18
* Added `docile_by_day` flag so that monsters will not attack automatically
during daylight hours unless hit first
### Version 1.17
* Added `dogshoot` attack type. Mobs now shoot when out of reach
* Melee attack when in reach, also API tweaks and `self.reach` added
### Version 1.16
* Mobs follow multiple items now
* NPCs can now breed
### Version 1.15
* Added feeding, taming, and breeding function
* Right-click to pick up any sheep with X mark on them and replace with new one
to fix compatibility.
### Version 1.14
* All variables saved in staticdata
* Fixed health bug
### Version 1.13
* Added capture function (thanks `blert2112`) chance of picking up mob with a
hand, a net, or a magic lasso
* Replaced some `.x` models with newer `.b3d` ones
### Version 1.12
* Added animal ownership so that players cannot steal your tamed animals
### Version 1.11
* Added flying and swimming mobs
* `fly=true` and `fly_in="air"` or `"default:water_source"` for fishy
### Version 1.10
* Added explosion routine for exploding mob
* Footstep removed (use replace)
### Version 1.09
Changelog: * Added mob rotation value
- 1.55 - Add 'peaceful_player' privelage and setting so mobs don't attack specific players (thanks sfence) * Added footstep feature
- 1.54 - Simplified animal breeding function, added editable settings (thanks Wuzzy), Child mobs now take 20 mins to grow up, reverted to simple mob spawning with setting to use area checks, on_flop added, air_damage added. * Added jumping mobs with sounds feature
- 1.53 - Added 'on_map_load' settings to mobs:spawn so that mobs will only spawn when new areas of map are loaded. * Aadded magic lasso for picking up animals
- 1.52 - Added 'mob_active_limit' in settings to set number of mobs in game, * Reworked breeding routine
(default is 0 for unlimited), removed {immortal} from mob armor, fluid viscocity slows mobs
- 1.51 - Added some node checks for dangerous nodes, jumping and falling tweaks, spawn area check (thx for idea wuzzy), re-enabled mob suffocation, add 'mob_nospawn_range' setting ### Version 1.08
- 1.50 - Added new line_of_sight function that uses raycasting if mt5.0 is found, (thanks Astrobe), dont spawn mobs if world anchor nearby (technic or simple_anchor mods), chinese local added
- 1.49- Added mobs:force_capture(self, player) function, api functions now use metatables thanks to bell07 * Added drops that appear when mob is killed
- 1.48- Add mobs:set_velocity(self, velocity) global function * New custom function: `on_die` function
- 1.47- Mob damage changes, min and max light level for damage added, ignition sources checked for lava damage * Mob throwing attack has been rehauled so that they can damage one another,
- 1.46- Mobs only drop rare items when killed by player (drops.min = 0 makes them rare), code tweak, pathfinding no longer sees through walkable nodes
- 1.45- Added Fence Top to add on top of any fence to stop mobs escaping, new line_of_sight tweaked by Astrobe ### Version 1.07
- 1.44- Added ToolRanks support for swords when attacking mobs
- 1.43- Better 0.4.16 compatibility, added general attack function and settings * NPCs can now be set to follow player or stand by using `order` and `owner`
- 1.42- Added "all" option to immune_to table, tidied floating mobs to be less intensive variables
- 1.41- Mob pathfinding has been updated thanks to Elkien3
- 1.40- Updated to use newer functions, requires Minetest 0.4.16+ to work. * BETA: Npc mob added. They kill monsters (maybe as guards) and attack players
- 1.39- Added 'on_breed', 'on_grown' and 'do_punch' custom functions per mob when punched by them. Right-clicking them with food will heal them, and
- 1.38- Better entity checking, nametag setting and on_spawn function added to mob registry, tweaked light damage giving them gold lump will make them drop a random item.
- 1.37- Added support for Raymoo's CMI (common mob interface) mod: https://forum.minetest.net/viewtopic.php?f=9&t=15448
- 1.36- Death check added, if mob dies in fire/lava/with lava pick then drops are cooked ### Version 1.06
- 1.35- Added owner_loyal flag for owned mobs to attack player enemies, also fixed group_attack
- 1.34- Added function to fly mob using directional movement (thanks D00Med for flying code) * Changed recovery times after breeding. Time taken to grow up can be sped up
- 1.33- Added functions to mount ride mobs (mobs.attach, mobs.detach, mobs.drive) many thanks to Blert2112 by feeding the baby animal.
- 1.32- Added new spawn check to count specific mobs AND new minetest.conf setting to chance spawn chance and numbers, added ability to protect tamed mobs
- 1.31- Added 'attack_animals' and 'specific_attack' flags for custom monster attacks, also 'mob_difficulty' .conf setting to make mobs harder. ### Version 1.05
- 1.30- Added support for invisibility mod (mobs cant attack what they cant see), tweaked and tidied code
- 1.29- Split original Mobs Redo into a modpack to make it easier to disable mob sets (animal, monster, npc) or simply use the Api itself for your own mod * Added `ExeterDad`'s bunniess which can be picked up and tamed with four carrots from `farming_redo` or `farming_plus`
- 1.28- New damage system added with ability for mob to be immune to weapons or healed by them :) * Added shears to get wool from sheep
- 1.27- Added new sheep, lava flan and spawn egg textures. New Lava Pick tool smelts what you dig. New atan checking function. * Added Jordach/BSD's kitten
- 1.26- Pathfinding feature added thanks to rnd, when monsters attack they become scary smart in finding you :) also, beehive produces honey now :)
- 1.25- Mobs no longer spawn within 12 blocks of player or despawn within same range, spawners now have player detection, Code tidy and tweak. ### Version 1.04
- 1.24- Added feature where certain animals run away when punched (runaway = true in mob definition)
- 1.23- Added mob spawner block for admin to setup spawners in-game (place and right click to enter settings) * Added mating for sheep, cows and hogs
- 1.22- Added ability to name tamed animals and npc using nametags, also npc will attack anyone who punches them apart from owner * Added feature to feed animals to make horny and hope for a baby which is half
- 1.21- Added some more error checking to reduce serialize.h error and added height checks for falling off cliffs (thanks cmdskp) size, they will grow up quick though :)
- 1.20- Error checking added to remove bad mobs, out of map limit mobs and stop serialize.h error
- 1.19- Chickens now drop egg items instead of placing the egg, also throwing eggs result in 1/8 chance of spawning chick ### Version 1.03
- 1.18- Added docile_by_day flag so that monsters will not attack automatically during daylight hours unless hit first
- 1.17- Added 'dogshoot' attack type, shoots when out of reach, melee attack when in reach, also api tweaks and self.reach added * Added mob drop/replace feature so that chickens can drop eggs and cow/sheep
- 1.16- Mobs follow multiple items now, Npc's can breed can eat grass/wheat etc.
- 1.15- Added Feeding/Taming/Breeding function, right-click to pick up any sheep with X mark on them and replace with new one to fix compatibility.
- 1.14- All .self variables saved in staticdata, Fixed self.health bug ### Version 1.02
- 1.13- Added capture function (thanks blert2112) chance of picking up mob with hand; net; magic lasso, replaced some .x models with newer .b3d one's
- 1.12- Added animal ownership so that players cannot steal your tamed animals * Sheared sheep are remembered and spawn shaven
- 1.11- Added flying mobs (and swimming), fly=true and fly_in="air" or "deafult:water_source" for fishy * Warthogs will attack when threatened
- 1,10- Footstep removed (use replace), explosion routine added for exploding mobs. * API additions
- 1.09- reworked breeding routine, added mob rotation value, added footstep feature, added jumping mobs with sounds feature, added magic lasso for picking up animals
- 1.08- Mob throwing attack has been rehauled so that they can damage one another, also drops and on_die function added ### Version 1.01
- 1.07- Npc's can now be set to follow player or stand by using self.order and self.owner variables
- beta- Npc mob added, kills monsters, attacks player when punched, right click with food to heal or gold lump for drop * Mobs that suffer fall damage or die in water/lava/sunlight will now drop
- 1.06- Changed recovery times after breeding, and time taken to grow up (can be sped up by feeding baby animal) items
- 1.05- Added ExeterDad's bunny's which can be picked up and tamed with 4 carrots from farming redo or farming_plus, also shears added to get wool from sheep and lastly Jordach/BSD's kitten
- 1.04- Added mating for sheep, cows and hogs... feed animals to make horny and hope for a baby which is half size, will grow up quick though :) ### Version 1.0
- 1.03- Added mob drop/replace feature so that chickens can drop eggs, cow/sheep can eat grass/wheat etc.
- 1.02- Sheared sheep are remembered and spawn shaven, Warthogs will attack when threatened, Api additions * More work on API so that certain mobs can float in water while some sink like
- 1.01- Mobs that suffer fall damage or die in water/lava/sunlight will now drop items a brick :)
- 1.0 - more work on Api so that certain mobs can float in water while some sink like a brick :)
- 0.9 - Spawn eggs added for all mobs (admin only, cannot be placed in protected areas)... Api tweaked ### Version 0.9
- 0.8 - Added sounds to monster mobs (thanks Cyberpangolin for the sfx) and also chicken sound
- 0.7 - mobs.protected switch added to api.lua, when set to 1 mobs no longer spawn in protected areas, also bug fixes * Spawn eggs added for all mobs (admin only, cannot be placed in protected
- 0.6 - Api now supports multi-textured mobs, e.g oerkki, dungeon master, rats and chickens have random skins when spawning (sheep fix TODO), also new Honey block areas)
- 0.5 - Mobs now float in water, die from falling, and some code improvements * Tweaked API
- 0.4 - Dungeon Masters and Mese Monsters have much better aim due to shoot_offset, also they can both shoot through nodes that aren't walkable (flowers, grass etc) plus new sheep sound :)
- 0.3 - Added LOTT's Spider mob, made Cobwebs, added KPavel's Bee with Honey and Beehives (made texture), Warthogs now have sound and can be tamed, taming of shaved sheep or milked cow with 8 wheat so it will not despawn, many bug fixes :) ### Version 0.8
- 0.2 - Cooking bucket of milk into cheese now returns empty bucket
- 0.1 - Initial Release * Added sounds to monster mobs (thanks `Cyberpangolin` for the `sfx`)
* Added chicken sound
### Version 0.7
* `mobs.protected` switch added to `api.lua`. When set to 1 mobs no longer
spawn in protected areas
* Minor bugfixes
### Version 0.6
* API now supports multi-textured mobs, e.g oerkki, dungeon master, rats and
chickens have random skins when spawning (sheep fix TODO)
* Added new Honey block
### Version 0.5
* Mobs now float in water, die from falling
* Minor code improvements
### Version 0.4
* Added new sheep sound :)
* Dungeon Masters and Mese Monsters have much better aim due to `shoot_offset`
* They can both shoot through nodes that aren't walkable (flowers, grass, etc.)
### Version 0.3
* Added `LOTT`'s Spider mob
* Added Cobwebs
* Added KPavel's Bee with Honey and Beehives (made texture)
* Warthogs now have sound and can be tamed
* Taming of shaved sheep or milked cow with 8 wheat so it will not despawn
* Multiple bug fixes :)
### Version 0.2
* Cooking bucket of milk into cheese now returns empty bucket
### Version 0.1
* Initial Release

View File

@ -1,3 +1,12 @@
# Enable setting so that Mobs Redo mobs can attack Creatura mobs
mobs_attack_creatura (Attack Creatura Mobs) bool false
# How often mobs get nodes around them (default is 0.25, 1/4 second)
mob_node_timer_interval (Mob Node Timer Interval) float 0.25
# How often mobs run main functions (default is 1.00, 1 second)
mob_main_timer_interval (Mob Node Timer Interval) float 1.00
# If false then mobs no longer spawn in world without spawner or spawn egg # If false then mobs no longer spawn in world without spawner or spawn egg
mobs_spawn (Spawn Mobs) bool true mobs_spawn (Spawn Mobs) bool true
@ -7,21 +16,24 @@ only_peaceful_mobs (Only spawn peaceful Mobs) bool false
# If enabled then punching mobs no longer shows blood effects # If enabled then punching mobs no longer shows blood effects
mobs_disable_blood (Disable Mob blood) bool false mobs_disable_blood (Disable Mob blood) bool false
# If enabled the mobs will be highlighted when hit
mob_hit_effect (Highlight Mob when Hit) bool false
# If disabled then Mobs no longer destroy world blocks # If disabled then Mobs no longer destroy world blocks
mobs_griefing (Griefing Mobs) bool true mobs_griefing (Griefing Mobs) bool true
# If false then Mobs no longer spawn inside player protected areas # If false then Mobs no longer spawn inside player protected areas
mobs_spawn_protected (Spawn Mobs in protected areas) bool true mobs_spawn_protected (Spawn Mobs in protected areas) bool true
# If false then Monsters no longer spawn inside player protected areas
mobs_spawn_monster_protected (Spawn Monsters in protected areas) bool true
# If true Mobs will be removed once a map chunk is out of view # If true Mobs will be removed once a map chunk is out of view
remove_far_mobs (Remove far Mobs) bool true remove_far_mobs (Remove far Mobs) bool true
# Sets Mob difficulty level by multiplying punch damage # Sets Mob difficulty level by multiplying punch damage
mob_difficulty (Mob difficulty) float 1.0 mob_difficulty (Mob difficulty) float 1.0
# If disabled health status no longer appears above Mob when punched
mob_show_health (Show Mob health) bool true
# Contains a value used to multiply Mob spawn values # Contains a value used to multiply Mob spawn values
mob_chance_multiplier (Mob chance multiplier) float 1.0 mob_chance_multiplier (Mob chance multiplier) float 1.0
@ -39,3 +51,43 @@ mob_area_spawn (Mob Area Spawn) bool false
# Enable peaceful player attack prevention # Enable peaceful player attack prevention
enable_peaceful_player (Mobs do not attack peaceful player without reason) bool false enable_peaceful_player (Mobs do not attack peaceful player without reason) bool false
# Enable mobs smooth rotation
mob_smooth_rotate (Smooth rotation for mobs) bool true
# Fix Mob Height if too low so they cannot escape through specific nodes
mob_height_fix (Fix Mob Height) bool false
mob_log_spawn (Log Mob Spawning) bool false
# Mob hearing, when enabled will override minetest.sound_play for mobs to hear
mobs_can_hear (Enable Mob hearing) bool true
# Node hearing, when enabled will allow nodes to hear nearby sounds
mobs_can_hear_node (Enable Node hearing) bool false
# By default mobs are dealt knockback from damage, this lets you disable it
mobs_disable_damage_kb (Disable knockback from damage only) bool false
[Pathfinding]
# Enable pathfinding (default Enabled)
mob_pathfinding_enable (Enable pathfinding) bool true
# How long before stuck mobs starts searching (default 3.0)
mob_pathfinding_stuck_timeout (How long before stuck mobs start searching) float 3.0
# How long will mob follow path before giving up (default 5.0)
mob_pathfinding_stuck_path_timeout (How long will mob follow path before giving up) float 5.0
# Which pathfinding algorithm to use
# - Dijkstra (default)
# - A*_noprefetch (AStar_noprefetch)
# - A* (AStar)
# (A* names differ cause Minetest doesn´t allow "*" in settings)
mob_pathfinding_algorithm (pathfinding algorithm) enum Dijkstra Dijkstra,AStar_noprefetch,AStar
# max search distance from search positions (default 16)
mob_pathfinding_searchdistance (path search distance) int 16
# max jump height for pathfinding (default 4)
mob_pathfinding_max_jump (path max jump height) int 4
# max drop height for pathfinding (default 6)
mob_pathfinding_max_drop (path max drop height) int 6
# Enable mob infotext on hover
mob_infotext (Enable mob infotext on hover) bool true

Binary file not shown.

View File

@ -1,7 +0,0 @@
Creative Commons sounds from Freesound.org
mobs_swing.ogg by qubodup
- http://freesound.org/people/qubodup/sounds/60012/
mobs_spell.ogg by littlerobotsoundfactory
- http://freesound.org/people/LittleRobotSoundFactory/sounds/270396/

BIN
sounds/mobs_punch.ogg Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,31 +1,55 @@
local S = mobs.intllib local S = core.get_translator("mobs")
local max_per_block = tonumber(core.settings:get("max_objects_per_block") or 99)
-- helper functions
local function is_player(player)
if player and type(player) == "userdata" and core.is_player(player) then
return true
end
end
local square = math.sqrt
local get_distance = function(a, b)
if not a or not b then return 50 end -- nil check and default distance
local x, y, z = a.x - b.x, a.y - b.y, a.z - b.z
return square(x * x + y * y + z * z)
end
-- mob spawner -- mob spawner
local spawner_default = "mobs_animal:pumba 10 15 0 0 0" local spawner_default = "mobs_animal:pumba 10 15 0 0 0"
minetest.register_node("mobs:spawner", { core.register_node("mobs:spawner", {
tiles = {"mob_spawner.png"}, tiles = {"mob_spawner.png"},
drawtype = "glasslike", drawtype = "glasslike",
paramtype = "light", paramtype = "light",
walkable = true, walkable = true,
description = S("Mob Spawner"), description = S("Mob Spawner"),
groups = {cracky = 1}, groups = {cracky = 1, pickaxey = 3},
is_ground_content = false,
_mcl_hardness = 1,
_mcl_blast_resistance = 5,
sounds = mobs.node_sound_stone_defaults(),
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = core.get_meta(pos)
-- setup formspec -- setup formspec
local head = S("(mob name) (min light) (max light) (amount)" local head = S("(mob name) (min light) (max light) (amount)"
.. " (player distance) (Y offset)") .. " (player distance) (Y offset)")
-- text entry formspec -- text entry formspec
meta:set_string("formspec", meta:set_string("formspec", "size[10,3.5]"
"size[9,3.5]" .. "label[0.15,0.5;" .. core.formspec_escape(head) .. "]"
.. "label[0.15,0.5;" .. minetest.formspec_escape(head) .. "]" .. "field[1,2.5;8.5,0.8;text;" .. S("Command:")
.. "field[1,2.5;7.5,0.8;text;" .. S("Command:")
.. ";${command}]") .. ";${command}]")
meta:set_string("infotext", S("Spawner Not Active (enter settings)")) meta:set_string("infotext", S("Spawner Not Active (enter settings)"))
@ -34,56 +58,48 @@ minetest.register_node("mobs:spawner", {
on_right_click = function(pos, placer) on_right_click = function(pos, placer)
if minetest.is_protected(pos, placer:get_player_name()) then if core.is_protected(pos, placer:get_player_name()) then return end
return
end
end, end,
on_receive_fields = function(pos, formname, fields, sender) on_receive_fields = function(pos, formname, fields, sender)
if not fields.text or fields.text == "" then if not fields.text or fields.text == "" then return end
return
end
local meta = minetest.get_meta(pos) local meta = core.get_meta(pos)
local comm = fields.text:split(" ") local comm = fields.text:split(" ")
local name = sender:get_player_name() local name = sender:get_player_name()
if minetest.is_protected(pos, name) then if core.is_protected(pos, name) then
minetest.record_protection_violation(pos, name) core.record_protection_violation(pos, name)
return return
end end
local mob = comm[1] -- mob to spawn local mob = comm[1] or "" -- mob to spawn
local mlig = tonumber(comm[2]) -- min light local mlig = tonumber(comm[2]) -- min light
local xlig = tonumber(comm[3]) -- max light local xlig = tonumber(comm[3]) -- max light
local num = tonumber(comm[4]) -- total mobs in area local num = tonumber(comm[4]) -- total mobs in area
local pla = tonumber(comm[5]) -- player distance (0 to disable) local pla = tonumber(comm[5]) -- player distance (0 to disable)
local yof = tonumber(comm[6]) or 0 -- Y offset to spawn mob local yof = tonumber(comm[6]) or 0 -- Y offset to spawn mob
if mob and mob ~= "" and mobs.spawning_mobs[mob] if mob ~= "" and mobs.spawning_mobs[mob] and num and num >= 0 and num <= 10
and num and num >= 0 and num <= 10 and mlig and mlig >= 0 and mlig <= 15 and xlig and xlig >= 0 and xlig <= 15
and mlig and mlig >= 0 and mlig <= 15 and pla and pla >= 0 and pla <= 20 and yof and yof > -10 and yof < 10 then
and xlig and xlig >= 0 and xlig <= 15
and pla and pla >= 0 and pla <= 20
and yof and yof > -10 and yof < 10 then
meta:set_string("command", fields.text) meta:set_string("command", fields.text)
meta:set_string("infotext", S("Spawner Active (@1)", mob)) meta:set_string("infotext", S("Spawner Active (@1)", mob))
else else
minetest.chat_send_player(name, S("Mob Spawner settings failed!")) core.chat_send_player(name, S("Mob Spawner settings failed!"))
minetest.chat_send_player(name, core.chat_send_player(name,
S("Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] player_distance[1-20] y_offset[-10 to 10]”")) S("Syntax: “name min_light[0-14] max_light[0-14] "
.. "max_mobs_in_area[0 to disable] player_distance[1-20] "
.. "y_offset[-10 to 10]”"))
end end
end end
}) })
local max_per_block = tonumber(minetest.settings:get("max_objects_per_block") or 99)
-- spawner abm -- spawner abm
minetest.register_abm({
core.register_abm({
label = "Mob spawner node", label = "Mob spawner node",
nodenames = {"mobs:spawner"}, nodenames = {"mobs:spawner"},
interval = 10, interval = 10,
@ -93,12 +109,10 @@ minetest.register_abm({
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
-- return if too many entities already -- return if too many entities already
if active_object_count_wider >= max_per_block then if active_object_count_wider >= max_per_block then return end
return
end
-- get meta and command -- get meta and command
local meta = minetest.get_meta(pos) local meta = core.get_meta(pos)
local comm = meta:get_string("command"):split(" ") local comm = meta:get_string("command"):split(" ")
-- get settings from command -- get settings from command
@ -110,9 +124,7 @@ minetest.register_abm({
local yof = tonumber(comm[6]) or 0 local yof = tonumber(comm[6]) or 0
-- if amount is 0 then do nothing -- if amount is 0 then do nothing
if num == 0 then if num == 0 then return end
return
end
-- are we spawning a registered mob? -- are we spawning a registered mob?
if not mobs.spawning_mobs[mob] then if not mobs.spawning_mobs[mob] then
@ -121,7 +133,7 @@ minetest.register_abm({
end end
-- check objects inside 9x9 area around spawner -- check objects inside 9x9 area around spawner
local objs = minetest.get_objects_inside_radius(pos, 9) local objs = core.get_objects_inside_radius(pos, 9)
local count = 0 local count = 0
local ent local ent
@ -130,55 +142,55 @@ minetest.register_abm({
ent = obj:get_luaentity() ent = obj:get_luaentity()
if ent and ent.name and ent.name == mob then if ent and ent.name and ent.name == mob then count = count + 1 end
count = count + 1
end
end end
-- is there too many of same type? -- is there too many of same type?
if count >= num then if count >= num then return end
return
end
-- spawn mob if player detected and in range -- when player distance above 0, spawn mob if player detected and in range
if pla > 0 then if pla > 0 then
local in_range = 0 local in_range, player
local objsp = minetest.get_objects_inside_radius(pos, pla) local players = core.get_connected_players()
for _, oir in pairs(objsp) do for i = 1, #players do
if oir:is_player() then player = players[i]
in_range = 1 if get_distance(player:get_pos(), pos) <= pla then
in_range = true
break break
end end
end end
-- player not found -- player not found
if in_range == 0 then if not in_range then return end
return
end
end end
-- set medium mob usually spawns in (defaults to air)
local reg = core.registered_entities[mob].fly_in
if not reg or type(reg) == "string" then reg = {(reg or "air")} end
-- find air blocks within 5 nodes of spawner -- find air blocks within 5 nodes of spawner
local air = minetest.find_nodes_in_area( local air = core.find_nodes_in_area(
{x = pos.x - 5, y = pos.y + yof, z = pos.z - 5}, {x = pos.x - 5, y = pos.y + yof, z = pos.z - 5},
{x = pos.x + 5, y = pos.y + yof, z = pos.z + 5}, {"air"}) {x = pos.x + 5, y = pos.y + yof, z = pos.z + 5}, reg)
-- spawn in random air block -- spawn in random air block
if air and #air > 0 then if air and #air > 0 then
local pos2 = air[math.random(#air)] local pos2 = air[math.random(#air)]
local lig = minetest.get_node_light(pos2) or 0 local lig = core.get_node_light(pos2) or 0
pos2.y = pos2.y + 0.5 pos2.y = pos2.y + 0.5
-- only if light levels are within range -- only if light levels are within range
if lig >= mlig and lig <= xlig if lig >= mlig and lig <= xlig and core.registered_entities[mob] then
and minetest.registered_entities[mob] then core.add_entity(pos2, mob)
minetest.add_entity(pos2, mob)
end end
end end
end end

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

BIN
textures/mobs_fallback.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

After

Width:  |  Height:  |  Size: 734 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

BIN
textures/mobs_repellent.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

View File

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 202 B