Compare commits
182 Commits
cf18cd43de
...
master
Author | SHA1 | Date | |
---|---|---|---|
84377ee259 | |||
5077217497 | |||
bae9cb12e2 | |||
126e5afc24 | |||
112c512c6e | |||
0f5b0e382d | |||
5ed3a34cf3 | |||
f44441c580 | |||
2cf43ffc4e | |||
0d6b794fa0 | |||
42da759407 | |||
c0c4c3ea48 | |||
f5817061ce | |||
43ad058efa | |||
b977431e21 | |||
68b25c9d08 | |||
24adcae920 | |||
16a04547ab | |||
3a7b1bbfe6 | |||
01a60d9a55 | |||
99f4fc1768 | |||
027620bfa3 | |||
854834f04e | |||
5fb7b91db0 | |||
badb889cf3 | |||
ca7aeec95a | |||
14f391bf2c | |||
0bf3915315 | |||
b81c2aeab6 | |||
0a62f05132 | |||
9f472fb690 | |||
c62b013825 | |||
4b825b3e86 | |||
f09b6d1730 | |||
a3ede86365 | |||
4b556a4d16 | |||
01e015dc0f | |||
d7998a9ea7 | |||
57fe6cf2e3 | |||
b170b51f2d | |||
dca4159fc4 | |||
219d477c2a | |||
c8e91d1958 | |||
22d7ea79fd | |||
c24874a3bf | |||
c25975e7ea | |||
03ce8ada6b | |||
cc60499637 | |||
58792311c7 | |||
527fe8c2d5 | |||
6a7c221ce1 | |||
b8052c817c | |||
e17ea86bf5 | |||
ca76558edd | |||
bde53c3475 | |||
2e4664a5ce | |||
39f9f8df31 | |||
1b1f681886 | |||
627d468b9a | |||
e9c3d6c505 | |||
1f8ca901b5 | |||
816461286b | |||
430af1e91d | |||
79fb4f7ead | |||
f746f4b1e0 | |||
e59fd53ee9 | |||
faf511ff8c | |||
a35afc8299 | |||
219db764bf | |||
e4a5ead82c | |||
f4861ced2a | |||
1dd81eb008 | |||
64c6085f09 | |||
e8e774566b | |||
e55bf4d951 | |||
f1b5a66049 | |||
26215cd221 | |||
29314186b3 | |||
dce2abfcfe | |||
e561864e82 | |||
59c19fca98 | |||
a8297e6a8e | |||
bc6b8931da | |||
3e24677649 | |||
57d6859b93 | |||
1f6867bf25 | |||
b1da38456d | |||
341f92f118 | |||
c3d74394a7 | |||
964451fd78 | |||
ef9f492bad | |||
79c85e0551 | |||
cc14704651 | |||
8115f61ac9 | |||
77b53b9054 | |||
fc7269cc8c | |||
fb2a247d31 | |||
03fbe477c3 | |||
91be60be9b | |||
e11f383589 | |||
313382dcaa | |||
1536b9a5fc | |||
be2d630fdf | |||
99bea53af3 | |||
d20dfa0b41 | |||
e9180febc6 | |||
c4561a2207 | |||
998637fc3d | |||
de0914312c | |||
5a6ec7080f | |||
129b24b159 | |||
35cc60c355 | |||
903b1e34df | |||
87d13c857f | |||
17dafff8ef | |||
95f3e98867 | |||
b3b89e6dea | |||
822e78fd32 | |||
dd9b3d7add | |||
d4a25064ea | |||
70118fc8da | |||
7c7a7345af | |||
ceefbcec39 | |||
97771f8e65 | |||
1cacb02a6a | |||
47e91b9b6b | |||
a6a3b44c96 | |||
be7b6bc5fe | |||
68076c7626 | |||
099d15d810 | |||
412066fc07 | |||
bb66ffe335 | |||
682d76d7b3 | |||
d1f23e8ed8 | |||
9e27f45663 | |||
ac5486cc58 | |||
712f7f85fd | |||
6049a1c140 | |||
ba79c2f1f1 | |||
ed74f3c4c4 | |||
a62bfe3828 | |||
bf79985730 | |||
ce47b81da5 | |||
768ef84bd8 | |||
71e620eb0f | |||
221029e857 | |||
e8adf9b244 | |||
457eb1838c | |||
7f1ad09870 | |||
812f18430c | |||
56f4eb4274 | |||
f1daaa4a14 | |||
6172203e0e | |||
c173345135 | |||
55bdc4c0a4 | |||
93e8d0f4fa | |||
d15389b675 | |||
da54b9e141 | |||
ca2758622c | |||
9f9a522ec7 | |||
55e07dbdd3 | |||
96e4d5190e | |||
130d67a8f7 | |||
7044e20382 | |||
c48821df03 | |||
33c78e87d0 | |||
3ca3d656cb | |||
32231d5043 | |||
131c932aa6 | |||
5e96602085 | |||
b1ad4451a7 | |||
af7eafc22c | |||
042130baca | |||
747af786a8 | |||
8201c165e7 | |||
07dce8208b | |||
e2ee5c62c7 | |||
f31cf75b24 | |||
3106c4c859 | |||
dcc702848f | |||
cc0798b617 | |||
e32d87c70d |
@ -3,7 +3,6 @@ unused_args = false
|
|||||||
read_globals = {
|
read_globals = {
|
||||||
"minetest",
|
"minetest",
|
||||||
"lucky_block",
|
"lucky_block",
|
||||||
"intllib",
|
|
||||||
"vector",
|
"vector",
|
||||||
"table",
|
"table",
|
||||||
"invisibility",
|
"invisibility",
|
||||||
|
297
api.txt
@ -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
@ -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
|
458
crafts.lua
@ -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
|
||||||
|
})
|
||||||
|
12
depends.txt
@ -1,12 +0,0 @@
|
|||||||
default?
|
|
||||||
tnt?
|
|
||||||
dye?
|
|
||||||
farming?
|
|
||||||
invisibility?
|
|
||||||
intllib?
|
|
||||||
lucky_block?
|
|
||||||
cmi?
|
|
||||||
toolranks?
|
|
||||||
pathfinder?
|
|
||||||
player_api?
|
|
||||||
mtobjid?
|
|
@ -1 +0,0 @@
|
|||||||
Adds a mob api for mods to add animals or monsters etc.
|
|
37
init.lua
@ -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")
|
||||||
|
@ -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
|
||||||
|
131
locale/de_DE.po
@ -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]“"
|
|
128
locale/es.po
@ -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]”"
|
|
136
locale/fr.po
@ -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]“"
|
|
131
locale/it.po
@ -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]”"
|
|
@ -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]”=
|
||||||
|
@ -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]”=
|
||||||
|
@ -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]”=
|
||||||
|
@ -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é
|
|
||||||
|
@ -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]”=
|
||||||
|
@ -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]”=
|
||||||
|
@ -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
@ -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]”=
|
@ -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]”
|
||||||
|
@ -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
@ -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]”
|
@ -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]”=
|
||||||
|
@ -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]”=
|
||||||
|
131
locale/ms.po
@ -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]\""
|
|
133
locale/pt.po
@ -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]"
|
|
129
locale/ru.po
@ -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 ""
|
|
@ -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
@ -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]”=
|
133
locale/tr.po
@ -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ı]"
|
|
130
locale/zh_CN.po
@ -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]”"
|
|
130
locale/zh_TW.po
@ -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]”"
|
|
112
lucky_block.lua
@ -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"}}
|
||||||
|
})
|
||||||
|
4
mod.conf
@ -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
@ -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
|
||||||
|
39
readme.MD
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
135
spawner.lua
@ -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
|
||||||
|
BIN
textures/mobs_bubble_particle.png
Normal file
After Width: | Height: | Size: 331 B |
BIN
textures/mobs_fallback.png
Normal file
After Width: | Height: | Size: 821 B |
BIN
textures/mobs_fire_particle.png
Normal file
After Width: | Height: | Size: 343 B |
BIN
textures/mobs_hearing_vines.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
textures/mobs_hearing_vines_active.png
Normal file
After Width: | Height: | Size: 126 B |
BIN
textures/mobs_heart_particle.png
Normal file
After Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 247 B After Width: | Height: | Size: 186 B |
BIN
textures/mobs_pint_sized_rune.png
Normal file
After Width: | Height: | Size: 160 B |
BIN
textures/mobs_repellent.png
Normal file
After Width: | Height: | Size: 415 B |
Before Width: | Height: | Size: 202 B After Width: | Height: | Size: 202 B |