forked from VoxeLibre/VoxeLibre
Improve rocket
This commit is contained in:
parent
8d22102c66
commit
5b93ee5e40
|
@ -1,5 +1,7 @@
|
|||
local S = minetest.get_translator("mcl_fireworks")
|
||||
|
||||
player_rocketing = {}
|
||||
|
||||
local help = S("Flight Duration:")
|
||||
local description = S("Firework Rocket")
|
||||
local rocket_sound = function()
|
||||
|
@ -12,10 +14,14 @@ minetest.register_craftitem("mcl_fireworks:rocket_1", {
|
|||
inventory_image = "mcl_fireworks_rocket.png",
|
||||
stack_max = 64,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
itemstack:take_item()
|
||||
local torso = user:get_inventory():get_stack("armor", 3)
|
||||
if torso and torso:get_name() == "mcl_armor:elytra" then
|
||||
user:add_player_velocity(vector.multiply(user:get_look_dir(), 20))
|
||||
if torso and torso:get_name() == "mcl_armor:elytra" and player_rocketing[user] ~= true then
|
||||
player_rocketing[user] = true
|
||||
minetest.after(2.2, function()
|
||||
player_rocketing[user] = false
|
||||
end)
|
||||
itemstack:take_item()
|
||||
--user:add_player_velocity(vector.multiply(user:get_look_dir(), 20))
|
||||
rocket_sound()
|
||||
end
|
||||
return itemstack
|
||||
|
@ -28,10 +34,14 @@ minetest.register_craftitem("mcl_fireworks:rocket_2", {
|
|||
inventory_image = "mcl_fireworks_rocket.png",
|
||||
stack_max = 64,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
itemstack:take_item()
|
||||
local torso = user:get_inventory():get_stack("armor", 3)
|
||||
if torso and torso:get_name() == "mcl_armor:elytra" then
|
||||
user:add_player_velocity(vector.multiply(user:get_look_dir(), 30))
|
||||
if torso and torso:get_name() == "mcl_armor:elytra" and player_rocketing[user] ~= true then
|
||||
player_rocketing[user] = true
|
||||
minetest.after(4.5, function()
|
||||
player_rocketing[user] = false
|
||||
end)
|
||||
itemstack:take_item()
|
||||
--user:add_player_velocity(vector.multiply(user:get_look_dir(), 20))
|
||||
rocket_sound()
|
||||
end
|
||||
return itemstack
|
||||
|
@ -43,11 +53,15 @@ minetest.register_craftitem("mcl_fireworks:rocket_3", {
|
|||
_tt_help = help.." 3",
|
||||
inventory_image = "mcl_fireworks_rocket.png",
|
||||
stack_max = 64,
|
||||
on_use = function(itemstack, user, pointed_thing, player)
|
||||
itemstack:take_item()
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local torso = user:get_inventory():get_stack("armor", 3)
|
||||
if torso and torso:get_name() == "mcl_armor:elytra" then
|
||||
user:add_player_velocity(vector.multiply(user:get_look_dir(), 40))
|
||||
if torso and torso:get_name() == "mcl_armor:elytra" and player_rocketing[user] ~= true then
|
||||
player_rocketing[user] = true
|
||||
minetest.after(6, function()
|
||||
player_rocketing[user] = false
|
||||
end)
|
||||
itemstack:take_item()
|
||||
--user:add_player_velocity(vector.multiply(user:get_look_dir(), 20))
|
||||
rocket_sound()
|
||||
end
|
||||
return itemstack
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
local S = minetest.get_translator("mcl_playerplus")
|
||||
|
||||
local elytra = {}
|
||||
elytra = {}
|
||||
|
||||
local node_stand_return = ":air"
|
||||
local get_connected_players = minetest.get_connected_players
|
||||
|
@ -200,6 +200,16 @@ minetest.register_globalstep(function(dtime)
|
|||
minetest.log("action", "somehow player got of loaded areas")
|
||||
end
|
||||
|
||||
local chestplate = player:get_inventory():get_stack("armor", 3)
|
||||
|
||||
if player_rocketing[player] and player_rocketing[player] == true and chestplate:get_name() == "mcl_armor:elytra" then
|
||||
if math.abs(player_velocity.x) + math.abs(player_velocity.y) + math.abs(player_velocity.z) < 40 then
|
||||
player:add_player_velocity(vector.multiply(player:get_look_dir(), 4))
|
||||
elytra[player] = true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
controls.register_on_press(function(player, key)
|
||||
if key~="jump" and key~="RMB" then return end
|
||||
if key=="jump" then
|
||||
|
@ -214,8 +224,6 @@ minetest.register_globalstep(function(dtime)
|
|||
end
|
||||
end)
|
||||
|
||||
local chestplate = player:get_inventory():get_stack("armor", 3)
|
||||
|
||||
if elytra[player] == true and node_stand_return ~= "air" or elytra[player] == true and player:get_inventory():get_stack("armor", 3):get_name() ~= "mcl_armor:elytra" or player:get_attach() ~= nil then
|
||||
elytra[player] = false
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue