steampunk_blimp/init.lua

238 lines
8.2 KiB
Lua
Executable File

steampunk_blimp={}
steampunk_blimp.gravity = tonumber(minetest.settings:get("movement_gravity")) or 9.8
steampunk_blimp.trunk_slots = 50
steampunk_blimp.fuel = {['default:coal_lump'] = {amount=1},['default:coalblock'] = {amount=10}}
steampunk_blimp.water = {['default:water_source'] = {amount=1},['default:river_water_source'] = {amount=1}, ['bucket:bucket_water'] = {amount=1}, ['bucket:bucket_river_water'] = {amount=1}} --bucket:bucket_empty
steampunk_blimp.ideal_step = 0.02
steampunk_blimp.rudder_limit = 30
steampunk_blimp.iddle_rotation = 0
steampunk_blimp.max_engine_acc = 3
steampunk_blimp.max_seats = 5
steampunk_blimp.pilot_base_pos = {x=0.0,y=20.821,z=-30}
steampunk_blimp.passenger_pos = {
[1] = {x=0.0,y=0,z=-15},
[2] = {x=-11,y=0,z=-12},
[3] = {x=11,y=0,z=-12},
[4] = {x=-11,y=0,z=14},
[5] = {x=11,y=0,z=14},
}
steampunk_blimp.canvas_texture = "wool_white.png^[colorize:#f4e7c1:128"
steampunk_blimp.metal_texture = "default_clay.png^[colorize:#a3acac:128"
steampunk_blimp.black_texture = "default_clay.png^[colorize:#030303:200"
steampunk_blimp.wood_texture = "default_clay.png^[colorize:#3a270d:230"
steampunk_blimp.forno_texture = steampunk_blimp.black_texture.."^[mask:steampunk_blimp_forno_mask.png"
steampunk_blimp.rotor_texture = "("..steampunk_blimp.canvas_texture.."^[mask:steampunk_blimp_rotor_mask2.png)^(default_wood.png^[mask:steampunk_blimp_rotor_mask.png)"
steampunk_blimp.textures = {
steampunk_blimp.black_texture, --alimentacao balao
"default_wood.png", --asa
steampunk_blimp.canvas_texture, --asa
steampunk_blimp.canvas_texture, --balao
"wool_yellow.png", --faixas brancas nariz
"wool_blue.png", --faixas azuis nariz
steampunk_blimp.metal_texture, --pontas do balão
steampunk_blimp.black_texture, --caldeira
steampunk_blimp.forno_texture, --caldeira
"default_junglewood.png", --casco
steampunk_blimp.black_texture, -- corpo da bussola
steampunk_blimp.metal_texture, -- indicador bussola
steampunk_blimp.canvas_texture, --leme
"default_junglewood.png", --leme
steampunk_blimp.wood_texture, --timao
"steampunk_blimp_compass.png",
"default_ladder_wood.png", --escada
"default_wood.png", --mureta
steampunk_blimp.wood_texture, --mureta
steampunk_blimp.black_texture, --nacele rotores
steampunk_blimp.wood_texture, --quilha
"default_wood.png", --rotores
steampunk_blimp.rotor_texture, --"steampunk_blimp_rotor.png", --rotores
steampunk_blimp.black_texture, --suportes rotores
"default_junglewood.png", --suporte timao
"steampunk_blimp_rope.png", --cordas
"wool_blue.png", --det azul
"wool_yellow.png", --det branco
steampunk_blimp.wood_texture, --fixacao cordas
"steampunk_blimp_alpha_logo.png", --logo
--"steampunk_blimp_metal.png",
--"steampunk_blimp_red.png",
}
steampunk_blimp.colors ={
black='black',
blue='blue',
brown='brown',
cyan='cyan',
dark_green='dark_green',
dark_grey='dark_grey',
green='green',
grey='grey',
magenta='magenta',
orange='orange',
pink='pink',
red='red',
violet='violet',
white='white',
yellow='yellow',
}
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "utilities.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "control.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "fuel_management.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "engine_management.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "custom_physics.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "hud.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "entities.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "forms.lua")
dofile(minetest.get_modpath("steampunk_blimp") .. DIR_DELIM .. "manual.lua")
--
-- helpers and co.
--
function steampunk_blimp.get_hipotenuse_value(point1, point2)
return math.sqrt((point1.x - point2.x) ^ 2 + (point1.y - point2.y) ^ 2 + (point1.z - point2.z) ^ 2)
end
function steampunk_blimp.dot(v1,v2)
return v1.x*v2.x+v1.y*v2.y+v1.z*v2.z
end
function steampunk_blimp.sign(n)
return n>=0 and 1 or -1
end
function steampunk_blimp.minmax(v,m)
return math.min(math.abs(v),m)*steampunk_blimp.sign(v)
end
-----------
-- items
-----------
-- blimp
minetest.register_craftitem("steampunk_blimp:blimp", {
description = "Steampunk Blimp",
inventory_image = "steampunk_blimp_icon.png",
liquids_pointable = true,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return
end
local pointed_pos = pointed_thing.under
--local node_below = minetest.get_node(pointed_pos).name
--local nodedef = minetest.registered_nodes[node_below]
pointed_pos.y=pointed_pos.y+3
local blimp = minetest.add_entity(pointed_pos, "steampunk_blimp:blimp")
if blimp and placer then
local ent = blimp:get_luaentity()
ent._passengers = steampunk_blimp.copy_vector({[1]=nil, [2]=nil, [3]=nil, [4]=nil, [5]=nil,})
--minetest.chat_send_all('passengers: '.. dump(ent._passengers))
local owner = placer:get_player_name()
ent.owner = owner
blimp:set_yaw(placer:get_look_horizontal())
itemstack:take_item()
airutils.create_inventory(ent, steampunk_blimp.trunk_slots, owner)
local properties = ent.object:get_properties()
properties.infotext = owner .. " nice blimp"
blimp:set_properties(properties)
--steampunk_blimp.attach_pax(ent, placer)
end
return itemstack
end,
})
--
-- crafting
--
if not minetest.settings:get_bool('steampunk_blimp.disable_craftitems') then
minetest.register_craft({
output = "steampunk_blimp:cylinder_part",
recipe = {
{"default:stick", "wool:white", "default:stick"},
{"wool:white", "group:wood", "wool:white"},
{"default:stick", "wool:white", "default:stick"},
}
})
minetest.register_craft({
output = "steampunk_blimp:cylinder",
recipe = {
{"steampunk_blimp:cylinder_part", "steampunk_blimp:cylinder_part", "steampunk_blimp:cylinder_part"},
}
})
minetest.register_craft({
output = "steampunk_blimp:rotor",
recipe = {
{"wool:white", "default:stick", ""},
{"wool:white", "default:stick", "default:steelblock"},
{"wool:white", "default:stick", ""},
}
})
minetest.register_craft({
output = "steampunk_blimp:boiler",
recipe = {
{"default:steel_ingot","default:steel_ingot"},
{"default:steelblock","default:steel_ingot",},
{"default:steelblock","default:steel_ingot"},
}
})
minetest.register_craft({
output = "steampunk_blimp:boat",
recipe = {
{"group:wood", "group:wood", "steampunk_blimp:rotor"},
{"group:wood", "steampunk_blimp:boiler", "group:wood"},
{"group:wood", "group:wood", "steampunk_blimp:rotor"},
}
})
minetest.register_craft({
output = "steampunk_blimp:blimp",
recipe = {
{"steampunk_blimp:cylinder",},
{"steampunk_blimp:boat",},
}
})
-- cylinder section
minetest.register_craftitem("steampunk_blimp:cylinder_part",{
description = "steampunk_blimp cylinder section",
inventory_image = "steampunk_blimp_cylinder_part.png",
})
-- cylinder
minetest.register_craftitem("steampunk_blimp:cylinder",{
description = "steampunk_blimp cylinder",
inventory_image = "steampunk_blimp_cylinder.png",
})
-- boiler
minetest.register_craftitem("steampunk_blimp:boiler",{
description = "steampunk_blimp boiler",
inventory_image = "steampunk_blimp_boiler.png",
})
-- boiler
minetest.register_craftitem("steampunk_blimp:rotor",{
description = "steampunk_blimp rotor",
inventory_image = "steampunk_blimp_rotor.png",
})
-- fuselage
minetest.register_craftitem("steampunk_blimp:boat",{
description = "steampunk_blimp fuselage",
inventory_image = "steampunk_blimp_boat.png",
})
end