From 50436f50ba3bca1472cdd87de4d52f9650d30c51 Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Thu, 9 Nov 2017 00:20:40 +0100 Subject: [PATCH] Remove Horses, Wolf, Pumba, sheep, Cow, rats, bee, use of mobs_redo api and make some minor changes --- api.lua | 577 --------------- init.lua | 1005 +-------------------------- sounds/cow.ogg | Bin 7216 -> 0 bytes sounds/mobs_sheep.ogg | Bin 18659 -> 0 bytes textures/bucket_milk.png | Bin 255 -> 0 bytes textures/mobs_bee_inventar.png | Bin 934 -> 0 bytes textures/mobs_cooked_rat.png | Bin 239 -> 0 bytes textures/mobs_deer.png | Bin 0 -> 967 bytes textures/mobs_horse_inventar.png | Bin 795 -> 0 bytes textures/mobs_jeraf.png | Bin 0 -> 780 bytes textures/mobs_meat.png | Bin 411 -> 0 bytes textures/mobs_meat_raw.png | Bin 426 -> 0 bytes textures/mobs_med_inventar.png | Bin 301 -> 0 bytes textures/mobs_medved.png | Bin 0 -> 1023 bytes textures/mobs_rat_inventory.png | Bin 565 -> 0 bytes textures/mobs_sheep_old.png | Bin 909 -> 0 bytes textures/mobs_spanchbob_invetar.png | Bin 698 -> 0 bytes textures/uley.png | Bin 386 -> 0 bytes 18 files changed, 16 insertions(+), 1566 deletions(-) delete mode 100644 api.lua delete mode 100644 sounds/cow.ogg delete mode 100644 sounds/mobs_sheep.ogg delete mode 100644 textures/bucket_milk.png delete mode 100644 textures/mobs_bee_inventar.png delete mode 100644 textures/mobs_cooked_rat.png create mode 100644 textures/mobs_deer.png delete mode 100644 textures/mobs_horse_inventar.png create mode 100644 textures/mobs_jeraf.png delete mode 100644 textures/mobs_meat.png delete mode 100644 textures/mobs_meat_raw.png delete mode 100644 textures/mobs_med_inventar.png create mode 100644 textures/mobs_medved.png delete mode 100644 textures/mobs_rat_inventory.png delete mode 100644 textures/mobs_sheep_old.png delete mode 100644 textures/mobs_spanchbob_invetar.png delete mode 100644 textures/uley.png diff --git a/api.lua b/api.lua deleted file mode 100644 index 4fe3185..0000000 --- a/api.lua +++ /dev/null @@ -1,577 +0,0 @@ -kpgmobs = {} -function kpgmobs:register_mob(name, def) - minetest.register_entity(name, { - hp_max = def.hp_max, - physical = true, - collisionbox = def.collisionbox, - visual = def.visual, - visual_size = def.visual_size, - mesh = def.mesh, - textures = def.textures, - makes_footstep_sound = def.makes_footstep_sound, - view_range = def.view_range, - walk_velocity = def.walk_velocity, - run_velocity = def.run_velocity, - damage = def.damage, - light_damage = def.light_damage, - water_damage = def.water_damage, - lava_damage = def.lava_damage, - disable_fall_damage = def.disable_fall_damage, - drops = def.drops, - armor = def.armor, - drawtype = def.drawtype, - on_rightclick = def.on_rightclick, - type = def.type, - attack_type = def.attack_type, - arrow = def.arrow, - shoot_interval = def.shoot_interval, - sounds = def.sounds, - animation = def.animation, - follow = def.follow, - jump = def.jump or true, - - timer = 0, - env_damage_timer = 0, -- only if state = "attack" - attack = {player=nil, dist=nil}, - state = "stand", - v_start = false, - old_y = nil, - lifetimer = 600, - tamed = false, - - set_velocity = function(self, v) - local yaw = self.object:getyaw() - if self.drawtype == "side" then - yaw = yaw+(math.pi/2) - end - local x = math.sin(yaw) * -v - local z = math.cos(yaw) * v - self.object:setvelocity({x=x, y=self.object:getvelocity().y, z=z}) - end, - - get_velocity = function(self) - local v = self.object:getvelocity() - return (v.x^2 + v.z^2)^(0.5) - end, - - set_animation = function(self, type) - if not self.animation then - return - end - if not self.animation.current then - self.animation.current = "" - end - if type == "stand" and self.animation.current ~= "stand" then - if - self.animation.stand_start - and self.animation.stand_end - and self.animation.speed_normal - then - self.object:set_animation( - {x=self.animation.stand_start,y=self.animation.stand_end}, - self.animation.speed_normal, 0 - ) - self.animation.current = "stand" - end - elseif type == "walk" and self.animation.current ~= "walk" then - if - self.animation.walk_start - and self.animation.walk_end - and self.animation.speed_normal - then - self.object:set_animation( - {x=self.animation.walk_start,y=self.animation.walk_end}, - self.animation.speed_normal, 0 - ) - self.animation.current = "walk" - end - elseif type == "run" and self.animation.current ~= "run" then - if - self.animation.run_start - and self.animation.run_end - and self.animation.speed_run - then - self.object:set_animation( - {x=self.animation.run_start,y=self.animation.run_end}, - self.animation.speed_run, 0 - ) - self.animation.current = "run" - end - elseif type == "punch" and self.animation.current ~= "punch" then - if - self.animation.punch_start - and self.animation.punch_end - and self.animation.speed_normal - then - self.object:set_animation( - {x=self.animation.punch_start,y=self.animation.punch_end}, - self.animation.speed_normal, 0 - ) - self.animation.current = "punch" - end - end - end, - - on_step = function(self, dtime) - - --spanch - if self.type == "spanch" then - if self.state == "walk" then - self.object:set_properties({ - textures = {"mobs_spanchbob_a1.png"}, - mesh = "mobs_spanchbob.x", - }) - else - self.object:set_properties({ - textures = {"mobs_spanchbob.png"}, - mesh = "mobs_spanchbob.x", - }) - end - - end - - if self.type == "monster" and minetest.setting_getbool("only_peaceful_mobs") then - self.object:remove() - end - - self.lifetimer = self.lifetimer - dtime - if self.lifetimer <= 0 and not self.tamed then - local player_count = 0 - for _,obj in ipairs(minetest.env:get_objects_inside_radius(self.object:getpos(), 20)) do - if obj:is_player() then - player_count = player_count+1 - end - end - if player_count == 0 and self.state ~= "attack" then - self.object:remove() - return - end - end - - if self.object:getvelocity().y > 0.1 then - local yaw = self.object:getyaw() - if self.drawtype == "side" then - yaw = yaw+(math.pi/2) - end - local x = math.sin(yaw) * -2 - local z = math.cos(yaw) * 2 - self.object:setacceleration({x=x, y=-10, z=z}) - else - self.object:setacceleration({x=0, y=-10, z=0}) - end - - if self.disable_fall_damage and self.object:getvelocity().y == 0 then - if not self.old_y then - self.old_y = self.object:getpos().y - else - local d = self.old_y - self.object:getpos().y - if d > 5 then - local damage = d-5 - self.object:set_hp(self.object:get_hp()-damage) - if self.object:get_hp() == 0 then - self.object:remove() - end - end - self.old_y = self.object:getpos().y - end - end - - self.timer = self.timer+dtime - if self.state ~= "attack" then - if self.timer < 1 then - return - end - self.timer = 0 - end - - if self.sounds and self.sounds.random and math.random(1, 100) <= 1 then - minetest.sound_play(self.sounds.random, {object = self.object}) - end - - local do_env_damage = function(self) - local pos = self.object:getpos() - local n = minetest.env:get_node(pos) - - if self.light_damage and self.light_damage ~= 0 - and pos.y>0 - and minetest.env:get_node_light(pos) - and minetest.env:get_node_light(pos) > 4 - and minetest.env:get_timeofday() > 0.2 - and minetest.env:get_timeofday() < 0.8 - then - self.object:set_hp(self.object:get_hp()-self.light_damage) - if self.object:get_hp() == 0 then - self.object:remove() - end - end - - if self.water_damage and self.water_damage ~= 0 and - minetest.get_item_group(n.name, "water") ~= 0 - then - self.object:set_hp(self.object:get_hp()-self.water_damage) - if self.object:get_hp() == 0 then - self.object:remove() - end - end - - if self.lava_damage and self.lava_damage ~= 0 and - minetest.get_item_group(n.name, "lava") ~= 0 - then - self.object:set_hp(self.object:get_hp()-self.lava_damage) - if self.object:get_hp() == 0 then - self.object:remove() - end - end - end - - self.env_damage_timer = self.env_damage_timer + dtime - if self.state == "attack" and self.env_damage_timer > 1 then - self.env_damage_timer = 0 - do_env_damage(self) - elseif self.state ~= "attack" then - do_env_damage(self) - end - - if self.type == "monster" and minetest.setting_getbool("enable_damage") then - for _,player in pairs(minetest.get_connected_players()) do - local s = self.object:getpos() - local p = player:getpos() - local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 - if dist < self.view_range then - if self.attack.dist then - if self.attack.dist < dist then - self.state = "attack" - self.attack.player = player - self.attack.dist = dist - end - else - self.state = "attack" - self.attack.player = player - self.attack.dist = dist - end - end - end - end - - if self.follow ~= "" and not self.following then - for _,player in pairs(minetest.get_connected_players()) do - local s = self.object:getpos() - local p = player:getpos() - local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 - if self.view_range and dist < self.view_range then - self.following = player - end - end - end - - if self.following and self.following:is_player() then - if self.following:get_wielded_item():get_name() ~= self.follow then - self.following = nil - self.v_start = false - else - local s = self.object:getpos() - local p = self.following:getpos() - local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 - if dist > self.view_range then - self.following = nil - self.v_start = false - else - local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z} - local yaw = math.atan(vec.z/vec.x)+math.pi/2 - - if self.drawtype == "side" then - yaw = yaw+(math.pi/2) - end - if p.x > s.x then - yaw = yaw+math.pi - end - self.object:setyaw(yaw) - if dist > 2 then - if not self.v_start then - self.v_start = true - self.set_velocity(self, self.walk_velocity) - else - if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then - local v = self.object:getvelocity() - v.y = 5 - self.object:setvelocity(v) - end - self.set_velocity(self, self.walk_velocity) - end - self:set_animation("walk") - else - self.v_start = false - self.set_velocity(self, 0) - self:set_animation("stand") - end - return - end - end - end - - if self.state == "stand" then - if math.random(1, 4) == 1 then - self.object:setyaw(self.object:getyaw()+((math.random(0,360)-180)/180*math.pi)) - end - self.set_velocity(self, 0) - self.set_animation(self, "stand") - if math.random(1, 100) <= 50 then - self.set_velocity(self, self.walk_velocity) - self.state = "walk" - self.set_animation(self, "walk") - end - elseif self.state == "walk" then - if math.random(1, 100) <= 30 then - self.object:setyaw(self.object:getyaw()+((math.random(0,360)-180)/180*math.pi)) - end - if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then - local v = self.object:getvelocity() - v.y = 5 - self.object:setvelocity(v) - end - self:set_animation("walk") - self.set_velocity(self, self.walk_velocity) - if math.random(1, 100) <= 10 then - self.set_velocity(self, 0) - self.state = "stand" - self:set_animation("stand") - end - elseif self.state == "attack" and self.attack_type == "dogfight" then - if not self.attack.player or not self.attack.player:is_player() then - self.state = "stand" - self:set_animation("stand") - return - end - local s = self.object:getpos() - local p = self.attack.player:getpos() - local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 - if dist > self.view_range or self.attack.player:get_hp() <= 0 then - self.state = "stand" - self.v_start = false - self.set_velocity(self, 0) - self.attack = {player=nil, dist=nil} - self:set_animation("stand") - return - else - self.attack.dist = dist - end - - local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z} - local yaw = math.atan(vec.z/vec.x)+math.pi/2 - if self.drawtype == "side" then - yaw = yaw+(math.pi/2) - end - if p.x > s.x then - yaw = yaw+math.pi - end - self.object:setyaw(yaw) - -- nachalo - if self.attack.dist > 2 then - if not self.v_start then - self.v_start = true - if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then - local v = self.object:getvelocity() - v.y = 5 - self.object:setvelocity(v) - end - self.set_velocity(self, self.run_velocity) - else - if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then - local v = self.object:getvelocity() - v.y = 5 - self.object:setvelocity(v) - end - self.set_velocity(self, self.run_velocity) - end - self:set_animation("run") - else - self.set_velocity(self, 0) - self:set_animation("punch") - self.v_start = false - if self.timer > 1 then - self.timer = 0 - if self.sounds and self.sounds.attack then - minetest.sound_play(self.sounds.attack, {object = self.object}) - end - self.attack.player:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups = {fleshy=self.damage} - }, vec) - end - end - elseif self.state == "attack" and self.attack_type == "shoot" then - if not self.attack.player or not self.attack.player:is_player() then - self.state = "stand" - self:set_animation("stand") - return - end - local s = self.object:getpos() - local p = self.attack.player:getpos() - local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 - if dist > self.view_range or self.attack.player:get_hp() <= 0 then - self.state = "stand" - self.v_start = false - self.set_velocity(self, 0) - self.attack = {player=nil, dist=nil} - self:set_animation("stand") - return - else - self.attack.dist = dist - end - - local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z} - local yaw = math.atan(vec.z/vec.x)+math.pi/2 - if self.drawtype == "side" then - yaw = yaw+(math.pi/2) - end - if p.x > s.x then - yaw = yaw+math.pi - end - self.object:setyaw(yaw) - self.set_velocity(self, 0) - - if self.timer > self.shoot_interval and math.random(1, 100) <= 60 then - self.timer = 0 - - self:set_animation("punch") - - if self.sounds and self.sounds.attack then - minetest.sound_play(self.sounds.attack, {object = self.object}) - end - - local p = self.object:getpos() - p.y = p.y + (self.collisionbox[2]+self.collisionbox[5])/2 - local obj = minetest.env:add_entity(p, self.arrow) - local amount = (vec.x^2+vec.y^2+vec.z^2)^0.5 - local v = obj:get_luaentity().velocity - vec.y = vec.y+1 - vec.x = vec.x*v/amount - vec.y = vec.y*v/amount - vec.z = vec.z*v/amount - obj:setvelocity(vec) - end - end - end, - - on_activate = function(self, staticdata, dtime_s) - self.object:set_armor_groups({fleshy=self.armor}) - self.object:setacceleration({x=0, y=-10, z=0}) - self.state = "stand" - self.object:setvelocity({x=0, y=self.object:getvelocity().y, z=0}) - self.object:setyaw(math.random(1, 360)/180*math.pi) - if self.type == "monster" and minetest.setting_getbool("only_peaceful_mobs") then - self.object:remove() - end - self.lifetimer = 600 - dtime_s - if staticdata then - local tmp = minetest.deserialize(staticdata) - if tmp and tmp.lifetimer then - self.lifetimer = tmp.lifetimer - dtime_s - end - if tmp and tmp.tamed then - self.tamed = tmp.tamed - end - end - if self.lifetimer <= 0 and not self.tamed then - self.object:remove() - end - end, - - get_staticdata = function(self) - local tmp = { - lifetimer = self.lifetimer, - tamed = self.tamed, - } - return minetest.serialize(tmp) - end, - - on_punch = function(self, hitter) - if self.object:get_hp() <= 0 then - if hitter and hitter:is_player() and hitter:get_inventory() then - for _,drop in ipairs(self.drops) do - if math.random(1, drop.chance) == 1 then - hitter:get_inventory():add_item("main", ItemStack(drop.name.." "..math.random(drop.min, drop.max))) - end - end - end - end - end, - - }) -end - -kpgmobs.spawning_mobs = {} -function kpgmobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height, spawn_func) - kpgmobs.spawning_mobs[name] = true - minetest.register_abm({ - nodenames = nodes, - neighbors = {"air"}, - interval = 30, - chance = chance, - action = function(pos, node, _, active_object_count_wider) - if active_object_count_wider > active_object_count then - return - end - if not kpgmobs.spawning_mobs[name] then - return - end - pos.y = pos.y+1 - if not minetest.env:get_node_light(pos) then - return - end - if minetest.env:get_node_light(pos) > max_light then - return - end - if minetest.env:get_node_light(pos) < min_light then - return - end - if pos.y > max_height then - return - end - if minetest.env:get_node(pos).name ~= "air" then - return - end - pos.y = pos.y+1 - if minetest.env:get_node(pos).name ~= "air" then - return - end - if spawn_func and not spawn_func(pos, node) then - return - end - - if minetest.setting_getbool("display_mob_spawn") then - minetest.chat_send_all("[kpgmobs] Add "..name.." at "..minetest.pos_to_string(pos)) - end - minetest.env:add_entity(pos, name) - end - }) -end - -function kpgmobs:register_arrow(name, def) - minetest.register_entity(name, { - physical = false, - visual = def.visual, - visual_size = def.visual_size, - textures = def.textures, - velocity = def.velocity, - hit_player = def.hit_player, - hit_node = def.hit_node, - - on_step = function(self, dtime) - local pos = self.object:getpos() - if minetest.env:get_node(self.object:getpos()).name ~= "air" then - self.hit_node(self, pos, node) - self.object:remove() - return - end - pos.y = pos.y-1 - for _,player in pairs(minetest.env:get_objects_inside_radius(pos, 1)) do - if player:is_player() then - self.hit_player(self, player) - self.object:remove() - return - end - end - end - }) -end diff --git a/init.lua b/init.lua index f455ebe..a29c70a 100644 --- a/init.lua +++ b/init.lua @@ -1,684 +1,7 @@ -dofile(minetest.get_modpath("kpgmobs").."/api.lua") +--File modified by Sys4 for NALC -minetest.register_node("kpgmobs:uley", { - description = "Uley", - drawtype = "plantlike", - visual_scale = 1.0, - tiles ={"uley.png"}, - inventory_image = "uley.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - groups = {fleshy=3,dig_immediate=3}, - on_use = minetest.item_eat(4), - sounds = default.node_sound_defaults(), - after_place_node = function(pos, placer, itemstack) - if placer:is_player() then - minetest.set_node(pos, {name="kpgmobs:uley", param2=1}) - minetest.env:add_entity(pos, "kpgmobs:bee") - end - end, - -}) - -minetest.register_craft({ - output = 'kpgmobs:uley', - recipe = { - {'kpgmobs:bee','kpgmobs:bee','kpgmobs:bee'}, - } -}) - - ---HORSE go go goooo :) -local horse = { - - - physical = true, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - visual = "mesh", - stepheight = 1.1, - visual_size = {x=1,y=1}, - mesh = "mobs_horseh1.x", - textures = {"mobs_horseh1.png"}, - - driver = nil, - v = 0, -} - - -local function is_ground(pos) - local nn = minetest.get_node(pos).name - return minetest.get_item_group(nn, "crumbly") ~= 0 -end - -local function get_sign(i) - if i == 0 then - return 0 - else - return i/math.abs(i) - end -end - -local function get_velocity(v, yaw, y) - local x = math.cos(yaw)*v - local z = math.sin(yaw)*v - return {x=x, y=y, z=z} -end - -local function get_v(v) - return math.sqrt(v.x^2+v.z^2) -end - -function horse:on_rightclick(clicker) - if not clicker or not clicker:is_player() then - return - end - if self.driver and clicker == self.driver then - self.driver = nil - clicker:set_detach() - elseif not self.driver then - self.driver = clicker - clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0}) - self.object:setyaw(clicker:get_look_yaw()) - end -end - - -function horse:on_activate(staticdata, dtime_s) - self.object:set_armor_groups({immortal=1}) - if staticdata then - self.v = tonumber(staticdata) - end -end - -function horse:get_staticdata() - return tostring(v) -end - -function horse:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) - self.object:remove() - if puncher and puncher:is_player() then - puncher:get_inventory():add_item("main", "kpgmobs:horseh1") - end -end - - -function horse:on_step(dtime) - - self.v = get_v(self.object:getvelocity())*get_sign(self.v) - if self.driver then - local ctrl = self.driver:get_player_control() - if ctrl.up then - self.v = self.v+2 - end - if ctrl.down then - self.v = self.v-0.1 - end - if ctrl.left then - self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120) - end - if ctrl.right then - self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120) - end - if ctrl.jump then - local p = self.object:getpos() - p.y = p.y-0.5 - if is_ground(p) then - local pos = self.object:getpos() - pos.y = math.floor(pos.y)+4 - self.object:setpos(pos) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0)) - end - end - end - local s = get_sign(self.v) - self.v = self.v - 0.02*s - if s ~= get_sign(self.v) then - self.object:setvelocity({x=0, y=0, z=0}) - self.v = 0 - return - end - if math.abs(self.v) > 4.5 then - self.v = 4.5*get_sign(self.v) - end - - local p = self.object:getpos() - p.y = p.y-0.5 - if not is_ground(p) then - if minetest.registered_nodes[minetest.get_node(p).name].walkable then - self.v = 0 - end - self.object:setacceleration({x=0, y=-10, z=0}) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)) - else - p.y = p.y+1 - if is_ground(p) then - self.object:setacceleration({x=0, y=3, z=0}) - local y = self.object:getvelocity().y - if y > 2 then - y = 2 - end - if y < 0 then - self.object:setacceleration({x=0, y=10, z=0}) - end - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y)) - else - self.object:setacceleration({x=0, y=0, z=0}) - if math.abs(self.object:getvelocity().y) < 1 then - local pos = self.object:getpos() - pos.y = math.floor(pos.y)+0.5 - self.object:setpos(pos) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0)) - else - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)) - end - end - end -end - ---horse white - -local horsepeg = { - - - physical = true, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - visual = "mesh", - stepheight = 1.1, - visual_size = {x=1,y=1}, - mesh = "mobs_horseh1.x", - textures = {"mobs_horsepegh1.png"}, - - driver = nil, - v = 0, -} - - -local function is_ground(pos) - local nn = minetest.get_node(pos).name - return minetest.get_item_group(nn, "crumbly") ~= 0 -end - -local function get_sign(i) - if i == 0 then - return 0 - else - return i/math.abs(i) - end -end - -local function get_velocity(v, yaw, y) - local x = math.cos(yaw)*v - local z = math.sin(yaw)*v - return {x=x, y=y, z=z} -end - -local function get_v(v) - return math.sqrt(v.x^2+v.z^2) -end - -function horsepeg:on_rightclick(clicker) - if not clicker or not clicker:is_player() then - return - end - if self.driver and clicker == self.driver then - self.driver = nil - clicker:set_detach() - elseif not self.driver then - self.driver = clicker - clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0}) - self.object:setyaw(clicker:get_look_yaw()) - end -end - - -function horsepeg:on_activate(staticdata, dtime_s) - self.object:set_armor_groups({immortal=1}) - if staticdata then - self.v = tonumber(staticdata) - end -end - -function horsepeg:get_staticdata() - return tostring(v) -end - -function horsepeg:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) - self.object:remove() - if puncher and puncher:is_player() then - puncher:get_inventory():add_item("main", "kpgmobs:horsepegh1") - end -end - - -function horsepeg:on_step(dtime) - - self.v = get_v(self.object:getvelocity())*get_sign(self.v) - if self.driver then - local ctrl = self.driver:get_player_control() - if ctrl.up then - self.v = self.v+2 - end - if ctrl.down then - self.v = self.v-0.1 - end - if ctrl.left then - self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120) - end - if ctrl.right then - self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120) - end - if ctrl.jump then - local p = self.object:getpos() - p.y = p.y-0.5 - if is_ground(p) then - local pos = self.object:getpos() - pos.y = math.floor(pos.y)+4 - self.object:setpos(pos) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0)) - end - end - end - local s = get_sign(self.v) - self.v = self.v - 0.02*s - if s ~= get_sign(self.v) then - self.object:setvelocity({x=0, y=0, z=0}) - self.v = 0 - return - end - if math.abs(self.v) > 4.5 then - self.v = 4.5*get_sign(self.v) - end - - local p = self.object:getpos() - p.y = p.y-0.5 - if not is_ground(p) then - if minetest.registered_nodes[minetest.get_node(p).name].walkable then - self.v = 0 - end - self.object:setacceleration({x=0, y=-10, z=0}) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)) - else - p.y = p.y+1 - if is_ground(p) then - self.object:setacceleration({x=0, y=3, z=0}) - local y = self.object:getvelocity().y - if y > 2 then - y = 2 - end - if y < 0 then - self.object:setacceleration({x=0, y=10, z=0}) - end - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y)) - else - self.object:setacceleration({x=0, y=0, z=0}) - if math.abs(self.object:getvelocity().y) < 1 then - local pos = self.object:getpos() - pos.y = math.floor(pos.y)+0.5 - self.object:setpos(pos) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0)) - else - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)) - end - end - end -end - ---horse arabik - local horseara = { - - - physical = true, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - visual = "mesh", - stepheight = 1.1, - visual_size = {x=1,y=1}, - mesh = "mobs_horseh1.x", - textures = {"mobs_horsearah1.png"}, - - driver = nil, - v = 0, -} - - -local function is_ground(pos) - local nn = minetest.get_node(pos).name - return minetest.get_item_group(nn, "crumbly") ~= 0 -end - -local function get_sign(i) - if i == 0 then - return 0 - else - return i/math.abs(i) - end -end - -local function get_velocity(v, yaw, y) - local x = math.cos(yaw)*v - local z = math.sin(yaw)*v - return {x=x, y=y, z=z} -end - -local function get_v(v) - return math.sqrt(v.x^2+v.z^2) -end - -function horseara:on_rightclick(clicker) - if not clicker or not clicker:is_player() then - return - end - if self.driver and clicker == self.driver then - self.driver = nil - clicker:set_detach() - elseif not self.driver then - self.driver = clicker - clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0}) - self.object:setyaw(clicker:get_look_yaw()) - end -end - - -function horseara:on_activate(staticdata, dtime_s) - self.object:set_armor_groups({immortal=1}) - if staticdata then - self.v = tonumber(staticdata) - end -end - -function horseara:get_staticdata() - return tostring(v) -end - -function horseara:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) - self.object:remove() - if puncher and puncher:is_player() then - puncher:get_inventory():add_item("main", "kpgmobs:horsearah1") - end -end - - -function horseara:on_step(dtime) - - self.v = get_v(self.object:getvelocity())*get_sign(self.v) - if self.driver then - local ctrl = self.driver:get_player_control() - if ctrl.up then - self.v = self.v+3 - end - if ctrl.down then - self.v = self.v-0.1 - end - if ctrl.left then - self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120) - end - if ctrl.right then - self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120) - end - if ctrl.jump then - local p = self.object:getpos() - p.y = p.y-0.5 - if is_ground(p) then - local pos = self.object:getpos() - pos.y = math.floor(pos.y)+4 - self.object:setpos(pos) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0)) - end - end - - end - local s = get_sign(self.v) - self.v = self.v - 0.02*s - if s ~= get_sign(self.v) then - self.object:setvelocity({x=0, y=0, z=0}) - self.v = 0 - return - end - if math.abs(self.v) > 4.5 then - self.v = 4.5*get_sign(self.v) - end - - local p = self.object:getpos() - p.y = p.y-0.5 - if not is_ground(p) then - if minetest.registered_nodes[minetest.get_node(p).name].walkable then - self.v = 0 - end - self.object:setacceleration({x=0, y=-10, z=0}) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)) - else - p.y = p.y+1 - if is_ground(p) then - self.object:setacceleration({x=0, y=3, z=0}) - local y = self.object:getvelocity().y - if y > 2 then - y = 2 - end - if y < 0 then - self.object:setacceleration({x=0, y=10, z=0}) - end - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y)) - else - self.object:setacceleration({x=0, y=0, z=0}) - if math.abs(self.object:getvelocity().y) < 1 then - local pos = self.object:getpos() - pos.y = math.floor(pos.y)+0.5 - self.object:setpos(pos) - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0)) - else - self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)) - end - end - end -end - ---END HORSE - -kpgmobs:register_mob("kpgmobs:sheep", { - type = "animal", - hp_max = 5, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - textures = {"mobs_sheep.png"}, - visual = "mesh", - mesh = "mobs_sheep.x", - makes_footstep_sound = true, - walk_velocity = 1, - armor = 200, - drops = { - {name = "kpgmobs:meat_raw", - chance = 1, - min = 2, - max = 3,}, - }, - drawtype = "front", - water_damage = 1, - lava_damage = 5, - light_damage = 0, - sounds = { - random = "mobs_sheep", - }, - animation = { - speed_normal = 15, - stand_start = 0, - stand_end = 80, - walk_start = 81, - walk_end = 100, - }, - follow = "farming:wheat", - view_range = 5, - - on_rightclick = function(self, clicker) - local item = clicker:get_wielded_item() - if item:get_name() == "farming:wheat" then - if not self.tamed then - if not minetest.setting_getbool("creative_mode") then - item:take_item() - clicker:set_wielded_item(item) - end - self.tamed = true - elseif self.naked then - if not minetest.setting_getbool("creative_mode") then - item:take_item() - clicker:set_wielded_item(item) - end - self.food = (self.food or 0) + 1 - if self.food >= 8 then - self.food = 0 - self.naked = false - self.object:set_properties({ - textures = {"mobs_sheep.png"}, - mesh = "mobs_sheep.x", - }) - end - end - return - end - if clicker:get_inventory() and not self.naked then - self.naked = true - if minetest.registered_items["wool:white"] then - clicker:get_inventory():add_item("main", ItemStack("wool:white "..math.random(1,3))) - end - self.object:set_properties({ - textures = {"mobs_sheep_shaved.png"}, - mesh = "mobs_sheep_shaved.x", - }) - end - end, -}) -kpgmobs:register_spawn("kpgmobs:sheep", {"default:dirt_with_grass"}, 20, 8, 9000, 1, 31000) - - -minetest.register_craftitem("kpgmobs:meat_raw", { - description = "Raw Meat", - inventory_image = "mobs_meat_raw.png", -}) - -minetest.register_craftitem("kpgmobs:meat", { - description = "Meat", - inventory_image = "mobs_meat.png", - on_use = minetest.item_eat(8), -}) - -minetest.register_craft({ - type = "cooking", - output = "kpgmobs:meat", - recipe = "kpgmobs:meat_raw", - cooktime = 5, -}) - -kpgmobs:register_mob("kpgmobs:rat", { - type = "animal", - hp_max = 1, - collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2}, - visual = "mesh", - mesh = "mobs_rat.x", - textures = {"mobs_rat.png"}, - makes_footstep_sound = false, - walk_velocity = 1, - armor = 200, - drops = {}, - drawtype = "front", - water_damage = 0, - lava_damage = 1, - light_damage = 0, - - on_rightclick = function(self, clicker) - if clicker:is_player() and clicker:get_inventory() then - clicker:get_inventory():add_item("main", "kpgmobs:rat") - self.object:remove() - end - end, -}) -kpgmobs:register_spawn("kpgmobs:rat", {"default:dirt_with_grass", "default:stone"}, 20, -1, 7000, 1, 31000) - -minetest.register_craftitem("kpgmobs:rat", { - description = "Rat", - inventory_image = "mobs_rat_inventory.png", - - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.above then - minetest.env:add_entity(pointed_thing.above, "kpgmobs:rat") - itemstack:take_item() - end - return itemstack - end, -}) - -minetest.register_craftitem("kpgmobs:rat_cooked", { - description = "Cooked Rat", - inventory_image = "mobs_cooked_rat.png", - - on_use = minetest.item_eat(3), -}) - - -kpgmobs:register_mob("kpgmobs:bee", { - type = "animal", - hp_max = 1, - collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2}, - visual = "mesh", - mesh = "mobs_bee.x", - textures = {"mobs_bee.png"}, - makes_footstep_sound = false, - walk_velocity = 1, - armor = 200, - drops = { - {name = "kpgmobs:med_cooked", - chance = 1, - min = 1, - max = 2,}, - }, - drawtype = "front", - water_damage = 0, - lava_damage = 1, - light_damage = 0, - - animation = { - speed_normal = 15, - stand_start = 0, - stand_end = 30, - walk_start = 35, - walk_end = 65, - }, - - on_rightclick = function(self, clicker) - if clicker:is_player() and clicker:get_inventory() then - clicker:get_inventory():add_item("main", "kpgmobs:bee") - self.object:remove() - end - end, -}) -kpgmobs:register_spawn("kpgmobs:bee", {"default:dirt_with_grass"}, 20, -1, 7000, 1, 31000) - -minetest.register_craftitem("kpgmobs:bee", { - description = "bee", - inventory_image = "mobs_bee_inventar.png", - - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.above then - minetest.env:add_entity(pointed_thing.above, "kpgmobs:bee") - itemstack:take_item() - end - return itemstack - end, -}) - -minetest.register_craftitem("kpgmobs:med_cooked", { - description = "Cooked med", - inventory_image = "mobs_med_inventar.png", - - on_use = minetest.item_eat(6), -}) - - -minetest.register_craft({ - type = "cooking", - output = "kpgmobs:med_cooked", - recipe = "kpgmobs:bee", - cooktime = 5, -}) - -kpgmobs:register_mob("kpgmobs:deer", { +-- Deer +mobs:register_mob("kpgmobs:deer", { type = "animal", hp_max = 5, collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, @@ -689,7 +12,7 @@ kpgmobs:register_mob("kpgmobs:deer", { walk_velocity = 1, armor = 200, drops = { - {name = "kpgmobs:meat_raw", + {name = "mobs:meat_raw", chance = 1, min = 2, max = 3,}, @@ -710,243 +33,11 @@ kpgmobs:register_mob("kpgmobs:deer", { }) -kpgmobs:register_spawn("kpgmobs:deer", {"default:dirt_with_grass"}, 20, 8, 9000, 1, 31000) +mobs:register_spawn("kpgmobs:deer", {"default:dirt_with_grass"}, 20, 8, 27000, 1, 31000) +mobs:register_egg("kpgmobs:deer", "Deer", "wool_violet.png", 1) -kpgmobs:register_mob("kpgmobs:horse", { - type = "animal", - hp_max = 5, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - textures = {"mobs_horse.png"}, - visual = "mesh", - mesh = "mobs_horse.x", - makes_footstep_sound = true, - walk_velocity = 1, - armor = 200, - drops = { - {name = "kpgmobs:meat_raw", - chance = 1, - min = 2, - max = 3,}, - }, - drawtype = "front", - water_damage = 1, - lava_damage = 5, - light_damage = 0, - animation = { - speed_normal = 15, - stand_start = 25, - stand_end = 75, - walk_start = 75, - walk_end = 100, - }, - follow = "farming:wheat", - view_range = 5, - - on_rightclick = function(self, clicker) - if clicker:is_player() and clicker:get_inventory() then - clicker:get_inventory():add_item("main", "kpgmobs:horseh1") - self.object:remove() - end - end, - -}) -kpgmobs:register_spawn("kpgmobs:horse", {"default:dirt_with_grass"}, 20, 8, 9000, 1, 31000) - -minetest.register_craftitem("kpgmobs:horseh1", { - description = "Horse", - inventory_image = "mobs_horse_inventar.png", - - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.above then - minetest.env:add_entity(pointed_thing.above, "kpgmobs:horseh1") - itemstack:take_item() - end - return itemstack - end, -}) -minetest.register_entity("kpgmobs:horseh1", horse) - -minetest.register_craftitem("kpgmobs:horsepegh1", { - description = "HorseWhite", - inventory_image = "mobs_horse_inventar.png", - - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.above then - minetest.env:add_entity(pointed_thing.above, "kpgmobs:horsepegh1") - itemstack:take_item() - end - return itemstack - end, -}) -minetest.register_entity("kpgmobs:horsepegh1", horsepeg) - -minetest.register_craftitem("kpgmobs:horsearah1", { - description = "HorseBlack", - inventory_image = "mobs_horse_inventar.png", - - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.above then - minetest.env:add_entity(pointed_thing.above, "kpgmobs:horsearah1") - itemstack:take_item() - end - return itemstack - end, -}) -minetest.register_entity("kpgmobs:horsearah1", horseara) - -kpgmobs:register_mob("kpgmobs:wolf", { - type = "monster", - hp_max = 5, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - textures = {"mobs_wolf.png"}, - visual = "mesh", - mesh = "mobs_wolf.x", - makes_footstep_sound = true, - view_range = 7, - walk_velocity = 2, - run_velocity = 3, - damage = 2, - armor = 200, - attack_type = "dogfight", - drops = { - {name = "kpgmobs:meat_raw", - chance = 1, - min = 2, - max = 3,}, - }, - drawtype = "front", - water_damage = 1, - lava_damage = 5, - light_damage = 2, - on_rightclick = nil, - - animation = { - speed_normal = 15, - speed_run = 15, - stand_start = 10, - stand_end = 20, - walk_start = 75, - walk_end = 100, - run_start = 100, - run_end = 130, - punch_start = 135, - punch_end = 155, - }, -}) -kpgmobs:register_spawn("kpgmobs:wolf", {"default:dirt_with_grass","default:dirt","default:desert_sand"}, 10, -1, 11000, 3, 31000) - -kpgmobs:register_mob("kpgmobs:pumba", { - type = "animal", - hp_max = 5, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - textures = {"mobs_pumba.png"}, - visual = "mesh", - mesh = "mobs_pumba.x", - makes_footstep_sound = true, - walk_velocity = 2, - armor = 200, - drops = { - {name = "kpgmobs:meat_raw", - chance = 1, - min = 2, - max = 3,}, - }, - drawtype = "front", - water_damage = 1, - lava_damage = 5, - light_damage = 0, - animation = { - speed_normal = 15, - stand_start = 25, - stand_end = 55, - walk_start = 70, - walk_end = 100, - }, - follow = "farming:wheat", - view_range = 5, - -}) -kpgmobs:register_spawn("kpgmobs:pumba", {"default:desert_sand"}, 20, 8, 9000, 1, 31000) - -kpgmobs:register_mob("kpgmobs:horse3", { - type = "animal", - hp_max = 5, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - textures = {"mobs_horseara.png"}, - visual = "mesh", - mesh = "mobs_horse.x", - makes_footstep_sound = true, - walk_velocity = 1, - armor = 200, - drops = { - {name = "kpgmobs:meat_raw", - chance = 1, - min = 2, - max = 3,}, - }, - drawtype = "front", - water_damage = 1, - lava_damage = 5, - light_damage = 0, - animation = { - speed_normal = 15, - stand_start = 25, - stand_end = 75, - walk_start = 75, - walk_end = 100, - }, - follow = "farming:wheat", - view_range = 5, - - on_rightclick = function(self, clicker) - if clicker:is_player() and clicker:get_inventory() then - clicker:get_inventory():add_item("main", "kpgmobs:horsearah1") - self.object:remove() - end - end, -}) -kpgmobs:register_spawn("kpgmobs:horse3", {"default:desert_sand"}, 20, 8, 9000, 1, 31000) - -kpgmobs:register_mob("kpgmobs:horse2", { - type = "animal", - hp_max = 5, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - textures = {"mobs_horsepeg.png"}, - visual = "mesh", - mesh = "mobs_horse.x", - makes_footstep_sound = true, - walk_velocity = 1, - armor = 200, - drops = { - {name = "kpgmobs:meat_raw", - chance = 1, - min = 2, - max = 3,}, - }, - drawtype = "front", - water_damage = 1, - lava_damage = 5, - light_damage = 0, - animation = { - speed_normal = 15, - stand_start = 25, - stand_end = 75, - walk_start = 75, - walk_end = 100, - }, - follow = "farming:wheat", - view_range = 5, - - on_rightclick = function(self, clicker) - if clicker:is_player() and clicker:get_inventory() then - clicker:get_inventory():add_item("main", "kpgmobs:horsepegh1") - self.object:remove() - end - end, -}) -kpgmobs:register_spawn("kpgmobs:horse2", {"default:dirt_with_grass"}, 20, 8, 10000, 1, 31000) - -kpgmobs:register_mob("kpgmobs:jeraf", { +-- Jeraf +mobs:register_mob("kpgmobs:jeraf", { type = "animal", hp_max = 5, collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, @@ -957,7 +48,7 @@ kpgmobs:register_mob("kpgmobs:jeraf", { walk_velocity = 2, armor = 200, drops = { - {name = "kpgmobs:meat_raw", + {name = "mobs:meat_raw", chance = 1, min = 2, max = 3,}, @@ -978,9 +69,11 @@ kpgmobs:register_mob("kpgmobs:jeraf", { view_range = 5, }) -kpgmobs:register_spawn("kpgmobs:jeraf", {"default:desert_sand"}, 20, 8, 9000, 1, 31000) +mobs:register_spawn("kpgmobs:jeraf", {"default:desert_sand", "default:dirt_with_dry_grass"}, 20, 8, 27000, 1, 31000) +mobs:register_egg("kpgmobs:jeraf", "Giraffe", "wool_yellow.png", 1) -kpgmobs:register_mob("kpgmobs:medved", { +-- Bear +mobs:register_mob("kpgmobs:medved", { type = "animal", hp_max = 5, collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, @@ -995,7 +88,7 @@ kpgmobs:register_mob("kpgmobs:medved", { armor = 200, attack_type = "dogfight", drops = { - {name = "kpgmobs:meat_raw", + {name = "mobs:meat_raw", chance = 1, min = 5, max = 10,}, @@ -1019,74 +112,8 @@ kpgmobs:register_mob("kpgmobs:medved", { punch_end = 100, }, }) -kpgmobs:register_spawn("kpgmobs:medved", {"default:dirt_with_grass","default:dirt","default:desert_sand"}, 20, 0, 11000, 3, 31000) - -kpgmobs:register_mob("kpgmobs:cow", { - type = "animal", - hp_max = 5, - collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, - textures = {"mobs_cow.png"}, - visual = "mesh", - mesh = "mobs_cow.x", - makes_footstep_sound = true, - view_range = 7, - walk_velocity = 1, - run_velocity = 2, - damage = 10, - armor = 200, - drops = { - {name = "kpgmobs:meat_raw", - chance = 1, - min = 5, - max = 10,}, - }, - drawtype = "front", - water_damage = 1, - lava_damage = 5, - light_damage = 0, - follow = "farming:wheat", - view_range = 5, - -- ADDED TenPlus1 (right-clicking cow with empty bucket gives bucket of milk and moo sound) - on_rightclick = function(self, clicker) - tool = clicker:get_wielded_item():get_name() - if tool == "bucket:bucket_empty" then - if self.milked then - minetest.sound_play("cow", { - object = self.object, - gain = 1.0, -- default - max_hear_distance = 32, -- default - loop = false, - }) - do return end - end - clicker:get_inventory():remove_item("main", "bucket:bucket_empty") - clicker:get_inventory():add_item("main", "kpgmobs:bucket_milk") - if math.random(1,2) > 1 then self.milked = true end - end - end, - - - animation = { - speed_normal = 15, - speed_run = 15, - stand_start = 0, - stand_end = 30, - walk_start = 35, - walk_end = 65, - run_start = 105, - run_end = 135, - punch_start = 70, - punch_end = 100, - }, -}) -kpgmobs:register_spawn("kpgmobs:cow", {"default:dirt_with_grass","default:dirt","default:desert_sand"}, 20, 0, 11000, 3, 31000) - --- ADDED Tenplus1 (Bucket of Milk gives 4 hearts and returns empty bucket) -minetest.register_craftitem("kpgmobs:bucket_milk", { - description = "Bucket of Milk", - inventory_image = "bucket_milk.png", - on_use = minetest.item_eat(8, "bucket:bucket_empty"), -}) +mobs:register_spawn("kpgmobs:medved", {"default:dirt_with_grass","default:dirt"}, 20, 0, 44000, 3, 31000) +mobs:register_egg("kpgmobs:medved", "Bear", "wool_brown.png", 1) if minetest.setting_get("log_mods") then minetest.log("action", "kpgmobs loaded") diff --git a/sounds/cow.ogg b/sounds/cow.ogg deleted file mode 100644 index e919c6ba6c6aee56b740db6e10453e165352dbbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7216 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 Lz4TDLz_I@UlF=80 diff --git a/sounds/mobs_sheep.ogg b/sounds/mobs_sheep.ogg deleted file mode 100644 index 4e7e2329bfc425cbd7959a46a8ffd1bb6edae4cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18659 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 FV1gSUWPAVs diff --git a/textures/mobs_bee_inventar.png b/textures/mobs_bee_inventar.png deleted file mode 100644 index 94d5ace110e9205352a582b254cb44c4bc7773cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 934 zcmV;X16lluP)pg{E{j%_7QuzmjkOz*nn|UCF=?TsCIm_nnM_F1$=FP1=KdZRxdq?VSsc!LIOlzo zZQF6c0W3fR0pI}w>@Kbr%0xOoa-5l&TfM-7QYr*Y18@Nq_4q&_AdcgvimQe4xewpx zwbx(e>Q6rcuvT2XvsPSntF>Aj@Qug`z*kCnlarIagkh|7e`EXI(VWC=|!H&_47m~%Y_S{@ay$O zvf0cCAO;W`hJj^S+Vi}I{{H@F0hX6nXl`!i^UprzK+j$-U;2{gjt=qUV^`5eKs>%{ z1+bKD+d3AD8Rc?0Ha$JP+||`J13bUDxCp@c@tp%rd;vkQQ+Mw>!2W$*-tU5UfHfx zn4e$Z|9a!ix2!+!ZO2NbAC`l_|Ei^>C9aebt@Q%~*i|SL$Ye72wkwqxfFlEkXl!gG zolcWXCMlQhOTGTk2Qsef)*Z*W+tAQ(TWjqY^?KcEYimnXtJS-}L4c{>Z?d(u#lXM- zsZL(Y)&aP;rqVxh#w=0vF~|awOXy-D3warE0u~PBIf$~`m)w~UPQErG$^I2*=%;g zb=@ctSZ0JU(I5wKlv31cwXm6#xJL07*qo IM6N<$f)+rv0{{R3 diff --git a/textures/mobs_cooked_rat.png b/textures/mobs_cooked_rat.png deleted file mode 100644 index daad3be0d19a741831bd9e1123846c19b580ca78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m=t9o-U3d7QJVKqInM}2xzBh2{bVBBry0_96G?0kifLzpxuewC&!W% zBRADeeR3;XpJ9LFHJ!I)wt|enSA|Z?Hqo?4;cQcy?k98J gQ(9m5^L+tRu)W@od+PaZK*uq7y85}Sb4q9e0K#%s{r~^~ diff --git a/textures/mobs_deer.png b/textures/mobs_deer.png new file mode 100644 index 0000000000000000000000000000000000000000..514007eea452da32b8a83d90de26e57b8ad2bcee GIT binary patch literal 967 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 KMNUMnLSTa2!Bb8E literal 0 HcmV?d00001 diff --git a/textures/mobs_meat.png b/textures/mobs_meat.png deleted file mode 100644 index 4c63fdd1647ef5e9df866795f972824003841a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgfaiF4ao-U3d7N?g^vdubdAacB(E6(QR4TXEx zF3u`ia7TIh3qvMb2mT4lB^n}c3}^mM5hQPNZ2d{j?b$^|R^^`s``T-BW~*s_Ph^k?jTf@q@XleX_U!(d zpRd@|Zl2A&s!G1?iq6}AB6~a*yo!|BkbKYbgOcN0+vUaXZ*7(MqNi+ru+{L@!kfR; xcc<9y}xJr}&S1jg>4r#17hce+c-?XfU(#Xu8o%U0?_>c)I$ztaD0e0svFmpH=_> diff --git a/textures/mobs_meat_raw.png b/textures/mobs_meat_raw.png deleted file mode 100644 index 0dea4ec5404cccc8820d90a5d3e1513b150d6056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x37`TN&n2}-D90{Nxdx@v7EBkF8NoF4Dim2{~Kq1Kz*N775{M_8s zyb=cIqSVBa)D(sC%#sWRcTeAd@J2pypjE7%E{-7kqh6PFiLxlUdNbJa48$*Oi5{r(a(v5$LiYP)9NG@bmxw?^k=dL`2Um z7D`(3L9XHYs-Ty*(|Bvn7jqg0W$_-^y6)wi$>%H?Ph7j=z4qj}=kXQ0mwuQRa9!ly zV+NO$Z<%YS9+UWKBa`yyo`mvtfhC4+QQ4}|!Ou&Sj&L~ayU+aLqIF^D(kn57*3X|* zZ-2bB{l4CGMxU(=1+mM;WL2Inv0!UI8}o0kIGf3TAIE5{BIN89Ry&ac@UkDfQywAE(< Ph8lyXtDnm{r-UW|E48P= diff --git a/textures/mobs_med_inventar.png b/textures/mobs_med_inventar.png deleted file mode 100644 index e70666d7080e757f50e23304e046b266874167ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)41nY7DA>)0Wi%MK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`#ol9Av3NZr|O9UQCxR>D6mp*03v1h6}aVbZpb3M#_6lm#nK+xyZ3%0+P se)cCZ=m-=_dI|ig+4!Pg~egH=zG3eXn}p00i_>zopr0R4w=FaQ7m diff --git a/textures/mobs_medved.png b/textures/mobs_medved.png new file mode 100644 index 0000000000000000000000000000000000000000..2835e76fefd5d8f8d00f66eb8e0310dbe27d0df6 GIT binary patch literal 1023 zcmVce$Y)pnYXB1Moxkz;`z3k1l2 z%-?8H>hC-)t~ zCp3Q34&$tTKAEYH8-N>*&3#$wwWI*vCpE~Sr|*ic0f8cUZ|c&$K(KojT zh(=?)d?Q;gsIq^2=wK9bC<1b+dw#wo%$L;3h3YawG)oD?piU_%fY4npPxV~gs{n=p z!zko9Pc&&pA;+)B1s>cI+ZD4b8=!V>L*0bmuKhUB{7?j(Cklh$@=;?*7_TjlwA802Jb^u6t98D^)ZhdIAufnVL0wf0OfJz*^3arV`&C=$zgy z)LQTF4>??+&sTmNn;eQ*ix0mXYsvcVt^>|AH|(sNb{4BvsqB{hyw3pC3!T%@CZyfV zb}RiK>y+YQz#ub@Sjo;G&C=~CblGi+FcKdARMX8}(6k3%9c+A=UHcEQkO}x)tU0`~ z50ZSzp&Vs|ZEFdd_Hd$){Bv5G=c6-;dwT*$XA=8Ej^1iSD*|4=ksz}4L3qdliKHV{ z_T;`pw!AjA;c&#wCw4RX`H~R%bxZB_b&JKBYV9?NEjU}B1)DM#LOXvwC+v6(7PeF!(S(**{d8jF948=OdGdK@c7WdA}6?lp^)0)A}1rsp3rLeS;)*6 z(R@j(fx_`>CNUXs#F;Vy2(E`*G(i~zBEJqU@@wY+;P6Xy;Bd^XYH&lmX+qfD(PKJr8HjX{ujdkxuTQ^?3BIGz zh%<%hg5dDB8Y~ycQ{SNt3gS@1N4M tqn|%&&&L^BC8)ZhR6v>&dM+~^^)Fldztve+?1lgU002ovPDHLkV1j4n+FJks literal 0 HcmV?d00001 diff --git a/textures/mobs_rat_inventory.png b/textures/mobs_rat_inventory.png deleted file mode 100644 index a8d615137ec2ef6d301d859ba36867745f55d7a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)p=WlyCyfFW^Ktzb+n6Mdax7z^Z+nk;EMAibF zy@OVObB_0;5df{hU_htS0l>v^4HSkU-g}<+dtB^zc=&;;(r&kT*X`C#gMPmcfH8*6 zW^+c@T1#XtWm)jN-_!5+5s^CIdrtr$B9vuG9LJ&7+4T|=pz4>0QRxDR5y!Xc;MvbJ%T2%GeCCkoOc<)J)gv2?b$>cbL`C@^pRz<3+ zhzNPUBXJH9sXdA!?(e@7MG>cDWOjR7cMy>ZMT{{NMZy0p0B~PI%CaQOGENNi>FKwM z$eCBi22gD;04P3%q-k1zsw!7kNiD4@adbMMvMgT#%;&v2=d?-fE&A25Rq+7OiUCj` z)35dV;-~;7ZhGcHg*G0K5fP@-DeLtkqv7ykg>MegbPR|60aazY-7*{w09dad|5c-v zFVmj{A|gduNGohfHNal42T%hw)-0=RDXVNLCpr2DRDasLSw7KJ00000NkvXXu0mjf DJva2) diff --git a/textures/mobs_sheep_old.png b/textures/mobs_sheep_old.png deleted file mode 100644 index 4eef9e38da74d344fbf2d0e2f9a679b3b240a0b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmV;819JR{P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyq| z3jh_BsYnn2000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0008$Nkl$t8< zp63{bA)cO|r0co}A@DqpIF6~;>j)tTf`BwlsZ=Vg0qO zD0I7Brqd~nMgv{f3B!=(a!IvXWipxI`#zRsQ7)I6&1OueQ#Rqx&(8&b0O)i&GKwOW z%O%^}+ayUs9LGp0ab1@}p}=f5W4T;nnkIRk69fVMexG{1j&0j)!e3rqid8D+^SR9P zoWWo~k|Z1*9Rc8Z9$A**x-N>M@cR0S5Q1v8ijw#`R8%QC9fDp{5>8jV;i791WP@)Q0y1Gl%gGLB41yqFI-O#gCdFcr!C=5o__e+M@bDm`C?W^~%H=YqY0~TU zP!xrFy-uFzG@DIK(`0{tpEOPJeV;tf+1=e`XJ?1+@YmPZVy%Hzt0gOy3Q3aSc^<`L z5zDg3vWzH-P!xqysYI4#1VKQdP{6ir(lli}9wUU{JN()j_)xdol}VD|I1Y-U&}=qQ zRh5&Ilhr_ae}7-aJ$MfM}!cBVFWFU8GbZ8()Nlj2>E@cM*00JIKL_t(I%axE_NK*kA zhTr3UEGKQ}%sCyKX=THUpoqFCFtn(^=prZ~jJhZ=vaB1UE(}SCpx>cIcw!yYl-Cs@v;ja4q5Dnd>1q_O&L3JVS< zNb*W6$V4&6y^^0?GG`Wn-f_MOBtfz{MVaJxkcx#IFBnSC=lrcG__AglpcCrjyS8=2 zELs6bsxUe@28fC)3qkEzSve5l)!h7d%X2$!ssSkvZ~8TWvdW#FR;LdfyE&<`JVxb? zPPBP%=Kx6{5=Khj1E{KM0O81NC0;nY1z!QM&Ayi(f?+ZNwx3u_vbJHyWB-6SC8-lh zunf3VD`4ckhE*6)uzZt;mM< z)i~E^gr}t#1`gLPi}#-*seZtuts*Nyti^74yU(TrfWu4m*E;tfW&Tv*FCH54U$k$M gn$K(y%QNkN0`qAMrn1AFZ2$lO07*qoM6N<$f^Z!wkpKVy diff --git a/textures/uley.png b/textures/uley.png deleted file mode 100644 index 8125fd0ee5a1b88101ddca8ccc4a87976f9c6935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqvmB4S=G2l$qCg?p%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dDE`dT#WBR<^wMBOzC#WIb5s>PHvCyA7TkKIwD|$^gari? z5(NG%i-=DRp{Bz{4SGsZF44cxSs+OYL zjgNM&de>!B=`AKWY07lxNvRgkuQ5DhxFK?NR#|K1>QzxsJb&fB6Ib;Lmorb#x?VHesP?Z%KrS$#yY{vJxhM5 z`Z2`RM=tuYKOxOH^zLz;O)2~mnKB1!*e-lD4f@}kwk_~#=tT9uZqFu6ov+ol(M+w= Y+Q##8*^`C-Euf(AboFyt=akR{01qLQcmMzZ