Commit 467123b4 authored by Milan's avatar Milan
Browse files

merge upstream

parents 95eb3aa5 18e5094a
Loading
Loading
Loading
Loading
+27 −13
Original line number Diff line number Diff line

local S = mobs.intllib

-- Bee by KrupnoPavel
-- Bee by KrupnoPavel (.b3d model by sirrobzeroone)

mobs:register_mob("mobs_animal:bee", {
	type = "animal",
@@ -11,10 +11,12 @@ mobs:register_mob("mobs_animal:bee", {
	armor = 200,
	collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.5, 0.2},
	visual = "mesh",
	mesh = "mobs_bee.x",
	mesh = "mobs_bee.b3d",
	textures = {
		{"mobs_bee.png"},
	},
	blood_texture = "mobs_bee_inv.png",
	blood_amount = 1,
	makes_footstep_sound = false,
	sounds = {
		random = "mobs_bee",
@@ -24,7 +26,7 @@ mobs:register_mob("mobs_animal:bee", {
	drops = {
		{name = "mobs:pollen", chance = 2, min = 1, max = 2},
	},
	water_damage = 2,
	water_damage = 1,
	lava_damage = 2,
	light_damage = 0,
	fall_damage = 0,
@@ -39,10 +41,11 @@ mobs:register_mob("mobs_animal:bee", {
	on_rightclick = function(self, clicker)
		mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:bee")
	end,
--	after_activate = function(self, staticdata, def, dtime)
--		print ("------", self.name, dtime, self.health)
--	end,
})

-- Bee by tchncs

mobs:register_mob("mobs_animal:bee_angry", {
    type = "monster",
    passive = false,
@@ -85,11 +88,21 @@ mobs:register_mob("mobs_animal:bee_angry", {
    end,
})

mobs:register_spawn("mobs_animal:bee", {"group:flower"}, 20, 10, 9000, 2, 2000, true)

mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png", 0)
mobs:register_egg("mobs_animal:bee_angry", S("Angry Bee"), "mobs_bee_inv.png", 0)

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:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png")

-- compatibility
mobs:alias_mob("mobs:bee", "mobs_animal:bee")

@@ -97,7 +110,8 @@ mobs:alias_mob("mobs:bee", "mobs_animal:bee")
minetest.register_craftitem(":mobs:honey", {
	description = S("Honey"),
	inventory_image = "mobs_honey_inv.png",
	on_use = minetest.item_eat(6),
	on_use = minetest.item_eat(4),
	groups = {food_honey = 1, food_sugar = 1, flammable = 1},
})

-- pollen
@@ -145,7 +159,7 @@ minetest.register_node(":mobs:beehive", {

	after_place_node = function(pos, placer, itemstack)

		if placer:is_player() then
		if placer and placer:is_player() then

			minetest.set_node(pos, {name = "mobs:beehive", param2 = 1})

@@ -217,7 +231,7 @@ minetest.register_craft({
-- beehive workings
minetest.register_abm({
	nodenames = {"mobs:beehive"},
	interval = 6,
	interval = 12,
	chance = 6,
	catch_up = false,
	action = function(pos, node)
@@ -236,7 +250,7 @@ minetest.register_abm({
		local honey = inv:get_stack("beehive", 1):get_count()

		-- is hive full?
		if honey > 19 then
		if honey > 11 then
			return
		end

+81 −6
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ local S = mobs.intllib
-- Bunny by ExeterDad

mobs:register_mob("mobs_animal:bunny", {
stepheight = 0.6,
	type = "animal",
	passive = true,
	reach = 1,
@@ -25,12 +26,15 @@ mobs:register_mob("mobs_animal:bunny", {
	walk_velocity = 1,
	run_velocity = 2,
	runaway = true,
	runaway_from = {"mobs_animal:pumba", "player"},
	jump = true,
	jump_height = 6,
	drops = {
		{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
		{name = "ethereal:bone", chance = 2, min = 1, max = 1}
		{name = "ethereal:bone", chance = 2, min = 1, max = 1},
		{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1},
	},
	water_damage = 1,
	water_damage = 0,
	lava_damage = 4,
	light_damage = 0,
	fear_height = 2,
@@ -60,7 +64,7 @@ mobs:register_mob("mobs_animal:bunny", {

		if item:get_name() == "mobs:lava_orb" then

			if not minetest.setting_getbool("creative_mode") then
			if not mobs.is_creative(clicker:get_player_name()) then
				item:take_item()
				clicker:set_wielded_item(item)
			end
@@ -71,11 +75,34 @@ mobs:register_mob("mobs_animal:bunny", {

			self.type = "monster"
			self.health = 20
			self.passive = false

			return
		end
	end,
	on_spawn = function(self)

		local pos = self.object:get_pos() ; pos.y = pos.y - 1

		-- white snowy bunny
		if minetest.find_node_near(pos, 1,
				{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
			self.base_texture = {"mobs_bunny_white.png"}
			self.object:set_properties({textures = self.base_texture})
		-- brown desert bunny
		elseif minetest.find_node_near(pos, 1,
				{"default:desert_sand", "default:desert_stone"}) then
			self.base_texture = {"mobs_bunny_brown.png"}
			self.object:set_properties({textures = self.base_texture})
		-- grey stone bunny
		elseif minetest.find_node_near(pos, 1,
				{"default:stone", "default:gravel"}) then
			self.base_texture = {"mobs_bunny_grey.png"}
			self.object:set_properties({textures = self.base_texture})
		end

		return true -- run only once, false/nil runs every activation
	end,
	attack_type = "dogfight",
	damage = 5,
})
@@ -90,9 +117,11 @@ end
mobs:spawn({
	name = "mobs_animal:bunny",
	nodes = {spawn_on},
	min_light = 10,
	chance = 15000,
	min_height = 0,
	neighbors = {"group:grass"},
	min_light = 14,
	interval = 60,
	chance = 8000, -- 15000
	min_height = 5,
	max_height = 310,
	day_toggle = true,
})
@@ -102,3 +131,49 @@ mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0)


mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") -- compatibility


-- raw rabbit
minetest.register_craftitem(":mobs:rabbit_raw", {
	description = S("Raw Rabbit"),
	inventory_image = "mobs_rabbit_raw.png",
	on_use = minetest.item_eat(3),
	groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2},
})

-- cooked rabbit
minetest.register_craftitem(":mobs:rabbit_cooked", {
	description = S("Cooked Rabbit"),
	inventory_image = "mobs_rabbit_cooked.png",
	on_use = minetest.item_eat(5),
	groups = {food_meat = 1, food_rabbit = 1, flammable = 2},
})

minetest.register_craft({
	type = "cooking",
	output = "mobs:rabbit_cooked",
	recipe = "mobs:rabbit_raw",
	cooktime = 5,
})

-- rabbit hide
minetest.register_craftitem(":mobs:rabbit_hide", {
	description = S("Rabbit Hide"),
	inventory_image = "mobs_rabbit_hide.png",
	groups = {flammable = 2},
})

minetest.register_craft({
	type = "fuel",
	recipe = "mobs:rabbit_hide",
	burntime = 2,
})

minetest.register_craft({
	output = "mobs:leather",
	type = "shapeless",
	recipe = {
		"mobs:rabbit_hide", "mobs:rabbit_hide",
		"mobs:rabbit_hide", "mobs:rabbit_hide"
	}
})
+40 −22
Original line number Diff line number Diff line
@@ -2,9 +2,10 @@
local S = mobs.intllib


-- Chicken by JK Murray
-- Chicken by JK Murray and Sirrobzeroone

mobs:register_mob("mobs_animal:chicken", {
stepheight = 0.6,
	type = "animal",
	passive = true,
	hp_min = 5,
@@ -12,17 +13,14 @@ mobs:register_mob("mobs_animal:chicken", {
	armor = 200,
	collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3},
	visual = "mesh",
	mesh = "mobs_chicken.x",
	-- seems a lot of textures but this fixes the problem with the model
	mesh = "mobs_chicken.b3d",
	textures = {
		{"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png",
		"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"},
		{"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png",
		"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"},
		{"mobs_chicken.png"}, -- white
		{"mobs_chicken_brown.png"},
		{"mobs_chicken_black.png"},
	},
	child_texture = {
		{"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png",
		"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png"},
		{"mobs_chick.png"},
	},
	makes_footstep_sound = true,
	sounds = {
@@ -31,10 +29,11 @@ mobs:register_mob("mobs_animal:chicken", {
	walk_velocity = 1,
	run_velocity = 3,
	runaway = true,
	runaway_from = {"player", "mobs_animal:pumba"},
	drops = {
		{name = "mobs:chicken_raw", chance = 1, min = 2, max = 2},
		{name = "mobs:chicken_raw", chance = 1, min = 1, max = 2},
		{name = "ethereal:bone", chance = 2, min = 1, max = 1},
		{name = "mobs:chicken_feather", chance = 3, min = 1, max = 2},
		{name = "mobs:chicken_feather", chance = 1, min = 0, max = 2},
	},
	water_damage = 1,
	lava_damage = 5,
@@ -44,10 +43,18 @@ mobs:register_mob("mobs_animal:chicken", {
	fear_height = 5,
	animation = {
		speed_normal = 15,
		stand_start = 0,
		stand_end = 1, -- 20
		walk_start = 20,
		walk_end = 40,
		stand_start = 1,
		stand_end = 30,
		stand_speed = 28,
		stand1_start = 31,
		stand1_end = 70,
		stand1_speed = 32,
		walk_start = 71,
		walk_end = 90,
		walk_speed = 24,
		run_start = 91,
		run_end = 110,
		run_speed = 24,
	},
	follow = {"farming:seed_wheat", "farming:seed_cotton"},
	view_range = 5,
@@ -72,7 +79,7 @@ mobs:register_mob("mobs_animal:chicken", {
			return
		end

		local pos = self.object:getpos()
		local pos = self.object:get_pos()

		minetest.add_item(pos, "mobs:egg")

@@ -94,10 +101,11 @@ end
mobs:spawn({
	name = "mobs_animal:chicken",
	nodes = {spawn_on},
	min_light = 10,
	chance = 15000,
	active_object_count = 2,
	min_height = 0,
	neighbors = {"group:grass"},
	min_light = 14,
	interval = 60,
	chance = 8000, -- 15000
	min_height = 2,
	max_height = 120,
	day_toggle = true,
})
@@ -181,7 +189,7 @@ local egg_VELOCITY = 19
-- shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)

	local playerpos = player:getpos()
	local playerpos = player:get_pos()

	minetest.sound_play("default_place_node_hard", {
		pos = playerpos,
@@ -239,7 +247,7 @@ minetest.register_node(":mobs:egg", {
		type = "fixed",
		fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
	},
	groups = {snappy = 2, dig_immediate = 3},
	groups = {food_egg = 1, snappy = 2, dig_immediate = 3},
	after_place_node = function(pos, placer, itemstack)
		if placer:is_player() then
			minetest.set_node(pos, {name = "mobs:egg", param2 = 1})
@@ -254,6 +262,7 @@ minetest.register_craftitem(":mobs:chicken_egg_fried", {
	description = S("Fried Egg"),
	inventory_image = "mobs_chicken_egg_fried.png",
	on_use = minetest.item_eat(2),
	groups = {food_egg_fried = 1, flammable = 2},
})

minetest.register_craft({
@@ -267,6 +276,7 @@ minetest.register_craftitem(":mobs:chicken_raw", {
description = S("Raw Chicken"),
	inventory_image = "mobs_chicken_raw.png",
	on_use = minetest.item_eat(2),
	groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2},
})

-- cooked chicken
@@ -274,6 +284,7 @@ minetest.register_craftitem(":mobs:chicken_cooked", {
description = S("Cooked Chicken"),
	inventory_image = "mobs_chicken_cooked.png",
	on_use = minetest.item_eat(6),
	groups = {food_meat = 1, food_chicken = 1, flammable = 2},
})

minetest.register_craft({
@@ -286,4 +297,11 @@ minetest.register_craft({
minetest.register_craftitem(":mobs:chicken_feather", {
	description = S("Feather"),
	inventory_image = "mobs_chicken_feather.png",
	groups = {flammable = 2},
})

minetest.register_craft({
	type = "fuel",
	recipe = "mobs:chicken_feather",
	burntime = 1,
})
+118 −34
Original line number Diff line number Diff line
@@ -2,20 +2,21 @@
local S = mobs.intllib


-- Cow by Krupnovpavel (additional texture by JurajVajda)
-- Cow by sirrobzeroone

mobs:register_mob("mobs_animal:cow", {
	type = "animal",
	passive = false,
	attack_type = "dogfight",
	attack_npcs = false,
	reach = 2,
	damage = 4,
	hp_min = 5,
	hp_max = 20,
	armor = 200,
	collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
	collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.2, 0.4},
	visual = "mesh",
	mesh = "mobs_cow.x",
	mesh = "mobs_cow.b3d",
	textures = {
		{"mobs_cow.png"},
		{"mobs_cow2.png"},
@@ -27,40 +28,58 @@ mobs:register_mob("mobs_animal:cow", {
	walk_velocity = 1,
	run_velocity = 2,
	jump = true,
	jump_height = 6,
	pushable = true,
	drops = {
		{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
		{name = "mobs:leather", chance = 1, min = 1, max = 2},
		{name = "mobs:leather", chance = 1, min = 0, max = 2},
		{name = "ethereal:bone", chance = 2, min = 2, max = 6}
	},
	water_damage = 1,
	water_damage = 0,
	lava_damage = 5,
	light_damage = 0,
	animation = {
		speed_normal = 15,
		speed_run = 15,
		stand_start = 0,
		stand_end = 30,
		walk_start = 35,
		walk_end = 65,
		run_start = 105,
		run_end = 135,
		punch_start = 70,
		punch_end = 100,
		stand_speed = 20,
		stand1_start = 35,
		stand1_end = 75,
		stand1_speed = 20,
		walk_start = 85,
		walk_end = 114,
		walk_speed = 20,
		run_start = 120,
		run_end = 140,
		run_speed = 30,
		punch_start = 145,
		punch_end = 160,
		punch_speed = 20,
		die_start = 165,
		die_end = 185,
		die_speed = 10,
		die_loop = false,
	},
	follow = "farming:wheat",
	follow = {"farming:wheat", "default:grass_1"},
	view_range = 8,
	replace_rate = 10,
--	replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"},
	replace_what = {
		{"group:grass", "air", 0},
		{"default:dirt_with_grass", "default:dirt", -1}
	},
	replace_with = "air",
	fear_height = 2,
	on_rightclick = function(self, clicker)

		-- feed or tame
		if mobs:feed_tame(self, clicker, 8, true, true) then return end
		if mobs:feed_tame(self, clicker, 8, true, true) then

			-- if fed 7x wheat or grass then cow can be milked again
			if self.food and self.food > 6 then
				self.gotten = false
			end

			return
		end

		if mobs:protect(self, clicker) then return end
		if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end

@@ -83,12 +102,13 @@ mobs:register_mob("mobs_animal:cow", {

			local inv = clicker:get_inventory()

			inv:remove_item("main", "bucket:bucket_empty")
			tool:take_item()
			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")
			else
				local pos = self.object:getpos()
				local pos = self.object:get_pos()
				pos.y = pos.y + 0.5
				minetest.add_item(pos, {name = "mobs:bucket_milk"})
			end
@@ -98,27 +118,34 @@ mobs:register_mob("mobs_animal:cow", {
			return
		end
	end,
})

	on_replace = function(self, pos, oldnode, newnode)

local spawn_on = "default:dirt_with_grass"
		self.food = (self.food or 0) + 1

if minetest.get_modpath("ethereal") then
	spawn_on = "ethereal:green_dirt"
		-- if cow replaces 8x grass then it can be milked again
		if self.food >= 8 then
			self.food = 0
			self.gotten = false
		end
	end,
})


mobs:spawn({
	name = "mobs_animal:cow",
	nodes = {spawn_on},
	min_light = 10,
	chance = 15000,
	min_height = 0,
	nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
	neighbors = {"group:grass"},
	min_light = 14,
	interval = 60,
	chance = 8000, -- 15000
	min_height = 5,
	max_height = 210,
	day_toggle = true,
})


mobs:register_egg("mobs_animal:cow", S("Cow"), "default_grass.png", 1)
mobs:register_egg("mobs_animal:cow", S("Cow"), "mobs_cow_inv.png")


mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility
@@ -129,14 +156,71 @@ minetest.register_craftitem(":mobs:bucket_milk", {
	description = S("Bucket of Milk"),
	inventory_image = "mobs_bucket_milk.png",
	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},
})

-- glass of milk
minetest.register_craftitem(":mobs:glass_milk", {
	description = S("Glass of Milk"),
	inventory_image = "mobs_glass_milk.png",
	on_use = minetest.item_eat(2, "vessels:drinking_glass"),
	groups = {food_milk_glass = 1, flammable = 3, vessel = 1},
})

minetest.register_craft({
	type = "shapeless",
	output = "mobs:glass_milk 4",
	recipe = {
		"vessels:drinking_glass", "vessels:drinking_glass",
		"vessels:drinking_glass", "vessels:drinking_glass",
		"mobs:bucket_milk"
	},
	replacements = { {"mobs:bucket_milk", "bucket:bucket_empty"} }
})

minetest.register_craft({
	type = "shapeless",
	output = "mobs:bucket_milk",
	recipe = {
		"mobs:glass_milk", "mobs:glass_milk",
		"mobs:glass_milk", "mobs:glass_milk",
		"bucket:bucket_empty"
	},
	replacements = { {"mobs:glass_milk", "vessels:drinking_glass 4"} }
})


-- butter
minetest.register_craftitem(":mobs:butter", {
	description = S("Butter"),
	inventory_image = "mobs_butter.png",
	on_use = minetest.item_eat(1),
	groups = {food_butter = 1, flammable = 2},
})

if minetest.get_modpath("farming") and farming and farming.mod then
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",
	recipe = {"mobs:bucket_milk", "default:sapling"},
	replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
})
end

-- cheese wedge
minetest.register_craftitem(":mobs:cheese", {
	description = S("Cheese"),
	inventory_image = "mobs_cheese.png",
	on_use = minetest.item_eat(4),
	groups = {food_cheese = 1, flammable = 2},
})

minetest.register_craft({
@@ -159,15 +243,15 @@ minetest.register_node(":mobs:cheeseblock", {
minetest.register_craft({
	output = "mobs:cheeseblock",
	recipe = {
		{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
		{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
		{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
		{"mobs:cheese", "mobs:cheese", "mobs:cheese"},
		{"mobs:cheese", "mobs:cheese", "mobs:cheese"},
		{"mobs:cheese", "mobs:cheese", "mobs:cheese"},
	}
})

minetest.register_craft({
	output = "mobs:cheese 9",
	recipe = {
		{'mobs:cheeseblock'},
		{"mobs:cheeseblock"},
	}
})
+2 −1
Original line number Diff line number Diff line
@@ -17,7 +17,8 @@ dofile(path .. "/bee.lua") -- KrupnoPavel
dofile(path .. "/bunny.lua") -- ExeterDad
dofile(path .. "/kitten.lua") -- Jordach/BFD
dofile(path .. "/penguin.lua") -- D00Med
dofile(path .. "/panda.lua") -- AspireMint

dofile(path .. "/lucky_block.lua")

print (S("[MOD] Mobs Redo 'Animals' loaded"))
print (S("[MOD] Mobs Redo Animals loaded"))
Loading