23 Commits c2fa3e300c ... 91a3c1e17d

Author SHA1 Message Date
  tenplus1 91a3c1e17d fix evil bunny 1 year ago
  tenplus1 35988d5cb3 update license.txt 1 year ago
  tenplus1 4948d0831c update license.txt 1 year ago
  tenplus1 5eea644cf7 update license.txt 2 years ago
  tenplus1 a4e9601559 update license.txt 2 years ago
  tenplus1 8f5ebf8277 update license.txt (need some licenses filled) 2 years ago
  tenplus1 1799b4c217 fix dye'd sheep protection (thx Niklp) 2 years ago
  tenplus1 848622ccde add herd node check 2 years ago
  tenplus1 ca6ff68c3a have sheep spawn in mixed herds 2 years ago
  tenplus1 be80ec3269 code tidy 2 years ago
  tenplus1 840291ee5b sheeps wont drop wool when killed if sheared (thx Mazes) 2 years ago
  tenplus1 ad9269569c add black kitty skin 2 years ago
  tenplus1 998810af89 add clownfish to kitty food 2 years ago
  tenplus1 409ac55224 update screenshot.png (thanks sirrobzeroone) 2 years ago
  tenplus1 6ef76b06e0 remove unneeded local S 2 years ago
  tenplus1 cca7169b9e add missing butter recipe for wooden buckets 2 years ago
  tenplus1 eed132225c added support for wooden bucket and milking cow with recipes 2 years ago
  tenplus1 d9682b32c3 revert penguin hover 2 years ago
  tenplus1 9be290dd85 add penguin hover animation 2 years ago
  tenplus1 fe4010f217 add spanish translation (thanks mckaygerhard) 2 years ago
  tenplus1 97f2e47288 update translation checks 2 years ago
  tenplus1 3e15456bce fix intllib return 3 years ago
  tenplus1 99ca850018 simplify baby chicken from egg (thanks MoNTE48) 3 years ago
10 changed files with 377 additions and 188 deletions
  1. 35 23
      bee.lua
  2. 32 24
      bunny.lua
  3. 41 57
      chicken.lua
  4. 91 44
      cow.lua
  5. 26 6
      init.lua
  6. 0 2
      intllib.lua
  7. 31 29
      kitten.lua
  8. 75 3
      license.txt
  9. 46 0
      locale/mobs_animal.es.tr
  10. 0 0
      lucky_block.lua

+ 35 - 23
bee.lua

@@ -1,5 +1,6 @@
 
 
-local S = mobs.intllib
+local S = mobs.intllib_animal
+
 
 
 -- Bee by KrupnoPavel (.b3d model by sirrobzeroone)
 -- Bee by KrupnoPavel (.b3d model by sirrobzeroone)
 
 
@@ -13,18 +14,18 @@ mobs:register_mob("mobs_animal:bee", {
 	visual = "mesh",
 	visual = "mesh",
 	mesh = "mobs_bee.b3d",
 	mesh = "mobs_bee.b3d",
 	textures = {
 	textures = {
-		{"mobs_bee.png"},
+		{"mobs_bee.png"}
 	},
 	},
 	blood_texture = "mobs_bee_inv.png",
 	blood_texture = "mobs_bee_inv.png",
 	blood_amount = 1,
 	blood_amount = 1,
 	makes_footstep_sound = false,
 	makes_footstep_sound = false,
 	sounds = {
 	sounds = {
-		random = "mobs_bee",
+		random = "mobs_bee"
 	},
 	},
 	walk_velocity = 1,
 	walk_velocity = 1,
 	jump = true,
 	jump = true,
 	drops = {
 	drops = {
-		{name = "mobs:honey", chance = 2, min = 1, max = 2},
+		{name = "mobs:honey", chance = 2, min = 1, max = 2}
 	},
 	},
 	water_damage = 1,
 	water_damage = 1,
 	lava_damage = 2,
 	lava_damage = 2,
@@ -36,42 +37,50 @@ mobs:register_mob("mobs_animal:bee", {
 		stand_start = 0,
 		stand_start = 0,
 		stand_end = 30,
 		stand_end = 30,
 		walk_start = 35,
 		walk_start = 35,
-		walk_end = 65,
+		walk_end = 65
 	},
 	},
+
 	on_rightclick = function(self, clicker)
 	on_rightclick = function(self, clicker)
 		mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:bee")
 		mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:bee")
 	end,
 	end,
+
 --	after_activate = function(self, staticdata, def, dtime)
 --	after_activate = function(self, staticdata, def, dtime)
 --		print ("------", self.name, dtime, self.health)
 --		print ("------", self.name, dtime, self.health)
 --	end,
 --	end,
 })
 })
 
 
 if not mobs.custom_spawn_animal then
 if not mobs.custom_spawn_animal then
-mobs:spawn({
-	name = "mobs_animal:bee",
-	nodes = {"group:flower"},
-	min_light = 14,
-	interval = 60,
-	chance = 7000,
-	min_height = 3,
-	max_height = 200,
-	day_toggle = true,
-})
+
+	mobs:spawn({
+		name = "mobs_animal:bee",
+		nodes = {"group:flower"},
+		min_light = 14,
+		interval = 60,
+		chance = 7000,
+		min_height = 3,
+		max_height = 200,
+		day_toggle = true
+	})
 end
 end
 
 
+
+-- spawn egg
 mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png")
 mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png")
 
 
+
+-- compatibility (only required if moving from old mobs to mobs_redo)
 mobs:alias_mob("mobs:bee", "mobs_animal:bee")
 mobs:alias_mob("mobs:bee", "mobs_animal:bee")
 
 
+
 -- honey
 -- honey
 minetest.register_craftitem(":mobs:honey", {
 minetest.register_craftitem(":mobs:honey", {
 	description = S("Honey"),
 	description = S("Honey"),
 	inventory_image = "mobs_honey_inv.png",
 	inventory_image = "mobs_honey_inv.png",
 	on_use = minetest.item_eat(4),
 	on_use = minetest.item_eat(4),
-	groups = {food_honey = 1, food_sugar = 1, flammable = 1},
+	groups = {food_honey = 1, food_sugar = 1, flammable = 1}
 })
 })
 
 
+
 -- beehive (when placed spawns bee)
 -- beehive (when placed spawns bee)
 minetest.register_node(":mobs:beehive", {
 minetest.register_node(":mobs:beehive", {
 	description = S("Beehive"),
 	description = S("Beehive"),
@@ -104,7 +113,7 @@ minetest.register_node(":mobs:beehive", {
 
 
 			minetest.set_node(pos, {name = "mobs:beehive", param2 = 1})
 			minetest.set_node(pos, {name = "mobs:beehive", param2 = 1})
 
 
-			if math.random(1, 4) == 1 then
+			if math.random(4) == 1 then
 				minetest.add_entity(pos, "mobs_animal:bee")
 				minetest.add_entity(pos, "mobs_animal:bee")
 			end
 			end
 		end
 		end
@@ -131,14 +140,14 @@ minetest.register_node(":mobs:beehive", {
 
 
 		-- only dig beehive if no honey inside
 		-- only dig beehive if no honey inside
 		return meta:get_inventory():is_empty("beehive")
 		return meta:get_inventory():is_empty("beehive")
-	end,
-
+	end
 })
 })
 
 
+-- beehive recipe
 minetest.register_craft({
 minetest.register_craft({
 	output = "mobs:beehive",
 	output = "mobs:beehive",
 	recipe = {
 	recipe = {
-		{"mobs:bee","mobs:bee","mobs:bee"},
+		{"mobs:bee","mobs:bee","mobs:bee"}
 	}
 	}
 })
 })
 
 
@@ -147,25 +156,27 @@ minetest.register_node(":mobs:honey_block", {
 	description = S("Honey Block"),
 	description = S("Honey Block"),
 	tiles = {"mobs_honey_block.png"},
 	tiles = {"mobs_honey_block.png"},
 	groups = {snappy = 3, flammable = 2},
 	groups = {snappy = 3, flammable = 2},
-	sounds = default.node_sound_dirt_defaults(),
+	sounds = default.node_sound_dirt_defaults()
 })
 })
 
 
+-- recipe
 minetest.register_craft({
 minetest.register_craft({
 	output = "mobs:honey_block",
 	output = "mobs:honey_block",
 	recipe = {
 	recipe = {
 		{"mobs:honey", "mobs:honey", "mobs:honey"},
 		{"mobs:honey", "mobs:honey", "mobs:honey"},
 		{"mobs:honey", "mobs:honey", "mobs:honey"},
 		{"mobs:honey", "mobs:honey", "mobs:honey"},
-		{"mobs:honey", "mobs:honey", "mobs:honey"},
+		{"mobs:honey", "mobs:honey", "mobs:honey"}
 	}
 	}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	output = "mobs:honey 9",
 	output = "mobs:honey 9",
 	recipe = {
 	recipe = {
-		{"mobs:honey_block"},
+		{"mobs:honey_block"}
 	}
 	}
 })
 })
 
 
+
 -- beehive workings
 -- beehive workings
 minetest.register_abm({
 minetest.register_abm({
 	nodenames = {"mobs:beehive"},
 	nodenames = {"mobs:beehive"},

+ 32 - 24
bunny.lua

@@ -1,5 +1,5 @@
 
 
-local S = mobs.intllib
+local S = mobs.intllib_animal
 
 
 
 
 -- Bunny by ExeterDad
 -- Bunny by ExeterDad
@@ -12,14 +12,14 @@ stepheight = 0.6,
 	hp_min = 1,
 	hp_min = 1,
 	hp_max = 4,
 	hp_max = 4,
 	armor = 200,
 	armor = 200,
-	collisionbox = {-0.268, -0.5, -0.268,  0.268, 0.167, 0.268},
+	collisionbox = {-0.268, -0.5, -0.268, 0.268, 0.167, 0.268},
 	visual = "mesh",
 	visual = "mesh",
 	mesh = "mobs_bunny.b3d",
 	mesh = "mobs_bunny.b3d",
 	drawtype = "front",
 	drawtype = "front",
 	textures = {
 	textures = {
 		{"mobs_bunny_grey.png"},
 		{"mobs_bunny_grey.png"},
 		{"mobs_bunny_brown.png"},
 		{"mobs_bunny_brown.png"},
-		{"mobs_bunny_white.png"},
+		{"mobs_bunny_white.png"}
 	},
 	},
 	sounds = {},
 	sounds = {},
 	makes_footstep_sound = false,
 	makes_footstep_sound = false,
@@ -31,7 +31,7 @@ stepheight = 0.6,
 	jump_height = 6,
 	jump_height = 6,
 	drops = {
 	drops = {
 		{name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1},
 		{name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1},
-		{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1},
+		{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1}
 	},
 	},
 	water_damage = 0,
 	water_damage = 0,
 	lava_damage = 4,
 	lava_damage = 4,
@@ -44,13 +44,14 @@ stepheight = 0.6,
 		walk_start = 16,
 		walk_start = 16,
 		walk_end = 24,
 		walk_end = 24,
 		punch_start = 16,
 		punch_start = 16,
-		punch_end = 24,
+		punch_end = 24
 	},
 	},
 	follow = {"farming:carrot", "farming_plus:carrot_item", "default:grass_1"},
 	follow = {"farming:carrot", "farming_plus:carrot_item", "default:grass_1"},
 	view_range = 8,
 	view_range = 8,
 	replace_rate = 10,
 	replace_rate = 10,
 	replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot"},
 	replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot"},
 	replace_with = "air",
 	replace_with = "air",
+
 	on_rightclick = function(self, clicker)
 	on_rightclick = function(self, clicker)
 
 
 		-- feed or tame
 		-- feed or tame
@@ -68,17 +69,21 @@ stepheight = 0.6,
 				clicker:set_wielded_item(item)
 				clicker:set_wielded_item(item)
 			end
 			end
 
 
+			self.base_texture = {"mobs_bunny_evil.png"}
+
 			self.object:set_properties({
 			self.object:set_properties({
-				textures = {"mobs_bunny_evil.png"},
+				textures = {"mobs_bunny_evil.png"}
 			})
 			})
 
 
 			self.type = "monster"
 			self.type = "monster"
 			self.health = 20
 			self.health = 20
 			self.passive = false
 			self.passive = false
+			self.runaway = false
 
 
 			return
 			return
 		end
 		end
 	end,
 	end,
+
 	on_spawn = function(self)
 	on_spawn = function(self)
 
 
 		local pos = self.object:get_pos() ; pos.y = pos.y - 1
 		local pos = self.object:get_pos() ; pos.y = pos.y - 1
@@ -88,11 +93,13 @@ stepheight = 0.6,
 				{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
 				{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
 			self.base_texture = {"mobs_bunny_white.png"}
 			self.base_texture = {"mobs_bunny_white.png"}
 			self.object:set_properties({textures = self.base_texture})
 			self.object:set_properties({textures = self.base_texture})
+
 		-- brown desert bunny
 		-- brown desert bunny
 		elseif minetest.find_node_near(pos, 1,
 		elseif minetest.find_node_near(pos, 1,
 				{"default:desert_sand", "default:desert_stone"}) then
 				{"default:desert_sand", "default:desert_stone"}) then
 			self.base_texture = {"mobs_bunny_brown.png"}
 			self.base_texture = {"mobs_bunny_brown.png"}
 			self.object:set_properties({textures = self.base_texture})
 			self.object:set_properties({textures = self.base_texture})
+
 		-- grey stone bunny
 		-- grey stone bunny
 		elseif minetest.find_node_near(pos, 1,
 		elseif minetest.find_node_near(pos, 1,
 				{"default:stone", "default:gravel"}) then
 				{"default:stone", "default:gravel"}) then
@@ -102,8 +109,9 @@ stepheight = 0.6,
 
 
 		return true -- run only once, false/nil runs every activation
 		return true -- run only once, false/nil runs every activation
 	end,
 	end,
+
 	attack_type = "dogfight",
 	attack_type = "dogfight",
-	damage = 5,
+	damage = 5
 })
 })
 
 
 
 
@@ -114,17 +122,18 @@ if minetest.get_modpath("ethereal") then
 end
 end
 
 
 if not mobs.custom_spawn_animal then
 if not mobs.custom_spawn_animal then
-mobs:spawn({
-	name = "mobs_animal:bunny",
-	nodes = {spawn_on},
-	neighbors = {"group:grass"},
-	min_light = 14,
-	interval = 60,
-	chance = 8000, -- 15000
-	min_height = 5,
-	max_height = 200,
-	day_toggle = true,
-})
+
+	mobs:spawn({
+		name = "mobs_animal:bunny",
+		nodes = {spawn_on},
+		neighbors = {"group:grass"},
+		min_light = 14,
+		interval = 60,
+		chance = 8000,
+		min_height = 5,
+		max_height = 200,
+		day_toggle = true
+	})
 end
 end
 
 
 
 
@@ -139,7 +148,7 @@ minetest.register_craftitem(":mobs:rabbit_raw", {
 	description = S("Raw Rabbit"),
 	description = S("Raw Rabbit"),
 	inventory_image = "mobs_rabbit_raw.png",
 	inventory_image = "mobs_rabbit_raw.png",
 	on_use = minetest.item_eat(3),
 	on_use = minetest.item_eat(3),
-	groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2},
+	groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2}
 })
 })
 
 
 -- cooked rabbit
 -- cooked rabbit
@@ -147,32 +156,31 @@ minetest.register_craftitem(":mobs:rabbit_cooked", {
 	description = S("Cooked Rabbit"),
 	description = S("Cooked Rabbit"),
 	inventory_image = "mobs_rabbit_cooked.png",
 	inventory_image = "mobs_rabbit_cooked.png",
 	on_use = minetest.item_eat(5),
 	on_use = minetest.item_eat(5),
-	groups = {food_meat = 1, food_rabbit = 1, flammable = 2},
+	groups = {food_meat = 1, food_rabbit = 1, flammable = 2}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	type = "cooking",
 	type = "cooking",
 	output = "mobs:rabbit_cooked",
 	output = "mobs:rabbit_cooked",
 	recipe = "mobs:rabbit_raw",
 	recipe = "mobs:rabbit_raw",
-	cooktime = 5,
+	cooktime = 5
 })
 })
 
 
 -- rabbit hide
 -- rabbit hide
 minetest.register_craftitem(":mobs:rabbit_hide", {
 minetest.register_craftitem(":mobs:rabbit_hide", {
 	description = S("Rabbit Hide"),
 	description = S("Rabbit Hide"),
 	inventory_image = "mobs_rabbit_hide.png",
 	inventory_image = "mobs_rabbit_hide.png",
-	groups = {flammable = 2, pelt = 1},
+	groups = {flammable = 2, pelt = 1}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	type = "fuel",
 	type = "fuel",
 	recipe = "mobs:rabbit_hide",
 	recipe = "mobs:rabbit_hide",
-	burntime = 2,
+	burntime = 2
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	output = "mobs:leather",
 	output = "mobs:leather",
---	type = "shapeless",
 	recipe = {
 	recipe = {
 		{"mobs:rabbit_hide", "mobs:rabbit_hide"},
 		{"mobs:rabbit_hide", "mobs:rabbit_hide"},
 		{"mobs:rabbit_hide", "mobs:rabbit_hide"}
 		{"mobs:rabbit_hide", "mobs:rabbit_hide"}

+ 41 - 57
chicken.lua

@@ -1,11 +1,11 @@
 
 
-local S = mobs.intllib
+local S = mobs.intllib_animal
 
 
 
 
 -- Chicken by JK Murray and Sirrobzeroone
 -- Chicken by JK Murray and Sirrobzeroone
 
 
 mobs:register_mob("mobs_animal:chicken", {
 mobs:register_mob("mobs_animal:chicken", {
-stepheight = 0.6,
+	stepheight = 0.6,
 	type = "animal",
 	type = "animal",
 	passive = true,
 	passive = true,
 	hp_min = 5,
 	hp_min = 5,
@@ -17,14 +17,14 @@ stepheight = 0.6,
 	textures = {
 	textures = {
 		{"mobs_chicken.png"}, -- white
 		{"mobs_chicken.png"}, -- white
 		{"mobs_chicken_brown.png"},
 		{"mobs_chicken_brown.png"},
-		{"mobs_chicken_black.png"},
+		{"mobs_chicken_black.png"}
 	},
 	},
 	child_texture = {
 	child_texture = {
-		{"mobs_chick.png"},
+		{"mobs_chick.png"}
 	},
 	},
 	makes_footstep_sound = true,
 	makes_footstep_sound = true,
 	sounds = {
 	sounds = {
-		random = "mobs_chicken",
+		random = "mobs_chicken"
 	},
 	},
 	walk_velocity = 1,
 	walk_velocity = 1,
 	run_velocity = 3,
 	run_velocity = 3,
@@ -32,7 +32,7 @@ stepheight = 0.6,
 	runaway_from = {"player", "mobs_animal:pumba"},
 	runaway_from = {"player", "mobs_animal:pumba"},
 	drops = {
 	drops = {
 		{name = "mobs:chicken_raw", chance = 1, min = 1, max = 1},
 		{name = "mobs:chicken_raw", chance = 1, min = 1, max = 1},
-		{name = "mobs:chicken_feather", chance = 1, min = 0, max = 2},
+		{name = "mobs:chicken_feather", chance = 1, min = 0, max = 2}
 	},
 	},
 	water_damage = 1,
 	water_damage = 1,
 	lava_damage = 5,
 	lava_damage = 5,
@@ -53,7 +53,7 @@ stepheight = 0.6,
 		walk_speed = 24,
 		walk_speed = 24,
 		run_start = 91,
 		run_start = 91,
 		run_end = 110,
 		run_end = 110,
-		run_speed = 24,
+		run_speed = 24
 	},
 	},
 	follow = {
 	follow = {
 		"farming:seed_wheat", "farming:seed_cotton", "farming:seed_barley",
 		"farming:seed_wheat", "farming:seed_cotton", "farming:seed_barley",
@@ -77,7 +77,7 @@ stepheight = 0.6,
 		self.egg_timer = 0
 		self.egg_timer = 0
 
 
 		if self.child
 		if self.child
-		or math.random(1, 100) > 1 then
+		or math.random(100) > 1 then
 			return
 			return
 		end
 		end
 
 
@@ -88,9 +88,9 @@ stepheight = 0.6,
 		minetest.sound_play("default_place_node_hard", {
 		minetest.sound_play("default_place_node_hard", {
 			pos = pos,
 			pos = pos,
 			gain = 1.0,
 			gain = 1.0,
-			max_hear_distance = 5,
+			max_hear_distance = 5
 		})
 		})
-	end,
+	end
 })
 })
 
 
 
 
@@ -102,17 +102,18 @@ end
 
 
 
 
 if not mobs.custom_spawn_animal then
 if not mobs.custom_spawn_animal then
-mobs:spawn({
-	name = "mobs_animal:chicken",
-	nodes = spawn_on,
-	neighbors = {"group:grass"},
-	min_light = 14,
-	interval = 60,
-	chance = 8000, -- 15000
-	min_height = 5,
-	max_height = 200,
-	day_toggle = true,
-})
+
+	mobs:spawn({
+		name = "mobs_animal:chicken",
+		nodes = spawn_on,
+		neighbors = {"group:grass"},
+		min_light = 14,
+		interval = 60,
+		chance = 8000,
+		min_height = 5,
+		max_height = 200,
+		day_toggle = true
+	})
 end
 end
 
 
 
 
@@ -133,20 +134,20 @@ mobs:register_arrow("mobs_animal:egg_entity", {
 	hit_player = function(self, player)
 	hit_player = function(self, player)
 		player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
 		player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
 			full_punch_interval = 1.0,
 			full_punch_interval = 1.0,
-			damage_groups = {fleshy = 1},
+			damage_groups = {fleshy = 1}
 		}, nil)
 		}, nil)
 	end,
 	end,
 
 
 	hit_mob = function(self, player)
 	hit_mob = function(self, player)
 		player:punch(self.object, 1.0, {
 		player:punch(self.object, 1.0, {
 			full_punch_interval = 1.0,
 			full_punch_interval = 1.0,
-			damage_groups = {fleshy = 1},
+			damage_groups = {fleshy = 1}
 		}, nil)
 		}, nil)
 	end,
 	end,
 
 
 	hit_node = function(self, pos, node)
 	hit_node = function(self, pos, node)
 
 
-		if math.random(1, 10) > 1 then
+		if math.random(10) > 1 then
 			return
 			return
 		end
 		end
 
 
@@ -160,28 +161,10 @@ mobs:register_arrow("mobs_animal:egg_entity", {
 			return
 			return
 		end
 		end
 
 
-		local mob = minetest.add_entity(pos, "mobs_animal:chicken")
-		local ent2 = mob:get_luaentity()
-
-		mob:set_properties({
-			textures = ent2.child_texture[1],
-			visual_size = {
-				x = ent2.base_size.x / 2,
-				y = ent2.base_size.y / 2
-			},
-			collisionbox = {
-				ent2.base_colbox[1] / 2,
-				ent2.base_colbox[2] / 2,
-				ent2.base_colbox[3] / 2,
-				ent2.base_colbox[4] / 2,
-				ent2.base_colbox[5] / 2,
-				ent2.base_colbox[6] / 2
-			},
-		})
+		local staticdata = minetest.serialize(
+			{child = true, tamed = true, owner = self.playername})
 
 
-		ent2.child = true
-		ent2.tamed = true
-		ent2.owner = self.playername
+		minetest.add_entity(pos, "mobs_animal:chicken", staticdata)
 	end
 	end
 })
 })
 
 
@@ -199,7 +182,7 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
 	minetest.sound_play("default_place_node_hard", {
 	minetest.sound_play("default_place_node_hard", {
 		pos = playerpos,
 		pos = playerpos,
 		gain = 1.0,
 		gain = 1.0,
-		max_hear_distance = 5,
+		max_hear_distance = 5
 	})
 	})
 
 
 	local obj = minetest.add_entity({
 	local obj = minetest.add_entity({
@@ -215,13 +198,13 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
 	ent.switch = 1 -- needed so that egg doesn't despawn straight away
 	ent.switch = 1 -- needed so that egg doesn't despawn straight away
 	ent._is_arrow = true -- tell advanced mob protection this is an arrow
 	ent._is_arrow = true -- tell advanced mob protection this is an arrow
 
 
-	obj:setvelocity({
+	obj:set_velocity({
 		x = dir.x * egg_VELOCITY,
 		x = dir.x * egg_VELOCITY,
 		y = dir.y * egg_VELOCITY,
 		y = dir.y * egg_VELOCITY,
 		z = dir.z * egg_VELOCITY
 		z = dir.z * egg_VELOCITY
 	})
 	})
 
 
-	obj:setacceleration({
+	obj:set_acceleration({
 		x = dir.x * -3,
 		x = dir.x * -3,
 		y = -egg_GRAVITY,
 		y = -egg_GRAVITY,
 		z = dir.z * -3
 		z = dir.z * -3
@@ -229,6 +212,7 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
 
 
 	-- pass player name to egg for chick ownership
 	-- pass player name to egg for chick ownership
 	local ent2 = obj:get_luaentity()
 	local ent2 = obj:get_luaentity()
+
 	ent2.playername = player:get_player_name()
 	ent2.playername = player:get_player_name()
 
 
 	item:take_item()
 	item:take_item()
@@ -268,46 +252,46 @@ minetest.register_craftitem(":mobs:chicken_egg_fried", {
 	description = S("Fried Egg"),
 	description = S("Fried Egg"),
 	inventory_image = "mobs_chicken_egg_fried.png",
 	inventory_image = "mobs_chicken_egg_fried.png",
 	on_use = minetest.item_eat(2),
 	on_use = minetest.item_eat(2),
-	groups = {food_egg_fried = 1, flammable = 2},
+	groups = {food_egg_fried = 1, flammable = 2}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	type  =  "cooking",
 	type  =  "cooking",
 	recipe  = "mobs:egg",
 	recipe  = "mobs:egg",
-	output = "mobs:chicken_egg_fried",
+	output = "mobs:chicken_egg_fried"
 })
 })
 
 
 -- raw chicken
 -- raw chicken
 minetest.register_craftitem(":mobs:chicken_raw", {
 minetest.register_craftitem(":mobs:chicken_raw", {
-description = S("Raw Chicken"),
+	description = S("Raw Chicken"),
 	inventory_image = "mobs_chicken_raw.png",
 	inventory_image = "mobs_chicken_raw.png",
 	on_use = minetest.item_eat(2),
 	on_use = minetest.item_eat(2),
-	groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2},
+	groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2}
 })
 })
 
 
 -- cooked chicken
 -- cooked chicken
 minetest.register_craftitem(":mobs:chicken_cooked", {
 minetest.register_craftitem(":mobs:chicken_cooked", {
-description = S("Cooked Chicken"),
+	description = S("Cooked Chicken"),
 	inventory_image = "mobs_chicken_cooked.png",
 	inventory_image = "mobs_chicken_cooked.png",
 	on_use = minetest.item_eat(6),
 	on_use = minetest.item_eat(6),
-	groups = {food_meat = 1, food_chicken = 1, flammable = 2},
+	groups = {food_meat = 1, food_chicken = 1, flammable = 2}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	type  =  "cooking",
 	type  =  "cooking",
 	recipe  = "mobs:chicken_raw",
 	recipe  = "mobs:chicken_raw",
-	output = "mobs:chicken_cooked",
+	output = "mobs:chicken_cooked"
 })
 })
 
 
 -- feather
 -- feather
 minetest.register_craftitem(":mobs:chicken_feather", {
 minetest.register_craftitem(":mobs:chicken_feather", {
 	description = S("Feather"),
 	description = S("Feather"),
 	inventory_image = "mobs_chicken_feather.png",
 	inventory_image = "mobs_chicken_feather.png",
-	groups = {flammable = 2, feather = 1},
+	groups = {flammable = 2, feather = 1}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	type = "fuel",
 	type = "fuel",
 	recipe = "mobs:chicken_feather",
 	recipe = "mobs:chicken_feather",
-	burntime = 1,
+	burntime = 1
 })
 })

+ 91 - 44
cow.lua

@@ -1,5 +1,5 @@
 
 
-local S = mobs.intllib
+local S = mobs.intllib_animal
 
 
 
 
 -- Cow by sirrobzeroone
 -- Cow by sirrobzeroone
@@ -19,7 +19,7 @@ mobs:register_mob("mobs_animal:cow", {
 	mesh = "mobs_cow.b3d",
 	mesh = "mobs_cow.b3d",
 	textures = {
 	textures = {
 		{"mobs_cow.png"},
 		{"mobs_cow.png"},
-		{"mobs_cow2.png"},
+		{"mobs_cow2.png"}
 	},
 	},
 	makes_footstep_sound = true,
 	makes_footstep_sound = true,
 	sounds = {
 	sounds = {
@@ -32,7 +32,7 @@ mobs:register_mob("mobs_animal:cow", {
 	pushable = true,
 	pushable = true,
 	drops = {
 	drops = {
 		{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
 		{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
-		{name = "mobs:leather", chance = 1, min = 0, max = 2},
+		{name = "mobs:leather", chance = 1, min = 0, max = 2}
 	},
 	},
 	water_damage = 0,
 	water_damage = 0,
 	lava_damage = 5,
 	lava_damage = 5,
@@ -56,7 +56,7 @@ mobs:register_mob("mobs_animal:cow", {
 		die_start = 165,
 		die_start = 165,
 		die_end = 185,
 		die_end = 185,
 		die_speed = 10,
 		die_speed = 10,
-		die_loop = false,
+		die_loop = false
 	},
 	},
 	follow = {
 	follow = {
 		"farming:wheat", "default:grass_1", "farming:barley",
 		"farming:wheat", "default:grass_1", "farming:barley",
@@ -70,6 +70,7 @@ mobs:register_mob("mobs_animal:cow", {
 	},
 	},
 --	stay_near = {{"farming:straw", "group:grass"}, 10},
 --	stay_near = {{"farming:straw", "group:grass"}, 10},
 	fear_height = 2,
 	fear_height = 2,
+
 	on_rightclick = function(self, clicker)
 	on_rightclick = function(self, clicker)
 
 
 		-- feed or tame
 		-- feed or tame
@@ -88,9 +89,11 @@ mobs:register_mob("mobs_animal:cow", {
 
 
 		local tool = clicker:get_wielded_item()
 		local tool = clicker:get_wielded_item()
 		local name = clicker:get_player_name()
 		local name = clicker:get_player_name()
+		local item = tool:get_name()
 
 
 		-- milk cow with empty bucket
 		-- milk cow with empty bucket
-		if tool:get_name() == "bucket:bucket_empty" then
+		if item == "bucket:bucket_empty"
+		or item == "wooden_bucket:bucket_wood_empty" then
 
 
 			--if self.gotten == true
 			--if self.gotten == true
 			if self.child == true then
 			if self.child == true then
@@ -98,8 +101,9 @@ mobs:register_mob("mobs_animal:cow", {
 			end
 			end
 
 
 			if self.gotten == true then
 			if self.gotten == true then
-				minetest.chat_send_player(name,
-					S("Cow already milked!"))
+
+				minetest.chat_send_player(name, S("Cow already milked!"))
+
 				return
 				return
 			end
 			end
 
 
@@ -108,12 +112,21 @@ mobs:register_mob("mobs_animal:cow", {
 			tool:take_item()
 			tool:take_item()
 			clicker:set_wielded_item(tool)
 			clicker:set_wielded_item(tool)
 
 
-			if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then
-				clicker:get_inventory():add_item("main", "mobs:bucket_milk")
+			-- which bucket are we using
+			local ret_item = "mobs:bucket_milk"
+
+			if item == "wooden_bucket:bucket_wood_empty" then
+				ret_item = "mobs:wooden_bucket_milk"
+			end
+
+			if inv:room_for_item("main", {name = ret_item}) then
+				clicker:get_inventory():add_item("main", ret_item)
 			else
 			else
 				local pos = self.object:get_pos()
 				local pos = self.object:get_pos()
+
 				pos.y = pos.y + 0.5
 				pos.y = pos.y + 0.5
-				minetest.add_item(pos, {name = "mobs:bucket_milk"})
+
+				minetest.add_item(pos, {name = ret_item})
 			end
 			end
 
 
 			self.gotten = true -- milked
 			self.gotten = true -- milked
@@ -131,22 +144,23 @@ mobs:register_mob("mobs_animal:cow", {
 			self.food = 0
 			self.food = 0
 			self.gotten = false
 			self.gotten = false
 		end
 		end
-	end,
+	end
 })
 })
 
 
 
 
 if not mobs.custom_spawn_animal then
 if not mobs.custom_spawn_animal then
-mobs:spawn({
-	name = "mobs_animal:cow",
-	nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
-	neighbors = {"group:grass"},
-	min_light = 14,
-	interval = 60,
-	chance = 8000, -- 15000
-	min_height = 5,
-	max_height = 200,
-	day_toggle = true,
-})
+
+	mobs:spawn({
+		name = "mobs_animal:cow",
+		nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
+		neighbors = {"group:grass"},
+		min_light = 14,
+		interval = 60,
+		chance = 8000,
+		min_height = 5,
+		max_height = 200,
+		day_toggle = true
+	})
 end
 end
 
 
 
 
@@ -162,7 +176,7 @@ minetest.register_craftitem(":mobs:bucket_milk", {
 	inventory_image = "mobs_bucket_milk.png",
 	inventory_image = "mobs_bucket_milk.png",
 	stack_max = 1,
 	stack_max = 1,
 	on_use = minetest.item_eat(8, "bucket:bucket_empty"),
 	on_use = minetest.item_eat(8, "bucket:bucket_empty"),
-	groups = {food_milk = 1, flammable = 3, drink = 1},
+	groups = {food_milk = 1, flammable = 3, drink = 1}
 })
 })
 
 
 -- glass of milk
 -- glass of milk
@@ -170,22 +184,20 @@ minetest.register_craftitem(":mobs:glass_milk", {
 	description = S("Glass of Milk"),
 	description = S("Glass of Milk"),
 	inventory_image = "mobs_glass_milk.png",
 	inventory_image = "mobs_glass_milk.png",
 	on_use = minetest.item_eat(2, "vessels:drinking_glass"),
 	on_use = minetest.item_eat(2, "vessels:drinking_glass"),
-	groups = {food_milk_glass = 1, flammable = 3, vessel = 1, drink = 1},
+	groups = {food_milk_glass = 1, flammable = 3, vessel = 1, drink = 1}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
---	type = "shapeless",
 	output = "mobs:glass_milk 4",
 	output = "mobs:glass_milk 4",
 	recipe = {
 	recipe = {
 		{"vessels:drinking_glass", "vessels:drinking_glass"},
 		{"vessels:drinking_glass", "vessels:drinking_glass"},
 		{"vessels:drinking_glass", "vessels:drinking_glass"},
 		{"vessels:drinking_glass", "vessels:drinking_glass"},
 		{"mobs:bucket_milk", ""}
 		{"mobs:bucket_milk", ""}
 	},
 	},
-	replacements = { {"mobs:bucket_milk", "bucket:bucket_empty"} }
+	replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
---	type = "shapeless",
 	output = "mobs:bucket_milk",
 	output = "mobs:bucket_milk",
 	recipe = {
 	recipe = {
 		{"group:food_milk_glass", "group:food_milk_glass"},
 		{"group:food_milk_glass", "group:food_milk_glass"},
@@ -206,28 +218,24 @@ minetest.register_craftitem(":mobs:butter", {
 	groups = {food_butter = 1, flammable = 2}
 	groups = {food_butter = 1, flammable = 2}
 })
 })
 
 
+local salt_item = "default:sapling" -- some saplings are high in sodium
+
 if minetest.get_modpath("farming") and farming and farming.mod then
 if minetest.get_modpath("farming") and farming and farming.mod then
+	salt_item = "farming:salt"
+end
+
 minetest.register_craft({
 minetest.register_craft({
-	type = "shapeless",
-	output = "mobs:butter",
-	recipe = {"mobs:bucket_milk", "farming:salt"},
-	replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
-})
-else -- some saplings are high in sodium so makes a good replacement item
-minetest.register_craft({
-	type = "shapeless",
 	output = "mobs:butter",
 	output = "mobs:butter",
-	recipe = {"mobs:bucket_milk", "default:sapling"},
-	replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
+	recipe = {{"mobs:bucket_milk", salt_item}},
+	replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
 })
 })
-end
 
 
 -- cheese wedge
 -- cheese wedge
 minetest.register_craftitem(":mobs:cheese", {
 minetest.register_craftitem(":mobs:cheese", {
 	description = S("Cheese"),
 	description = S("Cheese"),
 	inventory_image = "mobs_cheese.png",
 	inventory_image = "mobs_cheese.png",
 	on_use = minetest.item_eat(4),
 	on_use = minetest.item_eat(4),
-	groups = {food_cheese = 1, flammable = 2},
+	groups = {food_cheese = 1, flammable = 2}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
@@ -235,7 +243,7 @@ minetest.register_craft({
 	output = "mobs:cheese",
 	output = "mobs:cheese",
 	recipe = "mobs:bucket_milk",
 	recipe = "mobs:bucket_milk",
 	cooktime = 5,
 	cooktime = 5,
-	replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
+	replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
 })
 })
 
 
 -- cheese block
 -- cheese block
@@ -252,13 +260,52 @@ minetest.register_craft({
 	recipe = {
 	recipe = {
 		{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
 		{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
 		{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
 		{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
-		{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
+		{"group:food_cheese", "group:food_cheese", "group:food_cheese"}
 	}
 	}
 })
 })
 
 
 minetest.register_craft({
 minetest.register_craft({
 	output = "mobs:cheese 9",
 	output = "mobs:cheese 9",
-	recipe = {
-		{"mobs:cheeseblock"},
-	}
+	recipe = {{"mobs:cheeseblock"}}
 })
 })
+
+
+-- check for wooden bucket mod and add compatibility
+if minetest.get_modpath("wooden_bucket") then
+
+	minetest.register_craftitem(":mobs:wooden_bucket_milk", {
+		description = S("Wooden Bucket of Milk"),
+		inventory_image = "mobs_wooden_bucket_milk.png",
+		stack_max = 1,
+		on_use = minetest.item_eat(8, "wooden_bucket:bucket_wood_empty"),
+		groups = {food_milk = 1, flammable = 3, drink = 1}
+	})
+
+	minetest.register_craft({
+		output = "mobs:glass_milk 4",
+		recipe = {
+			{"vessels:drinking_glass", "vessels:drinking_glass"},
+			{"vessels:drinking_glass", "vessels:drinking_glass"},
+			{"mobs:wooden_bucket_milk", ""}
+		},
+		replacements = {{"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}}
+	})
+
+	minetest.register_craft({
+		output = "mobs:wooden_bucket_milk",
+		recipe = {
+			{"group:food_milk_glass", "group:food_milk_glass"},
+			{"group:food_milk_glass", "group:food_milk_glass"},
+			{"wooden_bucket:bucket_wood_empty", ""}
+		},
+		replacements = {
+			{"group:food_milk_glass", "vessels:drinking_glass 4"}
+		}
+	})
+
+	minetest.register_craft({
+		output = "mobs:butter",
+		recipe = {{"mobs:wooden_bucket_milk", salt_item}},
+		replacements = {{"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}}
+	})
+end

+ 26 - 6
init.lua

@@ -1,11 +1,28 @@
-
 local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
 local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
 
 
-local S = minetest.get_translator and minetest.get_translator("mobs_animal") or
-		dofile(path .. "intllib.lua")
+-- Check for translation method
+local S
+if minetest.get_translator ~= nil then
+	S = minetest.get_translator("mobs_animal") -- 5.x translation function
+else
+	if minetest.get_modpath("intllib") then
+		dofile(minetest.get_modpath("intllib") .. "/init.lua")
+		if intllib.make_gettext_pair then
+			S = intllib.make_gettext_pair() -- new gettext method
+		else
+			S = intllib.Getter() -- old text file method
+		end
+	else -- boilerplate function
+		S = function(str, ...)
+			local args = {...}
+			return str:gsub("@%d+", function(match)
+				return args[tonumber(match:sub(2))]
+			end)
+		end
+	end
+end
 
 
-mobs.intllib = S
+mobs.intllib_animal = S
 
 
 
 
 -- Check for custom mob spawn file
 -- Check for custom mob spawn file
@@ -38,7 +55,9 @@ end
 
 
 
 
 -- Lucky Blocks
 -- Lucky Blocks
-dofile(path .. "lucky_block.lua")
+if minetest.get_modpath("lucky_block") then
+	dofile(path .. "lucky_block.lua")
+end
 
 
 
 
-print (S("[MOD] Mobs Redo Animals loaded"))
+print ("[MOD] Mobs Redo Animals loaded")

+ 0 - 2
intllib.lua

@@ -1,3 +0,0 @@
-dofile(minetest.get_modpath("intllib").."/init.lua")
-

+ 31 - 29
kitten.lua

@@ -1,19 +1,20 @@
 
 
-local S = mobs.intllib
+local S = mobs.intllib_animal
 local hairball = minetest.settings:get("mobs_hairball")
 local hairball = minetest.settings:get("mobs_hairball")
 
 
+
 -- Kitten by Jordach / BFD
 -- Kitten by Jordach / BFD
 
 
 mobs:register_mob("mobs_animal:kitten", {
 mobs:register_mob("mobs_animal:kitten", {
-stepheight = 0.6,
+	stepheight = 0.6,
 	type = "animal",
 	type = "animal",
-specific_attack = {"mobs_animal:rat"},
-damage = 1,
-attack_type = "dogfight",
-attack_animals = true, -- so it can attack rat
-attack_players = false,
-reach = 1,
-stepheight = 1.1,
+	specific_attack = {"mobs_animal:rat"},
+	damage = 1,
+	attack_type = "dogfight",
+	attack_animals = true, -- so it can attack rat
+	attack_players = false,
+	reach = 1,
+	stepheight = 1.1,
 	passive = false,
 	passive = false,
 	hp_min = 5,
 	hp_min = 5,
 	hp_max = 10,
 	hp_max = 10,
@@ -26,11 +27,11 @@ stepheight = 1.1,
 		{"mobs_kitten_striped.png"},
 		{"mobs_kitten_striped.png"},
 		{"mobs_kitten_splotchy.png"},
 		{"mobs_kitten_splotchy.png"},
 		{"mobs_kitten_ginger.png"},
 		{"mobs_kitten_ginger.png"},
-		{"mobs_kitten_sandy.png"},
+		{"mobs_kitten_sandy.png"}
 	},
 	},
 	makes_footstep_sound = false,
 	makes_footstep_sound = false,
 	sounds = {
 	sounds = {
-		random = "mobs_kitten",
+		random = "mobs_kitten"
 	},
 	},
 	walk_velocity = 0.6,
 	walk_velocity = 0.6,
 	walk_chance = 15,
 	walk_chance = 15,
@@ -38,7 +39,7 @@ stepheight = 1.1,
 	runaway = true,
 	runaway = true,
 	jump = false,
 	jump = false,
 	drops = {
 	drops = {
-		{name = "farming:string", chance = 1, min = 0, max = 1},
+		{name = "farming:string", chance = 1, min = 0, max = 1}
 	},
 	},
 	water_damage = 0,
 	water_damage = 0,
 	lava_damage = 5,
 	lava_damage = 5,
@@ -54,7 +55,7 @@ stepheight = 1.1,
 	},
 	},
 	follow = {
 	follow = {
 		"mobs_animal:rat", "group:food_fish_raw",
 		"mobs_animal:rat", "group:food_fish_raw",
-		"mobs_fish:tropical", "xocean:fish_edible"
+		"mobs_fish:tropical", "mobs_fish:clownfish", "xocean:fish_edible"
 	},
 	},
 	view_range = 8,
 	view_range = 8,
 
 
@@ -92,7 +93,7 @@ stepheight = 1.1,
 		self.hairball_timer = 0
 		self.hairball_timer = 0
 
 
 		if self.child
 		if self.child
-		or math.random(1, 250) > 1 then
+		or math.random(250) > 1 then
 			return
 			return
 		end
 		end
 
 
@@ -103,9 +104,9 @@ stepheight = 1.1,
 		minetest.sound_play("default_dig_snappy", {
 		minetest.sound_play("default_dig_snappy", {
 			pos = pos,
 			pos = pos,
 			gain = 1.0,
 			gain = 1.0,
-			max_hear_distance = 5,
+			max_hear_distance = 5
 		})
 		})
-	end,
+	end
 })
 })
 
 
 
 
@@ -116,17 +117,18 @@ if minetest.get_modpath("ethereal") then
 end
 end
 
 
 if not mobs.custom_spawn_animal then
 if not mobs.custom_spawn_animal then
-mobs:spawn({
-	name = "mobs_animal:kitten",
-	nodes = {spawn_on},
-	neighbors = {"group:grass"},
-	min_light = 14,
-	interval = 60,
-	chance = 10000, -- 22000
-	min_height = 5,
-	max_height = 50,
-	day_toggle = true,
-})
+
+	mobs:spawn({
+		name = "mobs_animal:kitten",
+		nodes = {spawn_on},
+		neighbors = {"group:grass"},
+		min_light = 14,
+		interval = 60,
+		chance = 10000,
+		min_height = 5,
+		max_height = 50,
+		day_toggle = true
+	})
 end
 end
 
 
 
 
@@ -164,11 +166,11 @@ minetest.register_craftitem(":mobs:hairball", {
 		minetest.sound_play("default_place_node_hard", {
 		minetest.sound_play("default_place_node_hard", {
 			pos = newpos,
 			pos = newpos,
 			gain = 1.0,
 			gain = 1.0,
-			max_hear_distance = 5,
+			max_hear_distance = 5
 		})
 		})
 
 
 		itemstack:take_item()
 		itemstack:take_item()
 
 
 		return itemstack
 		return itemstack
-	end,
+	end
 })
 })

+ 75 - 3
license.txt

@@ -1,3 +1,7 @@
+
+All my models (K Pavel) and change code on valid license The MIT License
+
+
 The MIT License (MIT)
 The MIT License (MIT)
 
 
 Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
 Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
@@ -20,10 +24,78 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 THE SOFTWARE.
 
 
-Chicken sounds from freesounds.org under CC0
 
 
-Mutton, Pork and Rabbit meat textures by Piezo_ under CC0
+Chicken/Cow/Panda/Pig/Sheep sounds from freesounds.org under CC0
 
 
-Cow textures by sirrobzeroone under CC0
+Mutton, Pork and Rabbit meat textures by Piezo_ under CC0
 
 
 mobs_panda_viking.png by Zlo under CC0
 mobs_panda_viking.png by Zlo under CC0
+
+Models/Textures/Media by Krupnov Pavel (WTFPL)
+  mobs_rat.b3d
+  mobs_rat.png
+  mobs_sheep.b3d
+  mobs_sheep_shaved.b3d
+  mobs_stone_monster.b3d
+  mobs_stone_monster.png
+  mobs_dirt_monster.png
+  mobs_sand_monster.png
+  mobs_tree_monster.b3d
+  mobs_tree_monster.png
+  mobs_oerkki.b3d
+  mobs_oerkki.png
+  mobs_dungeon_master.b3d
+  mobs_dungeon_master.png
+  mobs_fireball.ogg
+
+Models/Textures by Krupno Pavel (MIT)
+  mobs_bee.b3d (converted to .b3d by sirrobzerrone)
+  mobs_bee.png
+  mobs_pumba.b3d (converted to .b3d by sirrobzerrone)
+  mobs_pumba.png
+
+Models/Textures by ExeterDad (CC0)
+  mobs_bunny.b3d
+  mobs_bunny_grey.png
+  mobs_bunny_brown.png
+  mobs_bunny_white.png
+
+Models/Textures by JK Murray (CC0)
+  mobs_chicken.b3d (converted to .b3d by sirrobzerrone)
+  mobs_chicken.png
+  mobs_chicken_brown.png
+  mobs_chicken_black.png
+  mobs_chick.png
+
+Models/Textures by sirrobzerrone (CC0)
+  mobs_cow.b3d
+  mobs_cow.png
+  mobs_cow2.png
+
+Models/Textures by Jordach/BFD (WTFPL)
+  mobs_kitten.b3d
+  mobs_kitten_striped.png
+  mobs_kitten_splotchy.png
+  mobs_kitten_ginger.png
+  mobs_kitten_sandy.png
+
+Sounds by lolamadeus (CC0) http://freesound.org/people/lolamadeus/sounds/196251/
+  mobs_kitten.ogg
+
+Models/Textures by AspireMint (CC BY-SA 3.0)
+  mobs_panda.b3d
+  mobs_panda.png
+
+Models/Textures by D00Med (CC BY-SA 3.0)
+  mobs_penguin.b3d
+  mobs_penguin.png
+
+Textures by LithiumSound's Summer Field Texture Pack (CC BY-SA 4.0 NC ShareAlike International)
+  mobs_sheep_base.png
+  mobs_sheep_shaved.png
+  mobs_sheep_wool.png
+
+Sounds by Cyberpangolin (WTFPL) https://forum.minetest.net/viewtopic.php?t=10798
+  mobs_bee.ogg
+  mobs_spider.ogg
+  mobs_rat.ogg

+ 46 - 0
locale/mobs_animal.es.tr

@@ -0,0 +1,46 @@
+# textdomain: mobs_animal
+Bee=Abeja
+Honey=Miel
+Beehive=Colmena
+Honey Block=Bloque de Mel
+Bunny=Conejo
+Raw Rabbit=Carne de Conejo
+Cooked Rabbit=Conejo Asado
+Rabbit Hide=Conejo oculto
+Chicken=Gallina
+Chicken Egg=Huevo de Gallina
+Fried Egg=Huevo Frito
+Raw Chicken=Gallina cruda
+Cooked Chicken=Gallina Asada
+Feather=Pluma
+Cow already milked!=Vaca ordeñada
+Cow=Vaca
+Bucket of Milk=Balde de leche
+Cheese=Queso
+Cheese Block=Bloque de queso
+[MOD] Mobs Redo 'Animals' loaded=[MOD] Mobs redo Animals cargado
+Kitten=Gato
+Penguin=Pinguino
+Rat=Raton
+Cooked Rat=Raton Asado
+Black=Negro
+Blue=Azul
+Brown=Marrom
+Cyan=Cian
+Dark Green=Verde Oscuro
+Dark Grey=Gris Oscuro
+Green=Verde
+Grey=Gris
+Magenta=Magenta
+Orange=Naranja
+Pink=Rosa
+Red=Rojo
+Violet=Violeta
+White=Blanco
+Yellow=Amarillo
+@1 Sheep=Oveja @1 
+Raw Mutton=Carnero crudo
+Cooked Mutton=Carnero Assado
+Warthog=Javali
+Raw Porkchop=Costilla de Jabali crudo
+Cooked Porkchop=Costilla de Javali Assada

+ 0 - 0
lucky_block.lua


Some files were not shown because too many files changed in this diff