Tiny optimisations and luacheck fixesc
parent
49a7451781
commit
13a0a513d2
211
api.lua
211
api.lua
|
@ -123,7 +123,7 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
local jump_speed = def.jump_speed or 5
|
local jump_speed = def.jump_speed or 5
|
||||||
local simple_vehicle = def.simple_vehicle or false
|
local simple_vehicle = def.simple_vehicle or false
|
||||||
local is_watercraft = def.is_watercraft or false
|
local is_watercraft = def.is_watercraft or false
|
||||||
local swims = def.swims or false
|
--local swims = def.swims or false
|
||||||
local driving_sound = def.driving_sound or nil
|
local driving_sound = def.driving_sound or nil
|
||||||
local sound_duration = def.sound_duration or 5
|
local sound_duration = def.sound_duration or 5
|
||||||
local extra_yaw = def.extra_yaw or 0
|
local extra_yaw = def.extra_yaw or 0
|
||||||
|
@ -149,7 +149,6 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
local vec_stop = {x=velo.x*decell,y=velo.y+1*-2,z=velo.z*decell}
|
local vec_stop = {x=velo.x*decell,y=velo.y+1*-2,z=velo.z*decell}
|
||||||
local pos = entity.object:get_pos()
|
local pos = entity.object:get_pos()
|
||||||
local node = minetest.get_node(pos).name
|
local node = minetest.get_node(pos).name
|
||||||
local node_under = minetest.get_node({x=pos.x, y=pos.y+2, z=pos.z})
|
|
||||||
local accell = 1
|
local accell = 1
|
||||||
|
|
||||||
--lava explode
|
--lava explode
|
||||||
|
@ -168,8 +167,11 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
return cache.water[node]
|
return cache.water[node]
|
||||||
end
|
end
|
||||||
entity.on_water = is_water(node)
|
entity.on_water = is_water(node)
|
||||||
entity.in_water = is_water(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name)
|
|
||||||
or is_water(node_under.name)
|
local function in_water()
|
||||||
|
return is_water(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name)
|
||||||
|
or is_water(minetest.get_node({x=pos.x, y=pos.y+2, z=pos.z}).name)
|
||||||
|
end
|
||||||
|
|
||||||
local function is_watercraft_and_in_water()
|
local function is_watercraft_and_in_water()
|
||||||
entity.object:set_velocity({x=velo.x*0.9, y=math.min(2, velo.y+0.5), z=velo.z*0.9})
|
entity.object:set_velocity({x=velo.x*0.9, y=math.min(2, velo.y+0.5), z=velo.z*0.9})
|
||||||
|
@ -183,17 +185,17 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
|
|
||||||
if not entity.driver then
|
if not entity.driver then
|
||||||
--apply water effects
|
--apply water effects
|
||||||
if is_watercraft and entity.in_water then
|
if is_watercraft and in_water() then
|
||||||
is_watercraft_and_in_water()
|
is_watercraft_and_in_water()
|
||||||
elseif is_watercraft and not entity.on_water then
|
elseif is_watercraft and not entity.on_water then
|
||||||
is_watercraft_and_not_on_water()
|
is_watercraft_and_not_on_water()
|
||||||
elseif (entity.on_water or entity.in_water) and not is_watercraft then
|
elseif entity.on_water and not is_watercraft then
|
||||||
not_watercraft_and_on_or_in_water()
|
not_watercraft_and_on_or_in_water()
|
||||||
else
|
else
|
||||||
--stop
|
--stop
|
||||||
entity.object:set_velocity(vec_stop)
|
entity.object:set_velocity(vec_stop)
|
||||||
--animation
|
--animation
|
||||||
if moving_anim ~= nil and entity.moving and not hovering then
|
if moving_anim ~= nil and entity.moving then
|
||||||
entity.object:set_animation(stand_anim, 20, 0)
|
entity.object:set_animation(stand_anim, 20, 0)
|
||||||
entity.moving = false
|
entity.moving = false
|
||||||
end
|
end
|
||||||
|
@ -202,9 +204,7 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
--variables
|
--variables
|
||||||
local ctrl = entity.driver:get_player_control()
|
local ctrl = entity.driver:get_player_control()
|
||||||
local dir = entity.driver:get_look_dir()
|
local dir = entity.driver:get_look_dir()
|
||||||
local vec_backward = {x=-dir.x*speed/4,y=velo.y+1*-2,z=-dir.z*speed/4}
|
|
||||||
local yaw = entity.driver:get_look_horizontal()
|
local yaw = entity.driver:get_look_horizontal()
|
||||||
local creative_mode = creative and creative.is_enabled_for and creative.is_enabled_for(entity.driver:get_player_name())
|
|
||||||
|
|
||||||
--dummy variables
|
--dummy variables
|
||||||
local vec_rise = {}
|
local vec_rise = {}
|
||||||
|
@ -242,7 +242,7 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
|
|
||||||
--death_node
|
--death_node
|
||||||
if death_node ~= nil and node == death_node then
|
if death_node and node == death_node then
|
||||||
if entity.driver then
|
if entity.driver then
|
||||||
vehicles.object_detach(entity, entity.driver, {x=1, y=0, z=1})
|
vehicles.object_detach(entity, entity.driver, {x=1, y=0, z=1})
|
||||||
end
|
end
|
||||||
|
@ -252,9 +252,8 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
|
|
||||||
--place node
|
--place node
|
||||||
if place_node ~= nil and node == "air" or
|
if place_node and (node == "air" or node == "default:snow"
|
||||||
place_node ~= nil and node == "default:snow" or
|
or minetest.get_item_group(node, "flora")) ~= 0 then
|
||||||
place_node ~= nil and minetest.get_item_group(node, "flora") ~= 0 then
|
|
||||||
if place_trigger == nil and math.random(1, place_chance) == 1 then
|
if place_trigger == nil and math.random(1, place_chance) == 1 then
|
||||||
minetest.set_node(pos, {name=place_node})
|
minetest.set_node(pos, {name=place_node})
|
||||||
end
|
end
|
||||||
|
@ -265,7 +264,7 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
|
|
||||||
--destroy node
|
--destroy node
|
||||||
if destroy_node ~= nil and node == destroy_node then
|
if destroy_node and node == destroy_node then
|
||||||
minetest.dig_node(pos)
|
minetest.dig_node(pos)
|
||||||
local item = minetest.get_node_drops(destroy_node)
|
local item = minetest.get_node_drops(destroy_node)
|
||||||
if item[1] ~= nil then
|
if item[1] ~= nil then
|
||||||
|
@ -276,38 +275,35 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local turning_factor = 2
|
local turning_factor
|
||||||
|
|
||||||
--brakes
|
--brakes
|
||||||
local braking = 0
|
local braking = 0
|
||||||
local timer2 = 0
|
|
||||||
if ctrl.jump and brakes then
|
if ctrl.jump and brakes then
|
||||||
braking = 1
|
braking = 1
|
||||||
timer2 = timer2 + dtime*1
|
|
||||||
local velo3 = nil
|
local velo3 = nil
|
||||||
if velo3 == nil then
|
if velo3 == nil then
|
||||||
velo3 = velo
|
velo3 = velo
|
||||||
end
|
end
|
||||||
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
||||||
minetest.add_particlespawner(
|
minetest.add_particlespawner({
|
||||||
4, --amount
|
amount = 4,
|
||||||
0.5, --time
|
time = 0.5,
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --minpos
|
minpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --maxpos
|
maxpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=0, y=0, z=0}, --minvel
|
minvel = {x=0, y=0, z=0},
|
||||||
{x=-velo3.x, y=0.4, z=-velo3.z}, --maxvel
|
maxvel = {x=-velo3.x, y=0.4, z=-velo3.z},
|
||||||
{x=-0,y=-0,z=-0}, --minacc
|
minacc = {x=-0,y=-0,z=-0},
|
||||||
{x=0,y=0,z=0}, --maxacc
|
maxacc = {x=0,y=0,z=0},
|
||||||
0.5, --minexptime
|
minexptime = 0.5,
|
||||||
1, --maxexptime
|
maxexptime = 1,
|
||||||
10, --minsize
|
minsize = 10,
|
||||||
15, --maxsize
|
maxsize = 15,
|
||||||
false, --collisiondetection
|
collisiondetection = false,
|
||||||
braking_effect --texture
|
texture = braking_effect
|
||||||
)
|
})
|
||||||
turning_factor = handling.initial
|
turning_factor = handling.initial
|
||||||
else
|
else
|
||||||
timer2 = 0
|
|
||||||
turning_factor = handling.braking
|
turning_factor = handling.braking
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -333,11 +329,11 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
|
|
||||||
--apply water effects
|
--apply water effects
|
||||||
if is_watercraft and entity.in_water then
|
if is_watercraft and in_water() then
|
||||||
is_watercraft_and_in_water()
|
is_watercraft_and_in_water()
|
||||||
elseif is_watercraft and not entity.on_water then
|
elseif is_watercraft and not entity.on_water then
|
||||||
is_watercraft_and_not_on_water()
|
is_watercraft_and_not_on_water()
|
||||||
elseif (entity.on_water or entity.in_water) and not is_watercraft then
|
elseif entity.on_water and not is_watercraft then
|
||||||
not_watercraft_and_on_or_in_water()
|
not_watercraft_and_on_or_in_water()
|
||||||
|
|
||||||
--brakes
|
--brakes
|
||||||
|
@ -348,22 +344,23 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
||||||
entity.object:set_velocity({x=velo2.x*(0.95), y=velo.y, z=velo2.z*(0.95)})
|
entity.object:set_velocity({x=velo2.x*(0.95), y=velo.y, z=velo2.z*(0.95)})
|
||||||
minetest.add_particlespawner(
|
minetest.add_particlespawner({
|
||||||
4, --amount
|
amount = 4,
|
||||||
0.5, --time
|
time = 0.5,
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --minpos
|
minpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --maxpos
|
maxpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=0, y=0.1, z=0}, --minvel
|
minvel = {x=0, y=0.1, z=0},
|
||||||
{x=-velo2.x, y=0.4, z=-velo2.z}, --maxvel
|
maxvel = {x=-velo2.x, y=0.4, z=-velo2.z},
|
||||||
{x=-0,y=-0,z=-0}, --minacc
|
minacc = {x=-0,y=-0,z=-0},
|
||||||
{x=0,y=0,z=0}, --maxacc
|
maxacc = {x=0,y=0,z=0},
|
||||||
0.5, --minexptime
|
minexptime = 0.5,
|
||||||
1, --maxexptime
|
maxexptime = 1,
|
||||||
10, --minsize
|
minsize = 10,
|
||||||
15, --maxsize
|
maxsize = 15,
|
||||||
false, --collisiondetection
|
collisiondetection = false,
|
||||||
braking_effect --texture
|
texture = braking_effect
|
||||||
)
|
})
|
||||||
|
|
||||||
if vtimer >= 0.5 then
|
if vtimer >= 0.5 then
|
||||||
vtimer = vtimer-vtimer/10
|
vtimer = vtimer-vtimer/10
|
||||||
end
|
end
|
||||||
|
@ -376,29 +373,29 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
z=dir.z*(speed*0.2)*math.log(vtimer+0.5)+8*dir.z})
|
z=dir.z*(speed*0.2)*math.log(vtimer+0.5)+8*dir.z})
|
||||||
if boost_effect ~= nil then
|
if boost_effect ~= nil then
|
||||||
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
||||||
minetest.add_particlespawner(
|
minetest.add_particlespawner({
|
||||||
10, --amount
|
amount = 10,
|
||||||
0.25, --time
|
time = 0.25,
|
||||||
{x=effect_pos.x, y=effect_pos.y+0.2, z=effect_pos.z}, --minpos
|
minpos = {x=effect_pos.x, y=effect_pos.y+0.2, z=effect_pos.z},
|
||||||
{x=effect_pos.x, y=effect_pos.y+0.2, z=effect_pos.z}, --maxpos
|
maxpos = {x=effect_pos.x, y=effect_pos.y+0.2, z=effect_pos.z},
|
||||||
{x=-velo.x, y=-velo.y, z=-velo.z}, --minvel
|
mixvel = {x=-velo.x, y=-velo.y, z=-velo.z},
|
||||||
{x=-velo.x, y=-velo.y, z=-velo.z}, --maxvel
|
maxvel = {x=-velo.x, y=-velo.y, z=-velo.z},
|
||||||
{x=-0,y=-0,z=-0}, --minacc
|
minacc = {x=-0,y=-0,z=-0},
|
||||||
{x=0,y=1,z=0}, --maxacc
|
maxacc = {x=0,y=1,z=0},
|
||||||
0.02, --minexptime
|
minexptime = 0.02,
|
||||||
0.02, --maxexptime
|
maxexptime = 0.02,
|
||||||
20, --minsize
|
minsize = 20,
|
||||||
20, --maxsize
|
maxsize = 20,
|
||||||
false, --collisiondetection
|
collisiondetection = false,
|
||||||
boost_effect --texture
|
texture = boost_effect
|
||||||
)
|
})
|
||||||
end
|
end
|
||||||
minetest.after(boost_duration, function()
|
minetest.after(boost_duration, function()
|
||||||
entity.boost = false
|
entity.boost = false
|
||||||
end)
|
end)
|
||||||
--animation
|
--animation
|
||||||
if moving_anim ~= nil and not entity.moving and not hovering then
|
if moving_anim ~= nil and not entity.moving and not hovering then
|
||||||
entity.object:set_animation(move_anim, anim_speed, 0)
|
entity.object:set_animation(moving_anim, anim_speed, 0)
|
||||||
entity.moving = true
|
entity.moving = true
|
||||||
end
|
end
|
||||||
--rise
|
--rise
|
||||||
|
@ -445,22 +442,22 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
||||||
entity.object:set_velocity({x=velo2.x*(0.95), y=velo.y, z=velo2.z*(0.95)})
|
entity.object:set_velocity({x=velo2.x*(0.95), y=velo.y, z=velo2.z*(0.95)})
|
||||||
minetest.add_particlespawner(
|
minetest.add_particlespawner({
|
||||||
4, --amount
|
amount = 4,
|
||||||
0.5, --time
|
time = 0.5,
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --minpos
|
minpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --maxpos
|
maxpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=0, y=0.1, z=0}, --minvel
|
minvel = {x=0, y=0.1, z=0},
|
||||||
{x=-velo2.x, y=0.4, z=-velo2.z}, --maxvel
|
maxvel = {x=-velo2.x, y=0.4, z=-velo2.z},
|
||||||
{x=-0,y=-0,z=-0}, --minacc
|
minacc = {x=-0,y=-0,z=-0},
|
||||||
{x=0,y=0,z=0}, --maxacc
|
maxacc = {x=0,y=0,z=0},
|
||||||
0.5, --minexptime
|
minexptime = 0.5,
|
||||||
1, --maxexptime
|
maxexptime = 1,
|
||||||
10, --minsize
|
minsize = 10,
|
||||||
15, --maxsize
|
maxsize = 15,
|
||||||
false, --collisiondetection
|
collisiondetection = false,
|
||||||
braking_effect --texture
|
texture = braking_effect
|
||||||
)
|
})
|
||||||
if vtimer >= 0.5 then
|
if vtimer >= 0.5 then
|
||||||
vtimer = vtimer-vtimer/10
|
vtimer = vtimer-vtimer/10
|
||||||
end
|
end
|
||||||
|
@ -478,22 +475,22 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
end
|
end
|
||||||
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
local effect_pos = {x=pos.x-dir.x*2, y=pos.y, z=pos.z-dir.z*2}
|
||||||
entity.object:set_velocity({x=velo2.x*(0.95), y=velo.y, z=velo2.z*(0.95)})
|
entity.object:set_velocity({x=velo2.x*(0.95), y=velo.y, z=velo2.z*(0.95)})
|
||||||
minetest.add_particlespawner(
|
minetest.add_particlespawner({
|
||||||
4, --amount
|
amount = 4,
|
||||||
0.5, --time
|
time = 0.5,
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --minpos
|
minpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=effect_pos.x, y=effect_pos.y, z=effect_pos.z}, --maxpos
|
maxpos = {x=effect_pos.x, y=effect_pos.y, z=effect_pos.z},
|
||||||
{x=0, y=0.1, z=0}, --minvel
|
minvel = {x=0, y=0.1, z=0},
|
||||||
{x=-velo2.x, y=0.4, z=-velo2.z}, --maxvel
|
maxvel = {x=-velo2.x, y=0.4, z=-velo2.z},
|
||||||
{x=-0,y=-0,z=-0}, --minacc
|
minacc = {x=-0,y=-0,z=-0},
|
||||||
{x=0,y=0,z=0}, --maxacc
|
maxacc = {x=0,y=0,z=0},
|
||||||
0.5, --minexptime
|
minexptime = 0.5,
|
||||||
1, --maxexptime
|
maxexptime = 1,
|
||||||
10, --minsize
|
minsize = 10,
|
||||||
15, --maxsize
|
maxsize = 15,
|
||||||
false, --collisiondetection
|
collisiondetection = false,
|
||||||
braking_effect --texture
|
texture = braking_effect
|
||||||
)
|
})
|
||||||
if vtimer >= 0.5 then
|
if vtimer >= 0.5 then
|
||||||
vtimer = vtimer-vtimer/10
|
vtimer = vtimer-vtimer/10
|
||||||
end
|
end
|
||||||
|
@ -518,7 +515,7 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
--shoot weapons
|
--shoot weapons
|
||||||
if ctrl.sneak and shoots and entity.loaded then
|
if ctrl.sneak and shoots and entity.loaded then
|
||||||
if inv:contains_item("main", arrow.."_item") or infinite_arrow then
|
if inv:contains_item("main", arrow.."_item") or infinite_arrow then
|
||||||
if not creative_mode then inv:remove_item("main", arrow.."_item") end
|
if not minetest.is_creative_enabled(entity.driver:get_player_name()) then inv:remove_item("main", arrow.."_item") end
|
||||||
entity.loaded = false
|
entity.loaded = false
|
||||||
local obj = minetest.add_entity({x=pos.x+0+dir.x*2,y=pos.y+shoot_y+dir.y,z=pos.z+0+dir.z*2}, arrow)
|
local obj = minetest.add_entity({x=pos.x+0+dir.x*2,y=pos.y+shoot_y+dir.y,z=pos.z+0+dir.z*2}, arrow)
|
||||||
local vec = {x=dir.x*14,y=dir.y*14+shoot_angle,z=dir.z*14}
|
local vec = {x=dir.x*14,y=dir.y*14+shoot_angle,z=dir.z*14}
|
||||||
|
@ -542,7 +539,7 @@ function vehicles.object_drive(entity, dtime, def)
|
||||||
|
|
||||||
if ctrl.aux1 and shoots2 and entity.loaded2 then
|
if ctrl.aux1 and shoots2 and entity.loaded2 then
|
||||||
if inv:contains_item("main", arrow2.."_item") or infinite_arrow2 then
|
if inv:contains_item("main", arrow2.."_item") or infinite_arrow2 then
|
||||||
if not creative_mode then inv:remove_item("main", arrow2.."_item") end
|
if not minetest.is_creative_enabled(entity.driver:get_player_name()) then inv:remove_item("main", arrow2.."_item") end
|
||||||
entity.loaded2 = false
|
entity.loaded2 = false
|
||||||
local obj = minetest.add_entity({x=pos.x+0+dir.x*2,y=pos.y+shoot_y2+dir.y,z=pos.z+0+dir.z*2}, arrow2)
|
local obj = minetest.add_entity({x=pos.x+0+dir.x*2,y=pos.y+shoot_y2+dir.y,z=pos.z+0+dir.z*2}, arrow2)
|
||||||
local vec = {x=dir.x*20,y=dir.y*20+shoot_angle,z=dir.z*20}
|
local vec = {x=dir.x*20,y=dir.y*20+shoot_angle,z=dir.z*20}
|
||||||
|
@ -661,10 +658,8 @@ function vehicles.object_glide(self, dtime, speed, decell, gravity, moving_anim,
|
||||||
for dy=-1,1 do
|
for dy=-1,1 do
|
||||||
for dz=-1,1 do
|
for dz=-1,1 do
|
||||||
local p = {x=pos.x+dx, y=pos.y-1, z=pos.z+dz}
|
local p = {x=pos.x+dx, y=pos.y-1, z=pos.z+dz}
|
||||||
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
||||||
local n = minetest.get_node(p).name
|
local n = minetest.get_node(p).name
|
||||||
if n ~= "massdestruct:parachute" and n ~= "air" then
|
if n ~= "massdestruct:parachute" and n ~= "air" then
|
||||||
local pos = self.object:get_pos()
|
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -681,9 +676,7 @@ function vehicles.register_spawner(vehicle, desc, texture, is_boat)
|
||||||
liquids_pointable = is_boat,
|
liquids_pointable = is_boat,
|
||||||
wield_scale = {x = 1.5, y = 1.5, z = 1},
|
wield_scale = {x = 1.5, y = 1.5, z = 1},
|
||||||
on_place = function(item, placer, pointed_thing)
|
on_place = function(item, placer, pointed_thing)
|
||||||
local dir = placer:get_look_dir()
|
local creative_mode = minetest.is_creative_enabled(placer:get_player_name())
|
||||||
local playerpos = placer:get_pos()
|
|
||||||
local creative_mode = creative and creative.is_enabled_for and creative.is_enabled_for(placer:get_player_name())
|
|
||||||
if pointed_thing.type == "node" and not is_boat then
|
if pointed_thing.type == "node" and not is_boat then
|
||||||
local obj = minetest.add_entity(pointed_thing.above, vehicle)
|
local obj = minetest.add_entity(pointed_thing.above, vehicle)
|
||||||
local object = obj:get_luaentity()
|
local object = obj:get_luaentity()
|
||||||
|
@ -753,7 +746,7 @@ function vehicles.on_punch(self, puncher)
|
||||||
vehicles.explodinate(self, 5)
|
vehicles.explodinate(self, 5)
|
||||||
end
|
end
|
||||||
if not self.driver then return end
|
if not self.driver then return end
|
||||||
local creative_mode = creative and creative.is_enabled_for and creative.is_enabled_for(self.driver:get_player_name())
|
local creative_mode = minetest.is_creative_enabled(self.driver:get_player_name())
|
||||||
if self.driver == puncher and (hp == self.hp_max-5 or hp == self.hp_max or creative_mode) then
|
if self.driver == puncher and (hp == self.hp_max-5 or hp == self.hp_max or creative_mode) then
|
||||||
local name = self.object:get_luaentity().name
|
local name = self.object:get_luaentity().name
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
|
|
8
init.lua
8
init.lua
|
@ -38,7 +38,6 @@ local function missile_bullet_hit_check(self, obj, pos)
|
||||||
for dy=-1,1 do
|
for dy=-1,1 do
|
||||||
for dz=-1,1 do
|
for dz=-1,1 do
|
||||||
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
||||||
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
||||||
local n = minetest.env:get_node(p)
|
local n = minetest.env:get_node(p)
|
||||||
if n.name ~= "air" and n.drawtype ~= "airlike" then
|
if n.name ~= "air" and n.drawtype ~= "airlike" then
|
||||||
return {}
|
return {}
|
||||||
|
@ -193,7 +192,6 @@ minetest.register_entity("vehicles:bullet", {
|
||||||
damage = 2,
|
damage = 2,
|
||||||
collisionbox = {0, 0, 0, 0, 0, 0},
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
||||||
on_activate = function(self)
|
on_activate = function(self)
|
||||||
local pos = self.object:get_pos()
|
|
||||||
minetest.sound_play("shot",
|
minetest.sound_play("shot",
|
||||||
{gain = 0.4, max_hear_distance = 3, loop = false})
|
{gain = 0.4, max_hear_distance = 3, loop = false})
|
||||||
end,
|
end,
|
||||||
|
@ -1706,7 +1704,6 @@ minetest.register_tool("vehicles:backpack", {
|
||||||
on_use = function(item, placer, pointed_thing)
|
on_use = function(item, placer, pointed_thing)
|
||||||
local dir = placer:get_look_dir()
|
local dir = placer:get_look_dir()
|
||||||
local playerpos = placer:get_pos()
|
local playerpos = placer:get_pos()
|
||||||
local pname = placer:get_player_name()
|
|
||||||
local obj = minetest.env:add_entity({x=playerpos.x+0+dir.x,y=playerpos.y+1+dir.y,z=playerpos.z+0+dir.z}, "vehicles:parachute")
|
local obj = minetest.env:add_entity({x=playerpos.x+0+dir.x,y=playerpos.y+1+dir.y,z=playerpos.z+0+dir.z}, "vehicles:parachute")
|
||||||
local entity = obj:get_luaentity()
|
local entity = obj:get_luaentity()
|
||||||
if obj.driver and placer == obj.driver then
|
if obj.driver and placer == obj.driver then
|
||||||
|
@ -1735,8 +1732,6 @@ minetest.register_entity("vehicles:wing_glider", {
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
if self.driver then
|
if self.driver then
|
||||||
local dir = self.driver:get_look_dir()
|
local dir = self.driver:get_look_dir()
|
||||||
local velo = self.object:get_velocity()
|
|
||||||
local speed = math.sqrt(math.pow(velo.x, 2)+math.pow(velo.z, 2))
|
|
||||||
local vec = {x=dir.x*16,y=dir.y*16+1,z=dir.z*16}
|
local vec = {x=dir.x*16,y=dir.y*16+1,z=dir.z*16}
|
||||||
local yaw = self.driver:get_look_horizontal()
|
local yaw = self.driver:get_look_horizontal()
|
||||||
self.object:set_yaw(yaw+math.pi)
|
self.object:set_yaw(yaw+math.pi)
|
||||||
|
@ -1803,7 +1798,6 @@ minetest.register_tool("vehicles:wings", {
|
||||||
local entity = obj:get_luaentity()
|
local entity = obj:get_luaentity()
|
||||||
placer:set_attach(entity.object, "", {x=0,y=-5,z=0}, {x=0,y=-3,z=0})
|
placer:set_attach(entity.object, "", {x=0,y=-5,z=0}, {x=0,y=-3,z=0})
|
||||||
entity.driver = placer
|
entity.driver = placer
|
||||||
local dir = placer:get_look_dir()
|
|
||||||
placer:set_properties({
|
placer:set_properties({
|
||||||
visual_size = {x=1, y=-1},
|
visual_size = {x=1, y=-1},
|
||||||
})
|
})
|
||||||
|
@ -1831,7 +1825,7 @@ minetest.register_tool("vehicles:rc", {
|
||||||
local pname = placer:get_player_name()
|
local pname = placer:get_player_name()
|
||||||
local inv = minetest.get_inventory({type="player", name=pname})
|
local inv = minetest.get_inventory({type="player", name=pname})
|
||||||
if inv:contains_item("main", "vehicles:missile_2_item") then
|
if inv:contains_item("main", "vehicles:missile_2_item") then
|
||||||
local creative_mode = creative and creative.is_enabled_for and creative.is_enabled_for(placer:get_player_name())
|
local creative_mode = minetest.is_creative_enabled(placer:get_player_name())
|
||||||
if not creative_mode then inv:remove_item("main", "vehicles:missile_2_item") end
|
if not creative_mode then inv:remove_item("main", "vehicles:missile_2_item") end
|
||||||
local obj = minetest.env:add_entity({x=playerpos.x+0+dir.x,y=playerpos.y+1+dir.y,z=playerpos.z+0+dir.z}, "vehicles:missile")
|
local obj = minetest.env:add_entity({x=playerpos.x+0+dir.x,y=playerpos.y+1+dir.y,z=playerpos.z+0+dir.z}, "vehicles:missile")
|
||||||
local object = obj:get_luaentity()
|
local object = obj:get_luaentity()
|
||||||
|
|
Loading…
Reference in New Issue