From 7be5914463fef3416fe5ef9dfb2e8c34befbe7d1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 31 Mar 2018 00:18:40 +0200 Subject: [PATCH] Update Mobs Redo --- mods/ENTITIES/mobs/api.lua | 320 +++++++++++- mods/ENTITIES/mobs/api.txt | 43 +- mods/ENTITIES/mobs/api_new.txt | 689 ------------------------- mods/ENTITIES/mobs/init.lua | 9 - mods/ENTITIES/mobs/locale/de_DE.po | 14 +- mods/ENTITIES/mobs/locale/es.po | 128 +++++ mods/ENTITIES/mobs/locale/fr.po | 129 +++++ mods/ENTITIES/mobs/locale/it.po | 131 +++++ mods/ENTITIES/mobs/locale/ms.po | 131 +++++ mods/ENTITIES/mobs/locale/pt.po | 14 +- mods/ENTITIES/mobs/locale/ru.po | 129 +++++ mods/ENTITIES/mobs/locale/template.pot | 14 +- mods/ENTITIES/mobs/locale/tr.po | 14 +- 13 files changed, 1018 insertions(+), 747 deletions(-) delete mode 100644 mods/ENTITIES/mobs/api_new.txt create mode 100644 mods/ENTITIES/mobs/locale/es.po create mode 100644 mods/ENTITIES/mobs/locale/fr.po create mode 100644 mods/ENTITIES/mobs/locale/it.po create mode 100644 mods/ENTITIES/mobs/locale/ms.po create mode 100644 mods/ENTITIES/mobs/locale/ru.po diff --git a/mods/ENTITIES/mobs/api.lua b/mods/ENTITIES/mobs/api.lua index 671f5876b..75a0420ce 100644 --- a/mods/ENTITIES/mobs/api.lua +++ b/mods/ENTITIES/mobs/api.lua @@ -3,7 +3,7 @@ mobs = {} mobs.mod = "redo" -mobs.version = "20180126" +mobs.version = "20180328" local MAX_MOB_NAME_LENGTH = 30 @@ -63,7 +63,7 @@ local creative = minetest.settings:get_bool("creative_mode") local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false local remove_far = minetest.settings:get_bool("remove_far_mobs") local difficulty = tonumber(minetest.settings:get("mob_difficulty")) or 1.0 -local show_health = false +local show_health = minetest.settings:get_bool("mob_show_health") ~= false local max_per_block = tonumber(minetest.settings:get("max_objects_per_block") or 99) local mob_chance_multiplier = tonumber(minetest.settings:get("mob_chance_multiplier") or 1) @@ -331,11 +331,29 @@ local effect = function(pos, amount, texture, min_size, max_size, radius, gravit end --- update nametag colour local update_tag = function(self) + --DISABLED IN MCL2 + --[[ + local col = "#00FF00" + local qua = self.hp_max / 4 + + if self.health <= floor(qua * 3) then + col = "#FFFF00" + end + + if self.health <= floor(qua * 2) then + col = "#FF6600" + end + + if self.health <= floor(qua) then + col = "#FF0000" + end + ]] + self.object:set_properties({ nametag = self.nametag, + -- No nametag coloring }) end @@ -1200,7 +1218,7 @@ local smart_mobs = function(self, s, p, dist, dtime) mob_sound(self, self.sounds.random) else -- yay i found path - mob_sound(self, self.sounds.attack) + mob_sound(self, self.sounds.war_cry) set_velocity(self, self.walk_velocity) @@ -1381,7 +1399,8 @@ local runaway_from = function(self) if objs[n]:is_player() then - if mobs.invis[ objs[n]:get_player_name() ] then + if mobs.invis[ objs[n]:get_player_name() ] + or self.owner == objs[n]:get_player_name() then type = "" else @@ -1426,7 +1445,6 @@ local runaway_from = function(self) end end - -- attack player if min_player then local lp = player:get_pos() @@ -1444,7 +1462,7 @@ local runaway_from = function(self) yaw = set_yaw(self.object, yaw) self.state = "runaway" - self.runaway_timer = 0 + self.runaway_timer = 3 self.following = nil end end @@ -1783,7 +1801,7 @@ local do_states = function(self, dtime) local p = self.attack:get_pos() or s local dist = get_distance(p, s) - -- stop attacking if player or out of range + -- stop attacking if player invisible or out of range if dist > self.view_range or not self.attack or not self.attack:get_pos() @@ -1815,16 +1833,35 @@ local do_states = function(self, dtime) yaw = set_yaw(self.object, yaw) - -- start timer when inside reach - if dist < self.reach and not self.v_start then + local node_break_radius = self.explosion_radius or 1 + local entity_damage_radius = self.explosion_damage_radius + or (node_break_radius * 2) + + -- start timer when in reach and line of sight + if not self.v_start + and dist <= self.reach + and line_of_sight(self, s, p, 2) then + self.v_start = true self.timer = 0 self.blinktimer = 0 + mob_sound(self, self.sounds.fuse) -- print ("=== explosion timer started", self.explosion_timer) + + -- stop timer if out of blast radius or direct line of sight + elseif self.allow_fuse_reset + and self.v_start + and (dist > max(self.reach, entity_damage_radius) + 0.5 + or not line_of_sight(self, s, p, 2)) then + self.v_start = false + self.timer = 0 + self.blinktimer = 0 + self.blinkstatus = false + self.object:settexturemod("") end - -- walk right up to player when timer active - if dist < 1.5 and self.v_start then + -- walk right up to player unless the timer is active + if self.v_start and (self.stop_to_explode or dist < 1.5) then set_velocity(self, 0) else set_velocity(self, self.run_velocity) @@ -1859,14 +1896,12 @@ local do_states = function(self, dtime) if self.timer > self.explosion_timer then local pos = self.object:get_pos() - local radius = self.explosion_radius or 1 - local damage_radius = radius -- 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 - damage_radius = 0 + node_break_radius = 0 end self.object:remove() @@ -1875,8 +1910,8 @@ local do_states = function(self, dtime) and not minetest.is_protected(pos, "") then tnt.boom(pos, { - radius = radius, - damage_radius = damage_radius, + radius = node_break_radius, + damage_radius = entity_damage_radius, sound = self.sounds.explode, }) else @@ -1887,8 +1922,8 @@ local do_states = function(self, dtime) max_hear_distance = self.sounds.distance or 32 }) - entity_physics(pos, damage_radius) - effect(pos, 32, "tnt_smoke.png", radius * 3, radius * 5, radius, 1, 0) + entity_physics(pos, entity_damage_radius) + effect(pos, 32, "tnt_smoke.png", nil, nil, node_break_radius, 1, 0) end return @@ -2874,7 +2909,10 @@ minetest.register_entity(name, { pathfinding = def.pathfinding, immune_to = def.immune_to or {}, explosion_radius = def.explosion_radius, + explosion_damage_radius = def.explosion_damage_radius, explosion_timer = def.explosion_timer or 3, + allow_fuse_reset = def.allow_fuse_reset ~= false, + stop_to_explode = def.stop_to_explode ~= false, custom_attack = def.custom_attack, double_melee_attack = def.double_melee_attack, dogshoot_switch = def.dogshoot_switch, @@ -2948,6 +2986,12 @@ end -- global functions +function mobs:spawn_abm_check(pos, node, name) + -- global function to add additional spawn checks + -- return true to stop spawning mob +end + + function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval, chance, aoc, min_height, max_height, day_toggle, on_spawn) @@ -2992,6 +3036,11 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, return end + -- additional custom checks for spawning mob + if mobs:spawn_abm_check(pos, node, name) == true then + return + end + -- do not spawn if too many of same mob in area if active_object_count_wider >= max_per_block or count_mobs(pos, name) >= aoc then @@ -3297,12 +3346,63 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative) "^[mask:mobs_chicken_egg_overlay.png)" end + -- register new spawn egg containing mob information + --[=[ DISABLED IN MCL2 + minetest.register_craftitem(mob .. "_set", { + + description = S("@1 (Tamed)", desc), + inventory_image = invimg, + groups = {spawn_egg = 2, not_in_creative_inventory = 1}, + stack_max = 1, + + on_place = function(itemstack, placer, pointed_thing) + + local pos = pointed_thing.above + + -- am I clicking on something with existing on_rightclick function? + local under = minetest.get_node(pointed_thing.under) + local def = minetest.registered_nodes[under.name] + if def and def.on_rightclick then + return def.on_rightclick(pointed_thing.under, under, placer, itemstack) + end + + if pos + and within_limits(pos, 0) + and not minetest.is_protected(pos, placer:get_player_name()) then + + if not minetest.registered_entities[mob] then + return + end + + pos.y = pos.y + 1 + + local data = itemstack:get_metadata() + local mob = minetest.add_entity(pos, mob, data) + local ent = mob:get_luaentity() + + -- set owner if not a monster + if ent.type ~= "monster" then + ent.owner = placer:get_player_name() + ent.tamed = true + end + + -- since mob is unique we remove egg once spawned + itemstack:take_item() + end + + return itemstack + end, + }) + ]=] + -- register old stackable mob egg minetest.register_craftitem(mob, { description = desc, + inventory_image = invimg, groups = grp, + _doc_items_longdesc = "This allows you to place a single mob.", _doc_items_usagehelp = "Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.", @@ -3376,6 +3476,126 @@ end -- capture critter (thanks to blert2112 for idea) function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, force_take, replacewith) return false +-- DISABLED IN MCL2 +--[=[ + if self.child + or not clicker:is_player() + or not clicker:get_inventory() then + return false + end + + -- get name of clicked mob + local mobname = self.name + + -- if not nil change what will be added to inventory + if replacewith then + mobname = replacewith + end + + local name = clicker:get_player_name() + local tool = clicker:get_wielded_item() + + -- are we using hand, net or lasso to pick up mob? + if tool:get_name() ~= "" + and tool:get_name() ~= "mobs:net" + and tool:get_name() ~= "mobs:lasso" then + return false + end + + -- is mob tamed? + if self.tamed == false + and force_take == false then + + minetest.chat_send_player(name, S("Not tamed!")) + + return true -- false + end + + -- cannot pick up if not owner + if self.owner ~= name + and force_take == false then + + minetest.chat_send_player(name, S("@1 is owner!", self.owner)) + + return true -- false + end + + if clicker:get_inventory():room_for_item("main", mobname) then + + -- was mob clicked with hand, net, or lasso? + local chance = 0 + + if tool:get_name() == "" then + chance = chance_hand + + elseif tool:get_name() == "mobs:net" then + + chance = chance_net + + tool:add_wear(4000) -- 17 uses + + clicker:set_wielded_item(tool) + + elseif tool:get_name() == "mobs:lasso" then + + chance = chance_lasso + + tool:add_wear(650) -- 100 uses + + clicker:set_wielded_item(tool) + + end + + -- calculate chance.. add to inventory if successful? + if chance > 0 and random(1, 100) <= chance then + + -- default mob egg + local new_stack = ItemStack(mobname) + + -- add special mob egg with all mob information + -- unless 'replacewith' contains new item to use + if not replacewith then + + new_stack = ItemStack(mobname .. "_set") + + local tmp = {} + + for _,stat in pairs(self) do + local t = type(stat) + if t ~= "function" + and t ~= "nil" + and t ~= "userdata" then + tmp[_] = self[_] + end + end + + local data_str = minetest.serialize(tmp) + + new_stack:set_metadata(data_str) + end + + local inv = clicker:get_inventory() + + if inv:room_for_item("main", new_stack) then + inv:add_item("main", new_stack) + else + minetest.add_item(clicker:get_pos(), new_stack) + end + + self.object:remove() + + mob_sound(self, "default_place_node_hard") + + + else + minetest.chat_send_player(name, S("Missed!")) + + mob_sound(self, "mobs_swing") + end + end + + return true +]=] end @@ -3416,6 +3636,10 @@ function mobs:protect(self, clicker) return true end + +local mob_obj = {} +local mob_sta = {} + -- feeding, taming and breeding (thanks blert2112) function mobs:feed_tame(self, clicker, feed_count, breed, tame) @@ -3445,6 +3669,13 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) if self.htimer < 1 then + -- DISABLED IN MCL2 + --[=[ + minetest.chat_send_player(clicker:get_player_name(), + S("@1 at full health (@2)", + self.name:split(":")[2], tostring(self.health))) + ]=] + self.htimer = 5 end end @@ -3514,12 +3745,63 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame) player:set_wielded_item(item) end end + end return false end +-- DISABLED IN MCL2 +--[=[ +-- inspired by blockmen's nametag mod +minetest.register_on_player_receive_fields(function(player, formname, fields) + + -- right-clicked with nametag and name entered? + if formname == "mobs_nametag" + and fields.name + and fields.name ~= "" then + + local name = player:get_player_name() + + if not mob_obj[name] + or not mob_obj[name].object then + return + end + + -- make sure nametag is being used to name mob + local item = player:get_wielded_item() + + if item:get_name() ~= "mobs:nametag" then + return + end + + -- limit name entered to 64 characters long + if string.len(fields.name) > 64 then + fields.name = string.sub(fields.name, 1, 64) + end + + -- update nametag + mob_obj[name].nametag = fields.name + + update_tag(mob_obj[name]) + + -- if not in creative then take item + if not mobs.is_creative(name) then + + mob_sta[name]:take_item() + + player:set_wielded_item(mob_sta[name]) + end + + -- reset external variables + mob_obj[name] = nil + mob_sta[name] = nil + + end +end) +]=] + -- compatibility function for old entities to new modpack entities function mobs:alias_mob(old_name, new_name) diff --git a/mods/ENTITIES/mobs/api.txt b/mods/ENTITIES/mobs/api.txt index 05c98e61f..f5bc3653e 100644 --- a/mods/ENTITIES/mobs/api.txt +++ b/mods/ENTITIES/mobs/api.txt @@ -39,7 +39,8 @@ functions needed for the mob to work properly which contains the following: set to 0 for jumping mobs only. 'jump' when true allows your mob to jump updwards. 'jump_height' holds the height your mob can jump, 0 to disable jumping. - 'step_height' height of a block that your mob can easily walk up onto. + 'stepheight' height of a block that your mob can easily walk up onto, + defaults to 1.1. 'fly' when true allows your mob to fly around instead of walking. 'fly_in' holds the node name that the mob flies (or swims) around in e.g. "air" or "default:water_source". @@ -49,7 +50,7 @@ functions needed for the mob to work properly which contains the following: standing. 'damage' how many health points the mob does to a player or another mob when melee attacking. - 'knockback' when true has mobs falling backwards when hit, the greater + 'knock_back' when true has mobs falling backwards when hit, the greater the damage the more they move back. 'fear_height' is how high a cliff or edge has to be before the mob stops walking, 0 to turn off height fear. @@ -73,7 +74,7 @@ functions needed for the mob to work properly which contains the following: hours and only attacking player at night or when provoked. 'attacks_monsters' when true has npc's attacking monsters or not. - 'attack_animal' when true will have monsters attacking animals. + 'attack_animals' when true will have monsters attacking animals. 'owner_loyal' when true will have tamed mobs attack anything player punches when nearby. 'group_attack' when true has same mob type grouping together to attack @@ -85,17 +86,27 @@ functions needed for the mob to work properly which contains the following: view_range. 'dogshoot' has melee attack when inside reach and shoot attack when inside view_range. - 'explode' causes mob to explode when inside reach. - 'explosion_radius' has the radius of the explosion which defaults to 1. - 'explosion_timer' number of seconds before mob explodes while still - inside view range. + 'explode' causes mob to stop and explode when inside reach. + 'explosion_radius' the radius of explosion node destruction, + defaults to 1 + 'explosion_damage_radius' the radius of explosion entity & player damage, + defaults to explosion_radius * 2 + 'explosion_timer' number of seconds before mob explodes while its target + is still inside reach or explosion_damage_radius, + defaults to 3. + 'allow_fuse_reset' Allow 'explode' attack_type to reset fuse and resume + chasing if target leaves the blast radius or line of + sight. Defaults to true. + 'stop_to_explode' When set to true (default), mob must stop and wait for + explosion_timer in order to explode. If false, mob will + continue chasing. 'arrow' holds the pre-defined arrow object to shoot when attacking. 'dogshoot_switch' allows switching between attack types by using timers (1 for shoot, 2 for dogfight) 'dogshoot_count_max' contains how many seconds before switching from dogfight to shoot. - 'dogshoot_count_max2' contains how many seconds before switching from shoot + 'dogshoot_count2_max' contains how many seconds before switching from shoot to dogfight. 'shoot_interval' has the number of seconds between shots. 'shoot_offset' holds the y position added as to where the @@ -128,6 +139,7 @@ functions needed for the mob to work properly which contains the following: 'damage' sound heard when mob is hurt. 'death' played when mob is killed. 'jump' played when mob jumps. + 'fuse' sound played when mob explode timer starts. 'explode' sound played when mob explodes. 'drops' table of items that are dropped when mob is killed, fields are: @@ -143,9 +155,9 @@ functions needed for the mob to work properly which contains the following: 'wielditem' how it looks when player holds it in hand. 'mesh' uses separate object file to define mob. 'visual_size' has the size of the mob, defaults to {x = 1, y = 1} - 'collision_box' has the box in which mob can be interacted with the + 'collisionbox' has the box in which mob can be interacted with the world e.g. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} - 'selection_box' has the box in which player can interact with mob + 'selectionbox' has the box in which player can interact with mob 'textures' holds a table list of textures to be used for mob, or you could use multiple lists inside another table for random selection e.g. { {"texture1.png"}, {"texture2.png"} } @@ -334,6 +346,17 @@ only use the API of this mod by disabling the spawning of the default mobs in this mod. +mobs:spawn_abm_check(pos, node, name) + +This global function can be changed to contain additional checks for mobs to +spawn e.g. mobs that spawn only in specific areas and the like. By returning +true the mob will not spawn. + + 'pos' holds the position of the spawning mob + 'node' contains the node the mob is spawning on top of + 'name' is the name of the animal/monster + + Making Arrows ------------- diff --git a/mods/ENTITIES/mobs/api_new.txt b/mods/ENTITIES/mobs/api_new.txt deleted file mode 100644 index f278aa5ac..000000000 --- a/mods/ENTITIES/mobs/api_new.txt +++ /dev/null @@ -1,689 +0,0 @@ - -Mobs Redo API -============= - -Welcome to the world of mobs in minetest and hopefully an easy guide to defining -your own mobs and having them appear in your worlds. - - -Registering Mobs ----------------- - -To register a mob and have it ready for use requires the following function: - - mobs:register_mob(name, definition) - -The 'name' of a mob usually starts with the mod name it's running from followed -by it's own name e.g. - - "mobs_monster:sand_monster" or "mymod:totally_awesome_beast" - -... and the 'definition' is a table which holds all of the settings and -functions needed for the mob to work properly which contains the following: - - 'nametag' contains the name which is shown above mob. - 'type' holds the type of mob that inhabits your world e.g. - "animal" usually docile and walking around. - "monster" attacks player or npc on sight. - "npc" walk around and will defend themselves if hit first, they - kill monsters. - 'hp_min' has the minimum health value the mob can spawn with. - 'hp_max' has the maximum health value the mob can spawn with. - 'armor' holds strength of mob, 100 is normal, lower is more powerful - and needs more hits and better weapons to kill. - 'passive' when true allows animals to defend themselves when hit, - otherwise they amble onwards. - 'walk_velocity' is the speed that your mob can walk around. - 'run_velocity' is the speed your mob can run with, usually when attacking. - 'walk_chance' has a 0-100 chance value your mob will walk from standing, - set to 0 for jumping mobs only. - 'jump' when true allows your mob to jump updwards. - 'jump_height' holds the height your mob can jump, 0 to disable jumping. - 'step_height' height of a block that your mob can easily walk up onto. - 'fly' when true allows your mob to fly around instead of walking. - 'fly_in' holds the node name that the mob flies (or swims) around - in e.g. "air" or "default:water_source". - 'runaway' if true causes animals to turn and run away when hit. - 'view_range' how many nodes in distance the mob can see a player. - 'reach' how many nodes in distance a mob can attack a player while - standing. - 'damage' how many health points the mob does to a player or another - mob when melee attacking. - 'knockback' when true has mobs falling backwards when hit, the greater - the damage the more they move back. - 'fear_height' is how high a cliff or edge has to be before the mob stops - walking, 0 to turn off height fear. - 'fall_speed' has the maximum speed the mob can fall at, default is -10. - 'fall_damage' when true causes falling to inflict damage. - 'water_damage' holds the damage per second infliced to mobs when standing in - water. - 'lava_damage' holds the damage per second inflicted to mobs when standing - in lava or fire. - 'light_damage' holds the damage per second inflicted to mobs when it's too - bright (above 13 light). - 'suffocation' when true causes mobs to suffocate inside solid blocks. - 'floats' when set to 1 mob will float in water, 0 has them sink. - 'follow' mobs follow player when holding any of the items which appear - on this table, the same items can be fed to a mob to tame or - breed e.g. {"farming:wheat", "default:apple"} - - 'reach' is how far the mob can attack player when standing - nearby, default is 3 nodes. - 'docile_by_day' when true has mobs wandering around during daylight - hours and only attacking player at night or when - provoked. - 'attacks_monsters' when true has npc's attacking monsters or not. - 'attack_animal' when true will have monsters attacking animals. - 'owner_loyal' when true will have tamed mobs attack anything player - punches when nearby. - 'group_attack' when true has same mob type grouping together to attack - offender. - 'attack_type' tells the api what a mob does when attacking the player - or another mob: - 'dogfight' is a melee attack when player is within mob reach. - 'shoot' has mob shoot pre-defined arrows at player when inside - view_range. - 'dogshoot' has melee attack when inside reach and shoot attack - when inside view_range. - 'explode' causes mob to explode when inside reach. - 'explosion_radius' has the radius of the explosion which defaults to 1. - 'explosion_timer' number of seconds before mob explodes while still - inside view range. - 'arrow' holds the pre-defined arrow object to shoot when - attacking. - 'dogshoot_switch' allows switching between attack types by using timers - (1 for shoot, 2 for dogfight) - 'dogshoot_count_max' contains how many seconds before switching from - dogfight to shoot. - 'dogshoot_count_max2' contains how many seconds before switching from shoot - to dogfight. - 'shoot_interval' has the number of seconds between shots. - 'shoot_offset' holds the y position added as to where the - arrow/fireball appears on mob. - 'specific_attack' has a table of entity names that mob can also attack - e.g. {"player", "mobs_animal:chicken"}. - 'blood_amount' contains the number of blood droplets to appear when - mob is hit. - 'blood_texture' has the texture name to use for droplets e.g. - "mobs_blood.png". - 'pathfinding' set to 1 for mobs to use pathfinder feature to locate - player, set to 2 so they can build/break also (only - works with dogfight attack). - 'immune_to' is a table that holds specific damage when being hit by - certain items e.g. - {"default:sword_wood", 0} -- causes no damage. - {"default:gold_lump", -10} -- heals by 10 health points. - {"default:coal_block", 20} -- 20 damage when hit on head with coal blocks. - - 'makes_footstep_sound' when true you can hear mobs walking. - 'sounds' this is a table with sounds of the mob - 'distance' maximum distance sounds can be heard, default is 10. - 'random' random sound that plays during gameplay. - 'war_cry' what you hear when mob starts to attack player. - 'attack' what you hear when being attacked. - 'shoot_attack' sound played when mob shoots. - 'damage' sound heard when mob is hurt. - 'death' played when mob is killed. - 'jump' played when mob jumps. - 'explode' sound played when mob explodes. - - 'drops' table of items that are dropped when mob is killed, fields are: - 'name' name of item to drop. - 'chance' chance of drop, 1 for always, 2 for 1-in-2 chance etc. - 'min' minimum number of items dropped. - 'max' maximum number of items dropped. - - 'visual' holds the look of the mob you wish to create: - 'cube' looks like a normal node - 'sprite' sprite which looks same from all angles. - 'upright_sprite' flat model standing upright. - 'wielditem' how it looks when player holds it in hand. - 'mesh' uses separate object file to define mob. - 'visual_size' has the size of the mob, defaults to {x = 1, y = 1} - 'collision_box' has the box in which mob can be interacted with the - world e.g. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} - 'selection_box' has the box in which player can interact with mob - 'textures' holds a table list of textures to be used for mob, or you - could use multiple lists inside another table for random - selection e.g. { {"texture1.png"}, {"texture2.png"} } - 'child_texture' holds the texture table for when baby mobs are used. - 'gotten_texture' holds the texture table for when self.gotten value is - true, used for milking cows or shearing sheep. - 'mesh' holds the name of the external object used for mob model - e.g. "mobs_cow.b3d" - 'gotten_mesh" holds the name of the external object used for when - self.gotten is true for mobs. - 'rotate' custom model rotation, 0 = front, 90 = side, 180 = back, - 270 = other side. - 'double_melee_attack' when true has the api choose between 'punch' and - 'punch2' animations. - - 'animation' holds a table containing animation names and settings for use with mesh models: - 'stand_start' start frame for when mob stands still. - 'stand_end' end frame of stand animation. - 'stand_speed' speed of animation in frames per second. - 'walk_start' when mob is walking around. - 'walk_end' - 'walk_speed' - 'run_start' when a mob runs or attacks. - 'run_end' - 'run_speed' - 'fly_start' when a mob is flying. - 'fly_end' - 'fly_speed' - 'punch_start' when a mob melee attacks. - 'punch_end' - 'punch_speed' - 'punch2_start' alternative melee attack animation. - 'punch2_end' - 'punch2_speed' - 'shoot_start' shooting animation. - 'shoot_end' - 'shoot_speed' - 'die_start' death animation - 'die_end' - 'die_speed' - 'die_loop' when set to false stops the animation looping. - - Using '_loop = false' setting will stop any of the above animations from - looping. - - 'speed_normal' is used for animation speed for compatibility with some - older mobs. - - -Node Replacement ----------------- - -Mobs can look around for specific nodes as they walk and replace them to mimic -eating. - - 'replace_what' group of items to replace e.g. - {"farming:wheat_8", "farming:carrot_8"} - or you can use the specific options of what, with and - y offset by using this instead: - { - {"group:grass", "air", 0}, - {"default:dirt_with_grass", "default:dirt", -1} - } - 'replace_with' replace with what e.g. "air" or in chickens case "mobs:egg" - 'replace_rate' how random should the replace rate be (typically 10) - 'replace_offset' +/- value to check specific node to replace - - 'on_replace(self, pos, oldnode, newnode)' is called when mob is about to - replace a node. - 'self' ObjectRef of mob - 'pos' Position of node to replace - 'oldnode' Current node - 'newnode' What the node will become after replacing - - If false is returned, the mob will not replace the node. - - By default, replacing sets self.gotten to true and resets the object - properties. - - -Custom Definition Functions ---------------------------- - -Along with the above mob registry settings we can also use custom functions to -enhance mob functionality and have them do many interesting things: - - 'on_die' a function that is called when the mob is killed the - parameters are (self, pos) - 'on_rightclick' its same as in minetest.register_entity() - 'on_blast' is called when an explosion happens near mob when using TNT - functions, parameters are (object, damage) and returns - (do_damage, do_knockback, drops) - 'on_spawn' is a custom function that runs on mob spawn with 'self' as - variable, return true at end of function to run only once. - 'after_activate' is a custom function that runs once mob has been activated - with these paramaters (self, staticdata, def, dtime) - 'on_breed' called when two similar mobs breed, paramaters are - (parent1, parent2) objects, return false to stop child from - being resized and owner/tamed flags and child textures being - applied. Function itself must spawn new child mob. - 'on_grown' is called when a child mob has grown up, only paramater is - (self). - 'do_punch' called when mob is punched with paramaters (self, hitter, - time_from_last_punch, tool_capabilities, direction), return - false to stop punch damage and knockback from taking place. - 'custom_attack' when set this function is called instead of the normal mob - melee attack, parameters are (self, to_attack). - 'on_die' a function that is called when mob is killed - 'do_custom' a custom function that is called every tick while mob is - active and which has access to all of the self.* variables - e.g. (self.health for health or self.standing_in for node - status), return with 'false' to skip remainder of mob API. - - -Internal Variables ------------------- - -The mob api also has some preset variables and functions that it will remember -for each mob. - - 'self.health' contains current health of mob (cannot exceed - self.hp_max) - 'self.texture_list' contains list of all mob textures - 'self.child_texture' contains mob child texture when growing up - 'self.base_texture' contains current skin texture which was randomly - selected from textures list - 'self.gotten' this is used for obtaining milk from cow and wool from - sheep - 'self.horny' when animal fed enough it is set to true and animal can - breed with same animal - 'self.hornytimer' background timer that controls breeding functions and - mob childhood timings - 'self.child' used for when breeding animals have child, will use - child_texture and be half size - 'self.owner' string used to set owner of npc mobs, typically used for - dogs - 'self.order' set to "follow" or "stand" so that npc will follow owner - or stand it's ground - 'self.nametag' contains the name of the mob which it can show above - - -Spawning Mobs in World ----------------------- - -mobs:register_spawn(name, nodes, max_light, min_light, chance, - active_object_count, max_height, day_toggle) - -mobs:spawn_specfic(name, nodes, neighbors, min_light, max_light, interval, - chance, active_object_count, min_height, max_height, day_toggle, on_spawn) - -These functions register a spawn algorithm for the mob. Without this function -the call the mobs won't spawn. - - 'name' is the name of the animal/monster - 'nodes' is a list of nodenames on that the animal/monster can - spawn on top of - 'neighbors' is a list of nodenames on that the animal/monster will - spawn beside (default is {"air"} for - mobs:register_spawn) - 'max_light' is the maximum of light - 'min_light' is the minimum of light - 'interval' is same as in register_abm() (default is 30 for - mobs:register_spawn) - 'chance' is same as in register_abm() - 'active_object_count' number of this type of mob to spawn at one time inside - map area - 'min_height' is the minimum height the mob can spawn - 'max_height' is the maximum height the mob can spawn - 'day_toggle' true for day spawning, false for night or nil for - anytime - 'on_spawn' is a custom function which runs after mob has spawned - and gives self and pos values. - -A simpler way to handle mob spawns has been added with the mobs:spawn(def) -command which uses above names to make settings clearer: - - mobs:spawn({name = "mobs_monster:tree_monster", - nodes = {"group:leaves"}, - max_light = 7, - }) - - -For each mob that spawns with this function is a field in mobs.spawning_mobs. -It tells if the mob should spawn or not. Default is true. So other mods can -only use the API of this mod by disabling the spawning of the default mobs in -this mod. - - -Making Arrows -------------- - -mobs:register_arrow(name, definition) - -This function registers a arrow for mobs with the attack type shoot. - - 'name' is the name of the arrow - 'definition' is a table with the following values: - 'visual' same is in minetest.register_entity() - 'visual_size' same is in minetest.register_entity() - 'textures' same is in minetest.register_entity() - 'velocity' the velocity of the arrow - 'drop' if set to true any arrows hitting a node will drop as item - 'hit_player' a function that is called when the arrow hits a player; - this function should hurt the player, the parameters are - (self, player) - 'hit_mob' a function that is called when the arrow hits a mob; - this function should hurt the mob, the parameters are - (self, player) - 'hit_node' a function that is called when the arrow hits a node, the - parameters are (self, pos, node) - 'tail' when set to 1 adds a trail or tail to mob arrows - 'tail_texture' texture string used for above effect - 'tail_size' has size for above texture (defaults to between 5 and 10) - 'expire' contains float value for how long tail appears for - (defaults to 0.25) - 'glow' has value for how brightly tail glows 1 to 10 (default is - 0 for no glow) - 'rotate' integer value in degrees to rotate arrow - 'on_step' is a custom function when arrow is active, nil for - default. - - -Spawn Eggs ----------- - -mobs:register_egg(name, description, background, addegg, no_creative) - -This function registers a spawn egg which can be used by admin to properly spawn in a mob. - - 'name' this is the name of your new mob to spawn e.g. "mob:sheep" - 'description' the name of the new egg you are creating e.g. "Spawn Sheep" - 'background' the texture displayed for the egg in inventory - 'addegg' would you like an egg image in front of your texture (1 = yes, - 0 = no) - 'no_creative' when set to true this stops spawn egg appearing in creative - mode for destructive mobs like Dungeon Masters. - - -Explosion Function ------------------- - -mobs:explosion(pos, radius) -- DEPRECATED!!! use mobs:boom() instead - -mobs:boom(self, pos, radius) - 'self' mob entity - 'pos' centre position of explosion - 'radius' radius of explosion (typically set to 3) - -This function generates an explosion which removes nodes in a specific radius -and damages any entity caught inside the blast radius. Protection will limit -node destruction but not entity damage. - - -Capturing Mobs --------------- - -mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, - force_take, replacewith) - -This function is generally called inside the on_rightclick section of the mob -api code, it provides a chance of capturing the mob by hand, using the net or -lasso items, and can also have the player take the mob by force if tamed and -replace with another item entirely. - - 'self' mob information - 'clicker' player information - 'chance_hand' chance of capturing mob by hand (1 to 100) 0 to disable - 'chance_net' chance of capturing mob using net (1 to 100) 0 to disable - 'chance_lasso' chance of capturing mob using magic lasso (1 to 100) 0 to - disable - 'force_take' take mob by force, even if tamed (true or false) - 'replacewith' once captured replace mob with this item instead (overrides - new mob eggs with saved information) - - -Feeding and Taming/Breeding ---------------------------- - -mobs:feed_tame(self, clicker, feed_count, breed, tame) - -This function allows the mob to be fed the item inside self.follow be it apple, -wheat or whatever a set number of times and be tamed or bred as a result. -Will return true when mob is fed with item it likes. - - 'self' mob information - 'clicker' player information - 'feed_count' number of times mob must be fed to tame or breed - 'breed' true or false stating if mob can be bred and a child created - afterwards - 'tame' true or false stating if mob can be tamed so player can pick - them up - - -Protecting Mobs ---------------- - -mobs:protect(self, clicker) - -This function can be used to right-click any tamed mob with mobs:protector item, -this will protect the mob from harm inside of a protected area from other -players. Will return true when mob right-clicked with mobs:protector item. - - 'self' mob information - 'clicker' player information - - -Riding Mobs ------------ - -Mobs can now be ridden by players and the following shows its functions and -usage: - - -mobs:attach(self, player) - -This function attaches a player to the mob so it can be ridden. - - 'self' mob information - 'player' player information - - -mobs:detach(player, offset) - -This function will detach the player currently riding a mob to an offset -position. - - 'player' player information - 'offset' position table containing offset values - - -mobs:drive(self, move_animation, stand_animation, can_fly, dtime) - -This function allows an attached player to move the mob around and animate it at -same time. - - 'self' mob information - 'move_animation' string containing movement animation e.g. "walk" - 'stand_animation' string containing standing animation e.g. "stand" - 'can_fly' if true then jump and sneak controls will allow mob to fly - up and down - 'dtime' tick time used inside drive function - - -mobs:fly(self, dtime, speed, can_shoot, arrow_entity, move_animation, stand_animation) - -This function allows an attached player to fly the mob around using directional -controls. - - 'self' mob information - 'dtime' tick time used inside fly function - 'speed' speed of flight - 'can_shoot' true if mob can fire arrow (sneak and left mouse button - fires) - 'arrow_entity' name of arrow entity used for firing - 'move_animation' string containing name of pre-defined animation e.g. "walk" - or "fly" etc. - 'stand_animation' string containing name of pre-defined animation e.g. - "stand" or "blink" etc. - -Note: animation names above are from the pre-defined animation lists inside mob -registry without extensions. - - -mobs:set_animation(self, name) - -This function sets the current animation for mob, defaulting to "stand" if not -found. - - 'self' mob information - 'name' name of animation - - -Certain variables need to be set before using the above functions: - - 'self.v2' toggle switch used to define below values for the - first time - 'self.max_speed_forward' max speed mob can move forward - 'self.max_speed_reverse' max speed mob can move backwards - 'self.accel' acceleration speed - 'self.terrain_type' integer containing terrain mob can walk on - (1 = water, 2 or 3 = land) - 'self.driver_attach_at' position offset for attaching player to mob - 'self.driver_eye_offset' position offset for attached player view - 'self.driver_scale' sets driver scale for mobs larger than {x=1, y=1} - - -External Settings for "minetest.conf" ------------------------------------- - - 'enable_damage' if true monsters will attack players (default is true) - 'only_peaceful_mobs' if true only animals will spawn in game (default is - false) - 'mobs_disable_blood' if false blood effects appear when mob is hit (default - is false) - 'mobs_spawn_protected' if set to false then mobs will not spawn in protected - areas (default is true) - 'remove_far_mobs' if true then mobs that are outside players visual - range will be removed (default is false) - 'mobname' can change specific mob chance rate (0 to disable) and - spawn number e.g. mobs_animal:cow = 1000,5 - 'mob_difficulty' sets difficulty level (health and hit damage - multiplied by this number), defaults to 1.0. - 'mob_show_health' if false then punching mob will not show health status - (true by default) - 'mob_chance_multiplier' multiplies chance of all mobs spawning and can be set - to 0.5 to have mobs spawn more or 2.0 to spawn less. - e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of - spawning. - -Players can override the spawn chance for each mob registered by adding a line -to their minetest.conf file with a new value, the lower the value the more each -mob will spawn e.g. - -mobs_animal:sheep_chance 11000 -mobs_monster:sand_monster_chance 100 - - -Rideable Horse Example Mob --------------------------- - -mobs:register_mob("mob_horse:horse", { - type = "animal", - visual = "mesh", - visual_size = {x = 1.20, y = 1.20}, - mesh = "mobs_horse.x", - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.25, 0.4}, - animation = { - speed_normal = 15, - speed_run = 30, - stand_start = 25, - stand_end = 75, - walk_start = 75, - walk_end = 100, - run_start = 75, - run_end = 100, - }, - textures = { - {"mobs_horse.png"}, - {"mobs_horsepeg.png"}, - {"mobs_horseara.png"} - }, - fear_height = 3, - runaway = true, - fly = false, - walk_chance = 60, - view_range = 5, - follow = {"farming:wheat"}, - passive = true, - hp_min = 12, - hp_max = 16, - armor = 200, - lava_damage = 5, - fall_damage = 5, - water_damage = 1, - makes_footstep_sound = true, - drops = { - {name = "mobs:meat_raw", chance = 1, min = 2, max = 3} - }, - sounds = { - random = "horse_neigh.ogg", - damage = "horse_whinney.ogg", - }, - - do_custom = function(self, dtime) - - -- set needed values if not already present - if not self.v2 then - self.v2 = 0 - self.max_speed_forward = 6 - self.max_speed_reverse = 2 - self.accel = 6 - self.terrain_type = 3 - self.driver_attach_at = {x = 0, y = 20, z = -2} - self.driver_eye_offset = {x = 0, y = 3, z = 0} - self.driver_scale = {x = 1, y = 1} - end - - -- if driver present allow control of horse - if self.driver then - - mobs.drive(self, "walk", "stand", false, dtime) - - return false -- skip rest of mob functions - end - - return true - end, - - on_die = function(self, pos) - - -- drop saddle when horse is killed while riding - -- also detach from horse properly - if self.driver then - minetest.add_item(pos, "mobs:saddle") - mobs.detach(self.driver, {x = 1, y = 0, z = 1}) - end - - end, - - on_rightclick = function(self, clicker) - - -- make sure player is clicking - if not clicker or not clicker:is_player() then - return - end - - -- feed, tame or heal horse - if mobs:feed_tame(self, clicker, 10, true, true) then - return - end - - -- make sure tamed horse is being clicked by owner only - if self.tamed and self.owner == clicker:get_player_name() then - - local inv = clicker:get_inventory() - - -- detatch player already riding horse - if self.driver and clicker == self.driver then - - mobs.detach(clicker, {x = 1, y = 0, z = 1}) - - -- add saddle back to inventory - if inv:room_for_item("main", "mobs:saddle") then - inv:add_item("main", "mobs:saddle") - else - minetest.add_item(clicker.getpos(), "mobs:saddle") - end - - -- attach player to horse - elseif not self.driver - and clicker:get_wielded_item():get_name() == "mobs:saddle" then - - self.object:set_properties({stepheight = 1.1}) - mobs.attach(self, clicker) - - -- take saddle from inventory - inv:remove_item("main", "mobs:saddle") - end - end - - -- used to capture horse with magic lasso - mobs:capture_mob(self, clicker, 0, 0, 80, false, nil) - end -}) diff --git a/mods/ENTITIES/mobs/init.lua b/mods/ENTITIES/mobs/init.lua index 24c981f8d..e3f969497 100644 --- a/mods/ENTITIES/mobs/init.lua +++ b/mods/ENTITIES/mobs/init.lua @@ -7,13 +7,4 @@ dofile(path .. "/api.lua") -- Rideable Mobs dofile(path .. "/mount.lua") --- Mob Items -dofile(path .. "/crafts.lua") - --- Mob Spawner --- MCL2 has its own spawners in mcl_mobspawners - --- Lucky Blocks -dofile(path .. "/lucky_block.lua") - minetest.log("action", "[MOD] Mobs Redo loaded") diff --git a/mods/ENTITIES/mobs/locale/de_DE.po b/mods/ENTITIES/mobs/locale/de_DE.po index d627dfde9..210990d8f 100644 --- a/mods/ENTITIES/mobs/locale/de_DE.po +++ b/mods/ENTITIES/mobs/locale/de_DE.po @@ -18,6 +18,10 @@ msgstr "" "X-Generator: Poedit 2.0.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "" + #: api.lua msgid "Mob has been protected!" msgstr "Kreatur wurde geschützt!" @@ -42,10 +46,6 @@ msgstr "Daneben!" msgid "Already protected!" msgstr "Bereits geschützt!" -#: api.lua -msgid "Protected!" -msgstr "Geschützt!" - #: api.lua msgid "@1 at full health (@2)" msgstr "@1 bei voller Gesundheit (@2)" @@ -98,6 +98,10 @@ msgstr "Kreaturschutzrune" msgid "Saddle" msgstr "Sattel" +#: crafts.lua +msgid "Mob Fence" +msgstr "Kreaturen Zaun" + #: spawner.lua msgid "Mob Spawner" msgstr "Kreaturenspawner" @@ -124,4 +128,4 @@ msgid "" "distance[1-20] y_offset[-10 to 10]”" msgstr "" "Syntax: „name min_licht[0-14] max_licht[0-14] max_mobs_im_gebiet[0 zum " -"Deaktivieren] distanz[1-20] y_versatz[-10 bis 10]“" \ No newline at end of file +"Deaktivieren] distanz[1-20] y_versatz[-10 bis 10]“" diff --git a/mods/ENTITIES/mobs/locale/es.po b/mods/ENTITIES/mobs/locale/es.po new file mode 100644 index 000000000..849db6671 --- /dev/null +++ b/mods/ENTITIES/mobs/locale/es.po @@ -0,0 +1,128 @@ +# Mobs Redo translation. +# Copyright (C) 2017 TenPlus1 +# This file is distributed under the same license as the mobs package. +# Wuzzy , 2017 +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-16 16:48+0200\n" +"PO-Revision-Date: 2017-07-16 16:48+0200\n" +"Last-Translator: Aleks \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "" + +#: api.lua +msgid "Mob has been protected!" +msgstr "El mob ha sido protegido!" + +#: api.lua +msgid "@1 (Tamed)" +msgstr "@1 (Domesticado)" + +#: api.lua +msgid "Not tamed!" +msgstr "No domesticado!" + +#: api.lua +msgid "@1 is owner!" +msgstr "@1 es el dueño!" + +#: api.lua +msgid "Missed!" +msgstr "Perdido!" + +#: api.lua +msgid "Already protected!" +msgstr "Ya está protegido!" + +#: api.lua +msgid "@1 at full health (@2)" +msgstr "@1 con salud llena (@2)" + +#: api.lua +msgid "@1 has been tamed!" +msgstr "@1 ha sido domesticado!" + +#: api.lua +msgid "Enter name:" +msgstr "Ingrese nombre:" + +#: api.lua +msgid "Rename" +msgstr "Renombrar" + +#: crafts.lua +msgid "Name Tag" +msgstr "Nombrar etiqueta" + +#: crafts.lua +msgid "Leather" +msgstr "Cuero" + +#: crafts.lua +msgid "Raw Meat" +msgstr "Carne cruda" + +#: crafts.lua +msgid "Meat" +msgstr "Carne" + +#: crafts.lua +msgid "Lasso (right-click animal to put in inventory)" +msgstr "Lazo (click derecho en animal para colocar en inventario)" + +#: crafts.lua +msgid "Net (right-click animal to put in inventory)" +msgstr "Red (click derecho en animal para colocar en inventario)" + +#: crafts.lua +msgid "Steel Shears (right-click to shear)" +msgstr "Tijera de acero (click derecho para esquilar)" + +#: crafts.lua +msgid "Mob Protection Rune" +msgstr "Runa de protección de Mob" + +#: crafts.lua +msgid "Saddle" +msgstr "Montura" + +#: crafts.lua +msgid "Mob Fence" +msgstr "" + +#: spawner.lua +msgid "Mob Spawner" +msgstr "Generador de Mob" + +#: spawner.lua +msgid "Mob MinLight MaxLight Amount PlayerDist" +msgstr "Mob LuzMin LuzMax Cantidad DistJugador" + +#: spawner.lua +msgid "Spawner Not Active (enter settings)" +msgstr "Generador no activo (ingrese config)" + +#: spawner.lua +msgid "Spawner Active (@1)" +msgstr "Generador activo (@1)" + +#: spawner.lua +msgid "Mob Spawner settings failed!" +msgstr "Configuracion de generador de Mob falló!" + +#: spawner.lua +msgid "" +"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " +"distance[1-20] y_offset[-10 to 10]”" +msgstr "Sintaxis: “nombre luz_min[0-14] luz_max[0-14] max_mobs_en_area[0 para deshabilitar] " +"distancia[1-20] compensacion[-10 a 10]”" diff --git a/mods/ENTITIES/mobs/locale/fr.po b/mods/ENTITIES/mobs/locale/fr.po new file mode 100644 index 000000000..25b920cd9 --- /dev/null +++ b/mods/ENTITIES/mobs/locale/fr.po @@ -0,0 +1,129 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-29 09:13+0200\n" +"PO-Revision-Date: 2017-07-29 09:20+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Last-Translator: fat115 \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: fr\n" + +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "** Mode pacifique activé - Aucun monstre ne sera généré" + +#: api.lua +msgid "Mob has been protected!" +msgstr "L'animal a été protégé !" + +#: api.lua +msgid "@1 (Tamed)" +msgstr "@1 (apprivoisé)" + +#: api.lua +msgid "Not tamed!" +msgstr "Non-apprivoisé !" + +#: api.lua +msgid "@1 is owner!" +msgstr "Appartient à @1 !" + +#: api.lua +msgid "Missed!" +msgstr "Raté !" + +#: api.lua +msgid "Already protected!" +msgstr "Déjà protégé !" + +#: api.lua +msgid "@1 at full health (@2)" +msgstr "@1 est en pleine forme (@2) " + +#: api.lua +msgid "@1 has been tamed!" +msgstr "@1 a été apprivoisé ! " + +#: api.lua +msgid "Enter name:" +msgstr "Saisissez un nom :" + +#: api.lua +msgid "Rename" +msgstr "Renommer" + +#: crafts.lua +msgid "Name Tag" +msgstr "Étiquette pour collier" + +#: crafts.lua +msgid "Leather" +msgstr "Cuir" + +#: crafts.lua +msgid "Raw Meat" +msgstr "Viande crue" + +#: crafts.lua +msgid "Meat" +msgstr "Viande" + +#: crafts.lua +msgid "Lasso (right-click animal to put in inventory)" +msgstr "Lasso (clic droit sur l'animal pour le mettre dans l'inventaire)" + +#: crafts.lua +msgid "Net (right-click animal to put in inventory)" +msgstr "Filet (clic droit sur l'animal pour le mettre dans l'inventaire)" + +#: crafts.lua +msgid "Steel Shears (right-click to shear)" +msgstr "Ciseaux à laine (clic droit pour tondre)" + +#: crafts.lua +msgid "Mob Protection Rune" +msgstr "Rune de protection des animaux" + +#: crafts.lua +msgid "Saddle" +msgstr "Selle" + +#: crafts.lua +msgid "Mob Fence" +msgstr "Clôture à animaux" + +#: spawner.lua +msgid "Mob Spawner" +msgstr "Générateur de mob" + +#: spawner.lua +msgid "Mob MinLight MaxLight Amount PlayerDist" +msgstr "Mob MinLumière MaxLumière Quantité DistanceJoueur" + +#: spawner.lua +msgid "Spawner Not Active (enter settings)" +msgstr "Générateur non actif (entrez les paramètres)" + +#: spawner.lua +msgid "Spawner Active (@1)" +msgstr "Générateur actif (@1)" + +#: spawner.lua +msgid "Mob Spawner settings failed!" +msgstr "Echec des paramètres du générateur" + +#: spawner.lua +msgid "" +"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " +"distance[1-20] y_offset[-10 to 10]”" +msgstr "Syntaxe : “nom min_lumière[0-14] max_lumière[0-14] max_mobs_dans_zone[0 pour désactiver] distance[1-20] décalage_y[-10 à 10]“" diff --git a/mods/ENTITIES/mobs/locale/it.po b/mods/ENTITIES/mobs/locale/it.po new file mode 100644 index 000000000..a439f6dea --- /dev/null +++ b/mods/ENTITIES/mobs/locale/it.po @@ -0,0 +1,131 @@ +# ITALIAN LOCALE FILE FOR THE MOBS REDO MODULE +# Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1 +# This file is distributed under the same license as the MOBS REDO package. +# Hamlet , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: Italian locale file for the Mobs Redo module\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-02 16:48+0200\n" +"PO-Revision-Date: 2017-08-18 12:18+0100\n" +"Last-Translator: H4mlet \n" +"Language-Team: \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.6.10\n" + +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "" + +#: api.lua +msgid "Mob has been protected!" +msgstr "Il mob è stato protetto!" + +#: api.lua +msgid "@1 (Tamed)" +msgstr "@1 (Addomesticat*)" + +#: api.lua +msgid "Not tamed!" +msgstr "Non addomesticat*!" + +#: api.lua +msgid "@1 is owner!" +msgstr "Proprietari* @1!" + +#: api.lua +msgid "Missed!" +msgstr "Mancat*!" + +#: api.lua +msgid "Already protected!" +msgstr "Già protett*!" + +#: api.lua +msgid "@1 at full health (@2)" +msgstr "@1 in piena salute (@2)" + +#: api.lua +msgid "@1 has been tamed!" +msgstr "@1 è stat* addomesticat*!" + +#: api.lua +msgid "Enter name:" +msgstr "Inserire il nome:" + +#: api.lua +msgid "Rename" +msgstr "Rinominare" + +#: crafts.lua +msgid "Name Tag" +msgstr "Targhetta" + +#: crafts.lua +msgid "Leather" +msgstr "Pelle" + +#: crafts.lua +msgid "Raw Meat" +msgstr "Carne cruda" + +#: crafts.lua +msgid "Meat" +msgstr "Carne" + +#: crafts.lua +msgid "Lasso (right-click animal to put in inventory)" +msgstr "Lazo (click di destro per mettere l'animale nell'inventario)" + +#: crafts.lua +msgid "Net (right-click animal to put in inventory)" +msgstr "Rete (click destro per mettere l'animale nell'inventario)" + +#: crafts.lua +msgid "Steel Shears (right-click to shear)" +msgstr "Cesoie d'acciaio (click destro per tosare)" + +#: crafts.lua +msgid "Mob Protection Rune" +msgstr "Runa di protezione per mob" + +#: crafts.lua +msgid "Saddle" +msgstr "Sella" + +#: crafts.lua +msgid "Mob Fence" +msgstr "" + +#: spawner.lua +msgid "Mob Spawner" +msgstr "Generatore di mob" + +#: spawner.lua +msgid "Mob MinLight MaxLight Amount PlayerDist" +msgstr "Mob LuceMin LuceMax Ammontare DistGiocat." + +#: spawner.lua +msgid "Spawner Not Active (enter settings)" +msgstr "Generatore inattivo (inserire le impostazioni)" + +#: spawner.lua +msgid "Spawner Active (@1)" +msgstr "Generatore attivo (@1)" + +#: spawner.lua +msgid "Mob Spawner settings failed!" +msgstr "Impostazioni del generatore di mob fallite!" + +#: spawner.lua +msgid "" +"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " +"distance[1-20] y_offset[-10 to 10]”" +msgstr "" +"Sintassi: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 per " +"disabilitare] distance[1-20] y_offset[-10 to 10]”" diff --git a/mods/ENTITIES/mobs/locale/ms.po b/mods/ENTITIES/mobs/locale/ms.po new file mode 100644 index 000000000..a2a31f3f8 --- /dev/null +++ b/mods/ENTITIES/mobs/locale/ms.po @@ -0,0 +1,131 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-05 23:40+0800\n" +"PO-Revision-Date: 2018-02-05 23:51+0800\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Last-Translator: MuhdNurHidayat (MNH48) \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: ms\n" + +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul" + +#: api.lua +msgid "Mob has been protected!" +msgstr "Mob telah pun dilindungi!" + +#: api.lua +msgid "@1 (Tamed)" +msgstr "@1 (Jinak)" + +#: api.lua +msgid "Not tamed!" +msgstr "Belum dijinakkan!" + +#: api.lua +msgid "@1 is owner!" +msgstr "Ini hak milik @1!" + +#: api.lua +msgid "Missed!" +msgstr "Terlepas!" + +#: api.lua +msgid "Already protected!" +msgstr "Telah dilindungi!" + +#: api.lua +msgid "@1 at full health (@2)" +msgstr "Mata kesihatan @1 telah penuh (@2)" + +#: api.lua +msgid "@1 has been tamed!" +msgstr "@1 telah dijinakkan!" + +#: api.lua +msgid "Enter name:" +msgstr "Masukkan nama:" + +#: api.lua +msgid "Rename" +msgstr "Namakan semula" + +#: crafts.lua +msgid "Name Tag" +msgstr "Tanda Nama" + +#: crafts.lua +msgid "Leather" +msgstr "Kulit" + +#: crafts.lua +msgid "Raw Meat" +msgstr "Daging Mentah" + +#: crafts.lua +msgid "Meat" +msgstr "Daging Bakar" + +#: crafts.lua +msgid "Lasso (right-click animal to put in inventory)" +msgstr "Tanjul (klik-kanan haiwan untuk masukkan ke inventori)" + +#: crafts.lua +msgid "Net (right-click animal to put in inventory)" +msgstr "Jaring (klik-kanan haiwan untuk masukkan ke inventori)" + +#: crafts.lua +msgid "Steel Shears (right-click to shear)" +msgstr "Ketam Keluli (klik-kanan untuk mengetam bulu biri-biri)" + +#: crafts.lua +msgid "Mob Protection Rune" +msgstr "Rune Perlindungan Mob" + +#: crafts.lua +msgid "Saddle" +msgstr "Pelana" + +#: crafts.lua +msgid "Mob Fence" +msgstr "Pagar Mob" + +#: spawner.lua +msgid "Mob Spawner" +msgstr "Pewujud Mob" + +#: spawner.lua +msgid "Mob MinLight MaxLight Amount PlayerDist" +msgstr "Mob CahayaMin CahayaMax Amaun JarakPemain" + +#: spawner.lua +msgid "Spawner Not Active (enter settings)" +msgstr "Pewujud Mob Tidak Aktif (masukkan tetapan)" + +#: spawner.lua +msgid "Spawner Active (@1)" +msgstr "Pewujud Mob Aktif (@1)" + +#: spawner.lua +msgid "Mob Spawner settings failed!" +msgstr "Penetapan Pewujud Mob gagal!" + +#: spawner.lua +msgid "" +"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " +"distance[1-20] y_offset[-10 to 10]”" +msgstr "" +"Sintaks: \"nama cahaya_minimum[0-14] cahaya_maksimum[0-14] " +"amaun_mob_maksimum[0 untuk lumpuhkan] jarak[1-20] ketinggian[-10 hingga 10]\"" diff --git a/mods/ENTITIES/mobs/locale/pt.po b/mods/ENTITIES/mobs/locale/pt.po index 05c3ae3d6..b52afd622 100644 --- a/mods/ENTITIES/mobs/locale/pt.po +++ b/mods/ENTITIES/mobs/locale/pt.po @@ -18,6 +18,10 @@ msgstr "" "X-Generator: Poedit 2.0.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "" + #: api.lua msgid "Mob has been protected!" msgstr "" @@ -42,10 +46,6 @@ msgstr "Faltou!" msgid "Already protected!" msgstr "" -#: api.lua -msgid "Protected!" -msgstr "" - #: api.lua msgid "@1 at full health (@2)" msgstr "@1 em plena saude (@2)" @@ -99,6 +99,10 @@ msgstr "" msgid "Saddle" msgstr "" +#: crafts.lua +msgid "Mob Fence" +msgstr "" + #: spawner.lua msgid "Mob Spawner" msgstr "Spawnador de Mob" @@ -126,4 +130,4 @@ msgid "" "distance[1-20] y_offset[-10 to 10]”" msgstr "" "> nome luz_min[0-14] luz_max[0-14] max_mobs_na_area[0 para desabilitar] " -"distancia[1-20] y_offset[-10 a 10]" \ No newline at end of file +"distancia[1-20] y_offset[-10 a 10]" diff --git a/mods/ENTITIES/mobs/locale/ru.po b/mods/ENTITIES/mobs/locale/ru.po new file mode 100644 index 000000000..6cde7ef91 --- /dev/null +++ b/mods/ENTITIES/mobs/locale/ru.po @@ -0,0 +1,129 @@ +# Russian translation for the mobs_redo mod. +# Copyright (C) 2018 TenPlus1 +# This file is distributed under the same license as the mobs_redo package. +# Oleg720 , 2017. +# CodeXP , 2018. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-13 15:47+0200\n" +"PO-Revision-Date: 2018-03-23 22:22+0100\n" +"Last-Translator: CodeXP \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "** Мирный модус активирован - монстры не спаунятся" + +#: api.lua +msgid "Mob has been protected!" +msgstr "Моб защищен!" + +#: api.lua +msgid "@1 (Tamed)" +msgstr "@1 (Прирученный)" + +#: api.lua +msgid "Not tamed!" +msgstr "Не прирученный" + +#: api.lua +msgid "@1 is owner!" +msgstr "@1 владелец" + +#: api.lua +msgid "Missed!" +msgstr "Промазал!" + +#: api.lua +msgid "Already protected!" +msgstr "Уже защищен!" + +#: api.lua +msgid "@1 at full health (@2)" +msgstr "@1 при полном здоровье (@2)" + +#: api.lua +msgid "@1 has been tamed!" +msgstr "@1 приручен" + +#: api.lua +msgid "Enter name:" +msgstr "Введите имя:" + +#: api.lua +msgid "Rename" +msgstr "Переименовать" + +#: crafts.lua +msgid "Name Tag" +msgstr "Новый тэг" + +#: crafts.lua +msgid "Leather" +msgstr "Кожа" + +#: crafts.lua +msgid "Raw Meat" +msgstr "Сырое мясо" + +#: crafts.lua +msgid "Meat" +msgstr "Мясо" + +#: crafts.lua +msgid "Lasso (right-click animal to put in inventory)" +msgstr "Лассо (Правый клик - положить животное в инвентарь)" + +#: crafts.lua +msgid "Net (right-click animal to put in inventory)" +msgstr "Сеть (Правый клик - положить животное в инвентарь)" + +#: crafts.lua +msgid "Steel Shears (right-click to shear)" +msgstr "Ножницы (Правый клик - подстричь)" + +#: crafts.lua +msgid "Mob Protection Rune" +msgstr "Защитная руна мобов" + +#: crafts.lua +msgid "Saddle" +msgstr "Седло" + +#: crafts.lua +msgid "Mob Fence" +msgstr "Забор от мобов" + +#: spawner.lua +msgid "Mob Spawner" +msgstr "Спаунер моба" + +#: spawner.lua +msgid "Mob MinLight MaxLight Amount PlayerDist" +msgstr "" + +#: spawner.lua +msgid "Spawner Not Active (enter settings)" +msgstr "Спаунер не активен (введите настройки)" + +#: spawner.lua +msgid "Spawner Active (@1)" +msgstr "Активные спаунер (@1)" + +#: spawner.lua +msgid "Mob Spawner settings failed!" +msgstr "Настройки спаунера моба провалились" + +#: spawner.lua +msgid "" +"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " +"distance[1-20] y_offset[-10 to 10]”" +msgstr "" diff --git a/mods/ENTITIES/mobs/locale/template.pot b/mods/ENTITIES/mobs/locale/template.pot index 90e524164..af31440e2 100644 --- a/mods/ENTITIES/mobs/locale/template.pot +++ b/mods/ENTITIES/mobs/locale/template.pot @@ -17,6 +17,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "" + #: api.lua msgid "Mob has been protected!" msgstr "" @@ -41,10 +45,6 @@ msgstr "" msgid "Already protected!" msgstr "" -#: api.lua -msgid "Protected!" -msgstr "" - #: api.lua msgid "@1 at full health (@2)" msgstr "" @@ -97,6 +97,10 @@ msgstr "" msgid "Saddle" msgstr "" +#: crafts.lua +msgid "Mob Fence" +msgstr "" + #: spawner.lua msgid "Mob Spawner" msgstr "" @@ -121,4 +125,4 @@ msgstr "" msgid "" "Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] " "distance[1-20] y_offset[-10 to 10]”" -msgstr "" \ No newline at end of file +msgstr "" diff --git a/mods/ENTITIES/mobs/locale/tr.po b/mods/ENTITIES/mobs/locale/tr.po index b9c06d58a..10688e20d 100644 --- a/mods/ENTITIES/mobs/locale/tr.po +++ b/mods/ENTITIES/mobs/locale/tr.po @@ -18,6 +18,10 @@ msgstr "" "X-Generator: Poedit 2.0.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: api.lua +msgid "** Peaceful Mode Active - No Monsters Will Spawn" +msgstr "" + #: api.lua msgid "Mob has been protected!" msgstr "" @@ -42,10 +46,6 @@ msgstr "Kaçırdın!" msgid "Already protected!" msgstr "" -#: api.lua -msgid "Protected!" -msgstr "" - #: api.lua msgid "@1 at full health (@2)" msgstr "@1 tam canında (@2)" @@ -99,6 +99,10 @@ msgstr "" msgid "Saddle" msgstr "" +#: crafts.lua +msgid "Mob Fence" +msgstr "Canavar Yaratıcı" + #: spawner.lua msgid "Mob Spawner" msgstr "Canavar Yaratıcı" @@ -126,4 +130,4 @@ msgid "" "distance[1-20] y_offset[-10 to 10]”" msgstr "" "> isim min_isik[0-14] max_isik[0-14] alandaki_max_canavar_sayisi[kapatmak " -"icin 0] mesafe[1-20] y_cikinti[-10 ve 10 arası]" \ No newline at end of file +"icin 0] mesafe[1-20] y_cikinti[-10 ve 10 arası]"