282 lines
7.3 KiB
Lua
Executable file
282 lines
7.3 KiB
Lua
Executable file
vehicle_mash = {
|
|
S = minetest.get_translator(minetest.get_current_modname())
|
|
}
|
|
|
|
-- Fix `player_api` eye height model if desired
|
|
if minetest.settings:get_bool("vehicle_mash.player_api_fix") == true or minetest.settings:get_bool("vehicle_mash.player_api_fix") == nil
|
|
and player_api.registered_models["character.b3d"] then
|
|
|
|
player_api.registered_models["character.b3d"].animations.sit.eye_height = 1.47
|
|
end
|
|
|
|
-- get modpath
|
|
local mpath = minetest.get_modpath("vehicle_mash")
|
|
local craft_check = minetest.settings:get_bool("vehicle_mash.enable_crafts")
|
|
|
|
-- Do not change value at settingtypes.txt
|
|
-- Only change value at minetest.conf and Minetest Settings tab
|
|
local api_check = minetest.settings:get_bool("vehicle_mash.api_mode")
|
|
|
|
-- Set to default (false) if nil, because all options are normally
|
|
-- nil. This will also help with the boolean checks below.
|
|
if api_check == nil then
|
|
minetest.settings:set_bool("vehicle_mash.api_mode", false)
|
|
end
|
|
|
|
if api_check then -- Now we can safely check if this option is enabled
|
|
-- load framework
|
|
dofile(mpath .. "/framework.lua")
|
|
|
|
-- load crafts
|
|
if craft_check or craft_check == nil then
|
|
dofile(mpath .. "/crafts.lua")
|
|
end
|
|
else
|
|
-- load framework
|
|
dofile(mpath .. "/framework.lua")
|
|
|
|
-- load crafts
|
|
if craft_check or craft_check == nil then
|
|
dofile(mpath .. "/crafts.lua")
|
|
end
|
|
|
|
-- ***********************
|
|
-- load vehicles down here
|
|
-- ***********************
|
|
|
|
-- ** CAR01s **
|
|
------------------------------------------------------------------------------
|
|
-- create CAR01 common def
|
|
local car01_def = {
|
|
-- adjust to change how vehicle reacts while driving
|
|
terrain_type = 1, -- 0 = air, 1 = land, 2 = liquid, 3 = land + liquid
|
|
max_speed_forward = 10,
|
|
max_speed_reverse = 7,
|
|
accel = 2,
|
|
braking = 4,
|
|
turn_speed = 2,
|
|
stepheight = 1.1,
|
|
-- model specific stuff
|
|
visual = "mesh",
|
|
mesh = "car.x",
|
|
visual_size = {x=1, y=1},
|
|
wield_scale = vector.new(1,1,1),
|
|
collisionbox = {-0.6, -0.05, -0.6, 0.6, 1, 0.6},
|
|
onplace_position_adj = -0.45,
|
|
-- player specific stuff
|
|
player_rotation = vector.new(0,90,0),
|
|
driver_attach_at = vector.new(3.5,3.7,3.5),
|
|
driver_eye_offset = vector.new(-4,0,0),
|
|
number_of_passengers = 3,
|
|
|
|
passengers = {
|
|
{
|
|
attach_at = vector.new(3.5,3.7,-3.5),
|
|
eye_offset = vector.new(4,0,0),
|
|
},
|
|
{
|
|
attach_at = vector.new(-4,3.7,3.5),
|
|
eye_offset = vector.new(-4,3,0),
|
|
},
|
|
{
|
|
attach_at = vector.new(-4,3.7,-3.5),
|
|
eye_offset = vector.new(4,3,0),
|
|
},
|
|
},
|
|
|
|
-- HP/Armor stuff. Uncomment to enable.
|
|
-- min_hp = 10,
|
|
-- max_hp = 35,
|
|
-- armor = 25,
|
|
|
|
-- drop and recipe
|
|
drop_on_destroy = {"vehicle_mash:tire 2", "vehicle_mash:windshield",
|
|
"vehicle_mash:battery", "vehicle_mash:motor"},
|
|
recipe = nil
|
|
}
|
|
|
|
local car01_names = {
|
|
"black", "blue", "brown", "cyan",
|
|
"dark_green", "dark_grey", "green",
|
|
"grey", "magenta", "orange",
|
|
"pink", "red", "violet",
|
|
"white", "yellow", "hot_rod",
|
|
"nyan_ride", "oerkki_bliss", "road_master",
|
|
}
|
|
|
|
-- Load all CAR01's cars if enabled
|
|
for _, name in ipairs(car01_names) do
|
|
local check_enabled = minetest.settings:get_bool("vehicle_mash.enable_" .. name .. "_car")
|
|
if check_enabled or check_enabled == nil then
|
|
loadfile(mpath .. "/car01s/" .. name .. ".lua")(table.copy(car01_def))
|
|
end
|
|
end
|
|
|
|
-- ** MeseCars **
|
|
------------------------------------------------------------------------------
|
|
-- create Mesecar common def
|
|
local mesecar_def = {
|
|
-- adjust to change how vehicle reacts while driving
|
|
terrain_type = 1,
|
|
max_speed_forward = 10,
|
|
max_speed_reverse = 7,
|
|
accel = 3,
|
|
braking = 6,
|
|
turn_speed = 4,
|
|
stepheight = 0.6,
|
|
-- model specific stuff
|
|
visual = "cube",
|
|
mesh = "",
|
|
visual_size = {x=1.5, y=1.5},
|
|
wield_scale = vector.new(1,1,1),
|
|
collisionbox = {-0.75, -0.75, -0.75, 0.75, 0.75, 0.75},
|
|
onplace_position_adj = 0.25,
|
|
-- player specific stuff
|
|
player_rotation = vector.new(0,0,0),
|
|
driver_attach_at = vector.new(0,0,-2.0),
|
|
driver_eye_offset = vector.new(0,0,0),
|
|
number_of_passengers = 0,
|
|
|
|
passengers = {
|
|
{
|
|
attach_at = vector.new(0,0,0),
|
|
eye_offset = vector.new(0,0,0),
|
|
},
|
|
},
|
|
|
|
-- HP/Armor stuff. Uncomment to enable.
|
|
-- min_hp = 10,
|
|
-- max_hp = 35,
|
|
-- armor = 25,
|
|
|
|
-- drop and recipe
|
|
drop_on_destroy = {"vehicle_mash:motor", "vehicle_mash:battery"},
|
|
recipe = nil
|
|
}
|
|
|
|
local mesecar_names = {
|
|
"mese_blue",
|
|
"mese_pink",
|
|
"mese_purple",
|
|
"mese_yellow",
|
|
}
|
|
|
|
-- Load all Mese Cars if enabled
|
|
for _, name in ipairs(mesecar_names) do
|
|
local check_enabled = minetest.settings:get_bool("vehicle_mash.enable_" .. name .. "_car")
|
|
if check_enabled or check_enabled == nil then
|
|
loadfile(mpath .. "/mesecars/" .. name .. ".lua")(table.copy(mesecar_def))
|
|
end
|
|
end
|
|
|
|
-- ** Boats **
|
|
------------------------------------------------------------------------------
|
|
-- create boats common def
|
|
local boat_def = {
|
|
-- adjust to change how vehicle reacts while driving
|
|
terrain_type = 2,
|
|
max_speed_forward = 3,
|
|
max_speed_reverse = 3,
|
|
accel = 3,
|
|
braking = 3,
|
|
turn_speed = 3,
|
|
stepheight = 0,
|
|
-- model specific stuff
|
|
visual = "mesh",
|
|
visual_size = {x=1, y=1},
|
|
wield_scale = vector.new(1,1,1),
|
|
collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5},
|
|
onplace_position_adj = 0,
|
|
textures = {"default_wood.png"},
|
|
-- player specific stuff
|
|
player_rotation = vector.new(0,0,0),
|
|
driver_attach_at = vector.new(0.5,1,-3),
|
|
driver_eye_offset = vector.new(0,0,0),
|
|
number_of_passengers = 0,
|
|
passengers = {
|
|
{
|
|
attach_at = vector.new(0,0,0),
|
|
eye_offset = vector.new(0,0,0),
|
|
},
|
|
},
|
|
|
|
-- HP/Armor stuff. Uncomment to enable.
|
|
-- min_hp = 10,
|
|
-- max_hp = 35,
|
|
-- armor = 25,
|
|
}
|
|
|
|
local boat_names = {
|
|
"boat",
|
|
"rowboat",
|
|
}
|
|
|
|
-- Load boats if enabled
|
|
for _, name in ipairs(boat_names) do
|
|
local check_enabled = minetest.settings:get_bool("vehicle_mash.enable_" .. name)
|
|
if check_enabled or check_enabled == nil then
|
|
loadfile(mpath .. "/boats/" .. name .. ".lua")(table.copy(boat_def))
|
|
end
|
|
end
|
|
|
|
-- ** Hovercraft **
|
|
------------------------------------------------------------------------------
|
|
-- create hovercraft common def
|
|
local hover_def = {
|
|
-- adjust to change how vehicle reacts while driving
|
|
terrain_type = 3,
|
|
max_speed_forward = 10,
|
|
max_speed_reverse = 0,
|
|
accel = 3,
|
|
braking = 1,
|
|
turn_speed = 2,
|
|
stepheight = 1.1,
|
|
-- model specific stuff
|
|
visual = "mesh",
|
|
mesh = "hovercraft.x",
|
|
visual_size = {x=1, y=1},
|
|
wield_scale = vector.new(1,1,1),
|
|
collisionbox = {-0.8, -0.25, -0.8, 0.8, 1.2, 0.8},
|
|
onplace_position_adj = -0.25,
|
|
-- player specific stuff
|
|
player_rotation = vector.new(0,90,0),
|
|
driver_attach_at = vector.new(-2,6.3,0),
|
|
driver_eye_offset = vector.new(0,0,0),
|
|
number_of_passengers = 0,
|
|
|
|
passengers = {
|
|
{
|
|
attach_at = vector.new(0,0,0),
|
|
eye_offset = vector.new(0,0,0),
|
|
},
|
|
},
|
|
|
|
-- HP/Armor stuff. Uncomment to enable.
|
|
-- min_hp = 10,
|
|
-- max_hp = 35,
|
|
-- armor = 25,
|
|
|
|
-- recipe
|
|
recipe = nil
|
|
}
|
|
|
|
local hover_names = {
|
|
"hover_blue",
|
|
"hover_green",
|
|
"hover_red",
|
|
"hover_yellow",
|
|
}
|
|
|
|
-- Load hovercrafts if enabled
|
|
for _, name in ipairs(hover_names) do
|
|
local check_enabled = minetest.settings:get_bool("vehicle_mash.enable_" .. name)
|
|
if check_enabled or check_enabled == nil then
|
|
loadfile(mpath .. "/hovers/" .. name .. ".lua")(table.copy(hover_def))
|
|
end
|
|
end
|
|
end
|
|
|
|
-- free unneeded global(s)
|
|
core.after(10, function()
|
|
vehicle_mash.register_vehicle = nil
|
|
end)
|