diff --git a/mods/mobs/api.lua b/mods/mobs/api.lua index faf2228..f4b05d7 100644 --- a/mods/mobs/api.lua +++ b/mods/mobs/api.lua @@ -1,4 +1,4 @@ -local MP = minetest.get_modpath(minetest.get_current_modname()) +local MP = minetest.get_modpath("mobs") -- Check for translation method local S @@ -21,22 +21,29 @@ else end end end +local FS = function(...) return minetest.formspec_escape(S(...)) end + -- CMI support check local use_cmi = minetest.global_exists("cmi") +-- MineClone2 check +local use_mc2 = minetest.get_modpath("mcl_core") + +-- Global mobs = { mod = "redo", - version = "20230805", - intllib = S, + version = "20231105", + translate = S, intllib = S, invis = minetest.global_exists("invisibility") and invisibility or {}, node_ice = "default:ice", - node_snow = minetest.registered_aliases["mapgen_snow"] or "default:snow" or "mcl_core:snow", - node_dirt = minetest.registered_aliases["mapgen_dirt"] or "default:dirt" or "mcl_core:dirt" + node_snow = minetest.registered_aliases["mapgen_snow"] + 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 - -- localize common functions local pi = math.pi local square = math.sqrt @@ -107,7 +114,8 @@ local pathfinder_enable = settings:get_bool("mob_pathfinder_enable") or true local pathfinding_stuck_timeout = tonumber( settings:get("mob_pathfinding_stuck_timeout")) or 3.0 -- 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* -- fix settings not allowing "*" local pathfinding_algorithm = settings:get("mob_pathfinding_algorithm") or "Dijkstra" @@ -210,6 +218,7 @@ mobs.mob_class = { friendly_fire = true, facing_fence = false, _breed_countdown = nil, + _tame_countdown = nil, _cmi_is_mob = true } @@ -220,21 +229,20 @@ local mob_class_meta = {__index = mob_class} -- play sound function mob_class:mob_sound(sound) - if sound then + if not sound then return end - -- higher pitch for a child - local pitch = self.child and 1.5 or 1.0 + -- higher pitch for a child + local pitch = self.child and 1.5 or 1.0 - -- a little random pitch to be different - pitch = pitch + random(-10, 10) * 0.005 + -- a little random pitch to be different + pitch = pitch + random(-10, 10) * 0.005 - minetest.sound_play(sound, { - object = self.object, - gain = 1.0, - max_hear_distance = self.sounds.distance, - pitch = pitch - }, true) - end + minetest.sound_play(sound, { + object = self.object, + gain = 1.0, + max_hear_distance = (self.sounds and self.sounds.distance) or 10, + pitch = pitch + }, true) end @@ -825,6 +833,8 @@ function mob_class:update_tag() text = "\nLoving: " .. (self.hornytimer - (HORNY_TIME + HORNY_AGAIN_TIME)) elseif self.child == true then text = "\nGrowing: " .. (self.hornytimer - CHILD_GROW_TIME) + elseif self._tame_countdown then + text = "\nTaming: " .. self._tame_countdown elseif self._breed_countdown then text = "\nBreeding: " .. self._breed_countdown end @@ -1580,6 +1590,8 @@ function mob_class:breed() -- make sure baby is actually there if ent2 then + textures = self.base_texture + -- using specific child texture (if found) if self.child_texture then textures = self.child_texture[1] @@ -1991,8 +2003,7 @@ local function is_peaceful_player(player) local player_name = player:get_player_name() -- player priv enabled - if player_name - and minetest.check_player_privs(player_name, "peaceful_player") then + if player_name and minetest.check_player_privs(player_name, "peaceful_player") then return true end end @@ -2328,6 +2339,21 @@ function mob_class:dogswitch(dtime) 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) function mob_class:do_states(dtime) @@ -2478,6 +2504,11 @@ function mob_class:do_states(dtime) self:set_velocity(0) self.state = "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 self:set_velocity(self.run_velocity) 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) - 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) + self:stop_attack() return 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 yaw_to_pos(self, p) @@ -2528,7 +2568,7 @@ function mob_class:do_states(dtime) -- start timer when in reach and line of sight if not self.v_start and dist <= self.reach - and self:line_of_sight(s, p, 2) then + and in_sight then self.v_start = true self.timer = 0 @@ -2540,7 +2580,7 @@ function mob_class:do_states(dtime) -- stop timer if out of reach or direct line of sight elseif self.allow_fuse_reset 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") @@ -2574,10 +2614,8 @@ function mob_class:do_states(dtime) self.blinktimer = 0 if self.blinkstatus then - self.object:set_texture_mod(self.texture_mods) else - self.object:set_texture_mod(self.texture_mods .. "^[brighten") end @@ -2590,10 +2628,9 @@ function mob_class:do_states(dtime) 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"}) or minetest.is_protected(pos, "") then - node_break_radius = 1 end @@ -3117,15 +3154,16 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir, damage) self.following = nil 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 if self.passive == false and self.state ~= "flop" and self.child == false and self.attack_players == true - and hitter:get_player_name() ~= self.owner - and not is_invisible(self, name) + and not (is_player(hitter) and hitter_name == self.owner) + and not is_invisible(self, hitter_name) and self.object ~= hitter then -- attack whoever punched mob @@ -3134,25 +3172,25 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir, damage) -- alert others to the attack local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range) - local obj + local ent 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 - if obj.group_attack == true - and obj.state ~= "attack" - and obj.owner ~= name - and (obj.name == self.name or obj.name == self.group_helper) then - obj:do_attack(hitter) + if ent.group_attack == true + and ent.state ~= "attack" + and not (is_player(hitter) and ent.owner == hitter_name) + and (ent.name == self.name or ent.name == self.group_helper) then + ent:do_attack(hitter) end -- have owned mobs attack player threat - if obj.owner == name and obj.owner_loyal then - obj:do_attack(self.object) + if is_player(hitter) and ent.owner == hitter_name and ent.owner_loyal then + ent:do_attack(self.object) end end end @@ -3223,6 +3261,28 @@ function mob_class:mob_staticdata() self.serialized_cmi_components = cmi.serialize_components(self._cmi_components) 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)) end @@ -3426,7 +3486,7 @@ function mob_class:mob_expire(pos, dtime) 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) @@ -3510,7 +3570,7 @@ function mob_class:on_step(dtime, moveresult) -- check and stop if standing at cliff and fear of heights 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) end @@ -3667,8 +3727,8 @@ function mobs:register_mob(name, def) minetest.register_entity(name, setmetatable({ - stepheight = def.stepheight, - name = name, + stepheight = def.stepheight or 1.1, + name = (name:find(":") and name or ":"..name), type = def.type, attack_type = def.attack_type, fly = def.fly, @@ -3921,6 +3981,8 @@ function mobs:add_mob(pos, def) if not ent then --print("[mobs] entity not found " .. def.name) return false + else + effect(pos, 15, "tnt_smoke.png", 1, 2, 2, 15, 5) end 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) --- print("[mobs] Spawned " .. name .. " at " --- .. minetest.pos_to_string(pos) .. " on " --- .. node.name .. " near " .. neighbors[1]) - if mob_log_spawn then - minetest.log("[MOBS] Spawned " .. name .. " at " - .. minetest.pos_to_string(pos)) + local pos_string = pos and minetest.pos_to_string(pos) or "" + + minetest.log( + "[MOBS] Spawned " + .. (name or "") + .. " at " + .. pos_string + ) end 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 - minetest.register_entity(name, { + minetest.register_entity( (name:find(":") and name or ":"..name) , { physical = def.physical or false, collide_with_objects = def.collide_with_objects or false, @@ -4409,7 +4473,6 @@ end -- Register spawn eggs - -- Note: This also introduces the “spawn_egg” group: -- * spawn_egg=1: Spawn egg (generic mob, no 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 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) @@ -4764,7 +4823,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) if self.child == true then -- 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)) --print ("====", self.hornytimer) return true @@ -4772,7 +4831,8 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) -- feed and tame 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 @@ -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 item:get_name() == "mobs:nametag" - and (name == self.owner - or minetest.check_player_privs(name, "protection_bypass")) then + and (name == self.owner or minetest.check_player_privs(name, "protection_bypass")) then -- store mob and nametag stack in external variables mob_obj[name] = self @@ -4823,13 +4882,9 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) local tag = self.nametag or "" local esc = minetest.formspec_escape - minetest.show_formspec(name, "mobs_nametag", - "size[8,4]" .. - "field[0.5,1;7.5,0;name;" .. - esc(S("Enter name:")) .. - ";" .. tag .. "]" .. - "button_exit[2.5,3.5;3,1;mob_rename;" .. - esc(S("Rename")) .. "]") + minetest.show_formspec(name, "mobs_nametag", "size[8,4]" + .. "field[0.5,1;7.5,0;name;" .. esc(FS("Enter name:")) .. ";" .. tag .. "]" + .. "button_exit[2.5,3.5;3,1;mob_rename;" .. esc(FS("Rename")) .. "]") return true end @@ -4844,9 +4899,9 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) end minetest.chat_send_player(clicker:get_player_name(), - S("@1 follows:\n- @2", - self.name:split(":")[2], - table.concat(self.follow, "\n- "))) + S("@1 follows:", + self.name:split(":")[2]) .. "\n" .. + table.concat(self.follow, "\n- ")) end end @@ -4907,10 +4962,10 @@ function mobs:alias_mob(old_name, new_name) end -- spawn egg - minetest.register_alias(old_name, new_name) + minetest.register_alias( (old_name:find(":") and old_name or ":"..old_name), new_name) -- entity - minetest.register_entity(":" .. old_name, { + minetest.register_entity( ":"..old_name , { physical = false, static_save = false, diff --git a/mods/mobs/api.txt b/mods/mobs/api.txt index 8d7c645..53b5f08 100644 --- a/mods/mobs/api.txt +++ b/mods/mobs/api.txt @@ -387,6 +387,15 @@ for each mob. 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 -------------------- diff --git a/mods/mobs/crafts.lua b/mods/mobs/crafts.lua index b00a245..b26fddd 100644 --- a/mods/mobs/crafts.lua +++ b/mods/mobs/crafts.lua @@ -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") -- recipe items @@ -334,9 +335,9 @@ minetest.register_tool(":mobs:mob_reset_stick", { minetest.show_formspec(name, "mobs_texture", "size[8,4]" .. "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;" - .. minetest.formspec_escape(S("Change")) .. "]") + .. FS("Change") .. "]") end end }) diff --git a/mods/mobs/init.lua b/mods/mobs/init.lua index 0205b39..b0a8cf5 100644 --- a/mods/mobs/init.lua +++ b/mods/mobs/init.lua @@ -21,6 +21,9 @@ dofile(path .. "/crafts.lua") dofile(path .. "/spawner.lua") -- 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") diff --git a/mods/mobs/locale/mobs.de.tr b/mods/mobs/locale/mobs.de.tr index f11b665..eeaf0a9 100644 --- a/mods/mobs/locale/mobs.de.tr +++ b/mods/mobs/locale/mobs.de.tr @@ -1,34 +1,38 @@ -# textdomain:mobs -#** Peaceful Mode Active - No Monsters Will Spawn= -@1 (Tamed)=@1 (Gezähmt) -@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! +# textdomain: mobs +** Peaceful Mode Active - No Monsters Will Spawn=** Friedlicher Modus aktiv - Es werden keine Monster spawnen +Active Mob Limit Reached!=Aktives Mob-Limit erreicht! Mob has been protected!=Kreatur wurde geschützt! -Name Tag=Namensschild -Net (right-click animal to put in inventory)=Netz (Rechtsklick auf Tier, um es zu nehmen) +@1 (Tamed)=@1 (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 -Saddle=Sattel -Spawner Active (@1)=Spawner aktiv (@1) -Spawner Not Active (enter settings)=Nicht aktiv (Einstellungen eingeben) +Name Tag=Namensschild +Leather=Leder +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) -#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]”= -#lifetimer expired, removed @1= +Mob Protection Rune=Kreaturschutzrune +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]”= diff --git a/mods/mobs/locale/mobs.en.tr b/mods/mobs/locale/mobs.en.tr index fab62b7..d7895b3 100644 --- a/mods/mobs/locale/mobs.en.tr +++ b/mods/mobs/locale/mobs.en.tr @@ -1,34 +1,38 @@ -# textdomain:mobs -#** Peaceful Mode Active - No Monsters Will Spawn= -#@1 (Tamed)= -#@1 at full health (@2)= -#@1 has been tamed!= -#@1 is owner!= -#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!= -#Name Tag= -#Net (right-click animal to put in inventory)= -#Not tamed!= -#Raw Meat= -#Rename= -#Saddle= -#Spawner Active (@1)= -#Spawner Not Active (enter settings)= -#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]”= -#lifetimer expired, removed @1= +# 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]”= diff --git a/mods/mobs/locale/mobs.es.tr b/mods/mobs/locale/mobs.es.tr index 29ee934..6194447 100644 --- a/mods/mobs/locale/mobs.es.tr +++ b/mods/mobs/locale/mobs.es.tr @@ -1,34 +1,38 @@ -# textdomain:mobs -#** Peaceful Mode Active - No Monsters Will Spawn= -@1 (Tamed)=@1 (Domesticado) -@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ó! +# textdomain: mobs +** Peaceful Mode Active - No Monsters Will Spawn= +Active Mob Limit Reached!= Mob has been protected!=El mob ha sido protegido! -Name Tag=Nombrar etiqueta -Net (right-click animal to put in inventory)=Red (click derecho en animal para colocar en inventario) +@1 (Tamed)=@1 (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 -Saddle=Montura -Spawner Active (@1)=Generador activo (@1) -Spawner Not Active (enter settings)=Generador no activo (ingrese config) +Name Tag=Nombrar etiqueta +Leather=Cuero +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) -#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]”= -#lifetimer expired, removed @1= +Mob Protection Rune=Runa de protección de Mob +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]”= diff --git a/mods/mobs/locale/mobs.fr.tr b/mods/mobs/locale/mobs.fr.tr index 3e137fb..84d5af0 100644 --- a/mods/mobs/locale/mobs.fr.tr +++ b/mods/mobs/locale/mobs.fr.tr @@ -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é -@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 ! -Already protected!=Déjà protégé ! -Change=Changer -Command:=Commande : -Enter name:=Saisissez un nom : -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 +Mob has been protected!=L'animal a été protégé ! +@1 (Tamed)=@1 (apprivoisé) +Not tamed!=Non-apprivoisé ! +@1 is owner!=Appartient à @1 ! 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 Top=Haut de clôture à animaux -Mob Protection Rune=Rune de protection des animaux 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 settings failed!=Échec des paramètres du créateur d'être vivants ! -Mob has been protected!=L'animal a été protégé ! -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) +(mob name) (min light) (max light) (amount) (player distance) (Y offset)= +Command:=Commande : 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]» -lifetimer expired, removed @1=Être immortel expiré ; @1 retiré diff --git a/mods/mobs/locale/mobs.it.tr b/mods/mobs/locale/mobs.it.tr index 6b5edd9..bfe78e1 100644 --- a/mods/mobs/locale/mobs.it.tr +++ b/mods/mobs/locale/mobs.it.tr @@ -1,34 +1,38 @@ -# textdomain:mobs +# textdomain: mobs ** Peaceful Mode Active - No Monsters Will Spawn=** Modalità pacifica attiva - non comparirà nessun mostro -@1 (Tamed)=@1 (Addomesticato) -@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! +Active Mob Limit Reached!= Mob has been protected!=Il mob è stato protetto! -Name Tag=Targhetta -Net (right-click animal to put in inventory)=Rete (click destro per mettere l'animale nell'inventario) +@1 (Tamed)=@1 (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 -Saddle=Sella -Spawner Active (@1)=Generatore attivo (@1) -Spawner Not Active (enter settings)=Generatore inattivo (inserire le impostazioni) +Name Tag=Targhetta +Leather=Pelle +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) -#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]”= -#lifetimer expired, removed @1= +Mob Protection Rune=Runa di protezione per mob +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]”= diff --git a/mods/mobs/locale/mobs.ms.tr b/mods/mobs/locale/mobs.ms.tr index f79e2fb..e1bd370 100644 --- a/mods/mobs/locale/mobs.ms.tr +++ b/mods/mobs/locale/mobs.ms.tr @@ -1,34 +1,38 @@ -# textdomain:mobs +# textdomain: mobs ** Peaceful Mode Active - No Monsters Will Spawn=** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul -@1 (Tamed)=@1 (Jinak) -@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! +Active Mob Limit Reached!= Mob has been protected!=Mob telah pun dilindungi! -Name Tag=Tanda Nama -Net (right-click animal to put in inventory)=Jaring (klik-kanan haiwan untuk masukkan ke inventori) +@1 (Tamed)=@1 (Jinak) 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 -Saddle=Pelana -Spawner Active (@1)=Pewujud Mob Aktif (@1) -Spawner Not Active (enter settings)=Pewujud Mob Tidak Aktif (masukkan tetapan) +Name Tag=Tanda Nama +Leather=Kulit +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) -#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]”= -#lifetimer expired, removed @1= +Mob Protection Rune=Rune Perlindungan Mob +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]”= diff --git a/mods/mobs/locale/mobs.pt.tr b/mods/mobs/locale/mobs.pt.tr index b62e989..85df35a 100644 --- a/mods/mobs/locale/mobs.pt.tr +++ b/mods/mobs/locale/mobs.pt.tr @@ -1,34 +1,38 @@ -# textdomain:mobs -#** Peaceful Mode Active - No Monsters Will Spawn= -#@1 (Tamed)= -@1 at full health (@2)=@1 em plena saude (@2) -@1 has been tamed!=@1 foi domesticado! -@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) +# textdomain: mobs +** Peaceful Mode Active - No Monsters Will Spawn= +Active Mob Limit Reached!= +Mob has been protected!= +@1 (Tamed)= 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 -#Saddle= -Spawner Active (@1)=Spawnador Ativo (@1) -Spawner Not Active (enter settings)=Spawnador Inativo (configurar) +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) -#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]”= -#lifetimer expired, removed @1= +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)=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]”= diff --git a/mods/mobs/locale/mobs.ru.tr b/mods/mobs/locale/mobs.ru.tr index f7c201a..8d3f3bc 100644 --- a/mods/mobs/locale/mobs.ru.tr +++ b/mods/mobs/locale/mobs.ru.tr @@ -1,34 +1,38 @@ -# textdomain:mobs +# textdomain: mobs ** Peaceful Mode Active - No Monsters Will Spawn=** Мирный модус активирован - монстры не спаунятся -@1 (Tamed)=@1 (Прирученный) -@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!=Настройки спаунера моба провалились +Active Mob Limit Reached!= Mob has been protected!=Моб защищен! -Name Tag=Новый тэг -Net (right-click animal to put in inventory)=Сеть (Правый клик - положить животное в инвентарь) +@1 (Tamed)=@1 (Прирученный) Not tamed!=Не прирученный -Raw Meat=Сырое мясо +@1 is owner!=@1 владелец +Missed!=Промазал! +Already protected!=Уже защищен! +@1 has been tamed!=@1 приручен +@1 follows:= +@1 mobs removed.= +Enter name:=Введите имя: Rename=Переименовать -Saddle=Седло -Spawner Active (@1)=Активные спаунер (@1) -Spawner Not Active (enter settings)=Спаунер не активен (введите настройки) +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)=Ножницы (Правый клик - подстричь) -#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]”= -#lifetimer expired, removed @1= +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)=Активные спаунер (@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]”= diff --git a/mods/mobs/locale/mobs.tr.tr b/mods/mobs/locale/mobs.tr.tr index 6e28706..9070605 100644 --- a/mods/mobs/locale/mobs.tr.tr +++ b/mods/mobs/locale/mobs.tr.tr @@ -1,34 +1,38 @@ -# textdomain:mobs -#** Peaceful Mode Active - No Monsters Will Spawn= -#@1 (Tamed)= -@1 at full health (@2)=@1 tam canında (@2) -@1 has been tamed!=@1 tamamen evcilleştirilmiştir! -@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) +# textdomain: mobs +** Peaceful Mode Active - No Monsters Will Spawn= +Active Mob Limit Reached!= +Mob has been protected!= +@1 (Tamed)= 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 -#Saddle= -Spawner Active (@1)=Yaratıcı aktif (@1) -Spawner Not Active (enter settings)=Yaratıcı aktif değil (ayarlara gir) +Name Tag=İsim etiketi +Leather=Deri +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) -#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]”= -#lifetimer expired, removed @1= +Mob Protection Rune= +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]”= diff --git a/mods/mobs/locale/mobs.zh_CN.tr b/mods/mobs/locale/mobs.zh_CN.tr index fe7556c..62b72d2 100644 --- a/mods/mobs/locale/mobs.zh_CN.tr +++ b/mods/mobs/locale/mobs.zh_CN.tr @@ -1,34 +1,38 @@ -# textdomain:mobs +# textdomain: mobs ** Peaceful Mode Active - No Monsters Will Spawn=** 和平模式已激活——没有怪物会产生 -@1 (Tamed)=@1(已驯服) -@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 孵化器设置失败! +Active Mob Limit Reached!= Mob has been protected!=Mob 已经被保护了! -Name Tag=名称标签 -Net (right-click animal to put in inventory)=网(右键单击动物以放入物品栏) +@1 (Tamed)=@1(已驯服) Not tamed!=没有驯服! -Raw Meat=生肉 +@1 is owner!=@1 是主人 +Missed!=没抓住! +Already protected!=已经被保护! +@1 has been tamed!=@1已经被驯服! +@1 follows:= +@1 mobs removed.= +Enter name:=输入名称: Rename=重新命名 -Saddle=鞍 -Spawner Active (@1)=孵化器正在运转(@1) -Spawner Not Active (enter settings)=孵化器未使用(输入设置) +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)=钢剪(右键单击以剪切) -#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]”= -#lifetimer expired, removed @1= +Mob Protection Rune=Mob 保护符文 +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]”= diff --git a/mods/mobs/locale/mobs.zh_TW.tr b/mods/mobs/locale/mobs.zh_TW.tr index 89bed26..a38c938 100644 --- a/mods/mobs/locale/mobs.zh_TW.tr +++ b/mods/mobs/locale/mobs.zh_TW.tr @@ -1,34 +1,38 @@ -# textdomain:mobs +# textdomain: mobs ** Peaceful Mode Active - No Monsters Will Spawn=** 和平模式已激活——沒有怪物會產生 -@1 (Tamed)=@1(已馴服) -@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 孵化器設置失敗! +Active Mob Limit Reached!= Mob has been protected!=Mob 已經被保護了! -Name Tag=名稱標籤 -Net (right-click animal to put in inventory)=網(右鍵單擊動物以放入物品欄) +@1 (Tamed)=@1(已馴服) Not tamed!=沒有馴服! -Raw Meat=生肉 +@1 is owner!=@1 是主人 +Missed!=沒抓住! +Already protected!=已經被保護! +@1 has been tamed!=@1已經被馴服! +@1 follows:= +@1 mobs removed.= +Enter name:=輸入名稱: Rename=重新命名 -Saddle=鞍 -Spawner Active (@1)=孵化器正在運轉(@1) -Spawner Not Active (enter settings)=孵化器未使用(輸入設置) +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)=鋼剪(右鍵單擊以剪切) -#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]”= -#lifetimer expired, removed @1= +Mob Protection Rune=Mob 保護符文 +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]”= diff --git a/mods/mobs/lucky_block.lua b/mods/mobs/lucky_block.lua index b823e83..dafab3c 100644 --- a/mods/mobs/lucky_block.lua +++ b/mods/mobs/lucky_block.lua @@ -1,18 +1,15 @@ -if minetest.get_modpath("lucky_block") then - - lucky_block:add_blocks({ - {"dro", {"mobs:meat_raw"}, 5}, - {"dro", {"mobs:meat"}, 5}, - {"dro", {"mobs:nametag"}, 1}, - {"dro", {"mobs:leather"}, 5}, - {"dro", {"default:stick"}, 10}, - {"dro", {"mobs:net"}, 1}, - {"dro", {"mobs:lasso"}, 1}, - {"dro", {"mobs:shears"}, 1}, - {"dro", {"mobs:protector"}, 1}, - {"dro", {"mobs:fence_wood"}, 10}, - {"dro", {"mobs:fence_top"}, 12}, - {"lig"} - }) -end +lucky_block:add_blocks({ + {"dro", {"mobs:meat_raw"}, 5}, + {"dro", {"mobs:meat"}, 5}, + {"dro", {"mobs:nametag"}, 1}, + {"dro", {"mobs:leather"}, 5}, + {"dro", {"default:stick"}, 10}, + {"dro", {"mobs:net"}, 1}, + {"dro", {"mobs:lasso"}, 1}, + {"dro", {"mobs:shears"}, 1}, + {"dro", {"mobs:protector"}, 1}, + {"dro", {"mobs:fence_wood"}, 10}, + {"dro", {"mobs:fence_top"}, 12}, + {"lig"} +}) diff --git a/mods/mobs/mod.conf b/mods/mobs/mod.conf index f4632c5..696b339 100644 --- a/mods/mobs/mod.conf +++ b/mods/mobs/mod.conf @@ -1,4 +1,5 @@ name = mobs 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 +optional_depends = tnt, player_api, invisibility, intllib, lucky_block, cmi, toolranks, pathfinder, mtobjid +min_minetest_version = 5.0 diff --git a/mods/mobs/mount.lua b/mods/mobs/mount.lua index 3341f65..aa70373 100644 --- a/mods/mobs/mount.lua +++ b/mods/mobs/mount.lua @@ -1,8 +1,10 @@ -- lib_mount by Blert2112 (edited by TenPlus1) ---[[ one of these is needed (for now) to ride mobs, otherwise no riding for you -if not minetest.get_modpath("default") -or not minetest.get_modpath("player_api") then +local is_pa = minetest.get_modpath("player_api") -- 5.x compatibility +local is_mc2 = minetest.get_modpath("mcl_mobs") -- MineClone2 check + +-- 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.detach() end @@ -11,10 +13,6 @@ or not minetest.get_modpath("player_api") then return 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 ? local function is_player(player) @@ -25,7 +23,7 @@ local function is_player(player) return false end - +-- Localise some functions local abs, cos, floor, sin, sqrt, pi = math.abs, math.cos, math.floor, math.sin, math.sqrt, math.pi @@ -117,15 +115,17 @@ local function force_detach(player) local name = player:get_player_name() - if is_pa then - player_api.player_attached[name] = false - player_api.set_animation(player, "stand", 30) - elseif is_mc2 then + if is_mc2 then mcl_player.player_attached[player:get_player_name()] = false 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 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}) @@ -209,12 +209,14 @@ function mobs.attach(entity, player) force_detach(player) - if is_pa then - player_api.player_attached[player:get_player_name()] = true - elseif is_mc2 then + if is_mc2 then mcl_player.player_attached[player:get_player_name()] = true else + if is_pa then + player_api.player_attached[player:get_player_name()] = true + else default.player_attached[player:get_player_name()] = true + end end player:set_attach(entity.object, "", attach_at, entity.player_rotation) @@ -231,12 +233,14 @@ function mobs.attach(entity, player) if is_player(player) then - if is_pa then - player_api.set_animation(player, "sit", 30) - elseif is_mc2 then + if is_mc2 then mcl_player.player_set_animation(player, "sit_mount" , 30) else + if is_pa then + player_api.set_animation(player, "sit", 30) + else default.player_set_animation(player, "sit", 30) + end end end end) diff --git a/mods/mobs/readme.MD b/mods/mobs/readme.MD index 803df73..b51f05f 100644 --- a/mods/mobs/readme.MD +++ b/mods/mobs/readme.MD @@ -4,7 +4,7 @@ MOBS REDO for MINETEST This mod contains the API only for adding your own mobs into the world, so please use the additional modpacks to add animals, monsters, and npcs. -https://forum.minetest.net/viewtopic.php?f=11&t=9917 +https://codeberg.org/minenux/minetest-mod-mobs_redo Information ----------- @@ -12,6 +12,10 @@ Information Built from PilzAdam's original Simple Mobs with additional mobs by KrupnoPavel, 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 - **Nametag**. Can be crafted by paper, black dye, and string. Can be used diff --git a/mods/mobs/spawner.lua b/mods/mobs/spawner.lua index 4840d1c..4686bd4 100644 --- a/mods/mobs/spawner.lua +++ b/mods/mobs/spawner.lua @@ -1,5 +1,5 @@ -local S = mobs.intllib +local S = mobs.translate -- are we a real player ? @@ -31,8 +31,7 @@ minetest.register_node("mobs:spawner", { .. " (player distance) (Y offset)") -- text entry formspec - meta:set_string("formspec", - "size[10,3.5]" + meta:set_string("formspec", "size[10,3.5]" .. "label[0.15,0.5;" .. minetest.formspec_escape(head) .. "]" .. "field[1,2.5;8.5,0.8;text;" .. S("Command:") .. ";${command}]")