forked from mtcontrib/mobs_animal
		
	tweak and tidy code
This commit is contained in:
		
							
								
								
									
										75
									
								
								bee.lua
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								bee.lua
									
									
									
									
									
								
							| @@ -1,8 +1,5 @@ | ||||
| -- Translation support | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- check for default mod | ||||
| local mod_def = minetest.get_modpath("default") | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Bee by KrupnoPavel (.b3d model by sirrobzeroone) | ||||
|  | ||||
| @@ -15,15 +12,11 @@ mobs:register_mob("mobs_animal:bee", { | ||||
| 	collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.5, 0.2}, | ||||
| 	visual = "mesh", | ||||
| 	mesh = "mobs_bee.b3d", | ||||
| 	textures = { | ||||
| 		{"mobs_bee.png"} | ||||
| 	}, | ||||
| 	textures = { {"mobs_bee.png"} }, | ||||
| 	blood_texture = "mobs_bee_inv.png", | ||||
| 	blood_amount = 1, | ||||
| 	makes_footstep_sound = false, | ||||
| 	sounds = { | ||||
| 		random = "mobs_bee" | ||||
| 	}, | ||||
| 	sounds = { random = "mobs_bee" }, | ||||
| 	walk_velocity = 1, | ||||
| 	jump = true, | ||||
| 	drops = { | ||||
| @@ -36,10 +29,8 @@ mobs:register_mob("mobs_animal:bee", { | ||||
| 	fall_speed = -3, | ||||
| 	animation = { | ||||
| 		speed_normal = 15, | ||||
| 		stand_start = 0, | ||||
| 		stand_end = 30, | ||||
| 		walk_start = 35, | ||||
| 		walk_end = 65 | ||||
| 		stand_start = 0, stand_end = 30, | ||||
| 		walk_start = 35, walk_end = 65 | ||||
| 	}, | ||||
|  | ||||
| 	on_rightclick = function(self, clicker) | ||||
| @@ -51,6 +42,8 @@ mobs:register_mob("mobs_animal:bee", { | ||||
| --	end, | ||||
| }) | ||||
|  | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| 	mobs:spawn({ | ||||
| @@ -65,16 +58,16 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| 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") | ||||
|  | ||||
|  | ||||
| -- honey | ||||
|  | ||||
| minetest.register_craftitem(":mobs:honey", { | ||||
| 	description = S("Honey"), | ||||
| 	inventory_image = "mobs_honey_inv.png", | ||||
| @@ -84,7 +77,8 @@ minetest.register_craftitem(":mobs:honey", { | ||||
|  | ||||
| mobs.add_eatable("mobs:honey", 4) | ||||
|  | ||||
| -- beehive (when placed spawns bee) | ||||
| -- beehive (1 in 4 chance of spawning bee when placed) | ||||
|  | ||||
| minetest.register_node(":mobs:beehive", { | ||||
| 	description = S("Beehive"), | ||||
| 	drawtype = "plantlike", | ||||
| @@ -95,7 +89,7 @@ minetest.register_node(":mobs:beehive", { | ||||
| 	walkable = true, | ||||
| 	groups = {oddly_breakable_by_hand = 3, flammable = 1, disable_suffocation = 1}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = mod_def and default.node_sound_defaults(), | ||||
| 	sounds = mobs.node_sound_defaults(), | ||||
|  | ||||
| 	on_construct = function(pos) | ||||
|  | ||||
| @@ -131,48 +125,42 @@ minetest.register_node(":mobs:beehive", { | ||||
|  | ||||
| 			local hp = puncher and puncher:get_hp() | ||||
|  | ||||
| 			if hp then | ||||
| 				puncher:set_hp(hp - 4) | ||||
| 			end | ||||
| 			if hp then puncher:set_hp(hp - 4) end | ||||
| 		end) | ||||
| 	end, | ||||
|  | ||||
| 	allow_metadata_inventory_put = function(pos, listname, index, stack, player) | ||||
|  | ||||
| 		if listname == "beehive" then | ||||
| 			return 0 | ||||
| 		end | ||||
| 		if listname == "beehive" then return 0 end | ||||
|  | ||||
| 		return stack:get_count() | ||||
| 	end, | ||||
|  | ||||
| 	can_dig = function(pos,player) | ||||
| 	can_dig = function(pos,player) -- can only dig when no honey inside | ||||
|  | ||||
| 		local meta = minetest.get_meta(pos) | ||||
|  | ||||
| 		-- only dig beehive if no honey inside | ||||
| 		return meta:get_inventory():is_empty("beehive") | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| -- beehive recipe | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "mobs:beehive", | ||||
| 	recipe = { | ||||
| 		{"mobs:bee","mobs:bee","mobs:bee"} | ||||
| 	} | ||||
| 	recipe = {{"mobs:bee","mobs:bee","mobs:bee"}} | ||||
| }) | ||||
|  | ||||
| -- honey block | ||||
| -- honey block and craft recipes | ||||
|  | ||||
| minetest.register_node(":mobs:honey_block", { | ||||
| 	description = S("Honey Block"), | ||||
| 	tiles = {"mobs_honey_block.png"}, | ||||
| 	groups = {snappy = 3, flammable = 2}, | ||||
| 	is_ground_content = false, | ||||
| 	sounds = mod_def and default.node_sound_dirt_defaults() | ||||
| 	sounds = mobs.node_sound_dirt_defaults() | ||||
| }) | ||||
|  | ||||
| -- recipe | ||||
| minetest.register_craft({ | ||||
| 	output = "mobs:honey_block", | ||||
| 	recipe = { | ||||
| @@ -189,38 +177,31 @@ minetest.register_craft({ | ||||
| 	} | ||||
| }) | ||||
|  | ||||
|  | ||||
| -- beehive workings | ||||
|  | ||||
| minetest.register_abm({ | ||||
| 	nodenames = {"mobs:beehive"}, | ||||
| 	interval = 12, | ||||
| 	chance = 6, | ||||
| 	catch_up = false, | ||||
|  | ||||
| 	action = function(pos, node) | ||||
|  | ||||
| 		-- bee's only make honey during the day | ||||
| 		local tod = (minetest.get_timeofday() or 0) * 24000 | ||||
|  | ||||
| 		if tod < 5500 or tod > 18500 then | ||||
| 			return | ||||
| 		end | ||||
| 		if tod < 5500 or tod > 18500 then return end | ||||
|  | ||||
| 		-- is hive full? | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		if not meta then return end -- for older beehives | ||||
| 		local meta = minetest.get_meta(pos) ; if not meta then return end | ||||
| 		local inv = meta:get_inventory() | ||||
| 		local honey = inv:get_stack("beehive", 1):get_count() | ||||
|  | ||||
| 		-- is hive full? | ||||
| 		if honey > 11 then | ||||
| 			return | ||||
| 		end | ||||
| 		if honey > 11 then return end -- return if hive full | ||||
|  | ||||
| 		-- no flowers no honey, nuff said! | ||||
| 		if #minetest.find_nodes_in_area_under_air( | ||||
| 			{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4}, | ||||
| 			{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4}, | ||||
| 			"group:flower") > 3 then | ||||
| 				{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4}, | ||||
| 				{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4}, "group:flower") > 3 then | ||||
|  | ||||
| 			inv:add_item("beehive", "mobs:honey") | ||||
| 		end | ||||
|   | ||||
							
								
								
									
										44
									
								
								bunny.lua
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								bunny.lua
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| -- Translation support | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Bunny by ExeterDad | ||||
| @@ -38,12 +38,9 @@ mobs:register_mob("mobs_animal:bunny", { | ||||
| 	fear_height = 2, | ||||
| 	animation = { | ||||
| 		speed_normal = 15, | ||||
| 		stand_start = 1, | ||||
| 		stand_end = 15, | ||||
| 		walk_start = 16, | ||||
| 		walk_end = 24, | ||||
| 		punch_start = 16, | ||||
| 		punch_end = 24 | ||||
| 		stand_start = 1, stand_end = 15, | ||||
| 		walk_start = 16, walk_end = 24, | ||||
| 		punch_start = 16, punch_end = 24 | ||||
| 	}, | ||||
| 	follow = {"farming:carrot", "farming_plus:carrot_item", "default:grass_1"}, | ||||
| 	view_range = 8, | ||||
| @@ -93,9 +90,7 @@ mobs:register_mob("mobs_animal:bunny", { | ||||
| 			obj:set_properties({textures = {"mobs_bunny_evil.png"}, hp_max = 20}) | ||||
|  | ||||
| 			-- remove old bunny | ||||
| 			if obj:get_luaentity() then | ||||
| 				mobs:remove(self, true) | ||||
| 			end | ||||
| 			if obj:get_luaentity() then mobs:remove(self, true) end | ||||
| 		end | ||||
| 	end, | ||||
|  | ||||
| @@ -126,15 +121,16 @@ mobs:register_mob("mobs_animal:bunny", { | ||||
| 	end | ||||
| }) | ||||
|  | ||||
|  | ||||
| local spawn_on = "default:dirt_with_grass" | ||||
|  | ||||
| if minetest.get_modpath("ethereal") then | ||||
| 	spawn_on = "ethereal:prairie_dirt" | ||||
| end | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| 	local spawn_on = "default:dirt_with_grass" | ||||
|  | ||||
| 	if minetest.get_modpath("ethereal") then | ||||
| 		spawn_on = "ethereal:prairie_dirt" | ||||
| 	end | ||||
|  | ||||
| 	mobs:spawn({ | ||||
| 		name = "mobs_animal:bunny", | ||||
| 		nodes = {spawn_on}, | ||||
| @@ -148,14 +144,16 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0) | ||||
|  | ||||
| -- compatibility (only used for older mobs compatibility) | ||||
|  | ||||
| mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") -- compatibility | ||||
|  | ||||
| mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") | ||||
|  | ||||
| -- raw rabbit | ||||
|  | ||||
| minetest.register_craftitem(":mobs:rabbit_raw", { | ||||
| 	description = S("Raw Rabbit"), | ||||
| 	inventory_image = "mobs_rabbit_raw.png", | ||||
| @@ -166,6 +164,7 @@ minetest.register_craftitem(":mobs:rabbit_raw", { | ||||
| mobs.add_eatable("mobs:rabbit_raw", 3) | ||||
|  | ||||
| -- cooked rabbit | ||||
|  | ||||
| minetest.register_craftitem(":mobs:rabbit_cooked", { | ||||
| 	description = S("Cooked Rabbit"), | ||||
| 	inventory_image = "mobs_rabbit_cooked.png", | ||||
| @@ -182,18 +181,15 @@ minetest.register_craft({ | ||||
| 	cooktime = 5 | ||||
| }) | ||||
|  | ||||
| -- rabbit hide | ||||
| -- rabbit hide and recipes | ||||
|  | ||||
| minetest.register_craftitem(":mobs:rabbit_hide", { | ||||
| 	description = S("Rabbit Hide"), | ||||
| 	inventory_image = "mobs_rabbit_hide.png", | ||||
| 	groups = {flammable = 2, pelt = 1} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "mobs:rabbit_hide", | ||||
| 	burntime = 2 | ||||
| }) | ||||
| minetest.register_craft({type = "fuel", recipe = "mobs:rabbit_hide", burntime = 2}) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "mobs:leather", | ||||
|   | ||||
							
								
								
									
										116
									
								
								chicken.lua
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								chicken.lua
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| -- Translation support | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Chicken by JK Murray and Sirrobzeroone | ||||
| @@ -18,13 +18,9 @@ mobs:register_mob("mobs_animal:chicken", { | ||||
| 		{"mobs_chicken_brown.png"}, | ||||
| 		{"mobs_chicken_black.png"} | ||||
| 	}, | ||||
| 	child_texture = { | ||||
| 		{"mobs_chick.png"} | ||||
| 	}, | ||||
| 	child_texture = {{"mobs_chick.png"}}, | ||||
| 	makes_footstep_sound = true, | ||||
| 	sounds = { | ||||
| 		random = "mobs_chicken" | ||||
| 	}, | ||||
| 	sounds = {random = "mobs_chicken"}, | ||||
| 	walk_velocity = 1, | ||||
| 	run_velocity = 3, | ||||
| 	runaway = true, | ||||
| @@ -41,18 +37,10 @@ mobs:register_mob("mobs_animal:chicken", { | ||||
| 	fear_height = 5, | ||||
| 	animation = { | ||||
| 		speed_normal = 15, | ||||
| 		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 | ||||
| 		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", "farming:seed_barley", | ||||
| @@ -84,14 +72,10 @@ mobs:register_mob("mobs_animal:chicken", { | ||||
| 	do_custom = function(self, dtime) | ||||
|  | ||||
| 		self.egg_timer = (self.egg_timer or 0) + dtime | ||||
| 		if self.egg_timer < 10 then | ||||
| 			return | ||||
| 		end | ||||
| 		if self.egg_timer < 10 then return end | ||||
| 		self.egg_timer = 0 | ||||
|  | ||||
| 		if self.child then | ||||
| 			return | ||||
| 		end | ||||
| 		if self.child then return end | ||||
|  | ||||
| 		local pos = self.object:get_pos() ; if not pos then return end | ||||
|  | ||||
| @@ -99,11 +83,8 @@ mobs:register_mob("mobs_animal:chicken", { | ||||
|  | ||||
| 			minetest.add_item(pos, "mobs:egg") | ||||
|  | ||||
| 			minetest.sound_play("default_place_node_hard", { | ||||
| 				pos = pos, | ||||
| 				gain = 1.0, | ||||
| 				max_hear_distance = 5 | ||||
| 			}, true) | ||||
| 			minetest.sound_play("default_place_node_hard", | ||||
| 					{pos = pos, gain = 1.0, max_hear_distance = 5}, true) | ||||
|  | ||||
| 		elseif math.random(100) < 3 then | ||||
| 			minetest.add_item(pos, "mobs:chicken_feather") | ||||
| @@ -111,16 +92,16 @@ mobs:register_mob("mobs_animal:chicken", { | ||||
| 	end | ||||
| }) | ||||
|  | ||||
|  | ||||
| local spawn_on = {"default:dirt_with_grass"} | ||||
|  | ||||
| if minetest.get_modpath("ethereal") then | ||||
| 	spawn_on = {"ethereal:bamboo_dirt", "ethereal:prairie_dirt"} | ||||
| end | ||||
|  | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| 	local spawn_on = {"default:dirt_with_grass"} | ||||
|  | ||||
| 	if minetest.get_modpath("ethereal") then | ||||
| 		spawn_on = {"ethereal:bamboo_dirt", "ethereal:prairie_dirt"} | ||||
| 	end | ||||
|  | ||||
| 	mobs:spawn({ | ||||
| 		name = "mobs_animal:chicken", | ||||
| 		nodes = spawn_on, | ||||
| @@ -134,22 +115,24 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:chicken", S("Chicken"), "mobs_chicken_inv.png", 0) | ||||
|  | ||||
| -- compatibility with older mobs mod | ||||
|  | ||||
| mobs:alias_mob("mobs:chicken", "mobs_animal:chicken") -- compatibility | ||||
|  | ||||
| mobs:alias_mob("mobs:chicken", "mobs_animal:chicken") | ||||
|  | ||||
| -- egg entity | ||||
|  | ||||
| mobs:register_arrow("mobs_animal:egg_entity", { | ||||
| 	visual = "sprite", | ||||
| 	visual_size = {x=.5, y=.5}, | ||||
| 	visual_size = {x = .5, y = .5}, | ||||
| 	textures = {"mobs_chicken_egg.png"}, | ||||
| 	velocity = 6, | ||||
|  | ||||
| 	hit_player = function(self, player) | ||||
|  | ||||
| 		player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, { | ||||
| 			full_punch_interval = 1.0, | ||||
| 			damage_groups = {fleshy = 1} | ||||
| @@ -157,6 +140,7 @@ mobs:register_arrow("mobs_animal:egg_entity", { | ||||
| 	end, | ||||
|  | ||||
| 	hit_mob = function(self, player) | ||||
|  | ||||
| 		player:punch(self.object, 1.0, { | ||||
| 			full_punch_interval = 1.0, | ||||
| 			damage_groups = {fleshy = 1} | ||||
| @@ -165,16 +149,13 @@ mobs:register_arrow("mobs_animal:egg_entity", { | ||||
|  | ||||
| 	hit_node = function(self, pos, node) | ||||
|  | ||||
| 		if math.random(10) > 1 then | ||||
| 			return | ||||
| 		end | ||||
| 		if math.random(10) > 1 then return end | ||||
|  | ||||
| 		pos.y = pos.y + 1 | ||||
|  | ||||
| 		local nod = minetest.get_node_or_nil(pos) | ||||
|  | ||||
| 		if not nod | ||||
| 		or not minetest.registered_nodes[nod.name] | ||||
| 		if not nod or not minetest.registered_nodes[nod.name] | ||||
| 		or minetest.registered_nodes[nod.name].walkable == true then | ||||
| 			return | ||||
| 		end | ||||
| @@ -189,22 +170,17 @@ mobs:register_arrow("mobs_animal:egg_entity", { | ||||
| 	end | ||||
| }) | ||||
|  | ||||
|  | ||||
| -- egg throwing item | ||||
| -- egg throwing function | ||||
|  | ||||
| local egg_GRAVITY = 9 | ||||
| local egg_VELOCITY = 19 | ||||
|  | ||||
| -- shoot egg | ||||
| local mobs_shoot_egg = function (item, player, pointed_thing) | ||||
|  | ||||
| 	local playerpos = player:get_pos() | ||||
|  | ||||
| 	minetest.sound_play("default_place_node_hard", { | ||||
| 		pos = playerpos, | ||||
| 		gain = 1.0, | ||||
| 		max_hear_distance = 5 | ||||
| 	}) | ||||
| 	minetest.sound_play("default_place_node_hard",  | ||||
| 			{pos = playerpos, gain = 1.0, max_hear_distance = 5}, true) | ||||
|  | ||||
| 	local obj = minetest.add_entity({ | ||||
| 		x = playerpos.x, | ||||
| @@ -220,16 +196,10 @@ local mobs_shoot_egg = function (item, player, pointed_thing) | ||||
| 	ent._is_arrow = true -- tell advanced mob protection this is an arrow | ||||
|  | ||||
| 	obj:set_velocity({ | ||||
| 		x = dir.x * egg_VELOCITY, | ||||
| 		y = dir.y * egg_VELOCITY, | ||||
| 		z = dir.z * egg_VELOCITY | ||||
| 	}) | ||||
| 			x = dir.x * egg_VELOCITY, y = dir.y * egg_VELOCITY, z = dir.z * egg_VELOCITY}) | ||||
|  | ||||
| 	obj:set_acceleration({ | ||||
| 		x = dir.x * -3, | ||||
| 		y = -egg_GRAVITY, | ||||
| 		z = dir.z * -3 | ||||
| 	}) | ||||
| 			x = dir.x * -3, y = -egg_GRAVITY, z = dir.z * -3}) | ||||
|  | ||||
| 	-- pass player name to egg for chick ownership | ||||
| 	local ent2 = obj:get_luaentity() | ||||
| @@ -241,8 +211,8 @@ local mobs_shoot_egg = function (item, player, pointed_thing) | ||||
| 	return item | ||||
| end | ||||
|  | ||||
|  | ||||
| -- egg | ||||
|  | ||||
| minetest.register_node(":mobs:egg", { | ||||
| 	description = S("Chicken Egg"), | ||||
| 	tiles = {"mobs_chicken_egg.png"}, | ||||
| @@ -259,16 +229,17 @@ minetest.register_node(":mobs:egg", { | ||||
| 		fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} | ||||
| 	}, | ||||
| 	groups = {food_egg = 1, snappy = 2, dig_immediate = 3}, | ||||
| 	sounds = mobs.node_sound_defaults(), | ||||
|  | ||||
| 	after_place_node = function(pos, placer, itemstack) | ||||
| 		if placer:is_player() then | ||||
| 			minetest.set_node(pos, {name = "mobs:egg", param2 = 1}) | ||||
| 		end | ||||
| 		minetest.set_node(pos, {name = "mobs:egg", param2 = 1}) | ||||
| 	end, | ||||
|  | ||||
| 	on_use = mobs_shoot_egg | ||||
| }) | ||||
|  | ||||
| -- fried egg and recipe | ||||
|  | ||||
| -- fried egg | ||||
| minetest.register_craftitem(":mobs:chicken_egg_fried", { | ||||
| 	description = S("Fried Egg"), | ||||
| 	inventory_image = "mobs_chicken_egg_fried.png", | ||||
| @@ -285,6 +256,7 @@ minetest.register_craft({ | ||||
| }) | ||||
|  | ||||
| -- raw chicken | ||||
|  | ||||
| minetest.register_craftitem(":mobs:chicken_raw", { | ||||
| 	description = S("Raw Chicken"), | ||||
| 	inventory_image = "mobs_chicken_raw.png", | ||||
| @@ -294,7 +266,8 @@ minetest.register_craftitem(":mobs:chicken_raw", { | ||||
|  | ||||
| mobs.add_eatable("mobs:chicken_raw", 2) | ||||
|  | ||||
| -- cooked chicken | ||||
| -- cooked chicken and recipe | ||||
|  | ||||
| minetest.register_craftitem(":mobs:chicken_cooked", { | ||||
| 	description = S("Cooked Chicken"), | ||||
| 	inventory_image = "mobs_chicken_cooked.png", | ||||
| @@ -310,15 +283,12 @@ minetest.register_craft({ | ||||
| 	output = "mobs:chicken_cooked" | ||||
| }) | ||||
|  | ||||
| -- feather | ||||
| -- feather and fuel | ||||
|  | ||||
| minetest.register_craftitem(":mobs:chicken_feather", { | ||||
| 	description = S("Feather"), | ||||
| 	inventory_image = "mobs_chicken_feather.png", | ||||
| 	groups = {flammable = 2, feather = 1} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "mobs:chicken_feather", | ||||
| 	burntime = 1 | ||||
| }) | ||||
| minetest.register_craft({type = "fuel", recipe = "mobs:chicken_feather", burntime = 1}) | ||||
|   | ||||
							
								
								
									
										67
									
								
								cow.lua
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								cow.lua
									
									
									
									
									
								
							| @@ -1,8 +1,5 @@ | ||||
| -- Translation support | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- check for default mod | ||||
| local mod_def = minetest.get_modpath("default") | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Cow by sirrobzeroone | ||||
|  | ||||
| @@ -24,9 +21,7 @@ mobs:register_mob("mobs_animal:cow", { | ||||
| 		{"mobs_cow2.png"} | ||||
| 	}, | ||||
| 	makes_footstep_sound = true, | ||||
| 	sounds = { | ||||
| 		random = "mobs_cow", | ||||
| 	}, | ||||
| 	sounds = {random = "mobs_cow"}, | ||||
| 	walk_velocity = 1, | ||||
| 	run_velocity = 2, | ||||
| 	jump = true, | ||||
| @@ -40,25 +35,12 @@ mobs:register_mob("mobs_animal:cow", { | ||||
| 	lava_damage = 5, | ||||
| 	light_damage = 0, | ||||
| 	animation = { | ||||
| 		stand_start = 0, | ||||
| 		stand_end = 30, | ||||
| 		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 | ||||
| 		stand_start = 0, stand_end = 30, 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", "default:grass_1", "farming:barley", | ||||
| @@ -79,9 +61,7 @@ mobs:register_mob("mobs_animal:cow", { | ||||
| 		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 | ||||
| 			if self.food and self.food > 6 then self.gotten = false end | ||||
|  | ||||
| 			return | ||||
| 		end | ||||
| @@ -98,10 +78,7 @@ mobs:register_mob("mobs_animal:cow", { | ||||
| 		or item == "wooden_bucket:bucket_wood_empty" | ||||
| 		or item == "bucket_wooden:bucket_empty" then | ||||
|  | ||||
| 			--if self.gotten == true | ||||
| 			if self.child == true then | ||||
| 				return | ||||
| 			end | ||||
| 			if self.child == true then return end | ||||
|  | ||||
| 			if self.gotten == true then | ||||
|  | ||||
| @@ -143,14 +120,14 @@ mobs:register_mob("mobs_animal:cow", { | ||||
|  | ||||
| 		self.food = (self.food or 0) + 1 | ||||
|  | ||||
| 		-- if cow replaces 8x grass then it can be milked again | ||||
| 		if self.food >= 8 then | ||||
| 		if self.food >= 8 then -- replace 8x grass and can be milked again | ||||
| 			self.food = 0 | ||||
| 			self.gotten = false | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| @@ -167,14 +144,16 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:cow", S("Cow"), "mobs_cow_inv.png") | ||||
|  | ||||
| -- old mobs mod compatibility | ||||
|  | ||||
| mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility | ||||
|  | ||||
| mobs:alias_mob("mobs:cow", "mobs_animal:cow") | ||||
|  | ||||
| -- bucket of milk | ||||
|  | ||||
| minetest.register_craftitem(":mobs:bucket_milk", { | ||||
| 	description = S("Bucket of Milk"), | ||||
| 	inventory_image = "mobs_bucket_milk.png", | ||||
| @@ -185,7 +164,7 @@ minetest.register_craftitem(":mobs:bucket_milk", { | ||||
|  | ||||
| mobs.add_eatable("mobs:bucket_milk", 8) | ||||
|  | ||||
| -- glass of milk | ||||
| -- glass of milk and recipes | ||||
| minetest.register_craftitem(":mobs:glass_milk", { | ||||
| 	description = S("Glass of Milk"), | ||||
| 	inventory_image = "mobs_glass_milk.png", | ||||
| @@ -217,8 +196,8 @@ minetest.register_craft({ | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| -- butter and recipe | ||||
|  | ||||
| -- butter | ||||
| minetest.register_craftitem(":mobs:butter", { | ||||
| 	description = S("Butter"), | ||||
| 	inventory_image = "mobs_butter.png", | ||||
| @@ -240,7 +219,8 @@ minetest.register_craft({ | ||||
| 	replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}} | ||||
| }) | ||||
|  | ||||
| -- cheese wedge | ||||
| -- cheese wedge and recipe | ||||
|  | ||||
| minetest.register_craftitem(":mobs:cheese", { | ||||
| 	description = S("Cheese"), | ||||
| 	inventory_image = "mobs_cheese.png", | ||||
| @@ -258,13 +238,14 @@ minetest.register_craft({ | ||||
| 	replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}} | ||||
| }) | ||||
|  | ||||
| -- cheese block | ||||
| -- cheese block and recipe | ||||
|  | ||||
| minetest.register_node(":mobs:cheeseblock", { | ||||
| 	description = S("Cheese Block"), | ||||
| 	tiles = {"mobs_cheeseblock.png"}, | ||||
| 	is_ground_content = false, | ||||
| 	groups = {oddly_breakable_by_hand = 3}, | ||||
| 	sounds = mod_def and default.node_sound_dirt_defaults() | ||||
| 	sounds = mobs.node_sound_dirt_defaults() | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| @@ -281,8 +262,8 @@ minetest.register_craft({ | ||||
| 	recipe = {{"mobs:cheeseblock"}} | ||||
| }) | ||||
|  | ||||
|  | ||||
| -- check for either of the wood bucket mods and add compatibility | ||||
|  | ||||
| local wb = minetest.get_modpath("wooden_bucket") | ||||
| local bw = minetest.get_modpath("bucket_wooden") | ||||
|  | ||||
|   | ||||
							
								
								
									
										16
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								init.lua
									
									
									
									
									
								
							| @@ -1,9 +1,11 @@ | ||||
|  | ||||
| -- translation and mod path | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
| local path = minetest.get_modpath(minetest.get_current_modname()) .. "/" | ||||
|  | ||||
| -- Translation support | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Check for custom mob spawn file | ||||
|  | ||||
| local input = io.open(path .. "spawn.lua", "r") | ||||
|  | ||||
| if input then | ||||
| @@ -12,8 +14,8 @@ if input then | ||||
| 	input = nil | ||||
| end | ||||
|  | ||||
|  | ||||
| -- helper function | ||||
|  | ||||
| local function ddoo(mob) | ||||
|  | ||||
| 	if minetest.settings:get_bool("mobs_animal." .. mob) == false then | ||||
| @@ -25,6 +27,7 @@ local function ddoo(mob) | ||||
| end | ||||
|  | ||||
| -- Animals | ||||
|  | ||||
| ddoo("chicken") -- JKmurray | ||||
| ddoo("cow") -- KrupnoPavel | ||||
| ddoo("rat") -- PilzAdam | ||||
| @@ -36,17 +39,16 @@ ddoo("kitten") -- Jordach/BFD | ||||
| ddoo("penguin") -- D00Med | ||||
| ddoo("panda") -- AspireMint | ||||
|  | ||||
| -- Load custom spawning if found | ||||
|  | ||||
| -- Load custom spawning | ||||
| if mobs.custom_spawn_animal then | ||||
| 	dofile(path .. "spawn.lua") | ||||
| end | ||||
|  | ||||
|  | ||||
| -- Lucky Blocks | ||||
|  | ||||
| if minetest.get_modpath("lucky_block") then | ||||
| 	dofile(path .. "lucky_block.lua") | ||||
| end | ||||
|  | ||||
|  | ||||
| print ("[MOD] Mobs Animal loaded") | ||||
|   | ||||
							
								
								
									
										56
									
								
								kitten.lua
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								kitten.lua
									
									
									
									
									
								
							| @@ -1,7 +1,10 @@ | ||||
| -- Translation support | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| local hairball = minetest.settings:get("mobs_hairball") | ||||
| -- translation and hairball setting | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
| local hairball = minetest.settings:get_bool("mobs_animal.hairball") ~= false | ||||
|  | ||||
| -- custom kitty types | ||||
|  | ||||
| local kitten_types = { | ||||
|  | ||||
| @@ -37,9 +40,7 @@ mobs:register_mob("mobs_animal:kitten", { | ||||
| 		{"mobs_kitten_sandy.png"} | ||||
| 	}, | ||||
| 	makes_footstep_sound = false, | ||||
| 	sounds = { | ||||
| 		random = "mobs_kitten" | ||||
| 	}, | ||||
| 	sounds = {random = "mobs_kitten"}, | ||||
| 	walk_velocity = 0.6, | ||||
| 	walk_chance = 15, | ||||
| 	run_velocity = 2, | ||||
| @@ -53,12 +54,9 @@ mobs:register_mob("mobs_animal:kitten", { | ||||
| 	fear_height = 3, | ||||
| 	animation = { | ||||
| 		speed_normal = 42, | ||||
| 		stand_start = 97, | ||||
| 		stand_end = 192, | ||||
| 		walk_start = 0, | ||||
| 		walk_end = 96, | ||||
| 		stoodup_start = 0, | ||||
| 		stoodup_end = 0, | ||||
| 		stand_start = 97, stand_end = 192, | ||||
| 		walk_start = 0, walk_end = 96, | ||||
| 		stoodup_start = 0, stoodup_end = 0, | ||||
| 	}, | ||||
| 	follow = { | ||||
| 		"mobs_animal:rat", "group:food_fish_raw", | ||||
| @@ -111,19 +109,13 @@ mobs:register_mob("mobs_animal:kitten", { | ||||
|  | ||||
| 	do_custom = function(self, dtime) | ||||
|  | ||||
| 		if hairball == "false" then | ||||
| 			return | ||||
| 		end | ||||
| 		if not hairball then return end | ||||
|  | ||||
| 		self.hairball_timer = (self.hairball_timer or 0) + dtime | ||||
| 		if self.hairball_timer < 10 then | ||||
| 			return | ||||
| 		end | ||||
| 		if self.hairball_timer < 10 then return end | ||||
| 		self.hairball_timer = 0 | ||||
|  | ||||
| 		if self.child or math.random(250) > 1 then | ||||
| 			return | ||||
| 		end | ||||
| 		if self.child or math.random(250) > 1 then return end | ||||
|  | ||||
| 		local pos = self.object:get_pos() | ||||
|  | ||||
| @@ -134,15 +126,16 @@ mobs:register_mob("mobs_animal:kitten", { | ||||
| 	end | ||||
| }) | ||||
|  | ||||
|  | ||||
| local spawn_on = "default:dirt_with_grass" | ||||
|  | ||||
| if minetest.get_modpath("ethereal") then | ||||
| 	spawn_on = "ethereal:grove_dirt" | ||||
| end | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| 	local spawn_on = "default:dirt_with_grass" | ||||
|  | ||||
| 	if minetest.get_modpath("ethereal") then | ||||
| 		spawn_on = "ethereal:grove_dirt" | ||||
| 	end | ||||
|  | ||||
| 	mobs:spawn({ | ||||
| 		name = "mobs_animal:kitten", | ||||
| 		nodes = {spawn_on}, | ||||
| @@ -156,12 +149,15 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:kitten", S("Kitten"), "mobs_kitten_inv.png", 0) | ||||
|  | ||||
| -- compatibility with old mobs mod | ||||
|  | ||||
| mobs:alias_mob("mobs:kitten", "mobs_animal:kitten") -- compatibility | ||||
| mobs:alias_mob("mobs:kitten", "mobs_animal:kitten") | ||||
|  | ||||
| -- hairball and items | ||||
|  | ||||
| local hairball_items = { | ||||
| 	"default:stick", "default:coal_lump", "default:dry_shrub", "flowers:rose", | ||||
| @@ -177,6 +173,7 @@ local hairball_items = { | ||||
| minetest.register_craftitem(":mobs:hairball", { | ||||
| 	description = S("Hairball"), | ||||
| 	inventory_image = "mobs_hairball.png", | ||||
|  | ||||
| 	on_use = function(itemstack, user, pointed_thing) | ||||
|  | ||||
| 		local pos = user:get_pos() | ||||
| @@ -184,8 +181,7 @@ minetest.register_craftitem(":mobs:hairball", { | ||||
| 		local newpos = {x = pos.x + dir.x, y = pos.y + dir.y + 1.5, z = pos.z + dir.z} | ||||
| 		local item = hairball_items[math.random(1, #hairball_items)] | ||||
|  | ||||
| 		if item ~= "" | ||||
| 		and minetest.registered_items[item] then | ||||
| 		if item ~= "" and minetest.registered_items[item] then | ||||
| 			minetest.add_item(newpos, {name = item}) | ||||
| 		end | ||||
|  | ||||
|   | ||||
| @@ -1,3 +1,6 @@ | ||||
|  | ||||
| -- add lucky blocks | ||||
|  | ||||
| lucky_block:add_blocks({ | ||||
| 	{"spw", "mobs:sheep", 5}, | ||||
| 	{"spw", "mobs:rat", 5}, | ||||
| @@ -20,6 +23,8 @@ lucky_block:add_blocks({ | ||||
| 	{"dro", {"mobs:glass_milk"}, 5} | ||||
| }) | ||||
|  | ||||
| -- if nyancat found add special block | ||||
|  | ||||
| if minetest.registered_nodes["default:nyancat"] then | ||||
|  | ||||
| 	lucky_block:add_blocks({ | ||||
|   | ||||
							
								
								
									
										32
									
								
								panda.lua
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								panda.lua
									
									
									
									
									
								
							| @@ -1,10 +1,10 @@ | ||||
| -- Translation support | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Panda by AspireMint (CC BY-SA 3.0) | ||||
|  | ||||
| mobs:register_mob("mobs_animal:panda", { | ||||
| stepheight = 0.6, | ||||
| 	stepheight = 0.6, | ||||
| 	type = "animal", | ||||
| 	passive = false, | ||||
| 	attack_type = "dogfight", | ||||
| @@ -19,9 +19,7 @@ stepheight = 0.6, | ||||
| 	collisionbox = {-0.4, -0.45, -0.4, 0.4, 0.45, 0.4}, | ||||
| 	visual = "mesh", | ||||
| 	mesh = "mobs_panda.b3d", | ||||
| 	textures = { | ||||
| 		{"mobs_panda.png"} | ||||
| 	}, | ||||
| 	textures = {{"mobs_panda.png"}}, | ||||
| 	makes_footstep_sound = true, | ||||
| 	sounds = { | ||||
| 		random = "mobs_panda", | ||||
| @@ -43,21 +41,13 @@ stepheight = 0.6, | ||||
| 	fear_height = 6, | ||||
| 	animation = { | ||||
| 		speed_normal = 15, | ||||
| 		stand_start = 130, | ||||
| 		stand_end = 270, | ||||
| 		stand1_start = 0, | ||||
| 		stand1_end = 0, | ||||
| 		stand2_start = 1, | ||||
| 		stand2_end = 1, | ||||
| 		stand3_start = 2, | ||||
| 		stand3_end = 2, | ||||
| 		walk_start = 10, | ||||
| 		walk_end = 70, | ||||
| 		run_start = 10, | ||||
| 		run_end = 70, | ||||
| 		punch_start = 80, | ||||
| 		punch_end = 120, | ||||
| 		-- 0 = rest, 1 = hiding (covers eyes), 2 = surprised | ||||
| 		stand_start = 130, stand_end = 270, | ||||
| 		stand1_start = 0, stand1_end = 0, -- rest | ||||
| 		stand2_start = 1, stand2_end = 1, -- covers eyes | ||||
| 		stand3_start = 2, stand3_end = 2, -- surprised | ||||
| 		walk_start = 10, walk_end = 70, | ||||
| 		run_start = 10, run_end = 70, | ||||
| 		punch_start = 80, punch_end = 120 | ||||
| 	}, | ||||
|  | ||||
| 	on_rightclick = function(self, clicker) | ||||
| @@ -68,6 +58,7 @@ stepheight = 0.6, | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| -- where to spawn (ethereal bamboo biome only) | ||||
|  | ||||
| if minetest.get_modpath("ethereal") and not mobs.custom_spawn_animal then | ||||
|  | ||||
| @@ -84,5 +75,6 @@ if minetest.get_modpath("ethereal") and not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:panda", S("Panda"), "mobs_panda_inv.png") | ||||
|   | ||||
							
								
								
									
										17
									
								
								penguin.lua
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								penguin.lua
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| -- Translation support | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Penguin by D00Med | ||||
| @@ -15,9 +15,7 @@ stepheight = 0.6, | ||||
| 	visual = "mesh", | ||||
| 	mesh = "mobs_penguin.b3d", | ||||
| 	visual_size = {x = 0.25, y = 0.25}, | ||||
| 	textures = { | ||||
| 		{"mobs_penguin.png"} | ||||
| 	}, | ||||
| 	textures = {{"mobs_penguin.png"}}, | ||||
| 	sounds = {}, | ||||
| 	makes_footstep_sound = true, | ||||
| 	walk_velocity = 1, | ||||
| @@ -34,12 +32,9 @@ stepheight = 0.6, | ||||
| 	fear_height = 2, | ||||
| 	animation = { | ||||
| 		speed_normal = 15, | ||||
| 		stand_start = 1, | ||||
| 		stand_end = 20, | ||||
| 		walk_start = 25, | ||||
| 		walk_end = 45, | ||||
| 		fly_start = 75, -- swim animation | ||||
| 		fly_end = 95 | ||||
| 		stand_start = 1, stand_end = 20, | ||||
| 		walk_start = 25, walk_end = 45, | ||||
| 		fly_start = 75, fly_end = 95 -- swim animation | ||||
| 		-- 50-70 is slide/water idle | ||||
| 	}, | ||||
| 	fly_in = {"default:water_source", "default:water_flowing"}, | ||||
| @@ -59,6 +54,7 @@ stepheight = 0.6, | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| @@ -74,5 +70,6 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:penguin", S("Penguin"), "mobs_penguin_inv.png") | ||||
|   | ||||
							
								
								
									
										17
									
								
								rat.lua
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								rat.lua
									
									
									
									
									
								
							| @@ -1,10 +1,10 @@ | ||||
| -- Translation support | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Rat by KPavel and PilzAdam (B3D model by sirrobzeroone) | ||||
|  | ||||
| mobs:register_mob("mobs_animal:rat", { | ||||
| stepheight = 0.6, | ||||
| 	stepheight = 0.6, | ||||
| 	type = "animal", | ||||
| 	passive = true, | ||||
| 	hp_min = 1, | ||||
| @@ -18,9 +18,7 @@ stepheight = 0.6, | ||||
| 		{"mobs_rat2.png"} | ||||
| 	}, | ||||
| 	makes_footstep_sound = false, | ||||
| 	sounds = { | ||||
| 		random = "mobs_rat" | ||||
| 	}, | ||||
| 	sounds = {random = "mobs_rat"}, | ||||
| 	walk_velocity = 1, | ||||
| 	run_velocity = 2, | ||||
| 	runaway = true, | ||||
| @@ -59,8 +57,8 @@ stepheight = 0.6, | ||||
| ]] | ||||
| }) | ||||
|  | ||||
|  | ||||
| -- example on_spawn function | ||||
|  | ||||
| local function rat_spawn(self, pos) | ||||
| 	self = self:get_luaentity() | ||||
| 	print (self.name, pos.x, pos.y, pos.z) | ||||
| @@ -68,6 +66,7 @@ local function rat_spawn(self, pos) | ||||
| 	self.health = 100 | ||||
| end | ||||
|  | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| @@ -83,14 +82,16 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:rat", S("Rat"), "mobs_rat_inv.png") | ||||
|  | ||||
| -- compatibility with older mobs mod | ||||
|  | ||||
| mobs:alias_mob("mobs:rat", "mobs_animal:rat") -- compatibility | ||||
|  | ||||
| mobs:alias_mob("mobs:rat", "mobs_animal:rat") | ||||
|  | ||||
| -- cooked rat, yummy! | ||||
|  | ||||
| minetest.register_craftitem(":mobs:rat_cooked", { | ||||
| 	description = S("Cooked Rat"), | ||||
| 	inventory_image = "mobs_cooked_rat.png", | ||||
|   | ||||
| @@ -17,7 +17,7 @@ Wanders around eating grass/wheat and can be right-clicked with empty bucket to | ||||
|  | ||||
| --- | ||||
| ### Kitten | ||||
| Found on green grass these cute cats walk around and can be picked up and placed in inventory as pets or right-clicked with 4x live rats or raw fish (found in ethereal) and tamed.  They can sometimes leave you little gifts of a hairball. | ||||
| Found on green grass these cute cats walk around and can be picked up and placed in inventory as pets or right-clicked with 4x live rats or raw fish (found in ethereal) and tamed.  They can sometimes leave you little gifts of a hairball, remember to check just incase it contains an item. | ||||
|  | ||||
| --- | ||||
| ### Rat | ||||
|   | ||||
| @@ -8,3 +8,4 @@ mobs_animal.penguin (Enable Penguin) bool true | ||||
| mobs_animal.rat (Enable Rat) bool true | ||||
| mobs_animal.sheep (Enable Sheep) bool true | ||||
| mobs_animal.warthog (Enable Warthog) bool true | ||||
| mobs_animal.hairball (Enable Kitten Hairball drops) bool true | ||||
|   | ||||
							
								
								
									
										84
									
								
								sheep.lua
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								sheep.lua
									
									
									
									
									
								
							| @@ -1,7 +1,11 @@ | ||||
| -- Translation support | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- translation and localize function | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
| local random = math.random | ||||
|  | ||||
| -- sheep colour table | ||||
|  | ||||
| local all_colours = { | ||||
| 	{"black",      S("Black"),      "#212121b0"}, -- referenced down in mobs:spawn | ||||
| 	{"blue",       S("Blue"),       "#015dbb70"}, | ||||
| @@ -20,7 +24,6 @@ local all_colours = { | ||||
| 	{"yellow",     S("Yellow"),     "#fff80070"} | ||||
| } | ||||
|  | ||||
|  | ||||
| -- Sheep by PilzAdam/K Pavel, texture converted to minetest by AMMOnym from Summerfield pack | ||||
|  | ||||
| for _, col in ipairs(all_colours) do | ||||
| @@ -87,9 +90,7 @@ for _, col in ipairs(all_colours) do | ||||
| 		}, | ||||
| 		gotten_texture = {"mobs_sheep_base.png^mobs_sheep_shaved.png"}, | ||||
| 		makes_footstep_sound = true, | ||||
| 		sounds = { | ||||
| 			random = "mobs_sheep" | ||||
| 		}, | ||||
| 		sounds = {random = "mobs_sheep"}, | ||||
| 		walk_velocity = 1, | ||||
| 		run_velocity = 2, | ||||
| 		runaway = true, | ||||
| @@ -101,17 +102,13 @@ for _, col in ipairs(all_colours) do | ||||
| 		lava_damage = 5, | ||||
| 		light_damage = 0, | ||||
| 		animation = { | ||||
| 			speed_normal = 15, | ||||
| 			speed_run = 15, | ||||
| 			stand_start = 0, | ||||
| 			stand_end = 80, | ||||
| 			walk_start = 81, | ||||
| 			walk_end = 100, | ||||
| 			die_start = 1, -- we dont have a specific death animation so we will | ||||
| 			die_end = 2, --   re-use 2 standing frames at a speed of 1 fps and | ||||
| 			die_speed = 1, -- have mob rotate when dying. | ||||
| 			die_loop = false, | ||||
| 			die_rotate = true | ||||
| 			speed_normal = 15, speed_run = 15, | ||||
| 			stand_start = 0, stand_end = 80, | ||||
| 			walk_start = 81, walk_end = 100, | ||||
| 			-- no death animation so we'll re-use 2 standing frames at a speed of 1 fps | ||||
| 			-- and have mob rotate while dying. | ||||
| 			die_start = 1, die_end = 2, die_speed = 1, | ||||
| 			die_loop = false, die_rotate = true | ||||
| 		}, | ||||
| 		follow = { | ||||
| 			"farming:wheat", "default:grass_1", "farming:barley", | ||||
| @@ -183,24 +180,17 @@ for _, col in ipairs(all_colours) do | ||||
| 			mob:set_properties({ | ||||
| 				textures = {textures}, | ||||
| 				visual_size = { | ||||
| 					x = parent1.base_size.x * .5, | ||||
| 					y = parent1.base_size.y * .5 | ||||
| 					x = parent1.base_size.x * .5, y = parent1.base_size.y * .5 | ||||
| 				}, | ||||
| 				collisionbox = { | ||||
| 					parent1.base_colbox[1] * .5, | ||||
| 					parent1.base_colbox[2] * .5, | ||||
| 					parent1.base_colbox[3] * .5, | ||||
| 					parent1.base_colbox[4] * .5, | ||||
| 					parent1.base_colbox[5] * .5, | ||||
| 					parent1.base_colbox[6] * .5 | ||||
| 					parent1.base_colbox[1] * .5, parent1.base_colbox[2] * .5, | ||||
| 					parent1.base_colbox[3] * .5, parent1.base_colbox[4] * .5, | ||||
| 					parent1.base_colbox[5] * .5, parent1.base_colbox[6] * .5 | ||||
| 				}, | ||||
| 				selectionbox = { | ||||
| 					parent1.base_selbox[1] * .5, | ||||
| 					parent1.base_selbox[2] * .5, | ||||
| 					parent1.base_selbox[3] * .5, | ||||
| 					parent1.base_selbox[4] * .5, | ||||
| 					parent1.base_selbox[5] * .5, | ||||
| 					parent1.base_selbox[6] * .5 | ||||
| 					parent1.base_selbox[1] * .5, parent1.base_selbox[2] * .5, | ||||
| 					parent1.base_selbox[3] * .5, parent1.base_selbox[4] * .5, | ||||
| 					parent1.base_selbox[5] * .5, parent1.base_selbox[6] * .5 | ||||
| 				} | ||||
| 			}) | ||||
|  | ||||
| @@ -279,10 +269,8 @@ for _, col in ipairs(all_colours) do | ||||
| 			-- are we giving a haircut> | ||||
| 			if itemname == "mobs:shears" then | ||||
|  | ||||
| 				if self.gotten ~= false | ||||
| 				or self.child ~= false | ||||
| 				or name ~= self.owner | ||||
| 				or not minetest.get_modpath("wool") then | ||||
| 				if self.gotten ~= false or self.child ~= false | ||||
| 				or name ~= self.owner or not minetest.get_modpath("wool") then | ||||
| 					return | ||||
| 				end | ||||
|  | ||||
| @@ -297,10 +285,7 @@ for _, col in ipairs(all_colours) do | ||||
| 				if obj then | ||||
|  | ||||
| 					obj:set_velocity({ | ||||
| 						x = random(-1, 1), | ||||
| 						y = 5, | ||||
| 						z = random(-1, 1) | ||||
| 					}) | ||||
| 							x = random(-1, 1), y = 5, z = random(-1, 1)}) | ||||
| 				end | ||||
|  | ||||
| 				item:add_wear(650) -- 100 uses | ||||
| @@ -318,18 +303,15 @@ for _, col in ipairs(all_colours) do | ||||
| 			-- are we coloring? | ||||
| 			if itemname:find("dye:") then | ||||
|  | ||||
| 				if self.gotten == false | ||||
| 				and self.child == false | ||||
| 				and self.tamed == true | ||||
| 				and name == self.owner then | ||||
| 				if self.gotten == false and self.child == false | ||||
| 				and self.tamed == true and name == self.owner then | ||||
|  | ||||
| 					local colr = string.split(itemname, ":")[2] | ||||
|  | ||||
| 					for _,c in pairs(all_colours) do | ||||
|  | ||||
| 						-- only dye if colour option available and sheep not same colour | ||||
| 						if c[1] == colr | ||||
| 						and self.name ~= "mobs_animal:sheep_" .. colr then | ||||
| 						if c[1] == colr and self.name ~= "mobs_animal:sheep_" .. colr then | ||||
|  | ||||
| 							local pos = self.object:get_pos() | ||||
|  | ||||
| @@ -393,6 +375,7 @@ for _, col in ipairs(all_colours) do | ||||
| 	mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1]) | ||||
| end | ||||
|  | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| @@ -457,8 +440,8 @@ if not mobs.custom_spawn_animal then | ||||
| 				local entity = mobs:add_mob(pos, | ||||
| 						{name = "mobs_animal:sheep_" .. types, child = lamb}) | ||||
|  | ||||
| -- nil check | ||||
| if not entity then return end | ||||
| 				-- nil check | ||||
| 				if not entity then return end | ||||
|  | ||||
| 				if not lamb then | ||||
| 					-- Set horns attribute, lower height will be rarer. | ||||
| @@ -510,10 +493,12 @@ if not entity then return end | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| -- compatibility with older mobs mod | ||||
|  | ||||
| mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility | ||||
| mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") | ||||
|  | ||||
| -- raw mutton | ||||
|  | ||||
| minetest.register_craftitem(":mobs:mutton_raw", { | ||||
| 	description = S("Raw Mutton"), | ||||
| 	inventory_image = "mobs_mutton_raw.png", | ||||
| @@ -523,7 +508,8 @@ minetest.register_craftitem(":mobs:mutton_raw", { | ||||
|  | ||||
| mobs.add_eatable("mobs:mutton_raw", 2) | ||||
|  | ||||
| -- cooked mutton | ||||
| -- cooked mutton and recipe | ||||
|  | ||||
| minetest.register_craftitem(":mobs:mutton_cooked", { | ||||
| 	description = S("Cooked Mutton"), | ||||
| 	inventory_image = "mobs_mutton_cooked.png", | ||||
|   | ||||
							
								
								
									
										56
									
								
								warthog.lua
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								warthog.lua
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| -- Translation support | ||||
|  | ||||
| local S = minetest.get_translator("mobs_animal") | ||||
|  | ||||
| -- Warthog originally by KrupnoPavel, B3D model by sirrobzeroone | ||||
| @@ -19,9 +19,7 @@ mobs:register_mob("mobs_animal:pumba", { | ||||
| 	collisionbox = {-0.4, -0.01, -0.4, 0.4, 0.95, 0.4}, | ||||
| 	visual = "mesh", | ||||
| 	mesh = "mobs_pumba.b3d", | ||||
| 	textures = { | ||||
| 		{"mobs_pumba.png"} | ||||
| 	}, | ||||
| 	textures = {{"mobs_pumba.png"}}, | ||||
| 	makes_footstep_sound = true, | ||||
| 	sounds = { | ||||
| 		random = "mobs_pig", | ||||
| @@ -43,18 +41,12 @@ mobs:register_mob("mobs_animal:pumba", { | ||||
| 	fear_height = 2, | ||||
| 	animation = { | ||||
| 		speed_normal = 15, | ||||
| 		stand_start = 25, | ||||
| 		stand_end = 55, | ||||
| 		walk_start = 70, | ||||
| 		walk_end = 100, | ||||
| 		punch_start = 70, | ||||
| 		punch_end = 100, | ||||
|  | ||||
| 		die_start = 1, -- we dont have a specific death animation so we will | ||||
| 		die_end = 2, --   re-use 2 standing frames at a speed of 1 fps and | ||||
| 		die_speed = 1, -- have mob rotate when dying. | ||||
| 		die_loop = false, | ||||
| 		die_rotate = true | ||||
| 		stand_start = 25, stand_end = 55, | ||||
| 		walk_start = 70, walk_end = 100, | ||||
| 		punch_start = 70, punch_end = 100, | ||||
| 		-- no specific dying animation, so use 2 frames at 1fps and rotate | ||||
| 		die_start = 1, die_end = 2, die_speed = 1, | ||||
| 		die_loop = false, die_rotate = true | ||||
| 	}, | ||||
|  | ||||
| 	on_rightclick = function(self, clicker) | ||||
| @@ -65,22 +57,18 @@ mobs:register_mob("mobs_animal:pumba", { | ||||
| 	end | ||||
| }) | ||||
|  | ||||
|  | ||||
| local spawn_on = {"default:dirt_with_grass"} | ||||
| local spawn_by = {"group:grass"} | ||||
|  | ||||
| if minetest.get_mapgen_setting("mg_name") ~= "v6" then | ||||
| 	spawn_on = {"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass"} | ||||
| 	spawn_by = {"group:dry_grass"} | ||||
| end | ||||
|  | ||||
| if minetest.get_modpath("ethereal") then | ||||
| 	spawn_on = {"ethereal:mushroom_dirt"} | ||||
| 	spawn_by = {"flowers:mushroom_brown", "flowers:mushroom_red"} | ||||
| end | ||||
| -- where to spawn | ||||
|  | ||||
| if not mobs.custom_spawn_animal then | ||||
|  | ||||
| 	local spawn_on = {"default:dirt_with_grass", "default:dry_dirt_with_dry_grass"} | ||||
| 	local spawn_by = {"group:grass"} | ||||
|  | ||||
| 	if minetest.get_modpath("ethereal") then | ||||
| 		spawn_on = {"ethereal:mushroom_dirt"} | ||||
| 		spawn_by = {"flowers:mushroom_brown", "flowers:mushroom_red"} | ||||
| 	end | ||||
|  | ||||
| 	mobs:spawn({ | ||||
| 		name = "mobs_animal:pumba", | ||||
| 		nodes = spawn_on, | ||||
| @@ -94,15 +82,16 @@ if not mobs.custom_spawn_animal then | ||||
| 	}) | ||||
| end | ||||
|  | ||||
|  | ||||
| -- spawn egg | ||||
|  | ||||
| mobs:register_egg("mobs_animal:pumba", S("Warthog"), "mobs_pumba_inv.png") | ||||
|  | ||||
| -- old mobs mod compatibility | ||||
|  | ||||
| mobs:alias_mob("mobs:pumba", "mobs_animal:pumba") -- compatibility | ||||
|  | ||||
| mobs:alias_mob("mobs:pumba", "mobs_animal:pumba") | ||||
|  | ||||
| -- raw porkchop | ||||
|  | ||||
| minetest.register_craftitem(":mobs:pork_raw", { | ||||
| 	description = S("Raw Porkchop"), | ||||
| 	inventory_image = "mobs_pork_raw.png", | ||||
| @@ -112,7 +101,8 @@ minetest.register_craftitem(":mobs:pork_raw", { | ||||
|  | ||||
| mobs.add_eatable("mobs:pork_raw", 4) | ||||
|  | ||||
| -- cooked porkchop | ||||
| -- cooked porkchop and recipe | ||||
|  | ||||
| minetest.register_craftitem(":mobs:pork_cooked", { | ||||
| 	description = S("Cooked Porkchop"), | ||||
| 	inventory_image = "mobs_pork_cooked.png", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user