commit 1d98e11a392734163def171c8282e28b83ea9b37 Author: xiug Date: Sun Aug 25 13:49:10 2013 +0000 Minetest soccer games diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..ebac2db --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,25 @@ + +Copyright (c) 2013, Diego Martínez +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..4a79cb0 --- /dev/null +++ b/README.txt @@ -0,0 +1,15 @@ +Modifié par Xiug +Modifié pour le serveur Steinheim ++ rapide ++ loin ++ fort ++ couleur +Mod apartenant à Diego Martínez + +Edited by Xiug +Modified to Steinheim server ++ Quick ++ far ++ Strong ++ color +Mod created by Diego Martínez diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..470ec30 --- /dev/null +++ b/depends.txt @@ -0,0 +1,2 @@ +default +wool diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..7c96294 --- /dev/null +++ b/init.lua @@ -0,0 +1,671 @@ + + +local BALL_PUSH_CHECK_INTERVAL = 0.1 + +minetest.register_entity("soccer:ball", { + physical = true, + visual = "mesh", + mesh = "soccer_ball.x", + hp_max = 1000, + groups = { immortal = true }, + textures = { "soccer_ball.png" }, + collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 }, + on_step = function(self, dtime) + self.timer = self.timer + dtime + if self.timer >= BALL_PUSH_CHECK_INTERVAL then + self.object:setacceleration({x=0, y=-10, z=0}) + self.timer = 0 + local vel = self.object:getvelocity() + local p = self.object:getpos(); + p.y = p.y - 0.5 + if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then + vel.x = vel.x * 0.85 + if vel.y < 0 then vel.y = vel.y * -0.65 end + vel.z = vel.z * 0.90 + end + if (math.abs(vel.x) < 0.1) + and (math.abs(vel.z) < 0.1) then + vel.x = 0 + vel.z = 0 + end + self.object:setvelocity(vel) + local pos = self.object:getpos() + local objs = minetest.env:get_objects_inside_radius(pos, 1) + local player_count = 0 + local final_dir = { x=0, y=0, z=0 } + for _,obj in ipairs(objs) do + if obj:is_player() then + local objdir = obj:get_look_dir() + local mul = 1 + if (obj:get_player_control().sneak) then + mul = 3 + end + final_dir.x = final_dir.x + (objdir.x * mul) + final_dir.y = final_dir.y + (objdir.y * mul) + final_dir.z = final_dir.z + (objdir.z * mul) + player_count = player_count + 1 + end + end + if final_dir.x ~= 0 or final_dir.y ~= 0 or final_dir.z ~= 0 then + final_dir.x = (final_dir.x * 5) / player_count + final_dir.y = (final_dir.y * 5) / player_count + final_dir.z = (final_dir.z * 5) / player_count + self.object:setvelocity(final_dir) + end + end + end, + on_punch = function(self, puncher) + if puncher and puncher:is_player() then + local inv = puncher:get_inventory() + inv:add_item("main", ItemStack("soccer:ball_item")) + self.object:remove() + end + end, + is_moving = function(self) + local v = self.object:getvelocity() + if (math.abs(v.x) <= 0.1) + and (math.abs(v.z) <= 0.1) then + v.x = 0 + v.z = 0 + self.object:setvelocity(v) + return false + end + return true + end, + timer = 0, +}) + +minetest.register_craftitem("soccer:ball_item", { + description = "Soccer Ball", + inventory_image = "soccer_ball_inv.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + --pos = { x=pos.x+0.5, y=pos.y, z=pos.z+0.5 } + local ent = minetest.env:add_entity(pos, "soccer:ball") + ent:setvelocity({x=0, y=-15, z=0}) + itemstack:take_item() + return itemstack + end, +}) + +minetest.register_node("soccer:goal", { + description = "Soccer Goal", + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + tiles = { "soccer_white.png" }, + sunlight_propagates = true, + groups = { snappy=1, cracky=1, fleshy=1, oddly_breakable_by_hand=1 }, + node_box = { + type = "fixed", + fixed = { + { -2.5, -0.5, -0.1, -2.3, 1.5, 0.1 }, + { 2.3, -0.5, -0.1, 2.5, 1.5, 0.1 }, + { -2.5, 1.5, -0.1, 2.5, 1.7, 0.1 }, + }, + }, +}) + +local nb_decal = { + type = "fixed", + fixed = {{ -0.5, -0.5, -0.5, 0.5, -0.499, 0.5 }}, +}, + +minetest.register_node("soccer:goal_mark", { + description = "Soccer Goal Mark", + drawtype = "nodebox", + paramtype = "light", + node_box = nb_decal, + walkable = false, + inventory_image = "soccer_goal_mark.png", + tiles = { "soccer_goal_mark.png" }, + sunlight_propagates = true, + groups = { snappy=1, cracky=1, fleshy=1, oddly_breakable_by_hand=1 }, +}) + +local function reg_decal(name, desc) + texture = "soccer_"..name..".png" + minetest.register_node("soccer:"..name, { + description = desc, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = nb_decal, + walkable = false, + inventory_image = texture, + wield_image = texture, + tiles = { texture }, + sunlight_propagates = true, + groups = { snappy=1, cracky=1, fleshy=1, oddly_breakable_by_hand=1 }, + }) +end + +reg_decal("line_i", "Straight Line") +reg_decal("line_l", "L line") +reg_decal("line_t", "T Line") +reg_decal("line_p", "+ Line") +reg_decal("line_d", "Diagonal Line") +reg_decal("line_point", "Point") +reg_decal("line_corner", "Corner") + +minetest.register_craft({ + output = "soccer:ball_item", + recipe = { + { "", "wool:white", "" }, + { "wool:white", "default:coal_lump", "wool:white" }, + { "", "wool:white", "" }, + }, +}) + +minetest.register_alias("ball", "soccer:ball_item") + + +-- Green + +local GREEN_BALL_PUSH_CHECK_INTERVAL = 0.2 + +minetest.register_entity("soccer:green_ball", { + physical = true, + visual = "mesh", + mesh = "soccer_ball.x", + hp_max = 1000, + groups = { immortal = true }, + textures = { "green_soccer_ball.png" }, + collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 }, + on_step = function(self, dtime) + self.timer = self.timer + dtime + if self.timer >= GREEN_BALL_PUSH_CHECK_INTERVAL then + self.object:setacceleration({x=0, y=-math.random(0,150), z=0}) + self.timer = 0 + local vel = self.object:getvelocity() + local p = self.object:getpos(); + p.y = p.y - 0.5 + if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then + vel.x = vel.x * math.random(0,2) + if vel.y < 0 then vel.y = vel.y * -0.1 end + vel.z = vel.z * math.random(0,2) + end + if (math.abs(vel.x) < 0.9) + and (math.abs(vel.z) < 0.9) then + vel.x = 0 + vel.z = 0 + end + self.object:setvelocity(vel) + local pos = self.object:getpos() + local objs = minetest.env:get_objects_inside_radius(pos, 1) + local player_count = 0 + local final_dir = { x=0, y=0, z=0 } + for _,obj in ipairs(objs) do + if obj:is_player() then + local objdir = obj:get_look_dir() + local mul = 1 + if (obj:get_player_control().sneak) then + mul = 3 + end + final_dir.x = final_dir.x + (objdir.x * mul) + final_dir.y = final_dir.y + (objdir.y * mul) + final_dir.z = final_dir.z + (objdir.z * mul) + player_count = player_count + 1 + end + end + if final_dir.x ~= 0 or final_dir.y ~= 0 or final_dir.z ~= 0 then + final_dir.x = (final_dir.x * 5) / player_count + final_dir.y = (final_dir.y * 5) / player_count + final_dir.z = (final_dir.z * 5) / player_count + self.object:setvelocity(final_dir) + end + end + end, + on_punch = function(self, puncher) + if puncher and puncher:is_player() then + local inv = puncher:get_inventory() + inv:add_item("main", ItemStack("soccer:green_ball_item")) + self.object:remove() + end + end, + is_moving = function(self) + local v = self.object:getvelocity() + if (math.abs(v.x) <= 0.5) + and (math.abs(v.z) <= 0.5) then + v.x = 0 + v.z = 0 + self.object:setvelocity(v) + return false + end + return true + end, + timer = 0, +}) + +minetest.register_craftitem("soccer:green_ball_item", { + description = "WTF Green Soccer Ball", + inventory_image = "green_soccer_ball_inv.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + --pos = { x=pos.x+0.5, y=pos.y, z=pos.z+0.5 } + local ent = minetest.env:add_entity(pos, "soccer:green_ball") + ent:setvelocity({x=0, y=-math.random(0,50), z=0}) + itemstack:take_item() + return itemstack + end, +}) + +minetest.register_craft({ + output = "soccer:green_ball_item", + recipe = { + { "", "wool:green", "" }, + { "wool:green", "default:coal_lump", "wool:green" }, + { "", "wool:green", "" }, + }, +}) + +minetest.register_alias("ball", "soccer:green_ball_item") + + +-- Red + +local RED_BALL_PUSH_CHECK_INTERVAL = 0.1 + +minetest.register_entity("soccer:red_ball", { + physical = true, + visual = "mesh", + mesh = "soccer_ball.x", + hp_max = 1000, + groups = { immortal = true }, + textures = { "red_soccer_ball.png" }, + collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 }, + on_step = function(self, dtime) + self.timer = self.timer + dtime + if self.timer >= RED_BALL_PUSH_CHECK_INTERVAL then + self.object:setacceleration({x=0, y=-200, z=0}) + self.timer = 0 + local vel = self.object:getvelocity() + local p = self.object:getpos(); + p.y = p.y - 0.55 + if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then + vel.x = vel.x * 2 + if vel.y < 0 then vel.y = vel.y * -0.50 end + vel.z = vel.z * 2 + end + if (math.abs(vel.x) < 0.8) + and (math.abs(vel.z) < 0.8) then + vel.x = 0 + vel.z = 0 + end + self.object:setvelocity(vel) + local pos = self.object:getpos() + local objs = minetest.env:get_objects_inside_radius(pos, 1) + local player_count = 0 + local final_dir = { x=0, y=0, z=0 } + for _,obj in ipairs(objs) do + if obj:is_player() then + local objdir = obj:get_look_dir() + local mul = 1 + if (obj:get_player_control().sneak) then + mul = 3 + end + final_dir.x = final_dir.x + (objdir.x * mul) + final_dir.y = final_dir.y + (objdir.y * mul) + final_dir.z = final_dir.z + (objdir.z * mul) + player_count = player_count + 1 + end + end + if final_dir.x ~= 0 or final_dir.y ~= 0 or final_dir.z ~= 0 then + final_dir.x = (final_dir.x * 5) / player_count + final_dir.y = (final_dir.y * 5) / player_count + final_dir.z = (final_dir.z * 5) / player_count + self.object:setvelocity(final_dir) + end + end + end, + on_punch = function(self, puncher) + if puncher and puncher:is_player() then + local inv = puncher:get_inventory() + inv:add_item("main", ItemStack("soccer:red_ball_item")) + self.object:remove() + end + end, + is_moving = function(self) + local v = self.object:getvelocity() + if (math.abs(v.x) <= 0.35) + and (math.abs(v.z) <= 0.35) then + v.x = 0 + v.z = 0 + self.object:setvelocity(v) + return false + end + return true + end, + timer = 0, +}) + +minetest.register_craftitem("soccer:red_ball_item", { + description = "Powerade Red Soccer Ball", + inventory_image = "red_soccer_ball_inv.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + --pos = { x=pos.x+0.5, y=pos.y, z=pos.z+0.5 } + local ent = minetest.env:add_entity(pos, "soccer:red_ball") + ent:setvelocity({x=0, y=-math.random(0,50), z=0}) + itemstack:take_item() + return itemstack + end, +}) + +minetest.register_craft({ + output = "soccer:red_ball_item", + recipe = { + { "", "wool:red", "" }, + { "wool:red", "default:coal_lump", "wool:red" }, + { "", "wool:red", "" }, + }, +}) + +minetest.register_alias("ball", "soccer:red_ball_item") + +-- Blue + +local BLUE_BALL_PUSH_CHECK_INTERVAL = 0.3 + +minetest.register_entity("soccer:blue_ball", { + physical = true, + visual = "mesh", + mesh = "soccer_ball.x", + hp_max = 1000, + groups = { immortal = true }, + textures = { "blue_soccer_ball.png" }, + collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 }, + on_step = function(self, dtime) + self.timer = self.timer + dtime + if self.timer >= BLUE_BALL_PUSH_CHECK_INTERVAL then + self.object:setacceleration({x=0.2, y=-90, z=0.1}) + self.timer = 0 + local vel = self.object:getvelocity() + local p = self.object:getpos(); + p.y = p.y - 0.55 + if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then + vel.x = vel.x * 0.90 + if vel.y < 0 then vel.y = vel.y * -0.60 end + vel.z = vel.z * 0.90 + end + if (math.abs(vel.x) < 0.8) + and (math.abs(vel.z) < 0.8) then + vel.x = 0 + vel.z = 0 + end + self.object:setvelocity(vel) + local pos = self.object:getpos() + local objs = minetest.env:get_objects_inside_radius(pos, 1) + local player_count = 0 + local final_dir = { x=0, y=0, z=0 } + for _,obj in ipairs(objs) do + if obj:is_player() then + local objdir = obj:get_look_dir() + local mul = 1 + if (obj:get_player_control().sneak) then + mul = 3 + end + final_dir.x = final_dir.x + (objdir.x * mul) + final_dir.y = final_dir.y + (objdir.y * mul) + final_dir.z = final_dir.z + (objdir.z * mul) + player_count = player_count + 1 + end + end + if final_dir.x ~= 0 or final_dir.y ~= 0 or final_dir.z ~= 0 then + final_dir.x = (final_dir.x * 5) / player_count + final_dir.y = (final_dir.y * 5) / player_count + final_dir.z = (final_dir.z * 5) / player_count + self.object:setvelocity(final_dir) + end + end + end, + on_punch = function(self, puncher) + if puncher and puncher:is_player() then + local inv = puncher:get_inventory() + inv:add_item("main", ItemStack("soccer:blue_ball_item")) + self.object:remove() + end + end, + is_moving = function(self) + local v = self.object:getvelocity() + if (math.abs(v.x) <= 0.35) + and (math.abs(v.z) <= 0.35) then + v.x = 0 + v.z = 0 + self.object:setvelocity(v) + return false + end + return true + end, + timer = 0, +}) + +minetest.register_craftitem("soccer:blue_ball_item", { + description = "Ice Blue Soccer Ball", + inventory_image = "blue_soccer_ball_inv.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + --pos = { x=pos.x+0.5, y=pos.y, z=pos.z+0.5 } + local ent = minetest.env:add_entity(pos, "soccer:blue_ball") + ent:setvelocity({x=0.1, y=-5, z=0.2}) + itemstack:take_item() + return itemstack + end, +}) + +minetest.register_craft({ + output = "soccer:blue_ball_item", + recipe = { + { "", "wool:blue", "" }, + { "wool:blue", "default:coal_lump", "wool:blue" }, + { "", "wool:blue", "" }, + }, +}) + +minetest.register_alias("ball", "soccer:blue_ball_item") + +-- Yellow + +local YELLOW_BALL_PUSH_CHECK_INTERVAL = 0.5 + +minetest.register_entity("soccer:yellow_ball", { + physical = true, + visual = "mesh", + mesh = "soccer_ball.x", + hp_max = 1000, + groups = { immortal = true }, + textures = { "yellow_soccer_ball.png" }, + collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 }, + on_step = function(self, dtime) + self.timer = self.timer + dtime + if self.timer >= YELLOW_BALL_PUSH_CHECK_INTERVAL then + self.object:setacceleration({x=0.2, y=-90, z=0.1}) + self.timer = 0 + local vel = self.object:getvelocity() + local p = self.object:getpos(); + p.y = p.y - 0.55 + if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then + vel.x = vel.x * 2.5 + if vel.y < 2 then vel.y = vel.y * -0.55 end + vel.z = vel.z * 2.5 + end + if (math.abs(vel.x) < 0.8) + and (math.abs(vel.z) < 0.8) then + vel.x = 0 + vel.z = 0 + end + self.object:setvelocity(vel) + local pos = self.object:getpos() + local objs = minetest.env:get_objects_inside_radius(pos, 1) + local player_count = 0 + local final_dir = { x=0, y=0, z=0 } + for _,obj in ipairs(objs) do + if obj:is_player() then + local objdir = obj:get_look_dir() + local mul = 1 + if (obj:get_player_control().sneak) then + mul = 3 + end + final_dir.x = final_dir.x + (objdir.x * mul) + final_dir.y = final_dir.y + (objdir.y * mul) + final_dir.z = final_dir.z + (objdir.z * mul) + player_count = player_count + 1 + end + end + if final_dir.x ~= 0 or final_dir.y ~= 0 or final_dir.z ~= 0 then + final_dir.x = (final_dir.x * 5) / player_count + final_dir.y = (final_dir.y * 5) / player_count + final_dir.z = (final_dir.z * 5) / player_count + self.object:setvelocity(final_dir) + end + end + end, + on_punch = function(self, puncher) + if puncher and puncher:is_player() then + local inv = puncher:get_inventory() + inv:add_item("main", ItemStack("soccer:yellow_ball_item")) + self.object:remove() + end + end, + is_moving = function(self) + local v = self.object:getvelocity() + if (math.abs(v.x) <= 0.35) + and (math.abs(v.z) <= 0.35) then + v.x = 0 + v.z = 0 + self.object:setvelocity(v) + return false + end + return true + end, + timer = 0, +}) + +minetest.register_craftitem("soccer:yellow_ball_item", { + description = "Sun Yellow Soccer Ball", + inventory_image = "yellow_soccer_ball_inv.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + --pos = { x=pos.x+0.5, y=pos.y, z=pos.z+0.5 } + local ent = minetest.env:add_entity(pos, "soccer:yellow_ball") + ent:setvelocity({x=0.1, y=-5, z=0.2}) + itemstack:take_item() + return itemstack + end, +}) + +minetest.register_craft({ + output = "soccer:yellow_ball_item", + recipe = { + { "", "wool:yellow", "" }, + { "wool:yellow", "default:coal_lump", "wool:yellow" }, + { "", "wool:yellow", "" }, + }, +}) + +minetest.register_alias("ball", "soccer:yellow_ball_item") + + +-- Purple + +local PURPLE_BALL_PUSH_CHECK_INTERVAL = 0.1 + +minetest.register_entity("soccer:purple_ball", { + physical = true, + visual = "mesh", + mesh = "soccer_ball.x", + hp_max = 1000, + groups = { immortal = true }, + textures = { "purple_soccer_ball.png" }, + collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 }, + on_step = function(self, dtime) + self.timer = self.timer + dtime + if self.timer >= PURPLE_BALL_PUSH_CHECK_INTERVAL then + self.object:setacceleration({x=0, y=-20, z=0}) + self.timer = 0 + local vel = self.object:getvelocity() + local p = self.object:getpos(); + p.y = p.y - 1 + if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then + vel.x = vel.x * 0.90 + if vel.y < 0 then vel.y = vel.y * -0.60 end + vel.z = vel.z * 0.95 + end + if (math.abs(vel.x) < 0.2) + and (math.abs(vel.z) < 0.2) then + vel.x = 0 + vel.z = 0 + end + self.object:setvelocity(vel) + local pos = self.object:getpos() + local objs = minetest.env:get_objects_inside_radius(pos, 1) + local player_count = 0 + local final_dir = { x=0, y=0, z=0 } + for _,obj in ipairs(objs) do + if obj:is_player() then + local objdir = obj:get_look_dir() + local mul = 1 + if (obj:get_player_control().sneak) then + mul = 3 + end + final_dir.x = final_dir.x + (objdir.x * mul) + final_dir.y = final_dir.y + (objdir.y * mul) + final_dir.z = final_dir.z + (objdir.z * mul) + player_count = player_count + 1 + end + end + if final_dir.x ~= 0 or final_dir.y ~= 0 or final_dir.z ~= 0 then + final_dir.x = (final_dir.x * 5) / player_count + final_dir.y = (final_dir.y * 5) / player_count + final_dir.z = (final_dir.z * 5) / player_count + self.object:setvelocity(final_dir) + end + end + end, + on_punch = function(self, puncher) + if puncher and puncher:is_player() then + local inv = puncher:get_inventory() + inv:add_item("main", ItemStack("soccer:purple_ball_item")) + self.object:remove() + end + end, + is_moving = function(self) + local v = self.object:getvelocity() + if (math.abs(v.x) <= 0.3) + and (math.abs(v.z) <= 0.3) then + v.x = 0 + v.z = 0 + self.object:setvelocity(v) + return false + end + return true + end, + timer = 0, +}) + +minetest.register_craftitem("soccer:purple_ball_item", { + description = "Girl Purple Soccer Ball", + inventory_image = "purple_soccer_ball_inv.png", + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + --pos = { x=pos.x+0.5, y=pos.y, z=pos.z+0.5 } + local ent = minetest.env:add_entity(pos, "soccer:purple_ball") + ent:setvelocity({x=0, y=-45, z=0}) + itemstack:take_item() + return itemstack + end, +}) + + +minetest.register_craft({ + output = "soccer:purple_ball_item", + recipe = { + { "", "wool:magenta", "" }, + { "wool:violet", "default:coal_lump", "wool:violet" }, + { "", "wool:magenta", "" }, + }, +}) + +minetest.register_alias("ball", "soccer:purple_ball_item") + + diff --git a/models/soccer_ball.x b/models/soccer_ball.x new file mode 100644 index 0000000..5734fe4 --- /dev/null +++ b/models/soccer_ball.x @@ -0,0 +1,1000 @@ +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 Icosphere { + FrameTransformMatrix { + 1.999878, 0.000000, 0.000000, 0.000000, + 0.000000, 2.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 2.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { //Icosphere_001 Mesh + 240; + -0.162456;-0.499995;-0.850654;, + -0.276385;-0.850640;-0.447215;, + 0.262869;-0.809012;-0.525738;, + 0.262869;-0.809012;-0.525738;, + 0.425323;-0.309011;-0.850654;, + -0.162456;-0.499995;-0.850654;, + 0.425323;-0.309011;-0.850654;, + 0.262869;-0.809012;-0.525738;, + 0.723600;-0.525720;-0.447215;, + 0.425323;-0.309011;-0.850654;, + 0.000000; 0.000000;-1.000000;, + -0.162456;-0.499995;-0.850654;, + 0.425323;-0.309011;-0.850654;, + 0.723600;-0.525720;-0.447215;, + 0.850648; 0.000000;-0.525736;, + 0.850648; 0.000000;-0.525736;, + 0.425323; 0.309011;-0.850654;, + 0.425323;-0.309011;-0.850654;, + 0.425323; 0.309011;-0.850654;, + 0.850648; 0.000000;-0.525736;, + 0.723600; 0.525720;-0.447215;, + 0.425323; 0.309011;-0.850654;, + 0.000000; 0.000000;-1.000000;, + 0.425323;-0.309011;-0.850654;, + -0.525730; 0.000000;-0.850652;, + -0.894425; 0.000000;-0.447215;, + -0.688189;-0.499997;-0.525736;, + -0.688189;-0.499997;-0.525736;, + -0.162456;-0.499995;-0.850654;, + -0.525730; 0.000000;-0.850652;, + -0.162456;-0.499995;-0.850654;, + -0.688189;-0.499997;-0.525736;, + -0.276385;-0.850640;-0.447215;, + -0.162456;-0.499995;-0.850654;, + 0.000000; 0.000000;-1.000000;, + -0.525730; 0.000000;-0.850652;, + -0.162456; 0.499995;-0.850654;, + -0.276385; 0.850640;-0.447215;, + -0.688189; 0.499997;-0.525736;, + -0.688189; 0.499997;-0.525736;, + -0.525730; 0.000000;-0.850652;, + -0.162456; 0.499995;-0.850654;, + -0.525730; 0.000000;-0.850652;, + -0.688189; 0.499997;-0.525736;, + -0.894425; 0.000000;-0.447215;, + -0.525730; 0.000000;-0.850652;, + 0.000000; 0.000000;-1.000000;, + -0.162456; 0.499995;-0.850654;, + 0.425323; 0.309011;-0.850654;, + 0.723600; 0.525720;-0.447215;, + 0.262869; 0.809012;-0.525738;, + 0.262869; 0.809012;-0.525738;, + -0.162456; 0.499995;-0.850654;, + 0.425323; 0.309011;-0.850654;, + -0.162456; 0.499995;-0.850654;, + 0.262869; 0.809012;-0.525738;, + -0.276385; 0.850640;-0.447215;, + -0.162456; 0.499995;-0.850654;, + 0.000000; 0.000000;-1.000000;, + 0.425323; 0.309011;-0.850654;, + 0.850648; 0.000000;-0.525736;, + 0.723600;-0.525720;-0.447215;, + 0.951058;-0.309013; 0.000000;, + 0.951058;-0.309013; 0.000000;, + 0.951058; 0.309013; 0.000000;, + 0.850648; 0.000000;-0.525736;, + 0.951058; 0.309013; 0.000000;, + 0.951058;-0.309013; 0.000000;, + 0.894425; 0.000000; 0.447215;, + 0.723600; 0.525720;-0.447215;, + 0.850648; 0.000000;-0.525736;, + 0.951058; 0.309013; 0.000000;, + 0.262869;-0.809012;-0.525738;, + -0.276385;-0.850640;-0.447215;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.587786;-0.809017; 0.000000;, + 0.262869;-0.809012;-0.525738;, + 0.587786;-0.809017; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.276385;-0.850640; 0.447215;, + 0.723600;-0.525720;-0.447215;, + 0.262869;-0.809012;-0.525738;, + 0.587786;-0.809017; 0.000000;, + -0.688189;-0.499997;-0.525736;, + -0.894425; 0.000000;-0.447215;, + -0.951058;-0.309013; 0.000000;, + -0.951058;-0.309013; 0.000000;, + -0.587786;-0.809017; 0.000000;, + -0.688189;-0.499997;-0.525736;, + -0.587786;-0.809017; 0.000000;, + -0.951058;-0.309013; 0.000000;, + -0.723600;-0.525720; 0.447215;, + -0.276385;-0.850640;-0.447215;, + -0.688189;-0.499997;-0.525736;, + -0.587786;-0.809017; 0.000000;, + -0.688189; 0.499997;-0.525736;, + -0.276385; 0.850640;-0.447215;, + -0.587786; 0.809017; 0.000000;, + -0.587786; 0.809017; 0.000000;, + -0.951058; 0.309013; 0.000000;, + -0.688189; 0.499997;-0.525736;, + -0.951058; 0.309013; 0.000000;, + -0.587786; 0.809017; 0.000000;, + -0.723600; 0.525720; 0.447215;, + -0.894425; 0.000000;-0.447215;, + -0.688189; 0.499997;-0.525736;, + -0.951058; 0.309013; 0.000000;, + 0.262869; 0.809012;-0.525738;, + 0.723600; 0.525720;-0.447215;, + 0.587786; 0.809017; 0.000000;, + 0.587786; 0.809017; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.262869; 0.809012;-0.525738;, + 0.000000; 1.000000; 0.000000;, + 0.587786; 0.809017; 0.000000;, + 0.276385; 0.850640; 0.447215;, + -0.276385; 0.850640;-0.447215;, + 0.262869; 0.809012;-0.525738;, + 0.000000; 1.000000; 0.000000;, + 0.587786;-0.809017; 0.000000;, + 0.276385;-0.850640; 0.447215;, + 0.688189;-0.499997; 0.525736;, + 0.688189;-0.499997; 0.525736;, + 0.951058;-0.309013; 0.000000;, + 0.587786;-0.809017; 0.000000;, + 0.951058;-0.309013; 0.000000;, + 0.688189;-0.499997; 0.525736;, + 0.894425; 0.000000; 0.447215;, + 0.723600;-0.525720;-0.447215;, + 0.587786;-0.809017; 0.000000;, + 0.951058;-0.309013; 0.000000;, + -0.587786;-0.809017; 0.000000;, + -0.723600;-0.525720; 0.447215;, + -0.262869;-0.809012; 0.525738;, + -0.262869;-0.809012; 0.525738;, + 0.000000;-1.000000; 0.000000;, + -0.587786;-0.809017; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.262869;-0.809012; 0.525738;, + 0.276385;-0.850640; 0.447215;, + -0.276385;-0.850640;-0.447215;, + -0.587786;-0.809017; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.951058; 0.309013; 0.000000;, + -0.723600; 0.525720; 0.447215;, + -0.850648; 0.000000; 0.525736;, + -0.850648; 0.000000; 0.525736;, + -0.951058;-0.309013; 0.000000;, + -0.951058; 0.309013; 0.000000;, + -0.951058;-0.309013; 0.000000;, + -0.850648; 0.000000; 0.525736;, + -0.723600;-0.525720; 0.447215;, + -0.894425; 0.000000;-0.447215;, + -0.951058; 0.309013; 0.000000;, + -0.951058;-0.309013; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.276385; 0.850640; 0.447215;, + -0.262869; 0.809012; 0.525738;, + -0.262869; 0.809012; 0.525738;, + -0.587786; 0.809017; 0.000000;, + 0.000000; 1.000000; 0.000000;, + -0.587786; 0.809017; 0.000000;, + -0.262869; 0.809012; 0.525738;, + -0.723600; 0.525720; 0.447215;, + -0.276385; 0.850640;-0.447215;, + 0.000000; 1.000000; 0.000000;, + -0.587786; 0.809017; 0.000000;, + 0.951058; 0.309013; 0.000000;, + 0.894425; 0.000000; 0.447215;, + 0.688189; 0.499997; 0.525736;, + 0.688189; 0.499997; 0.525736;, + 0.587786; 0.809017; 0.000000;, + 0.951058; 0.309013; 0.000000;, + 0.587786; 0.809017; 0.000000;, + 0.688189; 0.499997; 0.525736;, + 0.276385; 0.850640; 0.447215;, + 0.723600; 0.525720;-0.447215;, + 0.951058; 0.309013; 0.000000;, + 0.587786; 0.809017; 0.000000;, + 0.688189;-0.499997; 0.525736;, + 0.276385;-0.850640; 0.447215;, + 0.162456;-0.499995; 0.850654;, + 0.162456;-0.499995; 0.850654;, + 0.525730; 0.000000; 0.850652;, + 0.688189;-0.499997; 0.525736;, + 0.525730; 0.000000; 0.850652;, + 0.162456;-0.499995; 0.850654;, + 0.000000; 0.000000; 1.000000;, + 0.894425; 0.000000; 0.447215;, + 0.688189;-0.499997; 0.525736;, + 0.525730; 0.000000; 0.850652;, + -0.262869;-0.809012; 0.525738;, + -0.723600;-0.525720; 0.447215;, + -0.425323;-0.309011; 0.850654;, + -0.425323;-0.309011; 0.850654;, + 0.162456;-0.499995; 0.850654;, + -0.262869;-0.809012; 0.525738;, + 0.162456;-0.499995; 0.850654;, + -0.425323;-0.309011; 0.850654;, + 0.000000; 0.000000; 1.000000;, + 0.276385;-0.850640; 0.447215;, + -0.262869;-0.809012; 0.525738;, + 0.162456;-0.499995; 0.850654;, + -0.850648; 0.000000; 0.525736;, + -0.723600; 0.525720; 0.447215;, + -0.425323; 0.309011; 0.850654;, + -0.425323; 0.309011; 0.850654;, + -0.425323;-0.309011; 0.850654;, + -0.850648; 0.000000; 0.525736;, + -0.425323;-0.309011; 0.850654;, + -0.425323; 0.309011; 0.850654;, + 0.000000; 0.000000; 1.000000;, + -0.723600;-0.525720; 0.447215;, + -0.850648; 0.000000; 0.525736;, + -0.425323;-0.309011; 0.850654;, + -0.262869; 0.809012; 0.525738;, + 0.276385; 0.850640; 0.447215;, + 0.162456; 0.499995; 0.850654;, + 0.162456; 0.499995; 0.850654;, + -0.425323; 0.309011; 0.850654;, + -0.262869; 0.809012; 0.525738;, + -0.425323; 0.309011; 0.850654;, + 0.162456; 0.499995; 0.850654;, + 0.000000; 0.000000; 1.000000;, + -0.723600; 0.525720; 0.447215;, + -0.262869; 0.809012; 0.525738;, + -0.425323; 0.309011; 0.850654;, + 0.688189; 0.499997; 0.525736;, + 0.894425; 0.000000; 0.447215;, + 0.525730; 0.000000; 0.850652;, + 0.525730; 0.000000; 0.850652;, + 0.162456; 0.499995; 0.850654;, + 0.688189; 0.499997; 0.525736;, + 0.162456; 0.499995; 0.850654;, + 0.525730; 0.000000; 0.850652;, + 0.000000; 0.000000; 1.000000;, + 0.276385; 0.850640; 0.447215;, + 0.688189; 0.499997; 0.525736;, + 0.162456; 0.499995; 0.850654;; + 80; + 3;0;1;2;, + 3;3;4;5;, + 3;6;7;8;, + 3;9;10;11;, + 3;12;13;14;, + 3;15;16;17;, + 3;18;19;20;, + 3;21;22;23;, + 3;24;25;26;, + 3;27;28;29;, + 3;30;31;32;, + 3;33;34;35;, + 3;36;37;38;, + 3;39;40;41;, + 3;42;43;44;, + 3;45;46;47;, + 3;48;49;50;, + 3;51;52;53;, + 3;54;55;56;, + 3;57;58;59;, + 3;60;61;62;, + 3;63;64;65;, + 3;66;67;68;, + 3;69;70;71;, + 3;72;73;74;, + 3;75;76;77;, + 3;78;79;80;, + 3;81;82;83;, + 3;84;85;86;, + 3;87;88;89;, + 3;90;91;92;, + 3;93;94;95;, + 3;96;97;98;, + 3;99;100;101;, + 3;102;103;104;, + 3;105;106;107;, + 3;108;109;110;, + 3;111;112;113;, + 3;114;115;116;, + 3;117;118;119;, + 3;120;121;122;, + 3;123;124;125;, + 3;126;127;128;, + 3;129;130;131;, + 3;132;133;134;, + 3;135;136;137;, + 3;138;139;140;, + 3;141;142;143;, + 3;144;145;146;, + 3;147;148;149;, + 3;150;151;152;, + 3;153;154;155;, + 3;156;157;158;, + 3;159;160;161;, + 3;162;163;164;, + 3;165;166;167;, + 3;168;169;170;, + 3;171;172;173;, + 3;174;175;176;, + 3;177;178;179;, + 3;180;181;182;, + 3;183;184;185;, + 3;186;187;188;, + 3;189;190;191;, + 3;192;193;194;, + 3;195;196;197;, + 3;198;199;200;, + 3;201;202;203;, + 3;204;205;206;, + 3;207;208;209;, + 3;210;211;212;, + 3;213;214;215;, + 3;216;217;218;, + 3;219;220;221;, + 3;222;223;224;, + 3;225;226;227;, + 3;228;229;230;, + 3;231;232;233;, + 3;234;235;236;, + 3;237;238;239;; + MeshNormals { //Icosphere_001 Normals + 240; + -0.038547;-0.748789;-0.661687;, + -0.038547;-0.748789;-0.661687;, + -0.038547;-0.748789;-0.661687;, + 0.187594;-0.577345;-0.794658;, + 0.187594;-0.577345;-0.794658;, + 0.187594;-0.577345;-0.794658;, + 0.471318;-0.583121;-0.661687;, + 0.471318;-0.583121;-0.661687;, + 0.471318;-0.583121;-0.661687;, + 0.102381;-0.315090;-0.943524;, + 0.102381;-0.315090;-0.943524;, + 0.102381;-0.315090;-0.943524;, + 0.700228;-0.268049;-0.661688;, + 0.700228;-0.268049;-0.661688;, + 0.700228;-0.268049;-0.661688;, + 0.607060; 0.000000;-0.794656;, + 0.607060; 0.000000;-0.794656;, + 0.607060; 0.000000;-0.794656;, + 0.700228; 0.268049;-0.661688;, + 0.700228; 0.268049;-0.661688;, + 0.700228; 0.268049;-0.661688;, + 0.331305; 0.000000;-0.943524;, + 0.331305; 0.000000;-0.943524;, + 0.331305; 0.000000;-0.943524;, + -0.724044;-0.194735;-0.661694;, + -0.724044;-0.194735;-0.661694;, + -0.724044;-0.194735;-0.661694;, + -0.491120;-0.356821;-0.794657;, + -0.491120;-0.356821;-0.794657;, + -0.491120;-0.356821;-0.794657;, + -0.408939;-0.628443;-0.661686;, + -0.408939;-0.628443;-0.661686;, + -0.408939;-0.628443;-0.661686;, + -0.268034;-0.194736;-0.943523;, + -0.268034;-0.194736;-0.943523;, + -0.268034;-0.194736;-0.943523;, + -0.408939; 0.628443;-0.661686;, + -0.408939; 0.628443;-0.661686;, + -0.408939; 0.628443;-0.661686;, + -0.491120; 0.356821;-0.794657;, + -0.491120; 0.356821;-0.794657;, + -0.491120; 0.356821;-0.794657;, + -0.724044; 0.194735;-0.661694;, + -0.724044; 0.194735;-0.661694;, + -0.724044; 0.194735;-0.661694;, + -0.268034; 0.194736;-0.943523;, + -0.268034; 0.194736;-0.943523;, + -0.268034; 0.194736;-0.943523;, + 0.471318; 0.583121;-0.661687;, + 0.471318; 0.583121;-0.661687;, + 0.471318; 0.583121;-0.661687;, + 0.187594; 0.577345;-0.794658;, + 0.187594; 0.577345;-0.794658;, + 0.187594; 0.577345;-0.794658;, + -0.038547; 0.748789;-0.661687;, + -0.038547; 0.748789;-0.661687;, + -0.038547; 0.748789;-0.661687;, + 0.102381; 0.315090;-0.943524;, + 0.102381; 0.315090;-0.943524;, + 0.102381; 0.315090;-0.943524;, + 0.904981;-0.268049;-0.330393;, + 0.904981;-0.268049;-0.330393;, + 0.904981;-0.268049;-0.330393;, + 0.982246; 0.000000;-0.187599;, + 0.982246; 0.000000;-0.187599;, + 0.982246; 0.000000;-0.187599;, + 0.992077; 0.000000; 0.125631;, + 0.992077; 0.000000; 0.125631;, + 0.992077; 0.000000; 0.125631;, + 0.904981; 0.268049;-0.330393;, + 0.904981; 0.268049;-0.330393;, + 0.904981; 0.268049;-0.330393;, + 0.024726;-0.943519;-0.330396;, + 0.024726;-0.943519;-0.330396;, + 0.024726;-0.943519;-0.330396;, + 0.303531;-0.934171;-0.187597;, + 0.303531;-0.934171;-0.187597;, + 0.303531;-0.934171;-0.187597;, + 0.306568;-0.943519; 0.125651;, + 0.306568;-0.943519; 0.125651;, + 0.306568;-0.943519; 0.125651;, + 0.534590;-0.777851;-0.330395;, + 0.534590;-0.777851;-0.330395;, + 0.534590;-0.777851;-0.330395;, + -0.889698;-0.315092;-0.330386;, + -0.889698;-0.315092;-0.330386;, + -0.889698;-0.315092;-0.330386;, + -0.794656;-0.577348;-0.187595;, + -0.794656;-0.577348;-0.187595;, + -0.794656;-0.577348;-0.187595;, + -0.802607;-0.583125; 0.125648;, + -0.802607;-0.583125; 0.125648;, + -0.802607;-0.583125; 0.125648;, + -0.574584;-0.748793;-0.330397;, + -0.574584;-0.748793;-0.330397;, + -0.574584;-0.748793;-0.330397;, + -0.574584; 0.748793;-0.330397;, + -0.574584; 0.748793;-0.330397;, + -0.574584; 0.748793;-0.330397;, + -0.794656; 0.577348;-0.187595;, + -0.794656; 0.577348;-0.187595;, + -0.794656; 0.577348;-0.187595;, + -0.802607; 0.583125; 0.125648;, + -0.802607; 0.583125; 0.125648;, + -0.802607; 0.583125; 0.125648;, + -0.889698; 0.315092;-0.330386;, + -0.889698; 0.315092;-0.330386;, + -0.889698; 0.315092;-0.330386;, + 0.534590; 0.777851;-0.330395;, + 0.534590; 0.777851;-0.330395;, + 0.534590; 0.777851;-0.330395;, + 0.303531; 0.934171;-0.187597;, + 0.303531; 0.934171;-0.187597;, + 0.303531; 0.934171;-0.187597;, + 0.306568; 0.943519; 0.125651;, + 0.306568; 0.943519; 0.125651;, + 0.306568; 0.943519; 0.125651;, + 0.024726; 0.943519;-0.330396;, + 0.024726; 0.943519;-0.330396;, + 0.024726; 0.943519;-0.330396;, + 0.574584;-0.748793; 0.330397;, + 0.574584;-0.748793; 0.330397;, + 0.574584;-0.748793; 0.330397;, + 0.794656;-0.577348; 0.187595;, + 0.794656;-0.577348; 0.187595;, + 0.794656;-0.577348; 0.187595;, + 0.889698;-0.315092; 0.330386;, + 0.889698;-0.315092; 0.330386;, + 0.889698;-0.315092; 0.330386;, + 0.802607;-0.583125;-0.125648;, + 0.802607;-0.583125;-0.125648;, + 0.802607;-0.583125;-0.125648;, + -0.534590;-0.777851; 0.330395;, + -0.534590;-0.777851; 0.330395;, + -0.534590;-0.777851; 0.330395;, + -0.303531;-0.934171; 0.187597;, + -0.303531;-0.934171; 0.187597;, + -0.303531;-0.934171; 0.187597;, + -0.024726;-0.943519; 0.330396;, + -0.024726;-0.943519; 0.330396;, + -0.024726;-0.943519; 0.330396;, + -0.306568;-0.943519;-0.125651;, + -0.306568;-0.943519;-0.125651;, + -0.306568;-0.943519;-0.125651;, + -0.904981; 0.268049; 0.330393;, + -0.904981; 0.268049; 0.330393;, + -0.904981; 0.268049; 0.330393;, + -0.982246; 0.000000; 0.187599;, + -0.982246; 0.000000; 0.187599;, + -0.982246; 0.000000; 0.187599;, + -0.904981;-0.268049; 0.330393;, + -0.904981;-0.268049; 0.330393;, + -0.904981;-0.268049; 0.330393;, + -0.992077;-0.000000;-0.125631;, + -0.992077;-0.000000;-0.125631;, + -0.992077;-0.000000;-0.125631;, + -0.024726; 0.943519; 0.330396;, + -0.024726; 0.943519; 0.330396;, + -0.024726; 0.943519; 0.330396;, + -0.303531; 0.934171; 0.187597;, + -0.303531; 0.934171; 0.187597;, + -0.303531; 0.934171; 0.187597;, + -0.534590; 0.777851; 0.330395;, + -0.534590; 0.777851; 0.330395;, + -0.534590; 0.777851; 0.330395;, + -0.306568; 0.943519;-0.125651;, + -0.306568; 0.943519;-0.125651;, + -0.306568; 0.943519;-0.125651;, + 0.889698; 0.315092; 0.330386;, + 0.889698; 0.315092; 0.330386;, + 0.889698; 0.315092; 0.330386;, + 0.794656; 0.577348; 0.187595;, + 0.794656; 0.577348; 0.187595;, + 0.794656; 0.577348; 0.187595;, + 0.574584; 0.748793; 0.330397;, + 0.574584; 0.748793; 0.330397;, + 0.574584; 0.748793; 0.330397;, + 0.802607; 0.583125;-0.125648;, + 0.802607; 0.583125;-0.125648;, + 0.802607; 0.583125;-0.125648;, + 0.408939;-0.628443; 0.661686;, + 0.408939;-0.628443; 0.661686;, + 0.408939;-0.628443; 0.661686;, + 0.491120;-0.356821; 0.794657;, + 0.491120;-0.356821; 0.794657;, + 0.491120;-0.356821; 0.794657;, + 0.268034;-0.194736; 0.943523;, + 0.268034;-0.194736; 0.943523;, + 0.268034;-0.194736; 0.943523;, + 0.724044;-0.194735; 0.661694;, + 0.724044;-0.194735; 0.661694;, + 0.724044;-0.194735; 0.661694;, + -0.471318;-0.583121; 0.661687;, + -0.471318;-0.583121; 0.661687;, + -0.471318;-0.583121; 0.661687;, + -0.187594;-0.577345; 0.794658;, + -0.187594;-0.577345; 0.794658;, + -0.187594;-0.577345; 0.794658;, + -0.102381;-0.315090; 0.943524;, + -0.102381;-0.315090; 0.943524;, + -0.102381;-0.315090; 0.943524;, + 0.038547;-0.748789; 0.661687;, + 0.038547;-0.748789; 0.661687;, + 0.038547;-0.748789; 0.661687;, + -0.700228; 0.268049; 0.661688;, + -0.700228; 0.268049; 0.661688;, + -0.700228; 0.268049; 0.661688;, + -0.607060; 0.000000; 0.794656;, + -0.607060; 0.000000; 0.794656;, + -0.607060; 0.000000; 0.794656;, + -0.331305; 0.000000; 0.943524;, + -0.331305; 0.000000; 0.943524;, + -0.331305; 0.000000; 0.943524;, + -0.700228;-0.268049; 0.661688;, + -0.700228;-0.268049; 0.661688;, + -0.700228;-0.268049; 0.661688;, + 0.038547; 0.748789; 0.661687;, + 0.038547; 0.748789; 0.661687;, + 0.038547; 0.748789; 0.661687;, + -0.187594; 0.577345; 0.794658;, + -0.187594; 0.577345; 0.794658;, + -0.187594; 0.577345; 0.794658;, + -0.102381; 0.315090; 0.943524;, + -0.102381; 0.315090; 0.943524;, + -0.102381; 0.315090; 0.943524;, + -0.471318; 0.583121; 0.661687;, + -0.471318; 0.583121; 0.661687;, + -0.471318; 0.583121; 0.661687;, + 0.724044; 0.194735; 0.661694;, + 0.724044; 0.194735; 0.661694;, + 0.724044; 0.194735; 0.661694;, + 0.491120; 0.356821; 0.794657;, + 0.491120; 0.356821; 0.794657;, + 0.491120; 0.356821; 0.794657;, + 0.268034; 0.194736; 0.943523;, + 0.268034; 0.194736; 0.943523;, + 0.268034; 0.194736; 0.943523;, + 0.408939; 0.628443; 0.661686;, + 0.408939; 0.628443; 0.661686;, + 0.408939; 0.628443; 0.661686;; + 80; + 3;0;1;2;, + 3;3;4;5;, + 3;6;7;8;, + 3;9;10;11;, + 3;12;13;14;, + 3;15;16;17;, + 3;18;19;20;, + 3;21;22;23;, + 3;24;25;26;, + 3;27;28;29;, + 3;30;31;32;, + 3;33;34;35;, + 3;36;37;38;, + 3;39;40;41;, + 3;42;43;44;, + 3;45;46;47;, + 3;48;49;50;, + 3;51;52;53;, + 3;54;55;56;, + 3;57;58;59;, + 3;60;61;62;, + 3;63;64;65;, + 3;66;67;68;, + 3;69;70;71;, + 3;72;73;74;, + 3;75;76;77;, + 3;78;79;80;, + 3;81;82;83;, + 3;84;85;86;, + 3;87;88;89;, + 3;90;91;92;, + 3;93;94;95;, + 3;96;97;98;, + 3;99;100;101;, + 3;102;103;104;, + 3;105;106;107;, + 3;108;109;110;, + 3;111;112;113;, + 3;114;115;116;, + 3;117;118;119;, + 3;120;121;122;, + 3;123;124;125;, + 3;126;127;128;, + 3;129;130;131;, + 3;132;133;134;, + 3;135;136;137;, + 3;138;139;140;, + 3;141;142;143;, + 3;144;145;146;, + 3;147;148;149;, + 3;150;151;152;, + 3;153;154;155;, + 3;156;157;158;, + 3;159;160;161;, + 3;162;163;164;, + 3;165;166;167;, + 3;168;169;170;, + 3;171;172;173;, + 3;174;175;176;, + 3;177;178;179;, + 3;180;181;182;, + 3;183;184;185;, + 3;186;187;188;, + 3;189;190;191;, + 3;192;193;194;, + 3;195;196;197;, + 3;198;199;200;, + 3;201;202;203;, + 3;204;205;206;, + 3;207;208;209;, + 3;210;211;212;, + 3;213;214;215;, + 3;216;217;218;, + 3;219;220;221;, + 3;222;223;224;, + 3;225;226;227;, + 3;228;229;230;, + 3;231;232;233;, + 3;234;235;236;, + 3;237;238;239;; + } //End of Icosphere_001 Normals + MeshMaterialList { //Icosphere_001 Material List + 1; + 80; + 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, + 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 { + 0.640000; 0.640000; 0.640000; 1.000000;; + 96.078431; + 0.500000; 0.500000; 0.500000;; + 0.000000; 0.000000; 0.000000;; + TextureFilename {"wool_white.png";} + } + } //End of Icosphere_001 Material List + MeshTextureCoords { //Icosphere_001 UV Coordinates + 240; + 0.463454; 0.999858;, + 0.562529; 0.932179;, + 0.601593; 1.000000;, + 0.258074; 0.612656;, + 0.198353; 0.508991;, + 0.329355; 0.485087;, + 0.198353; 0.508991;, + 0.258074; 0.612656;, + 0.131802; 0.608175;, + 0.198353; 0.508991;, + 0.253073; 0.391145;, + 0.329355; 0.485087;, + 0.198353; 0.508991;, + 0.131802; 0.608175;, + 0.052221; 0.509032;, + 0.052221; 0.509032;, + 0.123503; 0.381464;, + 0.198353; 0.508991;, + 0.123503; 0.381464;, + 0.052221; 0.509032;, + 0.004459; 0.391213;, + 0.123503; 0.381464;, + 0.253073; 0.391145;, + 0.198353; 0.508991;, + 0.335468; 0.925790;, + 0.344786; 0.806168;, + 0.447270; 0.880210;, + 0.447270; 0.880210;, + 0.463454; 0.999858;, + 0.335468; 0.925790;, + 0.463454; 0.999858;, + 0.447270; 0.880210;, + 0.562529; 0.932179;, + 0.329355; 0.485087;, + 0.253073; 0.391145;, + 0.335468; 0.342784;, + 0.795915; 0.612719;, + 0.747088; 0.501993;, + 0.876923; 0.507027;, + 0.876923; 0.507027;, + 0.941952; 0.607444;, + 0.795915; 0.612719;, + 0.941952; 0.607444;, + 0.876923; 0.507027;, + 0.995541; 0.493019;, + 0.335468; 0.342784;, + 0.253073; 0.391145;, + 0.208243; 0.278742;, + 0.123503; 0.381464;, + 0.004459; 0.391213;, + 0.062111; 0.278781;, + 0.062111; 0.278781;, + 0.208243; 0.278742;, + 0.123503; 0.381464;, + 0.795915; 0.612719;, + 0.666477; 0.553276;, + 0.747088; 0.501993;, + 0.208243; 0.278742;, + 0.253073; 0.391145;, + 0.123503; 0.381464;, + 0.052221; 0.509032;, + 0.131802; 0.608175;, + 0.021626; 0.612719;, + 0.000245; 0.926193;, + 0.111953; 0.880384;, + 0.128383; 1.000000;, + 0.111953; 0.880384;, + 0.000245; 0.926193;, + 0.009318; 0.806552;, + 0.227318; 0.932118;, + 0.128383; 1.000000;, + 0.111953; 0.880384;, + 0.601593; 1.000000;, + 0.562529; 0.932179;, + 0.670786; 0.880437;, + 0.671946; 0.814596;, + 0.802009; 0.843180;, + 0.738613; 0.944639;, + 0.802009; 0.843180;, + 0.671946; 0.814596;, + 0.751547; 0.723446;, + 0.864965; 0.944685;, + 0.738613; 0.944639;, + 0.802009; 0.843180;, + 0.447270; 0.880210;, + 0.344786; 0.806168;, + 0.447422; 0.732335;, + 0.447422; 0.732335;, + 0.575409; 0.806403;, + 0.447270; 0.880210;, + 0.575409; 0.806403;, + 0.447422; 0.732335;, + 0.562786; 0.680601;, + 0.562529; 0.932179;, + 0.447270; 0.880210;, + 0.575409; 0.806403;, + 0.876923; 0.507027;, + 0.747088; 0.501993;, + 0.797550; 0.382259;, + 0.797550; 0.382259;, + 0.943588; 0.376985;, + 0.876923; 0.507027;, + 0.943588; 0.376985;, + 0.797550; 0.382259;, + 0.860506; 0.280754;, + 0.995541; 0.493019;, + 0.876923; 0.507027;, + 0.943588; 0.376985;, + 0.335468; 0.880158;, + 0.227318; 0.932118;, + 0.239941; 0.806317;, + 0.239941; 0.806317;, + 0.335317; 0.732282;, + 0.335468; 0.880158;, + 0.335317; 0.732282;, + 0.239941; 0.806317;, + 0.227061; 0.680541;, + 0.747088; 0.501993;, + 0.666477; 0.553276;, + 0.667487; 0.410842;, + 0.802009; 0.843180;, + 0.751547; 0.723446;, + 0.881382; 0.718412;, + 0.881382; 0.718412;, + 0.948048; 0.848454;, + 0.802009; 0.843180;, + 0.948048; 0.848454;, + 0.881382; 0.718412;, + 1.000000; 0.732420;, + 0.864965; 0.944685;, + 0.802009; 0.843180;, + 0.948048; 0.848454;, + 0.575409; 0.806403;, + 0.562786; 0.680601;, + 0.670936; 0.732562;, + 0.670936; 0.732562;, + 0.670786; 0.880437;, + 0.575409; 0.806403;, + 0.671946; 0.814596;, + 0.670936; 0.672163;, + 0.751547; 0.723446;, + 0.562529; 0.932179;, + 0.575409; 0.806403;, + 0.670786; 0.880437;, + 0.649311; 0.612719;, + 0.539135; 0.608175;, + 0.618715; 0.509032;, + 0.463851; 0.612719;, + 0.447422; 0.732335;, + 0.335713; 0.686526;, + 0.447422; 0.732335;, + 0.463851; 0.612719;, + 0.562786; 0.680601;, + 0.344786; 0.806168;, + 0.335713; 0.686526;, + 0.447422; 0.732335;, + 0.335317; 0.732282;, + 0.227061; 0.680541;, + 0.266124; 0.612719;, + 0.734154; 0.280800;, + 0.797550; 0.382259;, + 0.667487; 0.410842;, + 0.797550; 0.382259;, + 0.734154; 0.280800;, + 0.860506; 0.280754;, + 0.747088; 0.501993;, + 0.667487; 0.410842;, + 0.797550; 0.382259;, + 0.111953; 0.880384;, + 0.009318; 0.806552;, + 0.111802; 0.732510;, + 0.111802; 0.732510;, + 0.239941; 0.806317;, + 0.111953; 0.880384;, + 0.239941; 0.806317;, + 0.111802; 0.732510;, + 0.227061; 0.680541;, + 0.227318; 0.932118;, + 0.111953; 0.880384;, + 0.239941; 0.806317;, + 0.881382; 0.718412;, + 0.751547; 0.723446;, + 0.800374; 0.612719;, + 0.800374; 0.612719;, + 0.946411; 0.617995;, + 0.881382; 0.718412;, + 0.335468; 0.342784;, + 0.462693; 0.278742;, + 0.417864; 0.391145;, + 1.000000; 0.732420;, + 0.881382; 0.718412;, + 0.946411; 0.617995;, + 0.608825; 0.278781;, + 0.666477; 0.391213;, + 0.547433; 0.381464;, + 0.547433; 0.381464;, + 0.462693; 0.278742;, + 0.608825; 0.278781;, + 0.462693; 0.278742;, + 0.547433; 0.381464;, + 0.417864; 0.391145;, + 0.751547; 0.723446;, + 0.670936; 0.672163;, + 0.800374; 0.612719;, + 0.618715; 0.509032;, + 0.539135; 0.608175;, + 0.472583; 0.508991;, + 0.472583; 0.508991;, + 0.547433; 0.381464;, + 0.618715; 0.509032;, + 0.547433; 0.381464;, + 0.472583; 0.508991;, + 0.417864; 0.391145;, + 0.666477; 0.391213;, + 0.618715; 0.509032;, + 0.547433; 0.381464;, + 0.266124; 0.612719;, + 0.227061; 0.680541;, + 0.127986; 0.612861;, + 0.341581; 0.485087;, + 0.472583; 0.508991;, + 0.412862; 0.612656;, + 0.472583; 0.508991;, + 0.341581; 0.485087;, + 0.417864; 0.391145;, + 0.539135; 0.608175;, + 0.412862; 0.612656;, + 0.472583; 0.508991;, + 0.111802; 0.732510;, + 0.009318; 0.806552;, + 0.000000; 0.686929;, + 0.000000; 0.686929;, + 0.127986; 0.612861;, + 0.111802; 0.732510;, + 0.341581; 0.485087;, + 0.335468; 0.342784;, + 0.417864; 0.391145;, + 0.227061; 0.680541;, + 0.111802; 0.732510;, + 0.127986; 0.612861;; + } //End of Icosphere_001 UV Coordinates + } //End of Icosphere_001 Mesh + } //End of Icosphere +} //End of Root Frame diff --git a/textures/blue_soccer_ball.png b/textures/blue_soccer_ball.png new file mode 100644 index 0000000..0cca107 Binary files /dev/null and b/textures/blue_soccer_ball.png differ diff --git a/textures/blue_soccer_ball_inv.png b/textures/blue_soccer_ball_inv.png new file mode 100644 index 0000000..89e0213 Binary files /dev/null and b/textures/blue_soccer_ball_inv.png differ diff --git a/textures/green_soccer_ball.png b/textures/green_soccer_ball.png new file mode 100644 index 0000000..e2eefcc Binary files /dev/null and b/textures/green_soccer_ball.png differ diff --git a/textures/green_soccer_ball_inv.png b/textures/green_soccer_ball_inv.png new file mode 100644 index 0000000..f6068d8 Binary files /dev/null and b/textures/green_soccer_ball_inv.png differ diff --git a/textures/purple_soccer_ball.png b/textures/purple_soccer_ball.png new file mode 100644 index 0000000..6d834ec Binary files /dev/null and b/textures/purple_soccer_ball.png differ diff --git a/textures/purple_soccer_ball_inv.png b/textures/purple_soccer_ball_inv.png new file mode 100644 index 0000000..91f48ee Binary files /dev/null and b/textures/purple_soccer_ball_inv.png differ diff --git a/textures/red_soccer_ball.png b/textures/red_soccer_ball.png new file mode 100644 index 0000000..30d4a5f Binary files /dev/null and b/textures/red_soccer_ball.png differ diff --git a/textures/red_soccer_ball_inv.png b/textures/red_soccer_ball_inv.png new file mode 100644 index 0000000..48aff7a Binary files /dev/null and b/textures/red_soccer_ball_inv.png differ diff --git a/textures/soccer_ball.png b/textures/soccer_ball.png new file mode 100644 index 0000000..ca66fb9 Binary files /dev/null and b/textures/soccer_ball.png differ diff --git a/textures/soccer_ball_inv.png b/textures/soccer_ball_inv.png new file mode 100644 index 0000000..dd7c812 Binary files /dev/null and b/textures/soccer_ball_inv.png differ diff --git a/textures/soccer_goal_mark.png b/textures/soccer_goal_mark.png new file mode 100644 index 0000000..5d0a19b Binary files /dev/null and b/textures/soccer_goal_mark.png differ diff --git a/textures/soccer_line_corner.png b/textures/soccer_line_corner.png new file mode 100644 index 0000000..fc8fd65 Binary files /dev/null and b/textures/soccer_line_corner.png differ diff --git a/textures/soccer_line_d.png b/textures/soccer_line_d.png new file mode 100644 index 0000000..67cc7b8 Binary files /dev/null and b/textures/soccer_line_d.png differ diff --git a/textures/soccer_line_i.png b/textures/soccer_line_i.png new file mode 100644 index 0000000..f0ea865 Binary files /dev/null and b/textures/soccer_line_i.png differ diff --git a/textures/soccer_line_l.png b/textures/soccer_line_l.png new file mode 100644 index 0000000..92fa84e Binary files /dev/null and b/textures/soccer_line_l.png differ diff --git a/textures/soccer_line_p.png b/textures/soccer_line_p.png new file mode 100644 index 0000000..aca6555 Binary files /dev/null and b/textures/soccer_line_p.png differ diff --git a/textures/soccer_line_point.png b/textures/soccer_line_point.png new file mode 100644 index 0000000..cf7d23c Binary files /dev/null and b/textures/soccer_line_point.png differ diff --git a/textures/soccer_line_t.png b/textures/soccer_line_t.png new file mode 100644 index 0000000..a18cadd Binary files /dev/null and b/textures/soccer_line_t.png differ diff --git a/textures/soccer_white.png b/textures/soccer_white.png new file mode 100644 index 0000000..5a983c9 Binary files /dev/null and b/textures/soccer_white.png differ diff --git a/textures/yellow_soccer_ball.png b/textures/yellow_soccer_ball.png new file mode 100644 index 0000000..8f34080 Binary files /dev/null and b/textures/yellow_soccer_ball.png differ diff --git a/textures/yellow_soccer_ball_inv.png b/textures/yellow_soccer_ball_inv.png new file mode 100644 index 0000000..6171164 Binary files /dev/null and b/textures/yellow_soccer_ball_inv.png differ