update mobs api to 20231105 version date, sync upstream
* Fixed mob damage when riding mobs
err its better the xclusive player check, minetest api is shit
* Added self.attack_patience value so mobs stop attacking unseen players
* Added self.node_damage flag which is true by default to enable damage_per_second node damage
* Spawn eggs check if mob is available when creating
* fix autodetect ":" to beginning of entity registration for alias_mob
commit a4cf246fce
has an error, alias must be registered with `:MODNAME:obejectname`
so if you dont add the prefix of `:` the default is the mod class parent, so
swaping here the sustitution detection, for now..
this addressed older https://notabug.org/TenPlus1/mobs_redo/issues/154
fixed in good way, also commit b1ad4451a7
* harden spawn log message, better fix for nil checks
reported, closes https://codeberg.org/tenplus1/mobs_redo#1
referece at https://github.com/Archtec-io/bugtracker/issues/130
this are not so good so implement in better way.
This commit is contained in:
parent
2427384422
commit
2f7b36ea57
@ -1,4 +1,4 @@
|
|||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
local MP = minetest.get_modpath("mobs")
|
||||||
-- Check for translation method
|
-- Check for translation method
|
||||||
local S
|
local S
|
||||||
|
|
||||||
@ -21,22 +21,29 @@ else
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local FS = function(...) return minetest.formspec_escape(S(...)) end
|
||||||
|
|
||||||
|
|
||||||
-- CMI support check
|
-- CMI support check
|
||||||
local use_cmi = minetest.global_exists("cmi")
|
local use_cmi = minetest.global_exists("cmi")
|
||||||
|
|
||||||
|
-- MineClone2 check
|
||||||
|
local use_mc2 = minetest.get_modpath("mcl_core")
|
||||||
|
|
||||||
|
-- Global
|
||||||
mobs = {
|
mobs = {
|
||||||
mod = "redo",
|
mod = "redo",
|
||||||
version = "20230805",
|
version = "20231105",
|
||||||
intllib = S,
|
translate = S, intllib = S,
|
||||||
invis = minetest.global_exists("invisibility") and invisibility or {},
|
invis = minetest.global_exists("invisibility") and invisibility or {},
|
||||||
node_ice = "default:ice",
|
node_ice = "default:ice",
|
||||||
node_snow = minetest.registered_aliases["mapgen_snow"] or "default:snow" or "mcl_core:snow",
|
node_snow = minetest.registered_aliases["mapgen_snow"]
|
||||||
node_dirt = minetest.registered_aliases["mapgen_dirt"] or "default:dirt" or "mcl_core:dirt"
|
or (use_mc2 and "mcl_core:snow") or "default:snow",
|
||||||
|
node_dirt = minetest.registered_aliases["mapgen_dirt"]
|
||||||
|
or (use_mc2 and "mcl_core:dirt") or "default:dirt"
|
||||||
}
|
}
|
||||||
mobs.fallback_node = mobs.node_dirt
|
mobs.fallback_node = mobs.node_dirt
|
||||||
|
|
||||||
|
|
||||||
-- localize common functions
|
-- localize common functions
|
||||||
local pi = math.pi
|
local pi = math.pi
|
||||||
local square = math.sqrt
|
local square = math.sqrt
|
||||||
@ -107,7 +114,8 @@ local pathfinder_enable = settings:get_bool("mob_pathfinder_enable") or true
|
|||||||
local pathfinding_stuck_timeout = tonumber(
|
local pathfinding_stuck_timeout = tonumber(
|
||||||
settings:get("mob_pathfinding_stuck_timeout")) or 3.0
|
settings:get("mob_pathfinding_stuck_timeout")) or 3.0
|
||||||
-- how long will mob follow path before giving up
|
-- how long will mob follow path before giving up
|
||||||
local pathfinding_stuck_path_timeout = tonumber(settings:get("mob_pathfinding_stuck_path_timeout")) or 5.0
|
local pathfinding_stuck_path_timeout = tonumber(
|
||||||
|
settings:get("mob_pathfinding_stuck_path_timeout")) or 5.0
|
||||||
-- which algorithm to use, Dijkstra(default) or A*_noprefetch or A*
|
-- which algorithm to use, Dijkstra(default) or A*_noprefetch or A*
|
||||||
-- fix settings not allowing "*"
|
-- fix settings not allowing "*"
|
||||||
local pathfinding_algorithm = settings:get("mob_pathfinding_algorithm") or "Dijkstra"
|
local pathfinding_algorithm = settings:get("mob_pathfinding_algorithm") or "Dijkstra"
|
||||||
@ -210,6 +218,7 @@ mobs.mob_class = {
|
|||||||
friendly_fire = true,
|
friendly_fire = true,
|
||||||
facing_fence = false,
|
facing_fence = false,
|
||||||
_breed_countdown = nil,
|
_breed_countdown = nil,
|
||||||
|
_tame_countdown = nil,
|
||||||
_cmi_is_mob = true
|
_cmi_is_mob = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,7 +229,7 @@ local mob_class_meta = {__index = mob_class}
|
|||||||
-- play sound
|
-- play sound
|
||||||
function mob_class:mob_sound(sound)
|
function mob_class:mob_sound(sound)
|
||||||
|
|
||||||
if sound then
|
if not sound then return end
|
||||||
|
|
||||||
-- higher pitch for a child
|
-- higher pitch for a child
|
||||||
local pitch = self.child and 1.5 or 1.0
|
local pitch = self.child and 1.5 or 1.0
|
||||||
@ -231,10 +240,9 @@ function mob_class:mob_sound(sound)
|
|||||||
minetest.sound_play(sound, {
|
minetest.sound_play(sound, {
|
||||||
object = self.object,
|
object = self.object,
|
||||||
gain = 1.0,
|
gain = 1.0,
|
||||||
max_hear_distance = self.sounds.distance,
|
max_hear_distance = (self.sounds and self.sounds.distance) or 10,
|
||||||
pitch = pitch
|
pitch = pitch
|
||||||
}, true)
|
}, true)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -825,6 +833,8 @@ function mob_class:update_tag()
|
|||||||
text = "\nLoving: " .. (self.hornytimer - (HORNY_TIME + HORNY_AGAIN_TIME))
|
text = "\nLoving: " .. (self.hornytimer - (HORNY_TIME + HORNY_AGAIN_TIME))
|
||||||
elseif self.child == true then
|
elseif self.child == true then
|
||||||
text = "\nGrowing: " .. (self.hornytimer - CHILD_GROW_TIME)
|
text = "\nGrowing: " .. (self.hornytimer - CHILD_GROW_TIME)
|
||||||
|
elseif self._tame_countdown then
|
||||||
|
text = "\nTaming: " .. self._tame_countdown
|
||||||
elseif self._breed_countdown then
|
elseif self._breed_countdown then
|
||||||
text = "\nBreeding: " .. self._breed_countdown
|
text = "\nBreeding: " .. self._breed_countdown
|
||||||
end
|
end
|
||||||
@ -1580,6 +1590,8 @@ function mob_class:breed()
|
|||||||
-- make sure baby is actually there
|
-- make sure baby is actually there
|
||||||
if ent2 then
|
if ent2 then
|
||||||
|
|
||||||
|
textures = self.base_texture
|
||||||
|
|
||||||
-- using specific child texture (if found)
|
-- using specific child texture (if found)
|
||||||
if self.child_texture then
|
if self.child_texture then
|
||||||
textures = self.child_texture[1]
|
textures = self.child_texture[1]
|
||||||
@ -1991,8 +2003,7 @@ local function is_peaceful_player(player)
|
|||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
|
|
||||||
-- player priv enabled
|
-- player priv enabled
|
||||||
if player_name
|
if player_name and minetest.check_player_privs(player_name, "peaceful_player") then
|
||||||
and minetest.check_player_privs(player_name, "peaceful_player") then
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -2328,6 +2339,21 @@ function mob_class:dogswitch(dtime)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- stop attack
|
||||||
|
function mob_class:stop_attack()
|
||||||
|
|
||||||
|
self.attack = nil
|
||||||
|
self.following = nil
|
||||||
|
self.v_start = false
|
||||||
|
self.timer = 0
|
||||||
|
self.blinktimer = 0
|
||||||
|
self.path.way = nil
|
||||||
|
self:set_velocity(0)
|
||||||
|
self.state = "stand"
|
||||||
|
self:set_animation("stand", true)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- execute current state (stand, walk, run, attacks)
|
-- execute current state (stand, walk, run, attacks)
|
||||||
function mob_class:do_states(dtime)
|
function mob_class:do_states(dtime)
|
||||||
|
|
||||||
@ -2478,6 +2504,11 @@ function mob_class:do_states(dtime)
|
|||||||
self:set_velocity(0)
|
self:set_velocity(0)
|
||||||
self.state = "stand"
|
self.state = "stand"
|
||||||
self:set_animation("stand")
|
self:set_animation("stand")
|
||||||
|
|
||||||
|
-- try to turn so we are not stuck
|
||||||
|
yaw = yaw + random(-1, 1) * 1.5
|
||||||
|
yaw = self:set_yaw(yaw, 4)
|
||||||
|
|
||||||
else
|
else
|
||||||
self:set_velocity(self.run_velocity)
|
self:set_velocity(self.run_velocity)
|
||||||
self:set_animation("walk")
|
self:set_animation("walk")
|
||||||
@ -2501,19 +2532,28 @@ function mob_class:do_states(dtime)
|
|||||||
|
|
||||||
--print(" ** stop attacking **", self.name, self.health, dist, self.view_range)
|
--print(" ** stop attacking **", self.name, self.health, dist, self.view_range)
|
||||||
|
|
||||||
self.attack = nil
|
self:stop_attack()
|
||||||
self.following = nil
|
|
||||||
self.v_start = false
|
|
||||||
self.timer = 0
|
|
||||||
self.blinktimer = 0
|
|
||||||
self.path.way = nil
|
|
||||||
self:set_velocity(0)
|
|
||||||
self.state = "stand"
|
|
||||||
self:set_animation("stand", true)
|
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- check enemy is in sight
|
||||||
|
local in_sight = self:line_of_sight(
|
||||||
|
{x = s.x, y = s.y + 0.5, z = s.z},
|
||||||
|
{x = p.x, y = p.y + 0.5, z = p.z})
|
||||||
|
|
||||||
|
-- stop attacking when enemy not seen for 11 seconds
|
||||||
|
if not in_sight then
|
||||||
|
|
||||||
|
self.target_time_lost = (self.target_time_lost or 0) + dtime
|
||||||
|
|
||||||
|
if self.target_time_lost > self.attack_patience then
|
||||||
|
self:stop_attack()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
self.target_time_lost = 0
|
||||||
|
end
|
||||||
|
|
||||||
if self.attack_type == "explode" then
|
if self.attack_type == "explode" then
|
||||||
|
|
||||||
yaw_to_pos(self, p)
|
yaw_to_pos(self, p)
|
||||||
@ -2528,7 +2568,7 @@ function mob_class:do_states(dtime)
|
|||||||
-- start timer when in reach and line of sight
|
-- start timer when in reach and line of sight
|
||||||
if not self.v_start
|
if not self.v_start
|
||||||
and dist <= self.reach
|
and dist <= self.reach
|
||||||
and self:line_of_sight(s, p, 2) then
|
and in_sight then
|
||||||
|
|
||||||
self.v_start = true
|
self.v_start = true
|
||||||
self.timer = 0
|
self.timer = 0
|
||||||
@ -2540,7 +2580,7 @@ function mob_class:do_states(dtime)
|
|||||||
-- stop timer if out of reach or direct line of sight
|
-- stop timer if out of reach or direct line of sight
|
||||||
elseif self.allow_fuse_reset
|
elseif self.allow_fuse_reset
|
||||||
and self.v_start
|
and self.v_start
|
||||||
and (dist > self.reach or not self:line_of_sight(s, p, 2)) then
|
and (dist > self.reach or not in_sight) then
|
||||||
|
|
||||||
--print("=== explosion timer stopped")
|
--print("=== explosion timer stopped")
|
||||||
|
|
||||||
@ -2574,10 +2614,8 @@ function mob_class:do_states(dtime)
|
|||||||
self.blinktimer = 0
|
self.blinktimer = 0
|
||||||
|
|
||||||
if self.blinkstatus then
|
if self.blinkstatus then
|
||||||
|
|
||||||
self.object:set_texture_mod(self.texture_mods)
|
self.object:set_texture_mod(self.texture_mods)
|
||||||
else
|
else
|
||||||
|
|
||||||
self.object:set_texture_mod(self.texture_mods .. "^[brighten")
|
self.object:set_texture_mod(self.texture_mods .. "^[brighten")
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2590,10 +2628,9 @@ function mob_class:do_states(dtime)
|
|||||||
|
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
|
|
||||||
-- dont damage anything if area protected or next to waterpathfinding_max_jump
|
-- dont damage anything if area protected or next to water
|
||||||
if minetest.find_node_near(pos, 1, {"group:water"})
|
if minetest.find_node_near(pos, 1, {"group:water"})
|
||||||
or minetest.is_protected(pos, "") then
|
or minetest.is_protected(pos, "") then
|
||||||
|
|
||||||
node_break_radius = 1
|
node_break_radius = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -3117,15 +3154,16 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir, damage)
|
|||||||
self.following = nil
|
self.following = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local name = hitter:get_player_name() or ""
|
local hitter_name = ""
|
||||||
|
if hitter then if is_player(hitter) then hitter_name = hitter:get_player_name() end end
|
||||||
|
|
||||||
-- attack puncher and call other mobs for help
|
-- attack puncher and call other mobs for help
|
||||||
if self.passive == false
|
if self.passive == false
|
||||||
and self.state ~= "flop"
|
and self.state ~= "flop"
|
||||||
and self.child == false
|
and self.child == false
|
||||||
and self.attack_players == true
|
and self.attack_players == true
|
||||||
and hitter:get_player_name() ~= self.owner
|
and not (is_player(hitter) and hitter_name == self.owner)
|
||||||
and not is_invisible(self, name)
|
and not is_invisible(self, hitter_name)
|
||||||
and self.object ~= hitter then
|
and self.object ~= hitter then
|
||||||
|
|
||||||
-- attack whoever punched mob
|
-- attack whoever punched mob
|
||||||
@ -3134,25 +3172,25 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir, damage)
|
|||||||
|
|
||||||
-- alert others to the attack
|
-- alert others to the attack
|
||||||
local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range)
|
local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range)
|
||||||
local obj
|
local ent
|
||||||
|
|
||||||
for n = 1, #objs do
|
for n = 1, #objs do
|
||||||
|
|
||||||
obj = objs[n]:get_luaentity()
|
ent = objs[n] and objs[n]:get_luaentity()
|
||||||
|
|
||||||
if obj and obj._cmi_is_mob then
|
if ent and ent._cmi_is_mob then
|
||||||
|
|
||||||
-- only alert members of same mob and assigned helper
|
-- only alert members of same mob and assigned helper
|
||||||
if obj.group_attack == true
|
if ent.group_attack == true
|
||||||
and obj.state ~= "attack"
|
and ent.state ~= "attack"
|
||||||
and obj.owner ~= name
|
and not (is_player(hitter) and ent.owner == hitter_name)
|
||||||
and (obj.name == self.name or obj.name == self.group_helper) then
|
and (ent.name == self.name or ent.name == self.group_helper) then
|
||||||
obj:do_attack(hitter)
|
ent:do_attack(hitter)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- have owned mobs attack player threat
|
-- have owned mobs attack player threat
|
||||||
if obj.owner == name and obj.owner_loyal then
|
if is_player(hitter) and ent.owner == hitter_name and ent.owner_loyal then
|
||||||
obj:do_attack(self.object)
|
ent:do_attack(self.object)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -3223,6 +3261,28 @@ function mob_class:mob_staticdata()
|
|||||||
self.serialized_cmi_components = cmi.serialize_components(self._cmi_components)
|
self.serialized_cmi_components = cmi.serialize_components(self._cmi_components)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- move existing variables to new table for future compatibility
|
||||||
|
-- using self.initial_properties lost some variables when backing up?!?
|
||||||
|
if not self.backup_properties then
|
||||||
|
|
||||||
|
self.backup_properties = {
|
||||||
|
hp_max = self.hp_max,
|
||||||
|
physical = self.physical,
|
||||||
|
collisionbox = self.collisionbox,
|
||||||
|
selectionbox = self.selectionbox,
|
||||||
|
visual = self.visual,
|
||||||
|
visual_size = self.visual_size,
|
||||||
|
mesh = self.mesh,
|
||||||
|
textures = self.textures,
|
||||||
|
make_footstep_sound = self.make_footstep_sound,
|
||||||
|
stepheight = self.stepheight,
|
||||||
|
glow = self.glow,
|
||||||
|
nametag = self.nametag,
|
||||||
|
damage_texture_modifier = self.damage_texture_modifier,
|
||||||
|
infotext = self.infotext
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
return minetest.serialize(clean_staticdata(self))
|
return minetest.serialize(clean_staticdata(self))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -3426,7 +3486,7 @@ function mob_class:mob_expire(pos, dtime)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- minetest.log("action", S("lifetimer expired, removed @1", self.name))
|
-- minetest.log("action", "lifetimer expired, removed " .. self.name)
|
||||||
|
|
||||||
effect(pos, 15, "tnt_smoke.png", 2, 4, 2, 0)
|
effect(pos, 15, "tnt_smoke.png", 2, 4, 2, 0)
|
||||||
|
|
||||||
@ -3510,7 +3570,7 @@ function mob_class:on_step(dtime, moveresult)
|
|||||||
-- check and stop if standing at cliff and fear of heights
|
-- check and stop if standing at cliff and fear of heights
|
||||||
self.at_cliff = self:is_at_cliff()
|
self.at_cliff = self:is_at_cliff()
|
||||||
|
|
||||||
if self.pause_timer <= 0 and self.at_cliff then
|
if self.pause_timer < 0 and self.at_cliff then
|
||||||
self:set_velocity(0)
|
self:set_velocity(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -3667,8 +3727,8 @@ function mobs:register_mob(name, def)
|
|||||||
|
|
||||||
minetest.register_entity(name, setmetatable({
|
minetest.register_entity(name, setmetatable({
|
||||||
|
|
||||||
stepheight = def.stepheight,
|
stepheight = def.stepheight or 1.1,
|
||||||
name = name,
|
name = (name:find(":") and name or ":"..name),
|
||||||
type = def.type,
|
type = def.type,
|
||||||
attack_type = def.attack_type,
|
attack_type = def.attack_type,
|
||||||
fly = def.fly,
|
fly = def.fly,
|
||||||
@ -3921,6 +3981,8 @@ function mobs:add_mob(pos, def)
|
|||||||
if not ent then
|
if not ent then
|
||||||
--print("[mobs] entity not found " .. def.name)
|
--print("[mobs] entity not found " .. def.name)
|
||||||
return false
|
return false
|
||||||
|
else
|
||||||
|
effect(pos, 15, "tnt_smoke.png", 1, 2, 2, 15, 5)
|
||||||
end
|
end
|
||||||
|
|
||||||
if def.child then
|
if def.child then
|
||||||
@ -4155,14 +4217,16 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, inter
|
|||||||
|
|
||||||
local mob = minetest.add_entity(pos, name)
|
local mob = minetest.add_entity(pos, name)
|
||||||
|
|
||||||
-- print("[mobs] Spawned " .. name .. " at "
|
|
||||||
-- .. minetest.pos_to_string(pos) .. " on "
|
|
||||||
-- .. node.name .. " near " .. neighbors[1])
|
|
||||||
|
|
||||||
if mob_log_spawn then
|
if mob_log_spawn then
|
||||||
|
|
||||||
minetest.log("[MOBS] Spawned " .. name .. " at "
|
local pos_string = pos and minetest.pos_to_string(pos) or ""
|
||||||
.. minetest.pos_to_string(pos))
|
|
||||||
|
minetest.log(
|
||||||
|
"[MOBS] Spawned "
|
||||||
|
.. (name or "")
|
||||||
|
.. " at "
|
||||||
|
.. pos_string
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
if on_spawn and mob then
|
if on_spawn and mob then
|
||||||
@ -4238,7 +4302,7 @@ function mobs:register_arrow(name, def)
|
|||||||
|
|
||||||
if not name or not def then return end -- errorcheck
|
if not name or not def then return end -- errorcheck
|
||||||
|
|
||||||
minetest.register_entity(name, {
|
minetest.register_entity( (name:find(":") and name or ":"..name) , {
|
||||||
|
|
||||||
physical = def.physical or false,
|
physical = def.physical or false,
|
||||||
collide_with_objects = def.collide_with_objects or false,
|
collide_with_objects = def.collide_with_objects or false,
|
||||||
@ -4409,7 +4473,6 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- Register spawn eggs
|
-- Register spawn eggs
|
||||||
|
|
||||||
-- Note: This also introduces the “spawn_egg” group:
|
-- Note: This also introduces the “spawn_egg” group:
|
||||||
-- * spawn_egg=1: Spawn egg (generic mob, no metadata)
|
-- * spawn_egg=1: Spawn egg (generic mob, no metadata)
|
||||||
-- * spawn_egg=2: Spawn egg (captured/tamed mob, metadata)
|
-- * spawn_egg=2: Spawn egg (captured/tamed mob, metadata)
|
||||||
@ -4752,11 +4815,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
|||||||
|
|
||||||
-- increase health
|
-- increase health
|
||||||
self.health = self.health + 4
|
self.health = self.health + 4
|
||||||
|
if self.health >= self.hp_max then self.health = self.hp_max end
|
||||||
if self.health >= self.hp_max then
|
|
||||||
|
|
||||||
self.health = self.hp_max
|
|
||||||
end
|
|
||||||
|
|
||||||
self.object:set_hp(self.health)
|
self.object:set_hp(self.health)
|
||||||
|
|
||||||
@ -4764,7 +4823,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
|||||||
if self.child == true then
|
if self.child == true then
|
||||||
|
|
||||||
-- deduct 10% of the time to adulthood
|
-- deduct 10% of the time to adulthood
|
||||||
self.hornytimer = math.floor(self.hornytimer + (
|
self.hornytimer = floor(self.hornytimer + (
|
||||||
(CHILD_GROW_TIME - self.hornytimer) * 0.1))
|
(CHILD_GROW_TIME - self.hornytimer) * 0.1))
|
||||||
--print ("====", self.hornytimer)
|
--print ("====", self.hornytimer)
|
||||||
return true
|
return true
|
||||||
@ -4772,7 +4831,8 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
|||||||
|
|
||||||
-- feed and tame
|
-- feed and tame
|
||||||
self.food = (self.food or 0) + 1
|
self.food = (self.food or 0) + 1
|
||||||
self._breed_countdown = feed_count - self.food
|
self._breed_countdown = breed and (feed_count - self.food)
|
||||||
|
self._tame_countdown = not self.tamed and tame and (feed_count - self.food)
|
||||||
|
|
||||||
if self.food >= feed_count then
|
if self.food >= feed_count then
|
||||||
|
|
||||||
@ -4813,8 +4873,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
|||||||
|
|
||||||
-- if mob has been tamed you can name it with a nametag
|
-- if mob has been tamed you can name it with a nametag
|
||||||
if item:get_name() == "mobs:nametag"
|
if item:get_name() == "mobs:nametag"
|
||||||
and (name == self.owner
|
and (name == self.owner or minetest.check_player_privs(name, "protection_bypass")) then
|
||||||
or minetest.check_player_privs(name, "protection_bypass")) then
|
|
||||||
|
|
||||||
-- store mob and nametag stack in external variables
|
-- store mob and nametag stack in external variables
|
||||||
mob_obj[name] = self
|
mob_obj[name] = self
|
||||||
@ -4823,13 +4882,9 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
|||||||
local tag = self.nametag or ""
|
local tag = self.nametag or ""
|
||||||
local esc = minetest.formspec_escape
|
local esc = minetest.formspec_escape
|
||||||
|
|
||||||
minetest.show_formspec(name, "mobs_nametag",
|
minetest.show_formspec(name, "mobs_nametag", "size[8,4]"
|
||||||
"size[8,4]" ..
|
.. "field[0.5,1;7.5,0;name;" .. esc(FS("Enter name:")) .. ";" .. tag .. "]"
|
||||||
"field[0.5,1;7.5,0;name;" ..
|
.. "button_exit[2.5,3.5;3,1;mob_rename;" .. esc(FS("Rename")) .. "]")
|
||||||
esc(S("Enter name:")) ..
|
|
||||||
";" .. tag .. "]" ..
|
|
||||||
"button_exit[2.5,3.5;3,1;mob_rename;" ..
|
|
||||||
esc(S("Rename")) .. "]")
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@ -4844,9 +4899,9 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
|||||||
end
|
end
|
||||||
|
|
||||||
minetest.chat_send_player(clicker:get_player_name(),
|
minetest.chat_send_player(clicker:get_player_name(),
|
||||||
S("@1 follows:\n- @2",
|
S("@1 follows:",
|
||||||
self.name:split(":")[2],
|
self.name:split(":")[2]) .. "\n" ..
|
||||||
table.concat(self.follow, "\n- ")))
|
table.concat(self.follow, "\n- "))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -4907,10 +4962,10 @@ function mobs:alias_mob(old_name, new_name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- spawn egg
|
-- spawn egg
|
||||||
minetest.register_alias(old_name, new_name)
|
minetest.register_alias( (old_name:find(":") and old_name or ":"..old_name), new_name)
|
||||||
|
|
||||||
-- entity
|
-- entity
|
||||||
minetest.register_entity(":" .. old_name, {
|
minetest.register_entity( ":"..old_name , {
|
||||||
|
|
||||||
physical = false, static_save = false,
|
physical = false, static_save = false,
|
||||||
|
|
||||||
|
@ -387,6 +387,15 @@ 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:stop_attack() -- stops mob attacking
|
||||||
|
|
||||||
|
|
||||||
Adding Mobs in World
|
Adding Mobs in World
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
local S = mobs.intllib
|
local S = mobs.translate
|
||||||
|
local FS = function(...) return minetest.formspec_escape(S(...)) end
|
||||||
local mc2 = minetest.get_modpath("mcl_core")
|
local mc2 = minetest.get_modpath("mcl_core")
|
||||||
|
|
||||||
-- recipe items
|
-- recipe items
|
||||||
@ -334,9 +335,9 @@ minetest.register_tool(":mobs:mob_reset_stick", {
|
|||||||
|
|
||||||
minetest.show_formspec(name, "mobs_texture", "size[8,4]"
|
minetest.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
|
||||||
})
|
})
|
||||||
|
@ -21,6 +21,9 @@ dofile(path .. "/crafts.lua")
|
|||||||
dofile(path .. "/spawner.lua")
|
dofile(path .. "/spawner.lua")
|
||||||
|
|
||||||
-- Lucky Blocks
|
-- Lucky Blocks
|
||||||
dofile(path .. "/lucky_block.lua")
|
if minetest.get_modpath("lucky_block") then
|
||||||
|
dofile(path .. "/lucky_block.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
print("[MOD] Mobs Redo loaded")
|
print("[MOD] Mobs Redo loaded")
|
||||||
|
@ -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=Rohfleisch Blokc
|
||||||
|
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]”=
|
||||||
|
@ -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 Fence Top=
|
|
||||||
Mob Protection Rune=Защитная руна мобов
|
|
||||||
#Mob Reset Stick=
|
|
||||||
#Mob Spawner=
|
|
||||||
Mob Spawner settings failed!=Настройки спаунера моба провалились
|
|
||||||
Mob has been protected!=Моб защищен!
|
Mob has been protected!=Моб защищен!
|
||||||
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=Защитная руна мобов
|
||||||
#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)=Спаунер не активен (введите настройки)
|
||||||
|
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]”=
|
||||||
|
@ -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]”=
|
||||||
|
@ -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]”=
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
if minetest.get_modpath("lucky_block") then
|
lucky_block:add_blocks({
|
||||||
|
|
||||||
lucky_block:add_blocks({
|
|
||||||
{"dro", {"mobs:meat_raw"}, 5},
|
{"dro", {"mobs:meat_raw"}, 5},
|
||||||
{"dro", {"mobs:meat"}, 5},
|
{"dro", {"mobs:meat"}, 5},
|
||||||
{"dro", {"mobs:nametag"}, 1},
|
{"dro", {"mobs:nametag"}, 1},
|
||||||
@ -14,5 +12,4 @@ if minetest.get_modpath("lucky_block") then
|
|||||||
{"dro", {"mobs:fence_wood"}, 10},
|
{"dro", {"mobs:fence_wood"}, 10},
|
||||||
{"dro", {"mobs:fence_top"}, 12},
|
{"dro", {"mobs:fence_top"}, 12},
|
||||||
{"lig"}
|
{"lig"}
|
||||||
})
|
})
|
||||||
end
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
name = mobs
|
name = mobs
|
||||||
depends =default
|
depends =default
|
||||||
optional_depends = tnt, player_api, dye, farming, invisibility, intllib, lucky_block, cmi, toolranks, pathfinder, mtobjid
|
|
||||||
description = MOBS api for mobs to add animals or monsters etc
|
description = MOBS api for mobs to add animals or monsters etc
|
||||||
|
optional_depends = tnt, player_api, invisibility, intllib, lucky_block, cmi, toolranks, pathfinder, mtobjid
|
||||||
|
min_minetest_version = 5.0
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
-- lib_mount by Blert2112 (edited by TenPlus1)
|
-- lib_mount by Blert2112 (edited by TenPlus1)
|
||||||
|
|
||||||
--[[ one of these is needed (for now) to ride mobs, otherwise no riding for you
|
local is_pa = minetest.get_modpath("player_api") -- 5.x compatibility
|
||||||
if not minetest.get_modpath("default")
|
local is_mc2 = minetest.get_modpath("mcl_mobs") -- MineClone2 check
|
||||||
or not minetest.get_modpath("player_api") then
|
|
||||||
|
-- one of these is needed to ride mobs, otherwise no riding for you
|
||||||
|
if not minetest.get_modpath("default") and not is_pa and not is_mc2 then
|
||||||
|
|
||||||
function mobs.attach() end
|
function mobs.attach() end
|
||||||
function mobs.detach() end
|
function mobs.detach() end
|
||||||
@ -11,10 +13,6 @@ or not minetest.get_modpath("player_api") then
|
|||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
]]
|
|
||||||
|
|
||||||
local is_pa = minetest.get_modpath("player_api") -- 5.x compatibility
|
|
||||||
local is_mc2 = minetest.get_modpath("mcl_mobs") -- MineClone2 compatibility
|
|
||||||
|
|
||||||
-- are we a real player ?
|
-- are we a real player ?
|
||||||
local function is_player(player)
|
local function is_player(player)
|
||||||
@ -25,7 +23,7 @@ local function is_player(player)
|
|||||||
return false
|
return false
|
||||||
end
|
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
|
||||||
|
|
||||||
@ -117,16 +115,18 @@ local function force_detach(player)
|
|||||||
|
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
|
|
||||||
if is_pa then
|
if is_mc2 then
|
||||||
player_api.player_attached[name] = false
|
|
||||||
player_api.set_animation(player, "stand", 30)
|
|
||||||
elseif is_mc2 then
|
|
||||||
mcl_player.player_attached[player:get_player_name()] = false
|
mcl_player.player_attached[player:get_player_name()] = false
|
||||||
mcl_player.player_set_animation(player, "stand", 30)
|
mcl_player.player_set_animation(player, "stand", 30)
|
||||||
|
else
|
||||||
|
if is_pa then
|
||||||
|
player_api.player_attached[name] = false
|
||||||
|
player_api.set_animation(player, "stand", 30)
|
||||||
else
|
else
|
||||||
default.player_attached[name] = false
|
default.player_attached[name] = false
|
||||||
default.player_set_animation(player, "stand", 30)
|
default.player_set_animation(player, "stand", 30)
|
||||||
end
|
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}})
|
||||||
@ -209,13 +209,15 @@ function mobs.attach(entity, player)
|
|||||||
|
|
||||||
force_detach(player)
|
force_detach(player)
|
||||||
|
|
||||||
if is_pa then
|
if is_mc2 then
|
||||||
player_api.player_attached[player:get_player_name()] = true
|
|
||||||
elseif is_mc2 then
|
|
||||||
mcl_player.player_attached[player:get_player_name()] = true
|
mcl_player.player_attached[player:get_player_name()] = true
|
||||||
|
else
|
||||||
|
if is_pa then
|
||||||
|
player_api.player_attached[player:get_player_name()] = true
|
||||||
else
|
else
|
||||||
default.player_attached[player:get_player_name()] = true
|
default.player_attached[player:get_player_name()] = true
|
||||||
end
|
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})
|
||||||
@ -231,14 +233,16 @@ function mobs.attach(entity, player)
|
|||||||
|
|
||||||
if is_player(player) then
|
if is_player(player) then
|
||||||
|
|
||||||
if is_pa then
|
if is_mc2 then
|
||||||
player_api.set_animation(player, "sit", 30)
|
|
||||||
elseif is_mc2 then
|
|
||||||
mcl_player.player_set_animation(player, "sit_mount" , 30)
|
mcl_player.player_set_animation(player, "sit_mount" , 30)
|
||||||
|
else
|
||||||
|
if is_pa then
|
||||||
|
player_api.set_animation(player, "sit", 30)
|
||||||
else
|
else
|
||||||
default.player_set_animation(player, "sit", 30)
|
default.player_set_animation(player, "sit", 30)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
player:set_look_horizontal(entity.object:get_yaw() - rot_view)
|
player:set_look_horizontal(entity.object:get_yaw() - rot_view)
|
||||||
|
@ -4,7 +4,7 @@ MOBS REDO for MINETEST
|
|||||||
This mod contains the API only for adding your own mobs into the world, so
|
This mod contains the API only for adding your own mobs into the world, so
|
||||||
please use the additional modpacks to add animals, monsters, and npcs.
|
please use the additional modpacks to add animals, monsters, and npcs.
|
||||||
|
|
||||||
https://forum.minetest.net/viewtopic.php?f=11&t=9917
|
https://codeberg.org/minenux/minetest-mod-mobs_redo
|
||||||
|
|
||||||
Information
|
Information
|
||||||
-----------
|
-----------
|
||||||
@ -12,6 +12,10 @@ Information
|
|||||||
Built from PilzAdam's original Simple Mobs with additional mobs by KrupnoPavel,
|
Built from PilzAdam's original Simple Mobs with additional mobs by KrupnoPavel,
|
||||||
Zeg9, ExeterDad and AspireMint.
|
Zeg9, ExeterDad and AspireMint.
|
||||||
|
|
||||||
|
This mod is special one already compatible with older engines.. with backported
|
||||||
|
patches to work both in multicraft, minetest, mineclone and finetest, becouse
|
||||||
|
the tenplus1 only works in last minetest, admins will not wants to constant upgrades!
|
||||||
|
|
||||||
## Crafts
|
## Crafts
|
||||||
|
|
||||||
- **Nametag**. Can be crafted by paper, black dye, and string. Can be used
|
- **Nametag**. Can be crafted by paper, black dye, and string. Can be used
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
local S = mobs.intllib
|
local S = mobs.translate
|
||||||
|
|
||||||
|
|
||||||
-- are we a real player ?
|
-- are we a real player ?
|
||||||
@ -31,8 +31,7 @@ minetest.register_node("mobs:spawner", {
|
|||||||
.. " (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;" .. minetest.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}]")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user