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

Compare commits

..

182 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
51 changed files with 3012 additions and 4358 deletions

View File

@ -3,7 +3,6 @@ unused_args = false
read_globals = { read_globals = {
"minetest", "minetest",
"lucky_block", "lucky_block",
"intllib",
"vector", "vector",
"table", "table",
"invisibility", "invisibility",

3649
api.lua

File diff suppressed because it is too large Load Diff

297
api.txt
View File

@ -32,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.
@ -51,7 +50,7 @@ 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 'can_leap' when true obstacles like fences or pits wont stop a mob
from trying to jump out. from trying to jump out.
@ -84,8 +83,8 @@ functions needed for the mob to work properly which contains the following:
'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. in lava.
'fire_damage' holds the damage per second inflicted to mobs when standing 'fire_damage' holds the damage per second inflicted to mobs when standing
in fire. '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)
@ -93,7 +92,7 @@ functions needed for the mob to work properly which contains the following:
When set to 16 then only natural light will kill mob. 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", "group:fish"} breed e.g. {"farming:wheat", "default:apple", "group:fish"}
@ -103,11 +102,15 @@ functions needed for the mob to work properly which contains the following:
'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
@ -147,15 +150,16 @@ 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"}.
'friendly_fire` when set to false, mobs will not be able to harm other 'friendly_fire` when set to false, mobs will not be able to harm other
mobs of the same type with friendly fire arrows. mobs of the same type with friendly fire arrows.
Defaults to true. Defaults to true.
'runaway_from' contains a table with mob names to run away from, add 'runaway_from' contains a table with mob names or nodesto run away
"player" to list to runaway from player also. from, add "player" to list to runaway from player also.
'ignore_invisibility' When true mob will still be able to see and attack 'ignore_invisibility' When true mob will still be able to see and attack
player even if invisible (invisibility mod only). 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
@ -173,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
@ -224,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:
@ -284,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.
@ -303,6 +309,25 @@ 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
--------------------------- ---------------------------
@ -324,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.
@ -338,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
@ -346,6 +392,7 @@ 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
@ -366,7 +413,7 @@ 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 'self.pause_timer' used to stop mob thinking when punched so that knockback
can take effect. can take effect.
'self.disable_falling' currently used on spider mob when climbing walls, stops 'self.disable_falling' currently used on spider mob when climbing walls, stops
@ -387,6 +434,36 @@ for each mob.
in it's name. 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
-------------------- --------------------
@ -473,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
---------------- ----------------
@ -502,11 +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()
'physical' same is in minetest.register_entity() [default: false]
'collide_with_objects' same as above '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)
@ -526,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
@ -555,11 +640,11 @@ 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, damage_radius, texture) 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)
'damage_radius' radius of damage around explosion 'entity_radius' radius of explosion to players and mobs
'texture' particle texture during explosion, defaults to "tnt_smoke.png" '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
@ -717,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)
@ -744,6 +829,7 @@ 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) 'mob_node_timer_interval' How often mobs get nodes around them (0.25 is default)
for every 1/4 second. for every 1/4 second.
'mob_main_timer_interval' How often mobs run main functions (1.0 is default) for 'mob_main_timer_interval' How often mobs run main functions (1.0 is default) for
@ -775,6 +861,7 @@ 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
@ -782,10 +869,9 @@ External Settings for "minetest.conf"
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_smooth_rotate' Enables smooth rotation when mobs turn by default.
'mob_height_fix' Enabled by default, increases smaller mob heights so they wont 'mob_height_fix' Disabled by default, increases smaller mob heights so they
glitch through certain nodes. cannot glitch through certain nodes.
'mob_pathfinding_enable' Enable pathfinding. 'mob_pathfinding_enable' Enable pathfinding.
'mob_pathfinder_enable' Use pathfinder mod if available.
'mob_pathfinding_stuck_timeout' How long before stuck mobs start searching. (default 3.0) '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_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) 'mob_pathfinding_algorithm' Which pathfinding algorithm to use Dijkstra (default), A*_noprefetch (AStar_noprefetch) or A* (AStar)
@ -793,6 +879,13 @@ External Settings for "minetest.conf"
'mob_pathfinding_searchdistance' max search distance from search positions (default 16) '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_jump' max jump height for pathfinding (default 4)
'mob_pathfinding_max_drop' max drop height for pathfinding (default 6) '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
@ -808,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,44 +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")
-- determine which sounds to use, default or mcl_sounds
local function sound_helper(snd)
mobs[snd] = (mod_def and default[snd]) or (mc2 and mcl_sounds[snd])
or function() return {} 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 -- name tag
minetest.register_craftitem("mobs:nametag", {
description = S("Name Tag"), core.register_craftitem("mobs:nametag", {
description = S("Name Tag") .. " " .. S("\nRight-click Mobs Redo mob to apply"),
inventory_image = "mobs_nametag.png", inventory_image = "mobs_nametag.png",
groups = {flammable = 2, nametag = 1} groups = {flammable = 2, nametag = 1}
}) })
if minetest.get_modpath("dye") and minetest.get_modpath("farming") then core.register_craft({
minetest.register_craft({ output = "mobs:nametag",
output = "mobs:nametag", recipe = {
recipe = {{"default:paper", "dye:black", "farming:string"}} { items.paper, items.dye_black, items.string }
}) }
end })
-- 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, leather = 1} 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",
@ -46,204 +115,176 @@ 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({
output = "mobs:lasso",
recipe = {
{ items.string, "", items.string},
{ "", items.diamond, "" },
{ items.string, "", items.string }
}
})
minetest.register_craft({ core.register_alias("mobs:magic_lasso", "mobs:lasso")
output = "mobs:lasso",
recipe = {
{"farming:string", "", "farming:string"},
{"", "default:diamond", ""},
{"farming:string", "", "farming:string"}
}
})
end
minetest.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({
output = "mobs:net",
minetest.register_craft({ recipe = {
output = "mobs:net", { items.stick, "", items.stick },
recipe = { { items.stick, "", items.stick },
{"group:stick", "", "group:stick"}, { items.string, items.stick, items.string }
{"group:stick", "", "group:stick"}, }
{"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 }
} }
}) })
-- level 2 protection rune -- protection rune (level 2)
minetest.register_craftitem("mobs:protector2", {
core.register_craftitem("mobs:protector2", {
description = S("Mob Protection Rune (Level 2)"), description = S("Mob Protection Rune (Level 2)"),
inventory_image = "mobs_protector2.png", inventory_image = "mobs_protector2.png",
groups = {flammable = 2} groups = {flammable = 2}
}) })
minetest.register_craft({ core.register_craft({
output = "mobs:protector2", output = "mobs:protector2",
recipe = { recipe = {
{"mobs:protector", "default:mese_crystal", "mobs:protector"}, { "mobs:protector", items.mese_crystal, "mobs:protector" },
{"default:mese_crystal", "default:diamondblock", "default:mese_crystal"}, { items.mese_crystal, items.diamond_block, items.mese_crystal },
{"mobs:protector", "default:mese_crystal", "mobs:protector"} { "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, saddle = 1} 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
local mod_def = minetest.get_modpath("default")
if mod_def and default.register_fence then if mod_def and 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 = mod_def and 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 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 = mod_def and 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, ""}
} }
}) })
-- 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
@ -252,7 +293,7 @@ minetest.register_craft({
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,
@ -260,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
@ -273,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
@ -305,45 +343,34 @@ minetest.register_tool(":mobs:mob_reset_stick", {
-- get base texture -- get base texture
local bt = tex_obj:get_luaentity().base_texture[1] local bt = tex_obj:get_luaentity().base_texture[1]
if type(bt) ~= "string" then if type(bt) ~= "string" then bt = "" end
bt = ""
end
local name = user:get_player_name() local name = user:get_player_name()
minetest.show_formspec(name, "mobs_texture", "size[8,4]" 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:")) .. ";" .. bt .. "]" .. 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()
@ -357,50 +384,117 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end end
end) end)
-- Meat Block -- Meat Block
minetest.register_node("mobs:meatblock", {
core.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 = mod_def and 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",
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) -- Meat Block (raw)
minetest.register_node("mobs:meatblock_raw", {
core.register_node("mobs:meatblock_raw", {
description = S("Raw Meat Block"), description = S("Raw Meat Block"),
tiles = {"mobs_meat_raw_top.png", "mobs_meat_raw_bottom.png", "mobs_meat_raw_side.png"}, tiles = {"mobs_meat_raw_top.png", "mobs_meat_raw_bottom.png", "mobs_meat_raw_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 = mod_def and 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_raw", 20)
core.register_craft({
output = "mobs:meatblock_raw", output = "mobs:meatblock_raw",
recipe = { recipe = {
{"group:food_meat_raw", "group:food_meat_raw", "group:food_meat_raw"}, { items.meat_raw, items.meat_raw, items.meat_raw },
{"group:food_meat_raw", "group:food_meat_raw", "group:food_meat_raw"}, { items.meat_raw, items.meat_raw, items.meat_raw },
{"group:food_meat_raw", "group:food_meat_raw", "group:food_meat_raw"} { items.meat_raw, items.meat_raw, items.meat_raw }
} }
}) })
minetest.register_craft({ core.register_craft({
type = "cooking", type = "cooking",
output = "mobs:meatblock", output = "mobs:meatblock",
recipe = "mobs:meatblock_raw", recipe = "mobs:meatblock_raw",
cooktime = 30 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,12 +0,0 @@
default?
tnt?
dye?
farming?
invisibility?
intllib?
lucky_block?
cmi?
toolranks?
pathfinder?
player_api?
mtobjid?

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")
if core.get_modpath("lucky_block") then
dofile(path .. "/lucky_block.lua")
end
print("[MOD] Mobs Redo loaded") print("[MOD] Mobs Redo loaded")

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
@ -20,9 +20,15 @@ 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 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): ShadowNinja (CC BY-SA 3.0):
tnt_smoke.png tnt_smoke.png

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\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,4 +1,4 @@
name = mobs name = mobs
depends =
optional_depends = default, tnt, dye, farming, invisibility, intllib, lucky_block, cmi, toolranks, pathfinder, player_api, mtobjid
description = Adds a mob api for mods to add animals or monsters etc. 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

291
mount.lua
View File

@ -1,47 +1,38 @@
-- lib_mount by Blert2112 (edited by TenPlus1) -- lib_mount by Blert2112 (edited by TenPlus1)
local is_50 = minetest.get_modpath("player_api") -- 5.x compatibility local is_mc2 = core.get_modpath("mcl_mobs") -- MineClone2 check
-- 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
function mobs.attach() end
function mobs.detach() end
function mobs.fly() end
function mobs.drive() end
return
end
-- Localise some functions
local abs, cos, floor, sin, sqrt, pi = local abs, cos, floor, sin, sqrt, pi =
math.abs, math.cos, math.floor, math.sin, math.sqrt, math.pi math.abs, math.cos, math.floor, math.sin, math.sqrt, math.pi
-- -- helper functions
-- Helper functions
--
local node_ok = function(pos, fallback) local function node_is(entity)
fallback = fallback or mobs.fallback_node if not entity.standing_on then return "other" end
local node = minetest.get_node_or_nil(pos) if entity.standing_on == "air" then return "air" end
if node and minetest.registered_nodes[node.name] then local def = core.registered_nodes[entity.standing_on]
return node
end
return {name = fallback} if def.groups.lava then return "lava" end
end if def.groups.liquid then return "liquid" end
if def.groups.walkable then return "walkable" end
local function node_is(pos)
local node = node_ok(pos)
if node.name == "air" then
return "air"
end
if minetest.get_item_group(node.name, "lava") ~= 0 then
return "lava"
end
if minetest.get_item_group(node.name, "liquid") ~= 0 then
return "liquid"
end
if minetest.registered_nodes[node.name].walkable == true then
return "walkable"
end
return "other" return "other"
end end
@ -49,13 +40,9 @@ 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 / abs(i)
end
end end
@ -75,18 +62,13 @@ end
local function force_detach(player) local function force_detach(player)
if not player then return end local attached_to = player and player:get_attach()
local attached_to = player:get_attach() if not attached_to then return end
if not attached_to then
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
@ -94,65 +76,62 @@ local function force_detach(player)
local name = player:get_player_name() local name = player:get_player_name()
if is_50 then 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.player_attached[name] = false
player_api.set_animation(player, "stand", 30) player_api.set_animation(player, "stand", 30)
else
default.player_attached[name] = false
default.player_set_animation(player, "stand", 30)
end end
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}) 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}}) player:set_properties({visual_size = {x = 1, y = 1}})
end end
-- detach player on leaving
minetest.register_on_leaveplayer(function(player) core.register_on_leaveplayer(function(player)
force_detach(player) force_detach(player)
end) end)
-- detatch all players on shutdown
minetest.register_on_shutdown(function() core.register_on_shutdown(function()
local players = minetest.get_connected_players() 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)
-- detatch player when dead
minetest.register_on_dieplayer(function(player) core.register_on_dieplayer(function(player)
force_detach(player) force_detach(player)
return true return true
end) end)
-- find free position to detach player
-- Just for correct detaching
local function find_free_pos(pos) local function find_free_pos(pos)
local check = { local check = {
{x = 1, y = 0, z = 0}, {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 = -1, y = 1, z = 0}, {x = 0, y = 0, z = 1}, {x = 0, y = 1, z = 1},
{x = -1, y = 0, z = 0}, {x = 0, y = 0, z = -1}, {x = 0, y = 1, z = -1}
{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 for _, c in pairs(check) do
local npos = {x = pos.x + c.x, y = pos.y + c.y, z = pos.z + c.z} local npos = {x = pos.x + c.x, y = pos.y + c.y, z = pos.z + c.z}
local node = minetest.get_node_or_nil(npos) local node = core.get_node_or_nil(npos)
if node and node.name then if node and node.name then
local def = minetest.registered_nodes[node.name] local def = core.registered_nodes[node.name]
if def and not def.walkable and if def and not def.walkable and def.liquidtype == "none" then
def.liquidtype == "none" then
return npos return npos
end end
end end
@ -161,9 +140,21 @@ local function find_free_pos(pos)
return pos return pos
end 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)
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}
entity.driver_eye_offset = entity.driver_eye_offset or {x = 0, y = 0, z = 0} entity.driver_eye_offset = entity.driver_eye_offset or {x = 0, y = 0, z = 0}
@ -171,9 +162,7 @@ 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 = pi / 2
end
local attach_at = entity.driver_attach_at local attach_at = entity.driver_attach_at
local eye_offset = entity.driver_eye_offset local eye_offset = entity.driver_eye_offset
@ -182,30 +171,27 @@ function mobs.attach(entity, player)
force_detach(player) force_detach(player)
if is_50 then if is_mc2 then
player_api.player_attached[player:get_player_name()] = true mcl_player.player_attached[player:get_player_name()] = true
else else
default.player_attached[player:get_player_name()] = true player_api.player_attached[player:get_player_name()] = true
end end
player:set_attach(entity.object, "", attach_at, entity.player_rotation) player:set_attach(entity.object, "", attach_at, entity.player_rotation)
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() core.after(0.2, function()
if player and player:is_player() then if is_player(player) then
if is_50 then if is_mc2 then
player_api.set_animation(player, "sit", 30) mcl_player.player_set_animation(player, "sit_mount" , 30)
else else
default.player_set_animation(player, "sit", 30) player_api.set_animation(player, "sit", 30)
end end
end end
end) end)
@ -213,12 +199,13 @@ function mobs.attach(entity, player)
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) function mobs.detach(player)
force_detach(player) force_detach(player)
minetest.after(0.1, function() core.after(0.1, function()
if player and player:is_player() then if player and player:is_player() then
@ -231,15 +218,18 @@ function mobs.detach(player)
end) 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 yaw = entity.object:get_yaw() or 0 local yaw = entity.object:get_yaw() or 0
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 = pi / 2
end
local acce_y = 0 local acce_y = 0
local velo = entity.object:get_velocity() ; if not velo then return end local velo = entity.object:get_velocity() ; if not velo then return end
@ -251,17 +241,13 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
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 * dtime 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 * dtime entity.v = entity.v - entity.accel * dtime
end end
@ -273,12 +259,8 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
horz = yaw horz = yaw
if ctrl.left then if ctrl.left then horz = horz + 0.05
horz = horz + 0.05 elseif ctrl.right then horz = horz - 0.05 end
elseif ctrl.right then
horz = horz - 0.05
end
else else
horz = entity.driver:get_look_horizontal() or 0 horz = entity.driver:get_look_horizontal() or 0
end end
@ -287,8 +269,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
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
@ -301,8 +282,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, 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
@ -315,10 +295,11 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
if velo.y > 0 then velo.y = 0 end if velo.y > 0 then velo.y = 0 end
end end
else else
-- jump if ctrl.jump then -- jump (only when standing on solid surface)
if ctrl.jump then
if velo.y == 0 then if velo.y == 0
and entity.standing_on ~= "air" and entity.standing_on ~= "ignore"
and core.get_item_group(entity.standing_on, "liquid") == 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
@ -326,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)
@ -370,37 +376,14 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
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
entity.lava_counter = (entity.lava_counter or 0) + dtime
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
local terrain_type = entity.terrain_type local terrain_type = entity.terrain_type
if terrain_type == 2 or terrain_type == 3 then if terrain_type == 2 or terrain_type == 3 then
@ -408,7 +391,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
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
@ -444,32 +427,26 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
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, _, speed, shoots, arrow, moving_anim, stand_anim)
local ctrl = entity.driver:get_player_control() ; if not ctrl then return end local ctrl = entity.driver:get_player_control() ; if not ctrl then return end
local velo = entity.object:get_velocity() local velo = entity.object:get_velocity() ; if not velo then return end
local dir = entity.driver:get_look_dir() local dir = entity.driver:get_look_dir()
local yaw = entity.driver:get_look_horizontal() + 1.57 local yaw = entity.driver:get_look_horizontal() ; if not yaw then return end
if not ctrl or not velo then return end yaw = yaw + 1.57 -- fix from get_yaw to get_look_horizontal
if ctrl.up then if ctrl.up then
entity.object:set_velocity({ entity.object:set_velocity(
x = dir.x * speed, {x = dir.x * speed, y = dir.y * speed + 2, z = dir.z * speed})
y = dir.y * speed + 2,
z = dir.z * speed
})
elseif ctrl.down then elseif ctrl.down then
entity.object:set_velocity({ entity.object:set_velocity(
x = -dir.x * speed, {x = -dir.x * speed, y = dir.y * speed + 2, z = -dir.z * speed})
y = dir.y * speed + 2,
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})
@ -481,7 +458,7 @@ function mobs.fly(entity, _, speed, shoots, arrow, moving_anim, stand_anim)
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)
@ -491,7 +468,7 @@ function mobs.fly(entity, _, speed, shoots, arrow, moving_anim, stand_anim)
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}
@ -504,11 +481,9 @@ function mobs.fly(entity, _, speed, shoots, arrow, moving_anim, stand_anim)
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
mobs:set_animation(entity, stand_anim) entity:set_animation(stand_anim) -- stopped animation
else else
-- moving animation entity:set_animation(moving_anim) -- moving animation
mobs:set_animation(entity, moving_anim)
end end
end end

View File

@ -19,11 +19,43 @@ https://forum.minetest.net/viewtopic.php?f=11&t=9917
- **Shears**. Used to right-click sheep and return 1-3 wool. - **Shears**. Used to right-click sheep and return 1-3 wool.
- **Protection Rune**. Protects tamed mobs from being harmed by other players. - **Protection Rune**. Protects tamed mobs from being harmed by other players.
- **Mob Fence and Fence Top**. Stops mobs escaping or glitching throughfences. - **Mob Fence and Fence Top**. Stops mobs escaping or glitching throughfences.
- Add mobs:mob_repellent block to stop mobs spawning within 16 node radius.
**Lucky Blocks**: 12 **Lucky Blocks**: 13
## Changelog ## 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 ### Version 1.57
* Added 'injured' animation when mob hurt * Added 'injured' animation when mob hurt
@ -33,6 +65,9 @@ https://forum.minetest.net/viewtopic.php?f=11&t=9917
* Refactored do_jump and added get_nodes function * Refactored do_jump and added get_nodes function
* Many bug fixes and tweaks to improve performance * Many bug fixes and tweaks to improve performance
* Added 'mobs_attack_creatura' setting so that monsters can attack Creatura mobs * 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 ### Version 1.56
@ -93,7 +128,7 @@ https://forum.minetest.net/viewtopic.php?f=11&t=9917
### Version 1.48 ### Version 1.48
* Added `mobs:set_velocity(self, velocity)` global function * Added `mobs:set_velocity(self, velocity)` global function [deprecated]
### Version 1.47 ### Version 1.47

View File

@ -56,13 +56,22 @@ enable_peaceful_player (Mobs do not attack peaceful player without reason) bool
mob_smooth_rotate (Smooth rotation for mobs) bool true mob_smooth_rotate (Smooth rotation for mobs) bool true
# Fix Mob Height if too low so they cannot escape through specific nodes # Fix Mob Height if too low so they cannot escape through specific nodes
mob_height_fix (Fix Mob Height) bool true 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] [Pathfinding]
# Enable pathfinding (default Enabled) # Enable pathfinding (default Enabled)
mob_pathfinding_enable (Enable pathfinding) bool true mob_pathfinding_enable (Enable pathfinding) bool true
# Use pathfinder mod if available (default Enabled)
mob_pathfinder_enable (Use pathfinder mod if available) bool true
# How long before stuck mobs starts searching (default 3.0) # How long before stuck mobs starts searching (default 3.0)
mob_pathfinding_stuck_timeout (How long before stuck mobs start searching) float 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) # How long will mob follow path before giving up (default 5.0)
@ -79,3 +88,6 @@ mob_pathfinding_searchdistance (path search distance) int 16
mob_pathfinding_max_jump (path max jump height) int 4 mob_pathfinding_max_jump (path max jump height) int 4
# max drop height for pathfinding (default 6) # max drop height for pathfinding (default 6)
mob_pathfinding_max_drop (path max drop height) int 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,30 +1,54 @@
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[10,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;8.5,0.8;text;" .. S("Command:")
.. ";${command}]") .. ";${command}]")
@ -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,62 +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) -- set medium mob usually spawns in (defaults to air)
local reg = minetest.registered_entities[mob].fly_in local reg = core.registered_entities[mob].fly_in
if not reg or type(reg) == "string" then if not reg or type(reg) == "string" then reg = {(reg or "air")} end
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}, reg) {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: 247 B

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 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