improved ADF messages and added first support for mineclone

This commit is contained in:
Alexsandro Percy 2023-08-08 20:12:06 -03:00
parent 877f922145
commit f058f30be2
4 changed files with 99 additions and 45 deletions

View file

@ -40,7 +40,7 @@ dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "light.lua")
dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "physics_lib.lua")
dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "lib_planes" .. DIR_DELIM .. "init.lua")
if player_api and not minetest.settings:get_bool('airutils.disable_uniforms') then
if minetest.get_modpath("player_api") and not minetest.settings:get_bool('airutils.disable_uniforms') then
dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "pilot_skin_manager.lua")
end
@ -122,6 +122,7 @@ function airutils.detect_player_api(player)
local player_proterties = player:get_properties()
--local mesh = "character.b3d"
--if player_proterties.mesh == mesh then
if minetest.get_modpath("player_api") then
local models = player_api.registered_models
local character = models[player_proterties.mesh]
--minetest.chat_send_all(dump(character));
@ -140,7 +141,7 @@ function airutils.detect_player_api(player)
return 0
end
end
--end
end
return 0
end

View file

@ -1,60 +1,72 @@
local storage = minetest.get_mod_storage()
airutils.modname = minetest.get_current_modname()
--function to format formspec for mineclone. In case of minetest, just returns an empty string
local function get_itemslot_bg(a, b, c, d)
if not minetest.get_modpath("player_api") then
return mcl_formspec.get_itemslot_bg(a,b,c,d)
end
return ""
end
local function get_formspec_by_size(self, size)
local background = default.gui_bg .. default.gui_bg_img .. default.gui_slots
local background = ""
local hotbar = ""
local is_minetest_game = minetest.get_modpath("player_api") or false
if is_minetest_game then
background = background .. default.gui_bg .. default.gui_bg_img .. default.gui_slots
hotbar = default.get_hotbar_bg(0,4.85)
end
local default_inventory_formspecs = {
["2"]="size[8,6]".. background ..
"list[detached:" .. self._inv_id .. ";main;3.0,0;3,1;]" ..
"list[current_player;main;0,2;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;3.0,0;3,1;]" .. get_itemslot_bg(3.0, 0, 2, 1) ..
"list[current_player;main;0,2;8,4;]" .. get_itemslot_bg(0, 2, 8, 4) ..
"listring[]",
["3"]="size[8,6]".. background ..
"list[detached:" .. self._inv_id .. ";main;2.5,0;3,1;]" ..
"list[current_player;main;0,2;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;2.5,0;3,1;]" .. get_itemslot_bg(2.5, 0, 3, 1) ..
"list[current_player;main;0,2;8,4;]" .. get_itemslot_bg(0, 2, 8, 4) ..
"listring[]",
["4"]="size[8,6]".. background ..
"list[detached:" .. self._inv_id .. ";main;2,0;4,1;]" ..
"list[current_player;main;0,2;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;2,0;4,1;]" .. get_itemslot_bg(2.0, 0, 4, 1) ..
"list[current_player;main;0,2;8,4;]" .. get_itemslot_bg(0, 2, 8, 4) ..
"listring[]",
["6"]="size[8,6]".. background ..
"list[detached:" .. self._inv_id .. ";main;1,0;6,1;]"..
"list[current_player;main;0,2;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;1,0;6,1;]".. get_itemslot_bg(1.0, 0, 6, 1) ..
"list[current_player;main;0,2;8,4;]" .. get_itemslot_bg(0, 2, 8, 4) ..
"listring[]",
["8"]="size[8,6]".. background ..
"list[detached:" .. self._inv_id .. ";main;0,0;8,1;]"..
"list[current_player;main;0,2;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;0,0;8,1;]".. get_itemslot_bg(0, 0, 8, 1) ..
"list[current_player;main;0,2;8,4;]" .. get_itemslot_bg(0, 2, 8, 4) ..
"listring[]",
["12"]="size[8,7]".. background ..
"list[detached:" .. self._inv_id .. ";main;1,0;6,2;]"..
"list[current_player;main;0,3;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;1,0;6,2;]".. get_itemslot_bg(1, 0, 6, 2) ..
"list[current_player;main;0,3;8,4;]" .. get_itemslot_bg(0, 3, 8, 4) ..
"listring[]",
["16"]="size[8,7]".. background ..
"list[detached:" .. self._inv_id .. ";main;0,0;8,2;]"..
"list[current_player;main;0,3;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;0,0;8,2;]".. get_itemslot_bg(0, 0, 8, 2) ..
"list[current_player;main;0,3;8,4;]" .. get_itemslot_bg(0, 3, 8, 4) ..
"listring[]",
["24"]="size[8,8]".. background ..
"list[context:" .. self._inv_id .. ";main;0,0;8,3;]"..
"list[current_player;main;0,4;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;0,0;8,3;]".. get_itemslot_bg(0, 0, 8, 3) ..
"list[current_player;main;0,4;8,4;]" .. get_itemslot_bg(0, 4, 8, 4) ..
"listring[]",
["32"]="size[8,9]".. background ..
"list[detached:" .. self._inv_id .. ";main;0,0.3;8,4;]"..
"list[current_player;main;0,4.85;8,1;]"..
"list[current_player;main;0,6.08;8,3;8]"..
"listring[context;main]" ..
"listring[current_player;main]" ..
default.get_hotbar_bg(0,4.85),
"list[detached:" .. self._inv_id .. ";main;0,0.3;8,4;]".. get_itemslot_bg(0, 0.3, 8, 4) ..
"list[current_player;main;0,5;8,4;]".. get_itemslot_bg(0, 5, 8, 4) ..
"listring[]" ..
hotbar,
["50"]="size[10,10]".. background ..
"list[detached:" .. self._inv_id .. ";main;0,0;10,5;]"..
"list[current_player;main;1,6;8,4;]" ..
"list[detached:" .. self._inv_id .. ";main;0,0;10,5;]".. get_itemslot_bg(0, 0, 10, 5) ..
"list[current_player;main;1,6;8,4;]" .. get_itemslot_bg(1, 6, 8, 4) ..
"listring[]",
}

View file

@ -223,6 +223,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local plane_obj = airutils.getPlaneFromPlayer(player)
if plane_obj == nil then
minetest.close_formspec(name, "lib_planes:adf_main")
minetest.chat_send_player(name, core.colorize('#ff0000', " >>> There is something wrong with the plane..."))
return
end
local ent = plane_obj:get_luaentity()
@ -230,24 +231,29 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.adf then
if ent._adf == true then
ent._adf = false
minetest.chat_send_player(name, core.colorize('#0000ff', " >>> ADF deactivated."))
else
ent._adf = true
minetest.chat_send_player(name, core.colorize('#00ff00', " >>> ADF activated."))
end
end
if fields.save_adf then
if ent._adf_destiny then
if fields.adf_x then
if tonumber(fields.adf_x, 10) ~= nil then
if fields.adf_x and fields.adf_z then
if tonumber(fields.adf_x, 10) ~= nil and tonumber(fields.adf_z, 10) ~= nil then
ent._adf_destiny.x = tonumber(fields.adf_x, 10)
end
end
if fields.adf_z then
if tonumber(fields.adf_z, 10) ~= nil then
ent._adf_destiny.z = tonumber(fields.adf_z, 10)
minetest.chat_send_player(name, core.colorize('#00ff00', " >>> Destination written successfully."))
else
minetest.chat_send_player(name, core.colorize('#ff0000', " >>> There is something wrong with the ADF fields values."))
end
else
minetest.chat_send_player(name, core.colorize('#ff0000', " >>> Both ADF fields must be given to complete the operation."))
end
end
end
else
minetest.chat_send_player(name, core.colorize('#ff0000', " >>> There is something wrong on ADF saving..."))
end
minetest.close_formspec(name, "lib_planes:adf_main")
end

View file

@ -56,8 +56,13 @@ function airutils.attach(self, player, instructor_mode)
end
player:set_eye_offset({x = 0, y = eye_y, z = 2}, {x = 0, y = 1, z = -30})
player_api.player_attached[name] = true
player_api.set_animation(player, "sit")
if minetest.get_modpath("player_api") then
player_api.player_attached[name] = true
player_api.set_animation(player, "sit")
elseif minetest.get_modpath("mcl_player") then
airutils.sit(player)
end
-- make the driver sit
minetest.after(1, function()
if player then
@ -84,9 +89,14 @@ function airutils.dettachPlayer(self, player)
--player:set_physics_override({speed = 1, jump = 1, gravity = 1, sneak = true})
if player then
player:set_detach()
player_api.player_attached[name] = nil
player:set_eye_offset({x=0,y=0,z=0},{x=0,y=0,z=0})
player_api.set_animation(player, "stand")
if minetest.get_modpath("player_api") then
player_api.player_attached[name] = nil
player_api.set_animation(player, "stand")
elseif minetest.get_modpath("mcl_player") then
mcl_player.player_attached[name] = nil
mcl_player.player_set_animation(player, "stand")
end
end
self.driver = nil
--remove_physics_override(player, {speed=1,gravity=1,jump=1})
@ -114,8 +124,13 @@ local function attach_copilot(self, name, player, eye_y)
-- attach the driver
player:set_attach(self.co_pilot_seat_base, "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
player:set_eye_offset({x = 0, y = eye_y, z = 2}, {x = 0, y = 3, z = -30})
player_api.player_attached[name] = true
player_api.set_animation(player, "sit")
if minetest.get_modpath("player_api") then
player_api.player_attached[name] = true
player_api.set_animation(player, "sit")
elseif minetest.get_modpath("mcl_player") then
mcl_player.player_attached[name] = true
airutils.sit(player)
end
-- make the driver sit
minetest.after(1, function()
player = minetest.get_player_by_name(name)
@ -170,8 +185,15 @@ function airutils.attach_pax(self, player, is_copilot)
self._passengers[i] = name
player:set_attach(self._passengers_base[i], "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
player:set_eye_offset({x = 0, y = eye_y, z = 0}, {x = 0, y = 3, z = -30})
player_api.player_attached[name] = true
player_api.set_animation(player, "sit")
if minetest.get_modpath("player_api") then
player_api.player_attached[name] = true
player_api.set_animation(player, "sit")
elseif minetest.get_modpath("mcl_player") then
mcl_player.player_attached[name] = true
airutils.sit(player)
end
-- make the driver sit
minetest.after(1, function()
player = minetest.get_player_by_name(name)
@ -208,8 +230,15 @@ function airutils.dettach_pax(self, player)
-- detach the player
if player then
player:set_detach()
player_api.player_attached[name] = nil
player_api.set_animation(player, "stand")
if minetest.get_modpath("player_api") then
player_api.player_attached[name] = nil
player_api.set_animation(player, "stand")
elseif minetest.get_modpath("mcl_player") then
mcl_player.player_attached[name] = nil
mcl_player.player_set_animation(player, "stand")
end
player:set_eye_offset({x=0,y=0,z=0},{x=0,y=0,z=0})
--remove_physics_override(player, {speed=1,gravity=1,jump=1})
end
@ -878,7 +907,6 @@ local function do_attach(self, player, slot)
--minetest.chat_send_all(self.driver_name)
self._passengers[slot] = name
player:set_attach(self._passengers_base[slot], "", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
player_api.player_attached[name] = true
local eye_y = -4
if airutils.detect_player_api(player) == 1 then
@ -886,7 +914,14 @@ local function do_attach(self, player, slot)
end
player:set_eye_offset({x = 0, y = eye_y, z = 2}, {x = 0, y = 3, z = -30})
player_api.set_animation(player, "sit")
if minetest.get_modpath("player_api") then
player_api.player_attached[name] = true
player_api.set_animation(player, "sit")
elseif minetest.get_modpath("mcl_player") then
mcl_player.player_attached[name] = true
airutils.sit(player)
end
-- make the driver sit
minetest.after(1, function()
player = minetest.get_player_by_name(name)