From 840291ee5bf297cde311d45a9a2c8732a2f07de9 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 17 Sep 2022 08:25:38 +0100 Subject: [PATCH 01/27] sheeps wont drop wool when killed if sheared (thx Mazes) --- sheep.lua | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/sheep.lua b/sheep.lua index 2eea284..374fa1e 100644 --- a/sheep.lua +++ b/sheep.lua @@ -24,6 +24,15 @@ local all_colours = { for _, col in ipairs(all_colours) do + local drops_normal = { + {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2}, + {name = "wool:" .. col[1], chance = 1, min = 1, max = 1} + } + + local drops_gotten = { + {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2} + } + mobs:register_mob("mobs_animal:sheep_"..col[1], { stay_near = {"farming:straw", 10}, stepheight = 0.6, @@ -50,10 +59,7 @@ for _, col in ipairs(all_colours) do jump = true, jump_height = 6, pushable = true, - drops = { - {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2}, - {name = "wool:"..col[1], chance = 1, min = 1, max = 1} - }, + drops = drops_normal, water_damage = 0, lava_damage = 5, light_damage = 0, @@ -91,6 +97,7 @@ for _, col in ipairs(all_colours) do self.food = 0 self.gotten = false + self.drops = drops_normal self.object:set_properties({ textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"}, @@ -107,6 +114,7 @@ for _, col in ipairs(all_colours) do if self.food and self.food > 6 then self.gotten = false + self.drops = drops_normal self.object:set_properties({ textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"}, @@ -132,6 +140,7 @@ for _, col in ipairs(all_colours) do end self.gotten = true -- shaved + self.drops = drops_gotten local obj = minetest.add_item( self.object:get_pos(), From be80ec3269fdfbbcc67c46a096972352b8e934a7 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Tue, 27 Sep 2022 09:15:59 +0100 Subject: [PATCH 02/27] code tidy --- bee.lua | 57 ++++++++++++++++++++++++++----------------- bunny.lua | 47 ++++++++++++++++++----------------- chicken.lua | 65 +++++++++++++++++++++++++------------------------ cow.lua | 36 +++++++++++++++------------ init.lua | 9 ++++--- kitten.lua | 56 ++++++++++++++++++++++-------------------- lucky_block.lua | 49 +++++++++++++++++-------------------- panda.lua | 16 +++++++----- penguin.lua | 32 +++++++++++++----------- rat.lua | 29 +++++++++++++--------- sheep.lua | 44 +++++++++++++++++++++------------ warthog.lua | 28 ++++++++++++--------- 12 files changed, 260 insertions(+), 208 deletions(-) diff --git a/bee.lua b/bee.lua index 3d92cba..21c3405 100644 --- a/bee.lua +++ b/bee.lua @@ -1,6 +1,7 @@ local S = mobs.intllib_animal + -- Bee by KrupnoPavel (.b3d model by sirrobzeroone) mobs:register_mob("mobs_animal:bee", { @@ -13,18 +14,18 @@ mobs:register_mob("mobs_animal:bee", { visual = "mesh", mesh = "mobs_bee.b3d", textures = { - {"mobs_bee.png"}, + {"mobs_bee.png"} }, blood_texture = "mobs_bee_inv.png", blood_amount = 1, makes_footstep_sound = false, sounds = { - random = "mobs_bee", + random = "mobs_bee" }, walk_velocity = 1, jump = true, drops = { - {name = "mobs:honey", chance = 2, min = 1, max = 2}, + {name = "mobs:honey", chance = 2, min = 1, max = 2} }, water_damage = 1, lava_damage = 2, @@ -36,42 +37,50 @@ mobs:register_mob("mobs_animal:bee", { stand_start = 0, stand_end = 30, walk_start = 35, - walk_end = 65, + walk_end = 65 }, + 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, }) 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 + +-- spawn egg mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png") --- compatibility + +-- 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", 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) minetest.register_node(":mobs:beehive", { description = S("Beehive"), @@ -104,7 +113,7 @@ minetest.register_node(":mobs:beehive", { 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") end end @@ -131,14 +140,14 @@ minetest.register_node(":mobs:beehive", { -- only dig beehive if no honey inside return meta:get_inventory():is_empty("beehive") - end, - + end }) +-- beehive recipe minetest.register_craft({ output = "mobs:beehive", 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"), tiles = {"mobs_honey_block.png"}, groups = {snappy = 3, flammable = 2}, - sounds = default.node_sound_dirt_defaults(), + sounds = default.node_sound_dirt_defaults() }) +-- recipe minetest.register_craft({ output = "mobs:honey_block", 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"} } }) minetest.register_craft({ output = "mobs:honey 9", recipe = { - {"mobs:honey_block"}, + {"mobs:honey_block"} } }) + -- beehive workings minetest.register_abm({ nodenames = {"mobs:beehive"}, diff --git a/bunny.lua b/bunny.lua index 78218ed..14514ea 100644 --- a/bunny.lua +++ b/bunny.lua @@ -19,7 +19,7 @@ stepheight = 0.6, textures = { {"mobs_bunny_grey.png"}, {"mobs_bunny_brown.png"}, - {"mobs_bunny_white.png"}, + {"mobs_bunny_white.png"} }, sounds = {}, makes_footstep_sound = false, @@ -31,7 +31,7 @@ stepheight = 0.6, jump_height = 6, drops = { {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, lava_damage = 4, @@ -44,13 +44,14 @@ stepheight = 0.6, walk_start = 16, walk_end = 24, punch_start = 16, - punch_end = 24, + punch_end = 24 }, follow = {"farming:carrot", "farming_plus:carrot_item", "default:grass_1"}, view_range = 8, replace_rate = 10, replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot"}, replace_with = "air", + on_rightclick = function(self, clicker) -- feed or tame @@ -69,7 +70,7 @@ stepheight = 0.6, end self.object:set_properties({ - textures = {"mobs_bunny_evil.png"}, + textures = {"mobs_bunny_evil.png"} }) self.type = "monster" @@ -88,11 +89,13 @@ stepheight = 0.6, {"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 @@ -103,7 +106,7 @@ stepheight = 0.6, return true -- run only once, false/nil runs every activation end, attack_type = "dogfight", - damage = 5, + damage = 5 }) @@ -114,17 +117,18 @@ if minetest.get_modpath("ethereal") then end 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 @@ -139,7 +143,7 @@ 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}, + groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2} }) -- cooked rabbit @@ -147,32 +151,31 @@ 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}, + groups = {food_meat = 1, food_rabbit = 1, flammable = 2} }) minetest.register_craft({ type = "cooking", output = "mobs:rabbit_cooked", recipe = "mobs:rabbit_raw", - cooktime = 5, + cooktime = 5 }) -- rabbit hide minetest.register_craftitem(":mobs:rabbit_hide", { description = S("Rabbit Hide"), inventory_image = "mobs_rabbit_hide.png", - groups = {flammable = 2, pelt = 1}, + groups = {flammable = 2, pelt = 1} }) minetest.register_craft({ type = "fuel", recipe = "mobs:rabbit_hide", - burntime = 2, + burntime = 2 }) minetest.register_craft({ output = "mobs:leather", --- type = "shapeless", recipe = { {"mobs:rabbit_hide", "mobs:rabbit_hide"}, {"mobs:rabbit_hide", "mobs:rabbit_hide"} diff --git a/chicken.lua b/chicken.lua index 4531e46..d0fe7c2 100644 --- a/chicken.lua +++ b/chicken.lua @@ -5,7 +5,7 @@ local S = mobs.intllib_animal -- Chicken by JK Murray and Sirrobzeroone mobs:register_mob("mobs_animal:chicken", { -stepheight = 0.6, + stepheight = 0.6, type = "animal", passive = true, hp_min = 5, @@ -17,14 +17,14 @@ stepheight = 0.6, textures = { {"mobs_chicken.png"}, -- white {"mobs_chicken_brown.png"}, - {"mobs_chicken_black.png"}, + {"mobs_chicken_black.png"} }, child_texture = { - {"mobs_chick.png"}, + {"mobs_chick.png"} }, makes_footstep_sound = true, sounds = { - random = "mobs_chicken", + random = "mobs_chicken" }, walk_velocity = 1, run_velocity = 3, @@ -32,7 +32,7 @@ stepheight = 0.6, runaway_from = {"player", "mobs_animal:pumba"}, drops = { {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, lava_damage = 5, @@ -53,7 +53,7 @@ stepheight = 0.6, walk_speed = 24, run_start = 91, run_end = 110, - run_speed = 24, + run_speed = 24 }, follow = { "farming:seed_wheat", "farming:seed_cotton", "farming:seed_barley", @@ -77,7 +77,7 @@ stepheight = 0.6, self.egg_timer = 0 if self.child - or math.random(1, 100) > 1 then + or math.random(100) > 1 then return end @@ -88,9 +88,9 @@ stepheight = 0.6, minetest.sound_play("default_place_node_hard", { pos = pos, 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 -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 @@ -133,14 +134,14 @@ mobs:register_arrow("mobs_animal:egg_entity", { 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}, + damage_groups = {fleshy = 1} }, nil) end, hit_mob = function(self, player) player:punch(self.object, 1.0, { full_punch_interval = 1.0, - damage_groups = {fleshy = 1}, + damage_groups = {fleshy = 1} }, nil) end, @@ -181,7 +182,7 @@ local mobs_shoot_egg = function (item, player, pointed_thing) minetest.sound_play("default_place_node_hard", { pos = playerpos, gain = 1.0, - max_hear_distance = 5, + max_hear_distance = 5 }) local obj = minetest.add_entity({ @@ -251,46 +252,46 @@ 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}, + groups = {food_egg_fried = 1, flammable = 2} }) minetest.register_craft({ type = "cooking", recipe = "mobs:egg", - output = "mobs:chicken_egg_fried", + output = "mobs:chicken_egg_fried" }) -- raw chicken minetest.register_craftitem(":mobs:chicken_raw", { -description = S("Raw Chicken"), + 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}, + groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2} }) -- cooked chicken minetest.register_craftitem(":mobs:chicken_cooked", { -description = S("Cooked Chicken"), + 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}, + groups = {food_meat = 1, food_chicken = 1, flammable = 2} }) minetest.register_craft({ type = "cooking", recipe = "mobs:chicken_raw", - output = "mobs:chicken_cooked", + output = "mobs:chicken_cooked" }) -- feather minetest.register_craftitem(":mobs:chicken_feather", { description = S("Feather"), inventory_image = "mobs_chicken_feather.png", - groups = {flammable = 2, feather = 1}, + groups = {flammable = 2, feather = 1} }) minetest.register_craft({ type = "fuel", recipe = "mobs:chicken_feather", - burntime = 1, + burntime = 1 }) diff --git a/cow.lua b/cow.lua index f6d661f..0626e01 100644 --- a/cow.lua +++ b/cow.lua @@ -70,6 +70,7 @@ mobs:register_mob("mobs_animal:cow", { }, -- stay_near = {{"farming:straw", "group:grass"}, 10}, fear_height = 2, + on_rightclick = function(self, clicker) -- feed or tame @@ -100,8 +101,9 @@ mobs:register_mob("mobs_animal:cow", { end if self.gotten == true then - minetest.chat_send_player(name, - S("Cow already milked!")) + + minetest.chat_send_player(name, S("Cow already milked!")) + return end @@ -112,6 +114,7 @@ mobs:register_mob("mobs_animal:cow", { -- 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 @@ -120,7 +123,9 @@ mobs:register_mob("mobs_animal:cow", { clicker:get_inventory():add_item("main", ret_item) else local pos = self.object:get_pos() + pos.y = pos.y + 0.5 + minetest.add_item(pos, {name = ret_item}) end @@ -144,17 +149,18 @@ mobs:register_mob("mobs_animal:cow", { 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, - 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 @@ -170,7 +176,7 @@ minetest.register_craftitem(":mobs:bucket_milk", { inventory_image = "mobs_bucket_milk.png", stack_max = 1, 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 @@ -178,7 +184,7 @@ 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, drink = 1}, + groups = {food_milk_glass = 1, flammable = 3, vessel = 1, drink = 1} }) minetest.register_craft({ diff --git a/init.lua b/init.lua index fe6ca37..6cb63d2 100644 --- a/init.lua +++ b/init.lua @@ -8,11 +8,10 @@ else if minetest.get_modpath("intllib") then dofile(minetest.get_modpath("intllib") .. "/init.lua") if intllib.make_gettext_pair then - gettext, ngettext = intllib.make_gettext_pair() -- new gettext method + S = intllib.make_gettext_pair() -- new gettext method else - gettext = intllib.Getter() -- old text file method + S = intllib.Getter() -- old text file method end - S = gettext else -- boilerplate function S = function(str, ...) local args = {...} @@ -56,7 +55,9 @@ end -- Lucky Blocks -dofile(path .. "lucky_block.lua") +if minetest.get_modpath("lucky_block") then + dofile(path .. "lucky_block.lua") +end print ("[MOD] Mobs Redo Animals loaded") diff --git a/kitten.lua b/kitten.lua index ca0749b..8cfca44 100644 --- a/kitten.lua +++ b/kitten.lua @@ -2,18 +2,19 @@ local S = mobs.intllib_animal local hairball = minetest.settings:get("mobs_hairball") + -- Kitten by Jordach / BFD mobs:register_mob("mobs_animal:kitten", { -stepheight = 0.6, + stepheight = 0.6, 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, hp_min = 5, hp_max = 10, @@ -26,11 +27,11 @@ stepheight = 1.1, {"mobs_kitten_striped.png"}, {"mobs_kitten_splotchy.png"}, {"mobs_kitten_ginger.png"}, - {"mobs_kitten_sandy.png"}, + {"mobs_kitten_sandy.png"} }, makes_footstep_sound = false, sounds = { - random = "mobs_kitten", + random = "mobs_kitten" }, walk_velocity = 0.6, walk_chance = 15, @@ -38,7 +39,7 @@ stepheight = 1.1, runaway = true, jump = false, drops = { - {name = "farming:string", chance = 1, min = 0, max = 1}, + {name = "farming:string", chance = 1, min = 0, max = 1} }, water_damage = 0, lava_damage = 5, @@ -92,7 +93,7 @@ stepheight = 1.1, self.hairball_timer = 0 if self.child - or math.random(1, 250) > 1 then + or math.random(250) > 1 then return end @@ -103,9 +104,9 @@ stepheight = 1.1, minetest.sound_play("default_dig_snappy", { pos = pos, gain = 1.0, - max_hear_distance = 5, + max_hear_distance = 5 }) - end, + end }) @@ -116,17 +117,18 @@ if minetest.get_modpath("ethereal") then end 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 @@ -164,11 +166,11 @@ minetest.register_craftitem(":mobs:hairball", { minetest.sound_play("default_place_node_hard", { pos = newpos, gain = 1.0, - max_hear_distance = 5, + max_hear_distance = 5 }) itemstack:take_item() return itemstack - end, + end }) diff --git a/lucky_block.lua b/lucky_block.lua index e2b028c..eba0f7c 100644 --- a/lucky_block.lua +++ b/lucky_block.lua @@ -1,31 +1,28 @@ +lucky_block:add_blocks({ + {"spw", "mobs:sheep", 5}, + {"spw", "mobs:rat", 5}, + {"dro", {"mobs:rat_cooked"}, 5}, + {"spw", "mobs:bunny", 3}, + {"nod", "mobs:honey_block", 0}, + {"spw", "mobs:pumba", 5}, + {"nod", "mobs:cheeseblock", 0}, + {"spw", "mobs:chicken", 5}, + {"dro", {"mobs:egg"}, 5}, + {"spw", "mobs:cow", 5}, + {"dro", {"mobs:bucket_milk", "bucket:bucket_water"}, 8}, + {"spw", "mobs:kitten", 2}, + {"exp"}, + {"dro", {"mobs:hairball"}, 3}, + {"dro", {"mobs:chicken_raw", "mobs:chicken_cooked"}, 10}, + {"dro", {"mobs:pork_raw", "mobs:pork_cooked"}, 10}, + {"dro", {"mobs:mutton_raw", "mobs:mutton_cooked"}, 10}, + {"dro", {"mobs:meat_raw", "mobs:meat"}, 10}, + {"dro", {"mobs:glass_milk"}, 5} +}) -if minetest.get_modpath("lucky_block") then +if minetest.registered_nodes["default:nyancat"] then lucky_block:add_blocks({ - {"spw", "mobs:sheep", 5}, - {"spw", "mobs:rat", 5}, - {"dro", {"mobs:rat_cooked"}, 5}, - {"spw", "mobs:bunny", 3}, - {"nod", "mobs:honey_block", 0}, - {"spw", "mobs:pumba", 5}, - {"nod", "mobs:cheeseblock", 0}, - {"spw", "mobs:chicken", 5}, - {"dro", {"mobs:egg"}, 5}, - {"spw", "mobs:cow", 5}, - {"dro", {"mobs:bucket_milk", "bucket:bucket_water"}, 8}, - {"spw", "mobs:kitten", 2}, - {"exp"}, - {"dro", {"mobs:hairball"}, 3}, - {"dro", {"mobs:chicken_raw", "mobs:chicken_cooked"}, 10}, - {"dro", {"mobs:pork_raw", "mobs:pork_cooked"}, 10}, - {"dro", {"mobs:mutton_raw", "mobs:mutton_cooked"}, 10}, - {"dro", {"mobs:meat_raw", "mobs:meat"}, 10}, - {"dro", {"mobs:glass_milk"}, 5}, + {"tro", "default:nyancat", "mobs_kitten", true} }) - - if minetest.registered_nodes["default:nyancat"] then - lucky_block:add_blocks({ - {"tro", "default:nyancat", "mobs_kitten", true}, - }) - end end diff --git a/panda.lua b/panda.lua index ee741ef..38691d2 100644 --- a/panda.lua +++ b/panda.lua @@ -1,6 +1,7 @@ local S = mobs.intllib_animal + -- Panda by AspireMint (CC BY-SA 3.0) mobs:register_mob("mobs_animal:panda", { @@ -20,12 +21,12 @@ stepheight = 0.6, visual = "mesh", mesh = "mobs_panda.b3d", textures = { - {"mobs_panda.png"}, + {"mobs_panda.png"} }, makes_footstep_sound = true, sounds = { random = "mobs_panda", - attack = "mobs_panda", + attack = "mobs_panda" }, walk_chance = 5, walk_velocity = 0.5, @@ -35,7 +36,7 @@ stepheight = 0.6, follow = {"ethereal:bamboo", "bamboo:trunk"}, view_range = 8, drops = { - {name = "mobs:meat_raw", chance = 1, min = 1, max = 2}, + {name = "mobs:meat_raw", chance = 1, min = 1, max = 2} }, water_damage = 0, lava_damage = 5, @@ -59,14 +60,16 @@ stepheight = 0.6, punch_end = 120, -- 0 = rest, 1 = hiding (covers eyes), 2 = surprised }, + on_rightclick = function(self, clicker) if mobs:feed_tame(self, clicker, 20, true, true) then return end if mobs:protect(self, clicker) then return end if mobs:capture_mob(self, clicker, 0, 5, 50, false, nil) then return end - end, + end }) + if minetest.get_modpath("ethereal") and not mobs.custom_spawn_animal then mobs:spawn({ @@ -75,11 +78,12 @@ if minetest.get_modpath("ethereal") and not mobs.custom_spawn_animal then neighbors = {"group:grass"}, min_light = 14, interval = 60, - chance = 8000, -- 15000 + chance = 8000, min_height = 10, max_height = 80, - day_toggle = true, + day_toggle = true }) end + mobs:register_egg("mobs_animal:panda", S("Panda"), "mobs_panda_inv.png") diff --git a/penguin.lua b/penguin.lua index 6ffe0e9..316f026 100644 --- a/penguin.lua +++ b/penguin.lua @@ -1,6 +1,7 @@ local S = mobs.intllib_animal + -- Penguin by D00Med mobs:register_mob("mobs_animal:penguin", { @@ -16,7 +17,7 @@ stepheight = 0.6, mesh = "mobs_penguin.b3d", visual_size = {x = 0.25, y = 0.25}, textures = { - {"mobs_penguin.png"}, + {"mobs_penguin.png"} }, sounds = {}, makes_footstep_sound = true, @@ -26,7 +27,7 @@ stepheight = 0.6, jump = false, stepheight = 1.1, drops = { - {name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, + {name = "mobs:meat_raw", chance = 1, min = 1, max = 1} }, water_damage = 0, lava_damage = 4, @@ -39,7 +40,7 @@ stepheight = 0.6, walk_start = 25, walk_end = 45, fly_start = 75, -- swim animation - fly_end = 95, + fly_end = 95 -- 50-70 is slide/water idle }, fly_in = {"default:water_source", "default:water_flowing"}, @@ -56,20 +57,23 @@ stepheight = 0.6, if mobs:feed_tame(self, clicker, 4, false, true) then return end if mobs:protect(self, clicker) then return end if mobs:capture_mob(self, clicker, 5, 50, 80, false, nil) then return end - end, + end }) + if not mobs.custom_spawn_animal then -mobs:spawn({ - name = "mobs_animal:penguin", - nodes = {"default:snowblock"}, - min_light = 14, - interval = 60, - chance = 20000, - min_height = 0, - max_height = 200, - day_toggle = true, -}) + + mobs:spawn({ + name = "mobs_animal:penguin", + nodes = {"default:snowblock"}, + min_light = 14, + interval = 60, + chance = 20000, + min_height = 0, + max_height = 200, + day_toggle = true + }) end + mobs:register_egg("mobs_animal:penguin", S("Penguin"), "mobs_penguin_inv.png") diff --git a/rat.lua b/rat.lua index f84ea69..2f2d27b 100644 --- a/rat.lua +++ b/rat.lua @@ -1,6 +1,7 @@ local S = mobs.intllib_animal + -- Rat by PilzAdam (B3D model by sirrobzeroone) mobs:register_mob("mobs_animal:rat", { @@ -15,11 +16,11 @@ stepheight = 0.6, mesh = "mobs_rat.b3d", textures = { {"mobs_rat.png"}, - {"mobs_rat2.png"}, + {"mobs_rat2.png"} }, makes_footstep_sound = false, sounds = { - random = "mobs_rat", + random = "mobs_rat" }, walk_velocity = 1, run_velocity = 2, @@ -29,6 +30,7 @@ stepheight = 0.6, lava_damage = 4, light_damage = 0, fear_height = 2, + on_rightclick = function(self, clicker) mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:rat") end, @@ -59,6 +61,7 @@ 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) @@ -66,17 +69,19 @@ local function rat_spawn(self, pos) self.health = 100 end + if not mobs.custom_spawn_animal then -mobs:spawn({ - name = "mobs_animal:rat", - nodes = {"default:stone"}, - min_light = 3, - max_light = 9, - interval = 60, - chance = 8000, - max_height = 0, --- on_spawn = rat_spawn, -}) + + mobs:spawn({ + name = "mobs_animal:rat", + nodes = {"default:stone"}, + min_light = 3, + max_light = 9, + interval = 60, + chance = 8000, + max_height = 0, + -- on_spawn = rat_spawn, + }) end diff --git a/sheep.lua b/sheep.lua index 374fa1e..324d7e8 100644 --- a/sheep.lua +++ b/sheep.lua @@ -88,6 +88,7 @@ for _, col in ipairs(all_colours) do {"default:dirt_with_grass", "default:dirt", -2} }, fear_height = 3, + on_replace = function(self, pos, oldnode, newnode) self.food = (self.food or 0) + 1 @@ -100,11 +101,15 @@ for _, col in ipairs(all_colours) do self.drops = drops_normal self.object:set_properties({ - textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"}, + textures = { + "mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" + .. col[3] .. ")" + }, mesh = "mobs_sheep.b3d", }) end end, + on_rightclick = function(self, clicker) --are we feeding? @@ -117,7 +122,10 @@ for _, col in ipairs(all_colours) do self.drops = drops_normal self.object:set_properties({ - textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"}, + textures = { + "mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" + .. col[3] .. ")" + }, mesh = "mobs_sheep.b3d" }) end @@ -144,7 +152,7 @@ for _, col in ipairs(all_colours) do local obj = minetest.add_item( self.object:get_pos(), - ItemStack( "wool:" .. col[1] .. " " .. math.random(1, 3) ) + ItemStack( "wool:" .. col[1] .. " " .. math.random(3) ) ) if obj then @@ -162,7 +170,7 @@ for _, col in ipairs(all_colours) do self.object:set_properties({ textures = {"mobs_sheep_shaved.png"}, - mesh = "mobs_sheep_shaved.b3d", + mesh = "mobs_sheep_shaved.b3d" }) return @@ -214,7 +222,9 @@ for _, col in ipairs(all_colours) do end }) -mobs:register_egg("mobs_animal:sheep_"..col[1], S("@1 Sheep", col[2]), "wool_"..col[1]..".png^mobs_sheep_inv.png") + -- spawn egg + mobs:register_egg("mobs_animal:sheep_"..col[1], S("@1 Sheep", col[2]), + "wool_"..col[1]..".png^mobs_sheep_inv.png") -- compatibility mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1]) @@ -223,22 +233,24 @@ end if not mobs.custom_spawn_animal then -mobs:spawn({ - name = "mobs_animal:sheep_white", - nodes = {"default:dirt_with_grass", "ethereal:green_dirt"}, - neighbors = {"group:grass"}, - min_light = 14, - interval = 60, - chance = 8000, -- 15000 - min_height = 0, - max_height = 200, - day_toggle = true -}) + + mobs:spawn({ + name = "mobs_animal:sheep_white", + nodes = {"default:dirt_with_grass", "ethereal:green_dirt"}, + neighbors = {"group:grass"}, + min_light = 14, + interval = 60, + chance = 8000, + min_height = 0, + max_height = 200, + day_toggle = true + }) end mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility + -- raw mutton minetest.register_craftitem(":mobs:mutton_raw", { description = S("Raw Mutton"), diff --git a/warthog.lua b/warthog.lua index 0c2452d..87ea607 100644 --- a/warthog.lua +++ b/warthog.lua @@ -1,6 +1,7 @@ local S = mobs.intllib_animal + -- Warthog originally by KrupnoPavel, B3D model by sirrobzeroone mobs:register_mob("mobs_animal:pumba", { @@ -56,6 +57,7 @@ mobs:register_mob("mobs_animal:pumba", { die_loop = false, die_rotate = true }, + on_rightclick = function(self, clicker) if mobs:feed_tame(self, clicker, 8, true, true) then return end @@ -64,6 +66,7 @@ mobs:register_mob("mobs_animal:pumba", { end }) + local spawn_on = {"default:dirt_with_grass"} local spawn_by = {"group:grass"} @@ -78,19 +81,22 @@ if minetest.get_modpath("ethereal") then end if not mobs.custom_spawn_animal then -mobs:spawn({ - name = "mobs_animal:pumba", - nodes = spawn_on, - neighbors = spawn_by, - min_light = 14, - interval = 60, - chance = 8000, -- 15000 - min_height = 0, - max_height = 200, - day_toggle = true -}) + + mobs:spawn({ + name = "mobs_animal:pumba", + nodes = spawn_on, + neighbors = spawn_by, + min_light = 14, + interval = 60, + chance = 8000, + min_height = 0, + max_height = 200, + day_toggle = true + }) end + +-- spawn egg mobs:register_egg("mobs_animal:pumba", S("Warthog"), "mobs_pumba_inv.png") From ca6ff68c3a7df99348e3eabc37a805b1200291d7 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Tue, 11 Oct 2022 11:09:19 +0100 Subject: [PATCH 03/27] have sheep spawn in mixed herds --- bunny.lua | 4 +++- sheep.lua | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/bunny.lua b/bunny.lua index 14514ea..516822b 100644 --- a/bunny.lua +++ b/bunny.lua @@ -12,7 +12,7 @@ stepheight = 0.6, hp_min = 1, hp_max = 4, 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", mesh = "mobs_bunny.b3d", drawtype = "front", @@ -80,6 +80,7 @@ stepheight = 0.6, return end end, + on_spawn = function(self) local pos = self.object:get_pos() ; pos.y = pos.y - 1 @@ -105,6 +106,7 @@ stepheight = 0.6, return true -- run only once, false/nil runs every activation end, + attack_type = "dogfight", damage = 5 }) diff --git a/sheep.lua b/sheep.lua index 324d7e8..4c3eb57 100644 --- a/sheep.lua +++ b/sheep.lua @@ -1,6 +1,8 @@ local S = mobs.intllib_animal +local random = math.random + local all_colours = { {"black", S("Black"), "#000000b0"}, {"blue", S("Blue"), "#015dbb70"}, @@ -152,15 +154,15 @@ for _, col in ipairs(all_colours) do local obj = minetest.add_item( self.object:get_pos(), - ItemStack( "wool:" .. col[1] .. " " .. math.random(3) ) + ItemStack("wool:" .. col[1] .. " " .. random(3)) ) if obj then - obj:setvelocity({ - x = math.random(-1, 1), + obj:set_velocity({ + x = random(-1, 1), y = 5, - z = math.random(-1, 1) + z = random(-1, 1) }) end @@ -243,7 +245,35 @@ if not mobs.custom_spawn_animal then chance = 8000, min_height = 0, max_height = 200, - day_toggle = true + day_toggle = true, + active_object_count = 3, + + -- custom function to spawn sheep herds around main mob + on_spawn = function(self, pos) + + local nods = 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}, + {"default:dirt_with_grass", "ethereal:green_dirt"}) + + if nods and #nods > 0 then + + -- min herd of 3 + local iter = math.min(#nods, 3) + +-- print("--- sheep at", minetest.pos_to_string(pos), iter) + + for n = 1, iter do + + -- 1/8 chance of black sheep, 1/4 chance of baby sheep + local pos2 = nods[random(#nods)] ; pos2.y = pos2.y + 1.5 + local type = random(8) == 1 and "_black" or "_white" + local kid = random(4) == 1 and true or nil + + mobs:add_mob(pos2, {name = "mobs_animal:sheep" .. type, child = kid}) + end + end + end }) end From 848622ccde1f86078d502114233c85c00ec2ab4f Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Tue, 11 Oct 2022 12:05:56 +0100 Subject: [PATCH 04/27] add herd node check --- sheep.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sheep.lua b/sheep.lua index 4c3eb57..3a3c1ab 100644 --- a/sheep.lua +++ b/sheep.lua @@ -266,11 +266,17 @@ if not mobs.custom_spawn_animal then for n = 1, iter do -- 1/8 chance of black sheep, 1/4 chance of baby sheep - local pos2 = nods[random(#nods)] ; pos2.y = pos2.y + 1.5 + local pos2 = nods[random(#nods)] local type = random(8) == 1 and "_black" or "_white" local kid = random(4) == 1 and true or nil - mobs:add_mob(pos2, {name = "mobs_animal:sheep" .. type, child = kid}) + pos2.y = pos2.y + 2 + + if minetest.get_node(pos2).name == "air" then + + mobs:add_mob(pos2, { + name = "mobs_animal:sheep" .. type, child = kid}) + end end end end From 1799b4c217a167284aaff64848484ed72376c7be Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 16 Nov 2022 09:50:57 +0000 Subject: [PATCH 05/27] fix dye'd sheep protection (thx Niklp) --- sheep.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sheep.lua b/sheep.lua index 3a3c1ab..93594ac 100644 --- a/sheep.lua +++ b/sheep.lua @@ -201,6 +201,8 @@ for _, col in ipairs(all_colours) do ent.owner = name ent.tamed = true + ent.protected = self.protected + ent.fire_damage = self.fire_damage -- take item if not mobs.is_creative(clicker:get_player_name()) then From 8f5ebf8277b029b010cd66ebbaf9f6c19dbdcc8f Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 9 Dec 2022 09:53:59 +0000 Subject: [PATCH 06/27] update license.txt (need some licenses filled) --- license.txt | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++ rat.lua | 2 +- sheep.lua | 6 ++--- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/license.txt b/license.txt index dd62499..a0bc139 100644 --- a/license.txt +++ b/license.txt @@ -1,3 +1,7 @@ + +All my models (K Pavel) and change code on valid license The MIT License + + The MIT License (MIT) Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1 @@ -20,6 +24,7 @@ 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 THE SOFTWARE. + Chicken sounds from freesounds.org under CC0 Mutton, Pork and Rabbit meat textures by Piezo_ under CC0 @@ -27,3 +32,64 @@ Mutton, Pork and Rabbit meat textures by Piezo_ under CC0 Cow textures by sirrobzeroone 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 () + mobs_bunny.b3d + mobs_bunny_grey.png + mobs_bunny_brown.png + mobs_bunny_white.png + +Models/Textures by JK Murray () + 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 () + mobs_cow.b3d + mobs_cow.png + mobs_cow2.png + +Models/Textures by Jordach/BFD () + mobs_kitten.b3d + mobs_kitten_striped.png + mobs_kitten_splotchy.png + mobs_kitten_ginger.png + mobs_kitten_sandy.png + +Models/Textures by AspireMint (CC BY-SA 3.0) + mobs_panda.b3d + mobs_panda.png + +Models/Textures by D00Med () + 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 diff --git a/rat.lua b/rat.lua index 2f2d27b..98135b0 100644 --- a/rat.lua +++ b/rat.lua @@ -2,7 +2,7 @@ local S = mobs.intllib_animal --- Rat by PilzAdam (B3D model by sirrobzeroone) +-- Rat by KPavel and PilzAdam (B3D model by sirrobzeroone) mobs:register_mob("mobs_animal:rat", { stepheight = 0.6, diff --git a/sheep.lua b/sheep.lua index 93594ac..6c66f9c 100644 --- a/sheep.lua +++ b/sheep.lua @@ -22,7 +22,7 @@ local all_colours = { } --- Sheep by PilzAdam, texture converted to minetest by AMMOnym from Summerfield pack +-- Sheep by PilzAdam/K Pavel, texture converted to minetest by AMMOnym from Summerfield pack for _, col in ipairs(all_colours) do @@ -35,7 +35,7 @@ for _, col in ipairs(all_colours) do {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2} } - mobs:register_mob("mobs_animal:sheep_"..col[1], { + mobs:register_mob("mobs_animal:sheep_" .. col[1], { stay_near = {"farming:straw", 10}, stepheight = 0.6, type = "animal", @@ -228,7 +228,7 @@ for _, col in ipairs(all_colours) do -- spawn egg mobs:register_egg("mobs_animal:sheep_"..col[1], S("@1 Sheep", col[2]), - "wool_"..col[1]..".png^mobs_sheep_inv.png") + "wool_" .. col[1] .. ".png^mobs_sheep_inv.png") -- compatibility mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1]) From a4e96015597ef2baead805934b34e7cb3710f20b Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 10 Dec 2022 11:53:32 +0000 Subject: [PATCH 07/27] update license.txt --- license.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/license.txt b/license.txt index a0bc139..cef876f 100644 --- a/license.txt +++ b/license.txt @@ -29,8 +29,6 @@ Chicken sounds from freesounds.org under CC0 Mutton, Pork and Rabbit meat textures by Piezo_ under CC0 -Cow textures by sirrobzeroone under CC0 - mobs_panda_viking.png by Zlo under CC0 Models/Textures/Media by Krupnov Pavel (WTFPL) @@ -69,7 +67,7 @@ Models/Textures by JK Murray () mobs_chicken_black.png mobs_chick.png -Models/Textures by sirrobzerrone () +Models/Textures by sirrobzerrone (CC0) mobs_cow.b3d mobs_cow.png mobs_cow2.png @@ -85,7 +83,7 @@ Models/Textures by AspireMint (CC BY-SA 3.0) mobs_panda.b3d mobs_panda.png -Models/Textures by D00Med () +Models/Textures by D00Med (CC BY-SA 3.0) mobs_penguin.b3d mobs_penguin.png From 5eea644cf7dd62c41e19acb55c9692c3039965eb Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 10 Dec 2022 12:06:10 +0000 Subject: [PATCH 08/27] update license.txt --- license.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/license.txt b/license.txt index cef876f..c7cae31 100644 --- a/license.txt +++ b/license.txt @@ -25,7 +25,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Chicken sounds from freesounds.org under CC0 +Chicken/Bee/Cow/Kitten/Panda/Pig/Rat/Sheep sounds from freesounds.org under CC0 Mutton, Pork and Rabbit meat textures by Piezo_ under CC0 @@ -60,7 +60,7 @@ Models/Textures by ExeterDad () mobs_bunny_brown.png mobs_bunny_white.png -Models/Textures by JK Murray () +Models/Textures by JK Murray (CC0) mobs_chicken.b3d (converted to .b3d by sirrobzerrone) mobs_chicken.png mobs_chicken_brown.png From 4948d0831c52b723051bb44f9884e35544f63530 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Tue, 20 Dec 2022 08:51:35 +0000 Subject: [PATCH 09/27] update license.txt --- license.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/license.txt b/license.txt index c7cae31..31750b3 100644 --- a/license.txt +++ b/license.txt @@ -25,7 +25,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Chicken/Bee/Cow/Kitten/Panda/Pig/Rat/Sheep sounds from freesounds.org under CC0 +Chicken/Bee/Cow/Panda/Pig/Rat/Sheep sounds from freesounds.org under CC0 Mutton, Pork and Rabbit meat textures by Piezo_ under CC0 @@ -54,7 +54,7 @@ Models/Textures by Krupno Pavel (MIT) mobs_pumba.b3d (converted to .b3d by sirrobzerrone) mobs_pumba.png -Models/Textures by ExeterDad () +Models/Textures by ExeterDad (CC0) mobs_bunny.b3d mobs_bunny_grey.png mobs_bunny_brown.png @@ -72,13 +72,16 @@ Models/Textures by sirrobzerrone (CC0) mobs_cow.png mobs_cow2.png -Models/Textures by Jordach/BFD () +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 From 35988d5cb3684938cde7c70bbe3a2ccbb4bb2f9c Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 21 Dec 2022 08:21:31 +0000 Subject: [PATCH 10/27] update license.txt --- license.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/license.txt b/license.txt index 31750b3..33e965a 100644 --- a/license.txt +++ b/license.txt @@ -25,7 +25,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Chicken/Bee/Cow/Panda/Pig/Rat/Sheep sounds from freesounds.org under CC0 +Chicken/Cow/Panda/Pig/Sheep sounds from freesounds.org under CC0 Mutton, Pork and Rabbit meat textures by Piezo_ under CC0 @@ -94,3 +94,8 @@ Textures by LithiumSound's Summer Field Texture Pack (CC BY-SA 4.0 NC ShareAlike 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 From 91a3c1e17da3747c352f26ded26f1e387b4093bb Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 21 Dec 2022 08:31:04 +0000 Subject: [PATCH 11/27] fix evil bunny --- bunny.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bunny.lua b/bunny.lua index 516822b..abece91 100644 --- a/bunny.lua +++ b/bunny.lua @@ -69,6 +69,8 @@ stepheight = 0.6, clicker:set_wielded_item(item) end + self.base_texture = {"mobs_bunny_evil.png"} + self.object:set_properties({ textures = {"mobs_bunny_evil.png"} }) @@ -76,6 +78,7 @@ stepheight = 0.6, self.type = "monster" self.health = 20 self.passive = false + self.runaway = false return end From b2f91cc8c3305fcdfcd97351996693426b730071 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 6 Jan 2023 10:13:22 +0000 Subject: [PATCH 12/27] fix crash when no default --- bee.lua | 7 ++++--- cow.lua | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bee.lua b/bee.lua index 21c3405..310d1e2 100644 --- a/bee.lua +++ b/bee.lua @@ -91,14 +91,15 @@ minetest.register_node(":mobs:beehive", { sunlight_propagates = true, walkable = true, groups = {oddly_breakable_by_hand = 3, flammable = 1, disable_suffocation = 1}, - sounds = default.node_sound_defaults(), + sounds = default and default.node_sound_defaults(), on_construct = function(pos) local meta = minetest.get_meta(pos) + local gui_bg = default and default.gui_bg .. default.gui_bg_img .. default.gui_slots or "" meta:set_string("formspec", "size[8,6]" - ..default.gui_bg..default.gui_bg_img..default.gui_slots + .. gui_bg .. "image[3,0.8;0.8,0.8;mobs_bee_inv.png]" .. "list[current_name;beehive;4,0.5;1,1;]" .. "list[current_player;main;0,2.35;8,4;]" @@ -156,7 +157,7 @@ minetest.register_node(":mobs:honey_block", { description = S("Honey Block"), tiles = {"mobs_honey_block.png"}, groups = {snappy = 3, flammable = 2}, - sounds = default.node_sound_dirt_defaults() + sounds = default and default.node_sound_dirt_defaults() }) -- recipe diff --git a/cow.lua b/cow.lua index 0626e01..a160e96 100644 --- a/cow.lua +++ b/cow.lua @@ -252,7 +252,7 @@ minetest.register_node(":mobs:cheeseblock", { tiles = {"mobs_cheeseblock.png"}, is_ground_content = false, groups = {oddly_breakable_by_hand = 3}, - sounds = default.node_sound_dirt_defaults() + sounds = default and default.node_sound_dirt_defaults() }) minetest.register_craft({ From 099a4945ae9acd49bc2977edb5da04a36c5266e1 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 1 Feb 2023 10:39:17 +0000 Subject: [PATCH 13/27] new sheep models by Sirrobzeroone to fix dark entity glitch when shaders enabled --- license.txt | 4 ++-- models/mobs_sheep.b3d | Bin 71405 -> 86326 bytes models/mobs_sheep_shaved.b3d | Bin 55932 -> 67325 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/license.txt b/license.txt index 33e965a..c67bcca 100644 --- a/license.txt +++ b/license.txt @@ -34,8 +34,8 @@ 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_sheep.b3d (converted to .b3d by sirrobzerrone) + mobs_sheep_shaved.b3d (converted to .b3d by sirrobzerrone) mobs_stone_monster.b3d mobs_stone_monster.png mobs_dirt_monster.png diff --git a/models/mobs_sheep.b3d b/models/mobs_sheep.b3d index bcf2dfc5cc0899c4d0eac4715919a9b45e7f8234..9e991f869542d5bd3a1b328bbe698ea062ba647c 100644 GIT binary patch literal 86326 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 WCq>4G-)#A*-A*#|Q@foFy8j=-^;e|; literal 71405 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 WM=$?2w|64zA%4Go9CG_QecQ5 diff --git a/models/mobs_sheep_shaved.b3d b/models/mobs_sheep_shaved.b3d index 857b406ae80db976d2e53b4251139cd79ed4d5bd..1edacbd5f4e279b23567b8ae99e8da0b966a40f4 100644 GIT binary patch literal 67325 zcmeI*b$Aq4*!S_^?(S~I*@YmNYMpQK z(9&to$h5ELb_-;$oXuLsv{o0si`xE0kHFlO+X7yFy>hpiMx-m792N zY=ZV}EPZ?I3b(FFU-#=RzOruM*Yue!_wrSk*d%c4&83em-@CiM46OQV`D3rw>FZt= zC-;zbT3_ayknl;MQkKk*t4b*~59+r#PW zm0QSm)Az=m<&l9G9&HG?x5o!*9|gY7neDMy>lA z*M8ppUf{cNYXa_dpX<4@R=f3$9@~}|{zzrDmTCVC4sPEoZT^n>G;bzr%8F)|S6{E( zOt$X@>H9~M;&xy6vN-P{_c9l1dL>ZhQco*P-dBY$c1&>ISH~W9^L+n#<-Fc&?(Oko zSaWN9!5Gi?sr$7#?@6z|Ub)%wdUcug_gDMsGP_?}#|9q-=3fYZ>^*ey$J*A-n&Fna z?}U$PTWt?i^6cxCbFYJxjXnx!-^DD;Ia&7wN|m!Rk7#STw?{#l7ICGfP5X=Ux`= z+vJ$_*!n9rv8=V|Li@+wr^RL3-6=I6TL)QZl(OC!Qq!}qdtEs>_j<`9eYeE4f9$no z_ocS7)o%CL&+ERStUb-$H}c)G)(4GRdG__nxz|Cp-&5Irmwr?{;aI&aC+2r=5!E)P zRA9qLEv*yva~{`elV#ewLoY{6P1DMrR&-Y(d)lDquSG;{7;S~>>y^`KI*-^Br2;+1 zjkYc`j|#7Djv6b|Cd)i-uq;(&T5p-hMp+h}rhRqVN3txPpU~GUr_*#E&E&ONvdoF+ z5xM>G*HI~=NuaCDLtmS-%wg{|w%1FjzFs+JS#AlJ?Z4!@4v?KdMC*G^O}d(>+o7;ufAS6uVryh)A!I+Sr&KS zM!cVOnzPMyU3HQ7TByEWIi04zm%0uD^4?u0>$KoE(~s-+E%arMz{VfO1?J1TFC^1+ z`_4*QFfuxFT)@4}KcA5=vUyxH&%Rzc_xdZ)JV#*dhs`YaJf_vF5LorW_&`sYuP#ex z*}i{&lPxkL$@qYKTjm;>CDQuTyRTQyy)4}~mk+#FsJZ2yN5aWmffe;)1M^r1ZDhV( zqf12obaQ;by)BD>UNkZ+zjt4+oO@Y*D4r|Oxp8yP-x+t#d5?R&C*7~Z`F-=sdHrs= zU)#Dq6$1L&+}nKQi0qNN&E4B*$e&pvbsKs0^~$-|!Hu`d2XtL^x}7UZ$AI;&apAY3 zWi6ey%r!3PG<{F%G-q50)z>Sh({vurxNw$vRCkRFO<5MpH7@8h?W@zAaUoP+ubfWP zc{t-j;(6$};C>y>xS-RVWp>7eP<_2}&ayb;f_wcrpY8fOoaJ-I1^4T9#s#mwUOD$N z|IfHEtB1WU)4RrnJcrZT+dPwNTyVcO=ktEKM_;d;dwV$JLJ8(E$Tcn`@bh}R#s&9# z&H23d>g$zrZ#QRL@S2C$>+o7;ufAS6uVryhbH)XCUuRsdEDe+Qj$ zVU4WQ?ipts*X^t0LjSX41Nmg#>$J>_3&pdH4Y;?tGcI`b^~$-|pEEAF=b__5blkW= zN#;9*aUtyX*noRmI^%*@U$2~dS)6gfJr5lhe(O3uaE5izhjHP+mT>|1wsgh?ufAS6 z_p&(Sf_qt<&vtjt85g|XlU{wja$dh%?$@T{g1$EQcGGb|x4C;8Ipcy?U$2~d9XR8{ zu@8gC3!8Q?JMJ7W%wk`Dn@rQsD?MJ&Y5JbjY0kJ1s;^g0r|CSLabYR*7_+9zap!p9 zHia7IOBqQ z{W;@;z7A*koN>YZdYy5>tFKqiz0A(I(35@id!N@i?i?>1YZg3SxGK|}_qhADIpcy? zU$2~ddpP65JmyjR=S9c==XZu>X&}>_;|2G7%^4TG`g-Nu+szplI(f{)>vec7vsYiQ zoY%6rr#a(-yRS1Y=rm`WJL5vAzFs+&R!oO@ZEalt(g zXI$vOI;bb})#C;I>~wESXI${=>y>jai!&~`m&N&=ap#=(xYv8qtFKqi>vzlj+MIF0 zz1^H~!M%-~alxyvSI)f-oN-}3`{=9Wz2=My*NO#?7uLx%XI#)}`kvHj&bSb&uUAf| z={%fqVIA`r=o%L$uq@qOTMEQ>QPxYwUEF6irUmd_a%+^^Re7rgp<<=o5cj0?kO2agv{yT*l9?8_f(3b%-1Bh8g>EumU6yLDalySUopHgduUF2!EY7&#o`*9otYID0a*Ye_ZRv~) zUVXiC?qzYt1^2Qz_iJ;;1^0Gy#s&8_a>fO(zFs-^I&j8? z$bzMhzqxwe@vU38A8*#EWMJxZI|Eag*0ICuQG+)OvS!P)vG13U(p*2L#b(VF;nmkG zcbvW}nTPhREAxm=+r?Th(~_Qk&T3Nkc;J-eblMW8t)1YHoWQicGGAT3=!yPFufATn z@yw$;ee20Q+{^s&sy5bwv6lnxpZC5@i>fmv!reE0!^#1j=GE6L=U#u>SLflLHfZ{@ z)~*r11l)ZG$h5-KW=6PQN2v^V13JyCuUF2!?zOMZ!#z#cUsTRqkImx+nRZ&XuY29k zIMdtOoM@XneZ6w-?K@WbhGokY;m*a3{V=dAs={O2?evhQmQK5WWZ$vqQilWUWSf6q zuY{F)Zd{~SU$5M!_dW<{-!;;A&S$yozV2LH$DG#MwC5vl%RIuG|Cpfjs5mC4HFM?c zz`T(O$F4p6G2x}f3C9a`ENQKuI6L6g*DJSJ`o^Z%8PL8P{UxoiE$1TL)2>%d`TxzM zS*MitvfN$pbwKAkO8TbzOCC z)z|B_c`b{3nzPN_ec!KL(pozsS)_Zr{m>_;)#_x@$KHQVU$30|y{7Noj&;vPy5~`= zYVf_Q)13Fc=9bBO-2L7-J0_*|+h*^+UOD%&==)TE7u@rhH8iC)UtXJgdpPrOzwh14 z>@1(t*DL2#ALw#%(933f_~Y_hadOS=v%aC6`Jjm0C(8DW%d$rIkt}l~F2# zRC=i_QkkVPNoAMHCY4nxmsC!v98!6u@<`>DDj=0#DxXwgsX|f(rHV-vl`0}tQc7R)kUhaR1c}{Qr)C_O2tS;OZAcJE!9h^zf?b|zEaOg4U`%nHAHH# z)F7$nrG`oAop~=vjgT5HHA-rv)QeItOT8pDT57D+7^zpJVx`7Qjgy)rHBoAU)KsY{ zQj?`-NKKcTCN*1XmefqCc~Wzw=147&dR1z^)MBYcQVXS)NiCIHBDGR#h17DX)l#oX zt&&rz{#c1UfP+9tJ2>P@MgQhTNLNbQ!2liDw} zPwJr50jYSYBT|Q@4oM|Q9g{jLbyDht)N!dZQm3U(Nu85=OX{rDMX3u?=cTSlU6#5e zbzSP3)K#flQa7b;NZpmXBXwKqzSP@N_oUvHdPnMk)O%8oq#jCrDD{EV`%<4seJu5n z)aO#4Nqs8ymDHC~Ur2o`^^MfmQa?z2FZG?&&r&~0{V4UD)UQ&%Nc}1Ght%&<|498U z^_NtVB>EutX$r~3WKv0`Qc1~;pkXPb(n_U~N-dQ^D!o)XsmxNDq%ulnlgcWUMJlIM z4yo)?d8Ben<&w%Tl}{?KR3WK?QU#=nN)?eRELB3PxKuHz(o&_QN=lWLdPb^@R0XN> zQsty7OI4DpDCL*(NmY>wm#QXJRjQ^`4XNrL}Gg>RG8SQk|tbNp+X%Ce>9c zMk-pWhg5H=UQ#`!`bqVb>LWE!YJgOKslif%q@I%+CN)%Qh|~zF;Zn~_jg)#(>IJEn zq()1Pk{ToRiqy+e2c?cl9hEvFbwcX6 zRD#rLsZ&xXrQVV{D|JTdg4B7bb5fV3E=gUKx+Zm1>Wb7&sT)$)rS3@GmbxYNw$weT zyHf8+J&?LD^+@WW)Vor(TQqK-UVi_y^|K#`)zLe#%gBdD-4}cIkz2Pb*^~eG;eT(u z?tOgn9<85}SGBb2v}{pdb4}}aYWq=^-~cZ3&=zYy+7F@oCk=+4Dx1t8o7^Cq!XTT{ zAe+h{o7y0o#vq&4Ae+u0%Nr;**hL>hZ{rNXP;3x=44usw48;b~$I#hK!BA`veGHw= z91O(<(Z|qPc^lh-Aof2kC!hHJpEVeYeVS}GgKTz#Yz~8LPJ?VNgKTbtY#xJbUW05t zgKU0-YypF8L4#}|gKS}gY!QQOQG;wTgKTkwYzc#GNrP-DgKTMoY#D>>GX~kR2HA23 z+42V23I^GV23htfVuM}uG4$teo=xnuMC^m>bhR%iuL$N{hF?6o=xp6!C^m>bhR)UthGK*0W9Y2C122K6$uxK{nbT8)J~|X^`z@knL@d?PHMbYmg0|+uBOzvNS|{u#lA|U&p8QVUnSD#oV>8F66teJI@ni_^tm%@P6XIjl5{!;@b;A? zea?ZmeI-esbHHq0VbbRu=-OA9^f?Ep_7x_5&Vi+U7&Kxkii(&vTsL0XX@_EjkT zCkI#dRVaPVL6LoRN}qEuV_%)p=NyFCSEuwj2M_jDD}ByRzkSt8pR==WU$xTb>}1El6ZTaxea=pReYH%VGkDuq%k(*eu6?ykpEFq6SJCu2 zgPeU8O`kJ3*;mo@IfIIQbxof$7}!_W^f@2m_SH3g&WEpk)lHxCp=n=r)8~BHg+=QV zX)!_Ut8x0zUOeZ6!@e@7llX<_Ol|NgolYO157Gt(v9H+aKL_!AFb=_?I1Hc1;Wz?c zz!z~Oj>6IS626SD;20c><8VC2;sl(ClW;Ol!KpY6r{fHqiL-Dv&cV4j59i~nxBwU8 zB3z71a49as<+uV@;wpR%SK}I7i|cSbZorMW2{+>w+={Q`8@LU(;||=3Z{jZ8jeBq} z?!)~Uhw*p-58@#_j7RV&9>WAYjwkRWp2E|324$SF+go@J&*KHWh?np(Ucsw)4X@)3 zyotB)Hr~Ozcn{yk`}hFg!FTZ?KEn6#ef$7F#E8ws@N4`Azs2wH zd;9@^#GmkI`~`o--|%<*1OLRo@NfJF|3zouPm&}!At@%qR1D7Vl9loNDQEbQCJ)6U|p<-^|1jq#75W{n_yFHhRv}B zw!~K08rxu7Y=`afS?quvu@iR2F4z^jVR!6-(HMh0u^0BnKG+xgVSgNe1MxW=goAMi z4#i>kJPyYZ_yWF&BXJat#+UGAdD zpEjG!Ae-DEo5CQQ(jc44Ae-7Co5moU)*zeCAe-JGo53KP(IA`2Ae-4Bo5diT)gYVA zAe-GFo5LWR(;%D6Ae-ADo5vuV*C3nEAe-MHTfiV&&>&mLAY0fVTf`t+)F4~TAY0rZ zTf!h)(jZ&PAY0lXTgD*!j6t@nLAIPhw!A^Mf8DzT~WP2E7qYbh#2HBnl*rW!rp5cp&lnRmC&#oX_l*+M8u#&)o)+VO?Ek3IBX+yRT1ik(0BJuxxufcd z8#M*$2^W2?CsR~CQKITe5LHibsCx23)e{q{o^(+4gn}BJb*!Z)0`$2acO5`7-juQi?#FsOx1%c zRS%rh5~v3}`dklYR6S5p^&mvm0}NFU9#lOrP<5wY)g5|Och*(i5m$95Th$$CRd0qEuKj^jThqyNVfYzoTzS{JIRhxcjYSRxyZTexSE!uwk??#CUtcQs>2`A$e zoQl(MI?lkEI16Xv9Gr{ua6Z0@3veMW!o|1*m*O&9jw^5_uEN)FHLk(6xDMCj2Hc37 za5HYft@t{=f!lC9?!cY+Cho%BxCi&*KHQIS7>@_=ARfZQcm$8)F-*YYcmhx2DLjp5 z@GQQC=kPpUz>9bZFXI)wir4Tu-oTr93vc5cyo>knZM=^U@Ev>?AL1i?58uZR@I(9v zKgLh+Q~V4+$1m_p{0hIuZ}40E4!_4A@JIX!f5u<%SNsis$3O5-{0slafAC)nOA`D? z5=@H8Fgd2cl$Z)rV;W40=`cNJz>Js)Gh-IairFwb=D?ho3v**0%!~OjKNi4(SO^Pa z5iE+uusD{$l2{5$V;Ot~%VIe!j}@>YR>I0y1%2qps#p!fu{zeknpg`XFcJgE4xjz! z0`whFo9T71F4n{P*Z>=1BW#RKuqigf=GX#TVk>NoZLlr2!}jGX7ixY4nPQuAJ1*hUPoQ^YaCeFgyI0xtAJe-fO;sRWVi*PY6!KJtim*WatiL3B6 zT#ajREw01$xB)lfCftl$a4Wu!Z{RlEjyrHCzKOeVH}1i`xDWSZ9LD1TJcx(zFdo69 zcnlNpIG(_hcnVMB89a+`;W<2y7w{rp!pnFCui`bljyLco-oo2>2k+uNd>ilM1AGVH z#fSI^6W=KDw8zg$_S(=szWB*8{*CG7FIW8Sw~wVmW%qp8$Jb$OjQ_o2RjnkS z`0eBEP}yfT_4WNdEXKd1NmZ**g5N$S50$;Wr=M?Mj~M^%*s9k1)BRS;CoJzPsR#IW zHIDITJ5$w4RnKo9+lTtO<<<=JHLn=skI7lh`s90`ef*y|`|rQwEv>AB2l?`3iSaKP zUd+De7pZKY`v{d?`R7Z%h?3F% zFN@Z&MqH_6pC3t_b(VKv%U67_WQ_KI)Tf43eR?JP97^J>v%LMfjPY&!vxk4{iW=6D zR+a4YETOW8@{RT7{HBM0?C~1bd!;Mc=VC%-ug)Fo`~Kq|{-Sr~YvM9jvd`Cq${rs# z(sy-NjDOw38dkP6mF#mmp|S%@jPwmgzwkSWBi{7YFGt#SF+C^h01n#FwFN+j-LK@C#zdMe3k8UOo_A3ws<>! zurGh}p8jFQs#~M(RkqJVCC)nAV&cyOd^P6w^e^r$@88#|*ypN3Wxv?c$2a(HPk+}L z)vP*WefIgRP}wD)NBhQ?}&Iq>(KjCwyOS@*iGXr}2 zzaLWBDmzP`o#_={esVC_s>%Rb*1D!aN?gzx!Qef*<~R#jqHEZn4^JTRE3-<7bzu>cKFQ{gpn@*f{UR$R@&-pt4-rYavE1&g7zH0XQ>rmN6-3R-6 z-0$xHvX$Rze4wg*jyqJg>nB5eH%@f-A6(-Tl{o_ggtLSGCWlhsq|t#uDlAJMXNA#MyvBR(6;|?t3Qwxlsn$ z+6LJ=2HCm>*?I=q`Ucqs2HA!N*+vH0#s=9Y2HB(om_6FH!4YC~!vK%b=`pBJzp(GFCnQ{|KK%Hw@!5|#!*WphnQ}@Z zLs+Bm0Y%pP{`;E}x<10f3fqtW{Y?qoP12^jK-zToMw{-sXw%&iZMw^$O?M}>>8^q{ z-3`#DL%cQ}zP0JltWAeqZ91fC)8SH^4u#runA4_1m^K}rwCT{JO@|e2I%H_m;Xs>y z)N9j^ac%k$txZ3EwdqHzHvQPtrXPvg^y5xjwEg(str8Ph4-;_`PR1!X6{q2JoPjfO z7S6^wI2Y&Pe0&ub;6hx4i*X4q#bvl0SKvxqg|FdiT!U+I9j?a>xDhwuX54~X@pXIy zx8Zi&fjjX{+=aVw5AMZ%xF6#%9uMF_JcNhw2p&Zl6zrCO$MFQ7#8Y@0&)`{n3(w(s zynq++5?;nDconbVb-aN$@fP03J9roG;oEp0AK*LqEJeU{rVSX%t1+fqo#v)i0i(zpr zfhDmNmc}yp43@=mSRN~2MXZFCu?qUok5#c6hGTWCfiKZ6L;Zm+=F{@AMVFEjK>3b5D(#DJc38@7$)Fx zJb@?i6rRR2coyHnb9f#v;6=QIm+=Z-#cOySZ{SV5g}3nz-o<>@jkj-k4&1R6zZjjAkkj-h3&1I0yZII1lkj-n5&1aC!Z;&lukS%DC zEo6`_Y>+KtkS%JEEoP7{ZjdcukS%GDEoG1`ZICTvkbTA=Th<_3&LCUfAX~v8ThSm} z$sk+VAX~*C>odsu4YE}YvegW-;Rf022H6@0*_sB~S_at&gKVThHeiso46;!M+1du# zItJOg2HAQB+4=_A1_s%N2H8di*~SLhCI;E22H9o?+2#h>76#dt2H92y+13WxHXd2$ z)~}B;9gUdv&3NnM-y4Rf>-OxvwjNpM+UnbN_eWm-XPkAdZNu;kQzq?i_k`@xS1JWM zmK|eVu2DZcpZTh`VIUl>(A?%5|~znL^S@MVKhR?MW@;dyp8 zjqC7)?7`&Y0t@~fWtGlcCp=A-x^W$!kZs+%YoK(Jm#z3Eb;G~fUplVS6SAAWE*7}3 zXNw`#`m32jR?jPKTP{{C)H$i~a^p4&4f;d*%e_*;{c#dUu|wy~^-GD%)esFbd5 zeE5utaXp@peO=b?!hc64G#pwxzU!UFanVo6>UR68!Kj4k52E6ajA|bj^MvdN@_y)W zbaX*@}Hyyx0{|X=_}8k_Iyb{gKU3;tllb7LJl(O3>~81)LJ=g z{)v-T?1gDj^F!P$aqFLk|J^JhD_9Tsv=z1=|GQa2ca*g0PLMX;!O^BWFWPj+M4Rq( zXww}EZMw6dO?L#e=^(F72XJjVIBU~^SDOy1+H}Cwrh}n29q6>_Af`iZ$ssn=7+>BdrE543z;5OWjJ8&nyiMwz&?!mpd5BFmn#^V7zh==en9>Jq{3={A; zp1_lM3Qyx1Jd1DPIXsUS@FHHq%XkH^;x)XEH}EFj!rOQU@8Ugt8}H)-dppT!Q?5j$aL?1Ejf z8+OMY7>zO56MJEA?1O!=ANI!qI1r!1K{yzP;7}Zf&*N|$fiK{TI1)$UXnYA@##e9* zj>T~}9%FF=PQ*z#8K>Y>oQBhJ2F}D;I2-5ST%3pV@l{-a3vm%H#wEBEm*H|;fh%zp zzJ{xD4X(v?xE?p)M%;v(aSLw6*YOS9hTCxm?!-577w*PAxEJ@~evHF-Jb(xB5FW-O zcodIe0v^W`coI+HX*`2x@hv=u=kWqw#7lS?ui#a@hS%{1-o#sY8}HyoDFvw;!$YwIgW;V!XG00{$$YwLhW;e*@Fv#XK$mTN0<~GRYG05gM$mTQ1<~PU| zFvu1($QCll7B=&Dko6g4{RY{p2H9!`*>Hnwb%SgTgKSNMY%POqgh4jaAR92qS_auD zgKTYsY#oDaU4v{rgKT|+Yy*RALxXH1gKT4iY!icQQ-f?XgKTqyYzu>IOM`4HgKTSq zY#WcPbF;*!+$^!UMLwWdz^Kr48&M5yc+!He!z)rqykuWS$AEDnvCBrUvU& zw}#>8I|gr-NSt-n!<|mSnLQCF*p{-;dqS22{;ia;bfeGQ*jzj#~C;iXW?v|gL82n&c|1A0WQQvxEPn< zQe1}1aRsi#RrngN#x=MW*Wr5GSZf1r#7(#vx8PQM9pAuhxE*)kPJ9!0;cnc6dvPD` z$2g3~19%V*;bA<2NAVaY;Bh>GC-D@X#xr;p-@5x$4-;|KU5euN+6C-^CThM(gX_$7XYU*k9UEq-Sk7WO^< zfIs3-_%r^3zv6HBJN|)x;$QeT{)7KwSd!pBl3-FyhRHDnro>d38q;7}Oo!<)17^fb zm>IKRR?LRkF$df)17pF*d=b*bJLv3v7w4 zur;>9w%88adb>j|cD|9>T+T1drk|Ou*xK0#D*8JdJ1YEWU;3@H}3?i+Bky;}yJ$ z*YG;tz?*mrZ{r=ji}&ztypIp?9efub;v-Cav&8>#{QN%$|4C)oeA;X>gKTnxYzl*H zN`q`FgKTPpY#M`XT7zslgKT<(YzBjDMuTi7gKTDlY!-uTR)cIdgKTz#Yz~8LPJ?VN zgKTbtY#xJbUW05tgKU0-YypF8L4#}|gKS}gY!QQOQG;wTgKTkwYzc#GNrP-DgKTMo zY#D>>GX~kR2HA23+42V23I^GV2H8pm*~$jlDh64fLDp}Ot!j|1W{?dx$W}MV)-cG{ zG|1L6$VM1sBMq_vgREtcjWWpAHptd7$ksK;)-%Y~H^??H$Tl>{HZsUIHpn(H$Tl^| zHZ#aJH^{ay$hI`dwlc`JHpsSlLUv2`;Qv9d7lmUYkJx`%BGj?oeYx0t<)3j0da=38 zzNPkGmI#$~E@EGoi`e7e&1nB+iBMVn%M$vR1oYzgues{je_0|_Ht|LG4o`S(?u+@K zz1PhC%Mzh}uHGade_0~oAGt}O`id&{UzP}!-OpcY(3=lttWFu%`3cM5zNsPm%q8|; zmI(E8>iBLb+eKShFKW|c3rlYz>c4G>{g)*Y zXPuubFGbqpH%mNiwx9HT+H8M=Y@(Ybs)Q|)zbx_J*KmaWce8}PSEcFBoi^QZ)22IR z+H{9YTa^7M-&l^i6QoUdaJ1>pi#FXc(WW~c+H{9Po9--V(;WeAI>>9&0bH97&f0X~ z)uw~0HXSgv>0qc$2Rdy!h-qsZvtf43fjKc3=Egjj7xQ6$ zEPw^E5EjNFSQLw4aV&u)u@siZGWZOZ#d264D_}*egq5)h`p}P6u^NVBb*zCku@**P zBnE6{{KqJ)jdidt*2DVP02^W>Y>Z8?DK^9A*aBN(D{PHzur0R3_V_Gzz>e4nJ7X8@ zirug~_P}V2!JgO)dt)E$i~X=a4#0u<91g<4I0T2{Fnk_|;|P2KU&N6(3PK0$hlTa4{~yrML{2;|g4f ztMD~kjcaf%uEX`X0XO0%+>BdrE543z;5OWjJ8&nyiMwz&?!mpd5BFmn#^V7zh==en z9>Jq{3={A;p1_lM3Qyx1Jd1DPIXsUS@FHHq%XkH^;x)XEH}EFj!rOQU@8Ugt8}H)- zd46=TMY*mA7HG^!pLAJUVpgT89ggSoHuQAY@CG=|y((Vu5EDgPtu%@WVZ%@UR6>nG~24BjjeD!Y%r z)NoC{)}qy#;LQ@DvhJ_T_>-F@LS@f)4&E%GUw_%1n_Sd~!;%13Z*}K8NEMb3*%#=mJn_an@O0c`4E!{~C^`&GwU?Pn+#;ko|vjo&nzg literal 55932 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 HRA~PfzJvH~ From 6edad4b60b85ec2ee4e673c16bbb68eb44444b11 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 8 Feb 2023 09:54:15 +0000 Subject: [PATCH 14/27] fix bunny model with shader issues (thanks sirrobzeroone) --- models/mobs_bunny.b3d | Bin 106937 -> 96060 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/models/mobs_bunny.b3d b/models/mobs_bunny.b3d index ee053bd46eaed3828aa426a08a0ac8da2b03c43f..a8968f2ed7379e71bd7eed329fd5c8ce129e78b1 100644 GIT binary patch literal 96060 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 literal 106937 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 Jp>3$p{spek82$hN From fec852272040c20c56da3a530f87e617851c5396 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 8 Feb 2023 11:58:49 +0000 Subject: [PATCH 15/27] set very low water_damage so bunny,cow,kitten,panda,sheep,warthog avoids water --- bunny.lua | 2 +- cow.lua | 2 +- kitten.lua | 2 +- panda.lua | 2 +- sheep.lua | 2 +- warthog.lua | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bunny.lua b/bunny.lua index abece91..a2b9b7c 100644 --- a/bunny.lua +++ b/bunny.lua @@ -33,7 +33,7 @@ stepheight = 0.6, {name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1}, {name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1} }, - water_damage = 0, + water_damage = 0.01, lava_damage = 4, light_damage = 0, fear_height = 2, diff --git a/cow.lua b/cow.lua index a160e96..b838421 100644 --- a/cow.lua +++ b/cow.lua @@ -34,7 +34,7 @@ mobs:register_mob("mobs_animal:cow", { {name = "mobs:meat_raw", chance = 1, min = 1, max = 3}, {name = "mobs:leather", chance = 1, min = 0, max = 2} }, - water_damage = 0, + water_damage = 0.01, lava_damage = 5, light_damage = 0, animation = { diff --git a/kitten.lua b/kitten.lua index 8cfca44..015826c 100644 --- a/kitten.lua +++ b/kitten.lua @@ -41,7 +41,7 @@ mobs:register_mob("mobs_animal:kitten", { drops = { {name = "farming:string", chance = 1, min = 0, max = 1} }, - water_damage = 0, + water_damage = 0.01, lava_damage = 5, fear_height = 3, animation = { diff --git a/panda.lua b/panda.lua index 38691d2..290f34c 100644 --- a/panda.lua +++ b/panda.lua @@ -38,7 +38,7 @@ stepheight = 0.6, drops = { {name = "mobs:meat_raw", chance = 1, min = 1, max = 2} }, - water_damage = 0, + water_damage = 0.01, lava_damage = 5, light_damage = 0, fear_height = 6, diff --git a/sheep.lua b/sheep.lua index 6c66f9c..6411748 100644 --- a/sheep.lua +++ b/sheep.lua @@ -62,7 +62,7 @@ for _, col in ipairs(all_colours) do jump_height = 6, pushable = true, drops = drops_normal, - water_damage = 0, + water_damage = 0.01, lava_damage = 5, light_damage = 0, animation = { diff --git a/warthog.lua b/warthog.lua index 87ea607..46cbf77 100644 --- a/warthog.lua +++ b/warthog.lua @@ -38,7 +38,7 @@ mobs:register_mob("mobs_animal:pumba", { drops = { {name = "mobs:pork_raw", chance = 1, min = 1, max = 3} }, - water_damage = 0, + water_damage = 0.01, lava_damage = 5, light_damage = 0, fear_height = 2, From 3e65df56f526276c19da7f66d009e40498ca9b83 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Thu, 30 Mar 2023 13:57:27 +0100 Subject: [PATCH 16/27] new sheep model, textures and code changes by sirrobzeroone (many thanks) --- license.txt | 4 +- models/mobs_sheep.b3d | Bin 86326 -> 99293 bytes models/mobs_sheep_shaved.b3d | Bin 67325 -> 0 bytes readme.md | 2 +- sheep.lua | 280 ++++++++++++++++++++++++++------- textures/mobs_sheep_base.png | Bin 635 -> 7821 bytes textures/mobs_sheep_horns.png | Bin 0 -> 1533 bytes textures/mobs_sheep_shaved.png | Bin 983 -> 1050 bytes textures/mobs_sheep_wool.png | Bin 1028 -> 6825 bytes 9 files changed, 230 insertions(+), 56 deletions(-) delete mode 100644 models/mobs_sheep_shaved.b3d create mode 100644 textures/mobs_sheep_horns.png diff --git a/license.txt b/license.txt index c67bcca..6c8b2c8 100644 --- a/license.txt +++ b/license.txt @@ -35,7 +35,6 @@ Models/Textures/Media by Krupnov Pavel (WTFPL) mobs_rat.b3d mobs_rat.png mobs_sheep.b3d (converted to .b3d by sirrobzerrone) - mobs_sheep_shaved.b3d (converted to .b3d by sirrobzerrone) mobs_stone_monster.b3d mobs_stone_monster.png mobs_dirt_monster.png @@ -92,8 +91,9 @@ Models/Textures by D00Med (CC BY-SA 3.0) Textures by LithiumSound's Summer Field Texture Pack (CC BY-SA 4.0 NC ShareAlike International) mobs_sheep_base.png + mobs_sheep_horns.png mobs_sheep_shaved.png - mobs_sheep_wool.png + mobs_sheep_wool.png [all edited by sirrobzeroone] Sounds by Cyberpangolin (WTFPL) https://forum.minetest.net/viewtopic.php?t=10798 mobs_bee.ogg diff --git a/models/mobs_sheep.b3d b/models/mobs_sheep.b3d index 9e991f869542d5bd3a1b328bbe698ea062ba647c..4853e895c79f4090d7cc7d77205aba3c795e6a8d 100644 GIT binary patch literal 99293 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 ANB{r; diff --git a/models/mobs_sheep_shaved.b3d b/models/mobs_sheep_shaved.b3d deleted file mode 100644 index 1edacbd5f4e279b23567b8ae99e8da0b966a40f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67325 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 diff --git a/readme.md b/readme.md index 85d8a00..06ee023 100644 --- a/readme.md +++ b/readme.md @@ -25,7 +25,7 @@ Typically found around stone they can be picked up and cooked for eating. --- ### Sheep -Green grass and wheat munchers that can be clipped using shears to give 1-3 wool. Feed sheep 8x wheat to regrow wool, tame and breed. Right-click a tamed sheep with dye to change it's colour. Will drop 1-3 raw mutton when killed. +Green grass and wheat munchers that can be clipped using shears to give 1-3 wool when tamed. Feed sheep 8x wheat to regrow wool, tame and breed. Right-click a tamed sheep with dye to change it's colour. Will drop 1-3 raw mutton when killed. --- ### Warthog diff --git a/sheep.lua b/sheep.lua index 6411748..1e37746 100644 --- a/sheep.lua +++ b/sheep.lua @@ -1,24 +1,21 @@ - local S = mobs.intllib_animal - local random = math.random - local all_colours = { - {"black", S("Black"), "#000000b0"}, + {"black", S("Black"), "#212121b0"}, -- referenced down in mobs:spawn {"blue", S("Blue"), "#015dbb70"}, - {"brown", S("Brown"), "#663300a0"}, - {"cyan", S("Cyan"), "#01ffd870"}, + {"brown", S("Brown"), "#663300a0"}, -- referenced down in mobs:spawn + {"cyan", S("Cyan"), "#00b4bf70"}, {"dark_green", S("Dark Green"), "#005b0770"}, - {"dark_grey", S("Dark Grey"), "#303030b0"}, + {"dark_grey", S("Dark Grey"), "#444444b0"}, -- referenced down in mobs:spawn {"green", S("Green"), "#61ff0170"}, - {"grey", S("Grey"), "#5b5b5bb0"}, - {"magenta", S("Magenta"), "#ff05bb70"}, + {"grey", S("Grey"), "#919191b0"}, -- referenced down in mobs:spawn + {"magenta", S("Magenta"), "#ed03ad70"}, {"orange", S("Orange"), "#ff840170"}, - {"pink", S("Pink"), "#ff65b570"}, + {"pink", S("Pink"), "#ff85c470"}, {"red", S("Red"), "#ff0000a0"}, - {"violet", S("Violet"), "#2000c970"}, - {"white", S("White"), "#abababc0"}, - {"yellow", S("Yellow"), "#e3ff0070"} + {"violet", S("Violet"), "#5c00c970"}, + {"white", S("White"), "#ffffffc0"}, -- referenced down in mobs:spawn + {"yellow", S("Yellow"), "#fff80070"} } @@ -35,6 +32,30 @@ for _, col in ipairs(all_colours) do {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2} } + local function horn_texture_sel(horns, gotten) + + local base_text = "mobs_sheep_base.png" + local wool_shave_text = "mobs_sheep_wool.png" + local shav_text = "mobs_sheep_shaved.png" + local horn_text = "mobs_sheep_horns.png" + local col_text = "^[multiply:" .. col[3] + + if gotten then + wool_shave_text = shav_text + col_text = "" + end + + -- results in unneccesary brackets for shaved but these are ignored by engine + local textures = base_text .. "^(" .. wool_shave_text .. col_text .. ")" + + if horns then + textures = base_text .. "^" .. horn_text .. "^(" .. wool_shave_text + .. col_text .. ")" + end + + return textures + end + mobs:register_mob("mobs_animal:sheep_" .. col[1], { stay_near = {"farming:straw", 10}, stepheight = 0.6, @@ -47,10 +68,9 @@ for _, col in ipairs(all_colours) do visual = "mesh", mesh = "mobs_sheep.b3d", textures = { - {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"} + {"mobs_sheep_base.png^(mobs_sheep_wool.png^[multiply:" .. col[3] .. ")"} }, - gotten_texture = {"mobs_sheep_shaved.png"}, - gotten_mesh = "mobs_sheep_shaved.b3d", + gotten_texture = {"mobs_sheep_base.png^mobs_sheep_shaved.png"}, makes_footstep_sound = true, sounds = { random = "mobs_sheep" @@ -62,7 +82,7 @@ for _, col in ipairs(all_colours) do jump_height = 6, pushable = true, drops = drops_normal, - water_damage = 0.01, + water_damage = 0, lava_damage = 5, light_damage = 0, animation = { @@ -72,7 +92,6 @@ for _, col in ipairs(all_colours) do 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. @@ -102,34 +121,121 @@ for _, col in ipairs(all_colours) do self.gotten = false self.drops = drops_normal - self.object:set_properties({ - textures = { - "mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" - .. col[3] .. ")" - }, - mesh = "mobs_sheep.b3d", - }) + local textures = horn_texture_sel(self.attribute_horns, self.gotten) + + self.object:set_properties({textures = {textures}}) + + -- base_texture must be kept up to date for static_save so horns persist + -- visually on server/game restart + self.base_texture = {textures} end end, + on_breed = function(parent1, parent2) + + -- simple truth table P1/P2 horns/no_horns + local breed_out = { + ["P1_N"] = {["P2_N"] = 5 ,["P2_H"] = 50 }, + ["P1_H"] = {["P2_N"] = 50,["P2_H"] = 95 } + } + + local p1 = "P1_N" -- no horns + local p2 = "P2_N" -- no horns + + if parent1.attribute_horns then p1 = "P1_H" end + if parent2.attribute_horns then p2 = "P2_H" end + + local horn_chance = breed_out[p1][p2] + local horns = random(100) <= horn_chance + + local pos = parent1.object:get_pos() + + -- can't see an easy way to pass horn attribute into + -- child entity def, handle all spawning here, unfortunate + -- code replication from mobs_redo api.lua line 1497+ + -- replace "self" with "parent1" and few other minor tweaks + ---------------------------------------------------- + pos.y = pos.y + 0.5 -- spawn child a little higher + + local mob = minetest.add_entity(pos, parent1.name) + local ent2 = mob:get_luaentity() + + -- remove horns from parents' texture string, lambs dont have horns + local textures = string.gsub(parent1.base_texture[1], + "%^mobs_sheep_horns.png", "") + + -- using specific child texture (if found) + if parent1.child_texture then + textures = parent1.child_texture[1] + end + + -- and resize to half height + mob:set_properties({ + textures = {textures}, + visual_size = { + 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 + }, + 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 + } + }) + + -- tamed and owned by parents' owner + ent2.child = true + ent2.tamed = true + ent2.owner = parent1.owner + ent2.attribute_horns = horns + + -- stop mobs_redo api from spawning child + return false + end, + + on_grown = function(self) + + -- add the horns if we have horns when fully grown + local textures = horn_texture_sel(self.attribute_horns, self.gotten) + + self.object:set_properties({textures = {textures}}) + self.base_texture = {textures} + end, + on_rightclick = function(self, clicker) - --are we feeding? + -- are we feeding? if mobs:feed_tame(self, clicker, 8, true, true) then + if not self.child then + + local textures = horn_texture_sel(self.attribute_horns, self.gotten) + + self.object:set_properties({textures = {textures}}) + self.base_texture = {textures} + end + --if fed 7 times then sheep regrows wool if self.food and self.food > 6 then self.gotten = false self.drops = drops_normal - self.object:set_properties({ - textures = { - "mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" - .. col[3] .. ")" - }, - mesh = "mobs_sheep.b3d" - }) + local textures = horn_texture_sel(self.attribute_horns, self.gotten) + + self.object:set_properties({textures = {textures}}) + self.base_texture = {textures} end return @@ -139,7 +245,7 @@ for _, col in ipairs(all_colours) do local itemname = item:get_name() local name = clicker:get_player_name() - --are we giving a haircut> + -- are we giving a haircut> if itemname == "mobs:shears" then if self.gotten ~= false @@ -170,15 +276,15 @@ for _, col in ipairs(all_colours) do clicker:set_wielded_item(item) - self.object:set_properties({ - textures = {"mobs_sheep_shaved.png"}, - mesh = "mobs_sheep_shaved.b3d" - }) + local textures = horn_texture_sel(self.attribute_horns, self.gotten) + + self.object:set_properties({textures = {textures}}) + self.base_texture = {textures} return end - --are we coloring? + -- are we coloring? if itemname:find("dye:") then if self.gotten == false @@ -194,16 +300,25 @@ for _, col in ipairs(all_colours) do local pos = self.object:get_pos() + -- save horns attribute + local horns = self.attribute_horns + self.object:remove() local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr) local ent = mob:get_luaentity() + ent.attribute_horns = horns ent.owner = name ent.tamed = true ent.protected = self.protected ent.fire_damage = self.fire_damage + local textures = horn_texture_sel(self.attribute_horns, false) + + ent.object:set_properties({textures = {textures}}) + ent.base_texture = {textures} + -- take item if not mobs.is_creative(clicker:get_player_name()) then item:take_item() @@ -232,52 +347,112 @@ for _, col in ipairs(all_colours) do -- compatibility mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1]) - end if not mobs.custom_spawn_animal then + local max_ht = 400 + local spawn_on = {"default:dirt_with_grass", "ethereal:green_dirt"} + mobs:spawn({ name = "mobs_animal:sheep_white", - nodes = {"default:dirt_with_grass", "ethereal:green_dirt"}, - neighbors = {"group:grass"}, + nodes = spawn_on, min_light = 14, interval = 60, chance = 8000, min_height = 0, - max_height = 200, + max_height = max_ht, day_toggle = true, active_object_count = 3, -- custom function to spawn sheep herds around main mob on_spawn = function(self, pos) + local nat_colors = {-- reference for all_colours table + ["white"] = 14, + ["grey"] = 8, + ["dark_grey"] = 6, + ["black"] = 1, + ["brown"] = 3 + } + + local function random_sheep(pos, first) + + local types = "white" + local color = all_colours[nat_colors["white"]][3] + + -- Random colour selection + -- black(1/8), brown(1/16), dark_grey(1/32), grey(1/32), 6/8 white + local ran_col = random(32) + + if ran_col <= 8 then + if ran_col == 1 then + types = "dark_grey" + elseif ran_col == 2 then + types = "grey" + elseif ran_col >= 3 and ran_col <= 4 then + types = "brown" + else + types = "black" + end + end + + -- 1/4 chance of lamb + local lamb + + if not first then + lamb = random(4) == 1 + end + + -- store returned entity data from mobs:add_mob, "nil" indicates the + -- rules in mobs:add_mob stopped mob from being spawned/created. + local entity = mobs:add_mob(pos, + {name = "mobs_animal:sheep_" .. types, child = lamb}) + + if entity and not lamb then + -- Set horns attribute, lower height will be rarer. + -- This wont affect mobs spawned by egg those only spawn hornless sheep. + local horns = random(max_ht) <= pos.y + + if horns then + + local text = "mobs_sheep_base.png^mobs_sheep_horns.png" + .."^(mobs_sheep_wool.png^[multiply:" + .. all_colours[nat_colors[types]][3] .. ")" + + entity.object:set_properties({textures = {text}}) + entity.base_texture = {text} + entity.attribute_horns = horns + end + end + end + + -- First Sheep, Randomize color/horns + self.object:remove() + + random_sheep(pos, true) + + -- Rest of herd local nods = 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}, - {"default:dirt_with_grass", "ethereal:green_dirt"}) + {x = pos.x + 4, y = pos.y + 3, z = pos.z + 4}, spawn_on) if nods and #nods > 0 then -- min herd of 3 local iter = math.min(#nods, 3) --- print("--- sheep at", minetest.pos_to_string(pos), iter) - for n = 1, iter do - -- 1/8 chance of black sheep, 1/4 chance of baby sheep local pos2 = nods[random(#nods)] - local type = random(8) == 1 and "_black" or "_white" - local kid = random(4) == 1 and true or nil pos2.y = pos2.y + 2 if minetest.get_node(pos2).name == "air" then - mobs:add_mob(pos2, { - name = "mobs_animal:sheep" .. type, child = kid}) + -- Add a sheep or lamb + random_sheep(pos2, false) end end end @@ -288,7 +463,6 @@ end mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility - -- raw mutton minetest.register_craftitem(":mobs:mutton_raw", { description = S("Raw Mutton"), diff --git a/textures/mobs_sheep_base.png b/textures/mobs_sheep_base.png index c3c2c4a1c080c340a8cfab78d92dfdbcaf3ed7f5..ac5fec2ff627a837a959168f3e027b8626e2fa73 100644 GIT binary patch literal 7821 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 delta 620 zcmV-y0+aoXJ^KWIiBL{Q4GJ0x0000DNk~Le0000e0000a2m=5B0LmLpw1?Ks!)KK~+ykT~$wHURG^qU36_` zc5q#Mb#8-vb%ud%jD&uUhHjaQZJ3dMnURT`lX|0;c&C^mAtQuyt0zQvx&jBmcO^1#J7^jy_dI_=xZOVb=-=YR968A)n1HWIrU2y6XyzjCq{uCCpa)JuaI&y$*FqK!BY*OWHxT;#I^&k;<1}&W+Gdi%2j;a~` zdvf-udzCXa)~ClYxKVYee&?b*LGSQ*=U!kS8dK(D(z-J((D?wJU?9vXhB(AZf51TA zQSt9(G7itEAAI3coW7UdE9dV0000h%T diff --git a/textures/mobs_sheep_horns.png b/textures/mobs_sheep_horns.png new file mode 100644 index 0000000000000000000000000000000000000000..960c1309ba324607d3714f7d5ba7e8515fafb37f GIT binary patch literal 1533 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 UYa$eQ9{>OV07*qoM6N<$g0o58(f|Me literal 983 zcmV;|11S87P)UV$(JcwsN%iiTv2h*9hmgz>q32%+dO z;5>Eo^0&C+>@W32hLL6JSj5uwmjUeG>QgquwxOd^B6F0OBenFU{&N^`o;s>fu=fHc zcz>xc$qYD89Z~vVatkLKAE){`4zY0NpN?6qhL#HtA@5MjJgh~m6xgPYkP$zSpa>AT zqMPV<<=V_!r;Y+ugJ}`CW)?-uKvPRRD!e4J;>ZX_oMb_Q87(6Tg(yYpEi%}F!JAw; zJRO;gX((J(y`;uTntnsX{;z3;Eb_INzD-ut?)%_@=@qrj#r z$xRTO)c)9CuOF<}vG4n1yRTIsJQyoi<`JZ2Tl=;>j(s5aeY@X#ujrY;9+g><)X3%# z(%v=o;{fS#>}$@g*D{9Dm7B;$1K1i#*B{r8{dm3hW3O+gz44e#XDU?-Qf&69=hM3) zJn$X6x_9l$V;J2h4%~BD5AGW_4@9tjZ>&|2&FZ5v1=)0xPA>j@_TCtE3?N!CEKBlB zSiA>+$=znkNdj=O9#m^;0X!<25Dkm(EOw>YWTM0AboKy(f7Az%!Zv8dh&bhWFXCuE zo%u2l(bvJ-C|iTr18K~A(fxl>*ga4N?|fSC16bz0_z$-qLFsQTZZZG>002ovPDHLk FV1j+*u1f#_ diff --git a/textures/mobs_sheep_wool.png b/textures/mobs_sheep_wool.png index 2dca0dc8d4571b93c7ad792ada7d91b37f94867c..dc871f2c33f9c5b2e3b0c50c9980328e098eceff 100644 GIT binary patch literal 6825 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 Date: Thu, 30 Mar 2023 14:05:38 +0100 Subject: [PATCH 17/27] add low water damage level so sheep fear water --- sheep.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sheep.lua b/sheep.lua index 1e37746..b9e732a 100644 --- a/sheep.lua +++ b/sheep.lua @@ -82,7 +82,7 @@ for _, col in ipairs(all_colours) do jump_height = 6, pushable = true, drops = drops_normal, - water_damage = 0, + water_damage = 0.01, lava_damage = 5, light_damage = 0, animation = { From 23839f9c1645bd5e7c84a9aee1ffa47dd0560ece Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 2 Apr 2023 10:22:20 +0100 Subject: [PATCH 18/27] fix sheep dye bugs (nametag missing, double dye usage, dye'ing same colour sheep) --- sheep.lua | 57 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/sheep.lua b/sheep.lua index b9e732a..e97e936 100644 --- a/sheep.lua +++ b/sheep.lua @@ -32,13 +32,14 @@ for _, col in ipairs(all_colours) do {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2} } - local function horn_texture_sel(horns, gotten) + local function horn_texture_sel(horns, gotten, colr) local base_text = "mobs_sheep_base.png" local wool_shave_text = "mobs_sheep_wool.png" local shav_text = "mobs_sheep_shaved.png" local horn_text = "mobs_sheep_horns.png" - local col_text = "^[multiply:" .. col[3] + local col_override = colr and colr or col[3] + local col_text = "^[multiply:" .. col_override if gotten then wool_shave_text = shav_text @@ -296,36 +297,48 @@ for _, col in ipairs(all_colours) do for _,c in pairs(all_colours) do - if c[1] == colr then + -- only dye if colour option available and sheep not same colour + if c[1] == colr + and self.name ~= "mobs_animal:sheep_" .. colr then local pos = self.object:get_pos() - -- save horns attribute - local horns = self.attribute_horns - - self.object:remove() - + -- add new coloured sheep local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr) local ent = mob:get_luaentity() - ent.attribute_horns = horns - ent.owner = name - ent.tamed = true - ent.protected = self.protected - ent.fire_damage = self.fire_damage + if ent then - local textures = horn_texture_sel(self.attribute_horns, false) + -- add old sheep attributes + ent.attribute_horns = self.attribute_horns + ent.nametag = self.nametag + ent.owner = name + ent.tamed = true + ent.protected = self.protected + ent.fire_damage = self.fire_damage - ent.object:set_properties({textures = {textures}}) - ent.base_texture = {textures} + -- set sheep texture with colour override since we're + -- calling function inside different sheep + local textures = horn_texture_sel( + self.attribute_horns, false, colr) - -- take item - if not mobs.is_creative(clicker:get_player_name()) then - item:take_item() - clicker:set_wielded_item(item) + ent.base_texture = {textures} + ent.object:set_properties({ + textures = {textures}, + nametag = self.nametag + }) + + -- remove old sheep + self.object:remove() + + -- take item + if not mobs.is_creative(clicker:get_player_name()) then + item:take_item() + clicker:set_wielded_item(item) + end + + break end - - break end end end From b4fee7b6b8d3e7757ef0c423f14924ec1d88a82e Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 22 Apr 2023 15:29:35 +0100 Subject: [PATCH 19/27] add hairball item --- kitten.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/kitten.lua b/kitten.lua index 015826c..654db91 100644 --- a/kitten.lua +++ b/kitten.lua @@ -145,7 +145,8 @@ local hairball_items = { "default:clay_lump", "default:paper", "default:dry_grass_1", "dye:red", "", "farming:string", "mobs:chicken_feather", "default:acacia_bush_sapling", "", "default:bush_sapling", "default:copper_lump", "default:iron_lump", "", - "dye:black", "dye:brown", "default:obsidian_shard", "default:tin_lump" + "dye:black", "dye:brown", "default:obsidian_shard", "default:tin_lump", + "ethereal:fish_tetra" } minetest.register_craftitem(":mobs:hairball", { @@ -164,10 +165,7 @@ minetest.register_craftitem(":mobs:hairball", { end minetest.sound_play("default_place_node_hard", { - pos = newpos, - gain = 1.0, - max_hear_distance = 5 - }) + pos = newpos, gain = 1.0, max_hear_distance = 5}, true) itemstack:take_item() From 5060d31d590a17a2bbab95cdf5eab9f32d8b500b Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Tue, 25 Apr 2023 10:00:02 +0100 Subject: [PATCH 20/27] increase sheep spawn chance when ethereal active --- sheep.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sheep.lua b/sheep.lua index e97e936..5611c26 100644 --- a/sheep.lua +++ b/sheep.lua @@ -367,13 +367,15 @@ if not mobs.custom_spawn_animal then local max_ht = 400 local spawn_on = {"default:dirt_with_grass", "ethereal:green_dirt"} + local mod_ethereal = minetest.get_modpath("ethereal") + local spawn_chance = mod_ethereal and 12000 or 8000 mobs:spawn({ name = "mobs_animal:sheep_white", nodes = spawn_on, min_light = 14, interval = 60, - chance = 8000, + chance = spawn_chance, min_height = 0, max_height = max_ht, day_toggle = true, From 1a3a38b59e0b11763a295c8e498f368aa8f028b8 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 29 Apr 2023 14:48:24 +0100 Subject: [PATCH 21/27] re-add sheep spawn neighbor of "group:grass" --- sheep.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/sheep.lua b/sheep.lua index 5611c26..b0a5431 100644 --- a/sheep.lua +++ b/sheep.lua @@ -373,6 +373,7 @@ if not mobs.custom_spawn_animal then mobs:spawn({ name = "mobs_animal:sheep_white", nodes = spawn_on, + neighbors = {"group:grass"}, min_light = 14, interval = 60, chance = spawn_chance, From 9c0020415400298e969abe980337a1aa4925015d Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 1 May 2023 10:00:03 +0100 Subject: [PATCH 22/27] cows can be milked using both wooden bucket mods --- cow.lua | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/cow.lua b/cow.lua index b838421..9e4d57c 100644 --- a/cow.lua +++ b/cow.lua @@ -93,7 +93,8 @@ mobs:register_mob("mobs_animal:cow", { -- milk cow with empty bucket if item == "bucket:bucket_empty" - or item == "wooden_bucket:bucket_wood_empty" then + or item == "wooden_bucket:bucket_wood_empty" + or item == "bucket_wooden:bucket_empty" then --if self.gotten == true if self.child == true then @@ -115,7 +116,8 @@ mobs:register_mob("mobs_animal:cow", { -- which bucket are we using local ret_item = "mobs:bucket_milk" - if item == "wooden_bucket:bucket_wood_empty" then + if item == "wooden_bucket:bucket_wood_empty" + or item == "bucket_wooden:bucket_empty" then ret_item = "mobs:wooden_bucket_milk" end @@ -270,14 +272,20 @@ minetest.register_craft({ }) --- check for wooden bucket mod and add compatibility -if minetest.get_modpath("wooden_bucket") then +-- 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") + +if wb or bw then + + local return_item = wb and "wooden_bucket:bucket_wood_empty" + or "bucket_wooden:bucket_empty" 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"), + on_use = minetest.item_eat(8, return_item), groups = {food_milk = 1, flammable = 3, drink = 1} }) @@ -288,7 +296,7 @@ if minetest.get_modpath("wooden_bucket") then {"vessels:drinking_glass", "vessels:drinking_glass"}, {"mobs:wooden_bucket_milk", ""} }, - replacements = {{"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}} + replacements = {{"mobs:wooden_bucket_milk", return_item}} }) minetest.register_craft({ @@ -296,7 +304,7 @@ if minetest.get_modpath("wooden_bucket") then recipe = { {"group:food_milk_glass", "group:food_milk_glass"}, {"group:food_milk_glass", "group:food_milk_glass"}, - {"wooden_bucket:bucket_wood_empty", ""} + {return_item, ""} }, replacements = { {"group:food_milk_glass", "vessels:drinking_glass 4"} @@ -306,6 +314,6 @@ if minetest.get_modpath("wooden_bucket") then minetest.register_craft({ output = "mobs:butter", recipe = {{"mobs:wooden_bucket_milk", salt_item}}, - replacements = {{"mobs:wooden_bucket_milk", "wooden_bucket:bucket_wood_empty"}} + replacements = {{"mobs:wooden_bucket_milk", return_item}} }) end From f8ed1c08b64eb842577f6b973d78f1ec15546437 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Thu, 11 May 2023 06:53:49 +0100 Subject: [PATCH 23/27] tidy code, add special kitten spawn --- kitten.lua | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/kitten.lua b/kitten.lua index 654db91..a2bb7ee 100644 --- a/kitten.lua +++ b/kitten.lua @@ -2,6 +2,12 @@ local S = mobs.intllib_animal local hairball = minetest.settings:get("mobs_hairball") +local kitten_types = { + + { nodes = {"farming:jackolantern_on"}, + skins = {"mobs_kitten_black.png"} + } +} -- Kitten by Jordach / BFD @@ -59,6 +65,28 @@ mobs:register_mob("mobs_animal:kitten", { }, view_range = 8, + -- check surrounding nodes and spawn a specific kitten + on_spawn = function(self) + + local pos = self.object:get_pos() ; pos.y = pos.y - 1 + local tmp + + for n = 1, #kitten_types do + + tmp = kitten_types[n] + + if minetest.find_node_near(pos, 1, tmp.nodes) then + + self.base_texture = tmp.skins + self.object:set_properties({textures = tmp.skins}) + + return true + end + end + + return true -- run only once, false/nil runs every activation + end, + on_rightclick = function(self, clicker) if mobs:feed_tame(self, clicker, 4, true, true) then return end @@ -92,8 +120,7 @@ mobs:register_mob("mobs_animal:kitten", { end self.hairball_timer = 0 - if self.child - or math.random(250) > 1 then + if self.child or math.random(250) > 1 then return end @@ -102,10 +129,7 @@ mobs:register_mob("mobs_animal:kitten", { minetest.add_item(pos, "mobs:hairball") minetest.sound_play("default_dig_snappy", { - pos = pos, - gain = 1.0, - max_hear_distance = 5 - }) + pos = pos, gain = 1.0, max_hear_distance = 5}, true) end }) From 24ae2e25a2aa262d6153c5e9df5a8215284771ac Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 27 May 2023 19:29:33 +0100 Subject: [PATCH 24/27] proper positioning of grown sheep --- sheep.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sheep.lua b/sheep.lua index b0a5431..25a74e7 100644 --- a/sheep.lua +++ b/sheep.lua @@ -212,6 +212,15 @@ for _, col in ipairs(all_colours) do self.object:set_properties({textures = {textures}}) self.base_texture = {textures} + + local pos = self.object:get_pos() + + pos.y = pos.y + (self.collisionbox[2] * -1) - 0.4 + + self.object:set_pos(pos) + + -- jump slightly when fully grown so as not to fall into ground + self.object:set_velocity({x = 0, y = 2, z = 0 }) end, on_rightclick = function(self, clicker) From 87a7c093787d7ec7066c75f7a821948102d2b727 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 28 May 2023 12:19:49 +0100 Subject: [PATCH 25/27] fix evil bunny --- bunny.lua | 48 ++++++++++++++++++++++++++++++++---------------- sheep.lua | 13 ++++--------- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/bunny.lua b/bunny.lua index a2b9b7c..f6bf092 100644 --- a/bunny.lua +++ b/bunny.lua @@ -5,10 +5,13 @@ local S = mobs.intllib_animal -- Bunny by ExeterDad mobs:register_mob("mobs_animal:bunny", { -stepheight = 0.6, type = "animal", - passive = true, + passive = false,--true, + attack_type = "dogfight", + attack_players = true, + damage = 5, reach = 1, + stepheight = 0.6, hp_min = 1, hp_max = 4, armor = 200, @@ -61,26 +64,40 @@ stepheight = 0.6, -- Monty Python tribute local item = clicker:get_wielded_item() + local player_name = clicker:get_player_name() - if item:get_name() == "mobs:lava_orb" then + if self.owner == player_name + and item:get_name() == "mobs:lava_orb" then + -- take orb if not mobs.is_creative(clicker:get_player_name()) then item:take_item() clicker:set_wielded_item(item) end - self.base_texture = {"mobs_bunny_evil.png"} - - self.object:set_properties({ - textures = {"mobs_bunny_evil.png"} + -- set special bunny attributes + local staticdata = minetest.serialize({ + type = "monster", + hp_max = 20, + health = 20, + damage = 5, + run_velocity = 3, + passive = false, + runaway = false, + runaway_from = {}, + runaway_timer = 0, + tamed = false, + base_texture = {"mobs_bunny_evil.png"} }) - self.type = "monster" - self.health = 20 - self.passive = false - self.runaway = false + -- add evil bunny + local obj = minetest.add_entity( + self.object:get_pos(), "mobs_animal:bunny", staticdata) - return + -- remove old bunny + if obj:get_luaentity() then + mobs:remove(self, true) + end end end, @@ -107,11 +124,10 @@ stepheight = 0.6, self.object:set_properties({textures = self.base_texture}) end - return true -- run only once, false/nil runs every activation - end, + self.base_texture = self.texture - attack_type = "dogfight", - damage = 5 + return true -- run only once, false/nil runs every activation + end }) diff --git a/sheep.lua b/sheep.lua index 25a74e7..1f9911d 100644 --- a/sheep.lua +++ b/sheep.lua @@ -136,19 +136,14 @@ for _, col in ipairs(all_colours) do -- simple truth table P1/P2 horns/no_horns local breed_out = { - ["P1_N"] = {["P2_N"] = 5 ,["P2_H"] = 50 }, - ["P1_H"] = {["P2_N"] = 50,["P2_H"] = 95 } + ["P1_N"] = {["P2_N"] = 5 ,["P2_H"] = 50}, + ["P1_H"] = {["P2_N"] = 50,["P2_H"] = 95} } - local p1 = "P1_N" -- no horns - local p2 = "P2_N" -- no horns - - if parent1.attribute_horns then p1 = "P1_H" end - if parent2.attribute_horns then p2 = "P2_H" end - + local p1 = parent1.attribute_horns and "P1_H" or "P1_N" + local p2 = parent2.attribute_horns and "P2_H" or "P2_N" local horn_chance = breed_out[p1][p2] local horns = random(100) <= horn_chance - local pos = parent1.object:get_pos() -- can't see an easy way to pass horn attribute into From e5cadbba4070d7e461c9160d98f80d73b1cb911e Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 28 May 2023 12:22:00 +0100 Subject: [PATCH 26/27] tidy bunny code --- bunny.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bunny.lua b/bunny.lua index f6bf092..023dc09 100644 --- a/bunny.lua +++ b/bunny.lua @@ -6,10 +6,7 @@ local S = mobs.intllib_animal mobs:register_mob("mobs_animal:bunny", { type = "animal", - passive = false,--true, - attack_type = "dogfight", - attack_players = true, - damage = 5, + passive = true, reach = 1, stepheight = 0.6, hp_min = 1, @@ -78,6 +75,7 @@ mobs:register_mob("mobs_animal:bunny", { -- set special bunny attributes local staticdata = minetest.serialize({ type = "monster", + attack_type = "dogfight", hp_max = 20, health = 20, damage = 5, From b8847abe487606fd915ab78cd74e0d43354058b6 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 28 May 2023 12:30:49 +0100 Subject: [PATCH 27/27] remove test line --- bunny.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/bunny.lua b/bunny.lua index 023dc09..545e2f8 100644 --- a/bunny.lua +++ b/bunny.lua @@ -122,8 +122,6 @@ mobs:register_mob("mobs_animal:bunny", { self.object:set_properties({textures = self.base_texture}) end - self.base_texture = self.texture - return true -- run only once, false/nil runs every activation end })