Add kpgmobs v6

This commit is contained in:
AntumDeluge 2017-05-28 17:05:03 -07:00
commit 735ba1458f
45 changed files with 72676 additions and 0 deletions

31
README.txt Normal file
View File

@ -0,0 +1,31 @@
-= MOBS-MOD for MINETEST =- by PilzAdam and KrupnovPavel
Little has changed. Removed some bugs.
The game now many living creatures.
The sheep and the rat from MOBS-MOD
Deer by Pavel_S
All my models and change code on valid license The MIT License
The MIT License (MIT)
Copyright (c) 2014 Krupnov Pavel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
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.

577
api.lua Normal file
View File

@ -0,0 +1,577 @@
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

1
depends.txt Normal file
View File

@ -0,0 +1 @@
default

1093
init.lua Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_bee.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

7646
models/mobs_bee.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_cow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

7420
models/mobs_cow.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_deer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

7095
models/mobs_deer2.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_horse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

5739
models/mobs_horse.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_horseara.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

BIN
models/mobs_horsearah1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

BIN
models/mobs_horseh1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

5821
models/mobs_horseh1.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_horsepeg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

BIN
models/mobs_horsepegh1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
models/mobs_jeraf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

5295
models/mobs_jeraf.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_medved.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 B

6760
models/mobs_medved.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_pumba.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

5316
models/mobs_pumba.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_rat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

700
models/mobs_rat.x Normal file
View File

@ -0,0 +1,700 @@
xof 0303txt 0032
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000,
0.000000, 1.000000,-0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame Cube_004 {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000,
0.000000, 0.000000,-0.000000, 1.000000;;
}
Mesh { //Cube_005 Mesh
176;
0.336296; 1.101631; 1.340231;,
1.524099; 1.101631; 1.348138;,
1.516191; 1.101631; 2.535941;,
0.328389; 1.101631; 2.528034;,
0.328389; 1.101631; 2.528034;,
0.336296; 1.101631; 1.340231;,
0.336296; 1.101631; 1.340231;,
0.328389; 1.101631; 2.528034;,
1.524099; 1.101631; 1.348138;,
1.516191; 1.101631; 2.535941;,
1.516191; 1.101631; 2.535941;,
1.524099; 1.101631; 1.348138;,
1.516191; 1.101631; 2.535941;,
0.328389; 1.101631; 2.528034;,
0.328389; 1.101631; 2.528034;,
1.516191; 1.101631; 2.535941;,
0.336296; 1.101631; 1.340231;,
1.524099; 1.101631; 1.348138;,
1.524099; 1.101631; 1.348138;,
0.336296; 1.101631; 1.340231;,
-1.564649; 0.817637; 1.334045;,
-1.564649; 1.101631; 1.334045;,
-1.596119; 1.101631; 2.521457;,
-1.596119; 0.817637; 2.521457;,
-1.564649; 1.101631; 1.334045;,
-0.377237; 1.101631; 1.365515;,
-0.408707; 1.101631; 2.552927;,
-1.596119; 1.101631; 2.521457;,
-0.377237; 1.101631; 1.365515;,
-0.377237; 0.817638; 1.365515;,
-0.408707; 0.817638; 2.552928;,
-0.408707; 1.101631; 2.552927;,
-0.377237; 0.817638; 1.365515;,
-1.564649; 0.817637; 1.334045;,
-1.596119; 0.817637; 2.521457;,
-0.408707; 0.817638; 2.552928;,
-0.377237; 0.817638; 1.365515;,
-0.377237; 1.101631; 1.365515;,
-1.564649; 1.101631; 1.334045;,
-1.564649; 0.817637; 1.334045;,
-1.596119; 0.817637; 2.521457;,
-1.596119; 1.101631; 2.521457;,
-0.408707; 1.101631; 2.552927;,
-0.408707; 0.817638; 2.552928;,
0.336296; 0.817638; 1.340231;,
0.336296; 1.101631; 1.340231;,
0.328389; 1.101631; 2.528034;,
0.328389; 0.817638; 2.528034;,
1.524099; 1.101631; 1.348138;,
1.524099; 0.817637; 1.348139;,
1.516192; 0.817637; 2.535942;,
1.516191; 1.101631; 2.535941;,
1.524099; 0.817637; 1.348139;,
0.336296; 0.817638; 1.340231;,
0.328389; 0.817638; 2.528034;,
1.516192; 0.817637; 2.535942;,
1.524099; 0.817637; 1.348139;,
1.524099; 1.101631; 1.348138;,
0.336296; 1.101631; 1.340231;,
0.336296; 0.817638; 1.340231;,
0.328389; 0.817638; 2.528034;,
0.328389; 1.101631; 2.528034;,
1.516191; 1.101631; 2.535941;,
1.516192; 0.817637; 2.535942;,
-0.117394;-5.732621; 0.182654;,
-0.186090;-2.477838; 0.265415;,
-0.186090;-2.477838; 0.668304;,
-0.117394;-5.732621; 0.448150;,
-0.186090;-2.477838; 0.265415;,
0.216799;-2.477838; 0.265415;,
0.216799;-2.477838; 0.668304;,
-0.186090;-2.477838; 0.668304;,
0.216799;-2.477838; 0.265415;,
0.148102;-5.732621; 0.182654;,
0.148102;-5.732621; 0.448150;,
0.216799;-2.477838; 0.668304;,
0.148102;-5.732621; 0.182654;,
-0.117394;-5.732621; 0.182654;,
-0.117394;-5.732621; 0.448150;,
0.148102;-5.732621; 0.448150;,
0.148102;-5.732621; 0.182654;,
0.216799;-2.477838; 0.265415;,
-0.186090;-2.477838; 0.265415;,
-0.117394;-5.732621; 0.182654;,
-0.117394;-5.732621; 0.448150;,
-0.186090;-2.477838; 0.668304;,
0.216799;-2.477838; 0.668304;,
0.148102;-5.732621; 0.448150;,
-0.933130;-2.573576; 0.130200;,
-0.933130; 0.667430; 0.130200;,
-0.933130; 0.667430; 2.038438;,
-0.933130;-2.573576; 2.038438;,
-0.933130; 0.667430; 0.130200;,
0.963839; 0.667430; 0.130200;,
0.963839; 0.667430; 2.038438;,
-0.933130; 0.667430; 2.038438;,
0.963839; 0.667430; 0.130200;,
0.963839;-2.573576; 0.130200;,
0.963839;-2.573576; 2.038438;,
0.963839; 0.667430; 2.038438;,
0.963839;-2.573576; 0.130200;,
-0.933130;-2.573576; 0.130200;,
-0.933130;-2.573576; 2.038438;,
0.963839;-2.573576; 2.038438;,
0.963839;-2.573576; 0.130200;,
0.963839; 0.667430; 0.130200;,
-0.933130; 0.667430; 0.130200;,
-0.933130;-2.573576; 0.130200;,
-0.933130;-2.573576; 2.038438;,
-0.933130; 0.667430; 2.038438;,
0.963839; 0.667430; 2.038438;,
0.963839;-2.573576; 2.038438;,
-0.694354; 0.619175; 0.175005;,
-0.469990; 2.744857; 0.240792;,
-0.469990; 2.744857; 1.874725;,
-0.694354; 0.619175; 1.814122;,
0.015354; 2.744857; 0.240792;,
0.500698; 2.744857; 0.240792;,
0.500698; 2.744857; 1.874725;,
0.015354; 2.744857; 1.874725;,
0.500698; 2.744857; 0.240792;,
0.725062; 0.619175; 0.175005;,
0.725062; 0.619175; 1.814122;,
0.500698; 2.744857; 1.874725;,
0.015354; 0.619175; 0.175005;,
-0.694354; 0.619175; 0.175005;,
-0.694354; 0.619175; 1.814122;,
0.015354; 0.619175; 1.814122;,
0.725062; 0.619175; 0.175005;,
0.500698; 2.744857; 0.240792;,
0.015354; 2.744857; 0.240792;,
0.015354; 0.619175; 0.175005;,
-0.694354; 0.619175; 1.814122;,
-0.469990; 2.744857; 1.874725;,
0.015354; 2.744857; 1.874725;,
0.015354; 0.619175; 1.814122;,
-0.281961; 2.574486; 0.745273;,
-0.281961; 3.169116; 0.745273;,
-0.281961; 3.169116; 1.339903;,
-0.281961; 2.574486; 1.339903;,
-0.281961; 3.169116; 0.745273;,
0.312669; 3.169116; 0.745273;,
0.312669; 3.169116; 1.339903;,
-0.281961; 3.169116; 1.339903;,
0.312669; 3.169116; 0.745273;,
0.312669; 2.574486; 0.745273;,
0.312669; 2.574486; 1.339903;,
0.312669; 3.169116; 1.339903;,
0.312669; 2.574486; 0.745273;,
-0.281961; 2.574486; 0.745273;,
-0.281961; 2.574486; 1.339903;,
0.312669; 2.574486; 1.339903;,
0.312669; 2.574486; 0.745273;,
0.312669; 3.169116; 0.745273;,
-0.281961; 3.169116; 0.745273;,
-0.281961; 2.574486; 0.745273;,
-0.281961; 2.574486; 1.339903;,
-0.281961; 3.169116; 1.339903;,
0.312669; 3.169116; 1.339903;,
0.312669; 2.574486; 1.339903;,
-0.469990; 2.744857; 0.240792;,
0.015354; 2.744857; 0.240792;,
0.015354; 2.744857; 1.874725;,
-0.469990; 2.744857; 1.874725;,
0.725062; 0.619175; 0.175005;,
0.015354; 0.619175; 0.175005;,
0.015354; 0.619175; 1.814122;,
0.725062; 0.619175; 1.814122;,
0.015354; 0.619175; 0.175005;,
0.015354; 2.744857; 0.240792;,
-0.469990; 2.744857; 0.240792;,
-0.694354; 0.619175; 0.175005;,
0.015354; 0.619175; 1.814122;,
0.015354; 2.744857; 1.874725;,
0.500698; 2.744857; 1.874725;,
0.725062; 0.619175; 1.814122;;
44;
4;0;1;2;3;,
4;4;5;6;7;,
4;8;9;10;11;,
4;12;13;14;15;,
4;16;17;18;19;,
4;20;21;22;23;,
4;24;25;26;27;,
4;28;29;30;31;,
4;32;33;34;35;,
4;36;37;38;39;,
4;40;41;42;43;,
4;44;45;46;47;,
4;48;49;50;51;,
4;52;53;54;55;,
4;56;57;58;59;,
4;60;61;62;63;,
4;64;65;66;67;,
4;68;69;70;71;,
4;72;73;74;75;,
4;76;77;78;79;,
4;80;81;82;83;,
4;84;85;86;87;,
4;88;89;90;91;,
4;92;93;94;95;,
4;96;97;98;99;,
4;100;101;102;103;,
4;104;105;106;107;,
4;108;109;110;111;,
4;112;113;114;115;,
4;116;117;118;119;,
4;120;121;122;123;,
4;124;125;126;127;,
4;128;129;130;131;,
4;132;133;134;135;,
4;136;137;138;139;,
4;140;141;142;143;,
4;144;145;146;147;,
4;148;149;150;151;,
4;152;153;154;155;,
4;156;157;158;159;,
4;160;161;162;163;,
4;164;165;166;167;,
4;168;169;170;171;,
4;172;173;174;175;;
MeshNormals { //Cube_005 Normals
176;
0.000000; 1.000000; 0.000000;,
0.000000; 1.000000; 0.000000;,
0.000000; 1.000000; 0.000000;,
0.000000; 1.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
0.000000; 0.000000; 0.000000;,
-0.999649; 0.000000;-0.026494;,
-0.999649; 0.000000;-0.026494;,
-0.999649; 0.000000;-0.026494;,
-0.999649; 0.000000;-0.026494;,
-0.000000; 1.000000; 0.000000;,
-0.000000; 1.000000; 0.000000;,
-0.000000; 1.000000; 0.000000;,
-0.000000; 1.000000; 0.000000;,
0.999649; 0.000001; 0.026494;,
0.999649; 0.000001; 0.026494;,
0.999649; 0.000001; 0.026494;,
0.999649; 0.000001; 0.026494;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.026494; 0.000000;-0.999649;,
0.026494; 0.000000;-0.999649;,
0.026494; 0.000000;-0.999649;,
0.026494; 0.000000;-0.999649;,
-0.026494; 0.000000; 0.999649;,
-0.026494; 0.000000; 0.999649;,
-0.026494; 0.000000; 0.999649;,
-0.026494; 0.000000; 0.999649;,
-0.999978;-0.000000;-0.006657;,
-0.999978;-0.000000;-0.006657;,
-0.999978;-0.000000;-0.006657;,
-0.999978;-0.000000;-0.006657;,
0.999978; 0.000001; 0.006657;,
0.999978; 0.000001; 0.006657;,
0.999978; 0.000001; 0.006657;,
0.999978; 0.000001; 0.006657;,
-0.000000;-1.000000;-0.000000;,
-0.000000;-1.000000;-0.000000;,
-0.000000;-1.000000;-0.000000;,
-0.000000;-1.000000;-0.000000;,
0.006657; 0.000000;-0.999978;,
0.006657; 0.000000;-0.999978;,
0.006657; 0.000000;-0.999978;,
0.006657; 0.000000;-0.999978;,
-0.006657; 0.000000; 0.999978;,
-0.006657; 0.000000; 0.999978;,
-0.006657; 0.000000; 0.999978;,
-0.006657; 0.000000; 0.999978;,
-0.999777;-0.021102; 0.000000;,
-0.999777;-0.021102; 0.000000;,
-0.999777;-0.021102; 0.000000;,
-0.999777;-0.021102; 0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.999777;-0.021102; 0.000000;,
0.999777;-0.021102; 0.000000;,
0.999777;-0.021102; 0.000000;,
0.999777;-0.021102; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000; 0.025419;-0.999677;,
0.000000; 0.025419;-0.999677;,
0.000000; 0.025419;-0.999677;,
0.000000; 0.025419;-0.999677;,
0.000000;-0.067486; 0.997720;,
0.000000;-0.067486; 0.997720;,
0.000000;-0.067486; 0.997720;,
0.000000;-0.067486; 0.997720;,
-1.000000; 0.000000; 0.000000;,
-1.000000; 0.000000; 0.000000;,
-1.000000; 0.000000; 0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000; 1.000000;,
-0.000000; 0.000000; 1.000000;,
-0.000000; 0.000000; 1.000000;,
-0.000000; 0.000000; 1.000000;,
-0.994476; 0.104966; 0.000000;,
-0.994476; 0.104966; 0.000000;,
-0.994476; 0.104966; 0.000000;,
-0.994476; 0.104966; 0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.994476; 0.104966; 0.000000;,
0.994476; 0.104966; 0.000000;,
0.994476; 0.104966; 0.000000;,
0.994476; 0.104966; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000; 0.030934;-0.999521;,
0.000000; 0.030934;-0.999521;,
0.000000; 0.030934;-0.999521;,
0.000000; 0.030934;-0.999521;,
0.000000;-0.028498; 0.999594;,
0.000000;-0.028498; 0.999594;,
0.000000;-0.028498; 0.999594;,
0.000000;-0.028498; 0.999594;,
-1.000000; 0.000000; 0.000000;,
-1.000000; 0.000000; 0.000000;,
-1.000000; 0.000000; 0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
1.000000; 0.000000;-0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000; 1.000000;,
-0.000000; 0.000000; 1.000000;,
-0.000000; 0.000000; 1.000000;,
-0.000000; 0.000000; 1.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000; 0.030934;-0.999521;,
0.000000; 0.030934;-0.999521;,
0.000000; 0.030934;-0.999521;,
0.000000; 0.030934;-0.999521;,
0.000000;-0.028498; 0.999594;,
0.000000;-0.028498; 0.999594;,
0.000000;-0.028498; 0.999594;,
0.000000;-0.028498; 0.999594;;
44;
4;0;1;2;3;,
4;4;5;6;7;,
4;8;9;10;11;,
4;12;13;14;15;,
4;16;17;18;19;,
4;20;21;22;23;,
4;24;25;26;27;,
4;28;29;30;31;,
4;32;33;34;35;,
4;36;37;38;39;,
4;40;41;42;43;,
4;44;45;46;47;,
4;48;49;50;51;,
4;52;53;54;55;,
4;56;57;58;59;,
4;60;61;62;63;,
4;64;65;66;67;,
4;68;69;70;71;,
4;72;73;74;75;,
4;76;77;78;79;,
4;80;81;82;83;,
4;84;85;86;87;,
4;88;89;90;91;,
4;92;93;94;95;,
4;96;97;98;99;,
4;100;101;102;103;,
4;104;105;106;107;,
4;108;109;110;111;,
4;112;113;114;115;,
4;116;117;118;119;,
4;120;121;122;123;,
4;124;125;126;127;,
4;128;129;130;131;,
4;132;133;134;135;,
4;136;137;138;139;,
4;140;141;142;143;,
4;144;145;146;147;,
4;148;149;150;151;,
4;152;153;154;155;,
4;156;157;158;159;,
4;160;161;162;163;,
4;164;165;166;167;,
4;168;169;170;171;,
4;172;173;174;175;;
} //End of Cube_005 Normals
MeshMaterialList { //Cube_005 Material List
1;
44;
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0;;
Material Material_001 {
0.640000; 0.640000; 0.640000; 1.000000;;
96.078431;
0.500000; 0.500000; 0.500000;;
0.000000; 0.000000; 0.000000;;
TextureFilename {"UV_rat.png";}
}
} //End of Cube_005 Material List
MeshTextureCoords { //Cube_005 UV Coordinates
176;
0.635817; 0.275819;,
0.635817; 0.046728;,
0.864908; 0.046728;,
0.864908; 0.275819;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.864346; 0.986031;,
0.783570; 0.986031;,
0.783570; 0.648180;,
0.864346; 0.648180;,
0.635817; 0.274669;,
0.635817; 0.045578;,
0.864908; 0.045578;,
0.864908; 0.274669;,
0.863901; 0.987104;,
0.783126; 0.987104;,
0.783126; 0.649254;,
0.863901; 0.649254;,
0.991231; 0.987104;,
0.653381; 0.987104;,
0.653381; 0.649254;,
0.991232; 0.649254;,
0.991232; 0.777658;,
0.991232; 0.858433;,
0.653381; 0.858433;,
0.653381; 0.777658;,
0.655529; 0.859063;,
0.655529; 0.778288;,
0.993379; 0.778288;,
0.993379; 0.859063;,
0.335443; 0.861158;,
0.265926; 0.861158;,
0.265926; 0.570397;,
0.335443; 0.570397;,
0.334205; 0.859816;,
0.264688; 0.859816;,
0.264688; 0.569055;,
0.334205; 0.569055;,
0.444367; 0.858474;,
0.153606; 0.858474;,
0.153606; 0.567713;,
0.444367; 0.567713;,
0.333996; 0.859816;,
0.264479; 0.859816;,
0.264479; 0.569055;,
0.333996; 0.569055;,
0.264228; 0.568595;,
0.333745; 0.568595;,
0.333745; 0.859357;,
0.264228; 0.859357;,
0.910309; 0.067094;,
0.990888; 0.067068;,
0.991634; 0.077574;,
0.911094; 0.077574;,
0.910309; 0.024149;,
0.921538; 0.024149;,
0.921538; 0.035379;,
0.910309; 0.035379;,
0.990708; 0.067037;,
0.910309; 0.067041;,
0.910896; 0.056534;,
0.991418; 0.056534;,
0.928966; 0.035379;,
0.921565; 0.035379;,
0.921565; 0.027979;,
0.928966; 0.027979;,
0.910595; 0.035408;,
0.990869; 0.035406;,
0.990583; 0.045937;,
0.910309; 0.045939;,
0.910597; 0.045966;,
0.990951; 0.045966;,
0.990662; 0.056507;,
0.910309; 0.056507;,
0.461795; 0.725720;,
0.002369; 0.725720;,
0.002369; 0.455219;,
0.461795; 0.455219;,
0.728915; 0.630399;,
0.460011; 0.630399;,
0.460011; 0.359898;,
0.728915; 0.359898;,
0.459622; 0.999805;,
0.000195; 0.999805;,
0.000195; 0.729304;,
0.459622; 0.729304;,
0.990155; 1.001469;,
0.721251; 1.001469;,
0.721251; 0.730968;,
0.990155; 0.730968;,
0.000987; 0.351616;,
0.460413; 0.351616;,
0.460413; 0.620520;,
0.000987; 0.620520;,
0.728915; 0.540378;,
0.728915; 0.999805;,
0.460011; 0.999805;,
0.460011; 0.540378;,
0.006594; 0.353635;,
0.507556; 0.369053;,
0.507556; 0.596553;,
0.006594; 0.737794;,
0.752538; 0.533913;,
0.752538; 0.647662;,
0.525038; 0.647662;,
0.525038; 0.533913;,
0.509703; 0.731028;,
0.008741; 0.746446;,
0.008741; 0.362287;,
0.509703; 0.503529;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.003201; 0.349292;,
0.501634; 0.401876;,
0.501634; 0.515626;,
0.003201; 0.515626;,
0.529333; 0.186216;,
0.171158; 0.150188;,
0.171083; 0.071516;,
0.529224; 0.071176;,
0.636995; 0.428681;,
0.636995; 0.545208;,
0.520468; 0.545208;,
0.520468; 0.428681;,
0.340480; 0.361873;,
0.452832; 0.361873;,
0.452832; 0.474224;,
0.340480; 0.474224;,
0.453577; 0.475130;,
0.341226; 0.475130;,
0.341226; 0.362779;,
0.453577; 0.362779;,
0.453737; 0.472732;,
0.341386; 0.472732;,
0.341386; 0.360381;,
0.453737; 0.360381;,
0.454483; 0.362033;,
0.454483; 0.474384;,
0.342132; 0.474384;,
0.342132; 0.362033;,
0.342132; 0.472732;,
0.342132; 0.360381;,
0.454483; 0.360381;,
0.454483; 0.472732;,
0.752538; 0.420163;,
0.752538; 0.533913;,
0.525038; 0.533913;,
0.525038; 0.420163;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.000000; 1.000000;,
0.003201; 0.515626;,
0.501634; 0.515626;,
0.501634; 0.629375;,
0.003201; 0.681959;,
0.529223; 0.070318;,
0.171082; 0.070658;,
0.171157; 0.149330;,
0.529332; 0.185358;;
} //End of Cube_005 UV Coordinates
} //End of Cube_005 Mesh
} //End of Cube_004
} //End of Root Frame

BIN
models/mobs_sheep.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

7170
models/mobs_sheep.x Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

4592
models/mobs_sheep_shaved.x Normal file

File diff suppressed because it is too large Load Diff

BIN
models/mobs_wolf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

7420
models/mobs_wolf.x Normal file

File diff suppressed because it is too large Load Diff

BIN
sounds/cow.ogg Normal file

Binary file not shown.

BIN
sounds/mobs_sheep.ogg Normal file

Binary file not shown.

BIN
textures/bucket_milk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

BIN
textures/mobs_meat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

BIN
textures/mobs_meat_raw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

BIN
textures/mobs_sheep_old.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

BIN
textures/uley.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B