Version MFF.

This commit is contained in:
sys4-fr 2018-09-08 16:34:37 +02:00
parent d1b2a6b268
commit f371241e0c
26 changed files with 35 additions and 90 deletions

0
LICENSE.txt Normal file → Executable file
View File

0
README.txt Normal file → Executable file
View File

0
depends.txt Normal file → Executable file
View File

125
init.lua Normal file → Executable file
View File

@ -1,37 +1,34 @@
local BALL_PUSH_CHECK_INTERVAL = 0.1
local function reg_ball(color)
local ball_item_name = "soccer:ball_"..color.."_item"
local ball_ent_name = "soccer:ball_"..color.."_entity"
local ball_item_name = "soccer:ball_" .. color .. "_item"
local ball_ent_name = "soccer:ball_" .. color .. "_entity"
minetest.register_entity(ball_ent_name, {
physical = true,
hp_max = 32767,
collide_with_objects = false,
visual = "mesh",
visual_size = {x = 1.125, y = 1.125, z = 1.125},
mesh = "soccer_ball.x",
hp_max = 1000,
groups = { immortal = true },
textures = { "soccer_ball_"..color..".png" },
collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 },
groups = {immortal = true},
textures = {"soccer_ball_" .. color .. ".png"},
collisionbox = { -0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
timer = 0,
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})
if self.timer >= 0.2 then
self.object:setacceleration({x = 0, y = -14.5, 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
vel.x = vel.x * 0.9
if vel.y < 0 then vel.y = vel.y * -0.6 end
vel.z = vel.z * 0.9
end
if (math.abs(vel.x) < 0.1)
and (math.abs(vel.z) < 0.1) then
if (math.abs(vel.x) <= 0.1) and (math.abs(vel.z) <= 0.1) then
vel.x = 0
vel.z = 0
end
@ -39,14 +36,12 @@ local function reg_ball(color)
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 }
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
if (obj:get_player_control().sneak) then mul = 2 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)
@ -54,10 +49,11 @@ local function reg_ball(color)
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
final_dir.x = (final_dir.x * 7.2) / player_count
final_dir.y = (final_dir.y * 9.6) / player_count
final_dir.z = (final_dir.z * 7.2) / player_count
self.object:setvelocity(final_dir)
minetest.sound_play("default_dig_oddly_breakable_by_hand", {object = self.object, gain = 0.5})
end
end
end,
@ -72,8 +68,7 @@ local function reg_ball(color)
is_moving = function(self)
local v = self.object:getvelocity()
if (math.abs(v.x) <= 0.1)
and (math.abs(v.z) <= 0.1) then
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)
@ -86,22 +81,28 @@ local function reg_ball(color)
minetest.register_craftitem(ball_item_name, {
description = "Soccer Ball ("..color..")",
inventory_image = "soccer_ball_"..color.."_inv.png",
wield_scale = {x = 0.75, y = 0.75, z = 4.5},
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 }
-- pos = { x =pos.x + 0.5, y = pos.y, z = pos.z + 0.5 }
local ent = minetest.env:add_entity(pos, ball_ent_name)
ent:setvelocity({x=0, y=-15, z=0})
itemstack:take_item()
minetest.log("action", placer:get_player_name() .. " placed a ball at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
ent:setvelocity({x = 0, y = -14.5, z = 0})
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return itemstack
end,
})
if color == "purple" then
color = "pink"
end
minetest.register_craft({
output = ball_item_name,
recipe = {
{ "", "wool:white", "" },
{ "wool:white", "wool:"..color, "wool:white" },
{ "wool:white", "wool:" .. color, "wool:white" },
{ "", "wool:white", "" },
},
})
@ -116,64 +117,8 @@ for _,color in ipairs(colors) do
reg_ball(color)
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 },
},
},
})
minetest.register_alias("ball", "soccer:ball_black_item") -- For quickly using the /give command.
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 },
})
if minetest.setting_getbool("log_mods") then
minetest.log("action", "Carbone: [soccer] loaded.")
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_alias("ball", "soccer:ball_item_black")

0
models/soccer_ball.x Normal file → Executable file
View File

BIN
textures/soccer_ball_black.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

After

Width:  |  Height:  |  Size: 162 B

BIN
textures/soccer_ball_blue.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 162 B

BIN
textures/soccer_ball_green.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 178 B

BIN
textures/soccer_ball_purple.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 162 B

BIN
textures/soccer_ball_red.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

After

Width:  |  Height:  |  Size: 162 B

BIN
textures/soccer_ball_yellow.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B