Improve rocket

This commit is contained in:
epCode 2021-04-13 17:07:28 -07:00
parent 8d22102c66
commit 5b93ee5e40
2 changed files with 47 additions and 25 deletions

@ -1,5 +1,7 @@
local S = minetest.get_translator("mcl_fireworks") local S = minetest.get_translator("mcl_fireworks")
player_rocketing = {}
local help = S("Flight Duration:") local help = S("Flight Duration:")
local description = S("Firework Rocket") local description = S("Firework Rocket")
local rocket_sound = function() local rocket_sound = function()
@ -12,10 +14,14 @@ minetest.register_craftitem("mcl_fireworks:rocket_1", {
inventory_image = "mcl_fireworks_rocket.png", inventory_image = "mcl_fireworks_rocket.png",
stack_max = 64, stack_max = 64,
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
itemstack:take_item()
local torso = user:get_inventory():get_stack("armor", 3) local torso = user:get_inventory():get_stack("armor", 3)
if torso and torso:get_name() == "mcl_armor:elytra" then if torso and torso:get_name() == "mcl_armor:elytra" and player_rocketing[user] ~= true then
user:add_player_velocity(vector.multiply(user:get_look_dir(), 20)) 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() rocket_sound()
end end
return itemstack return itemstack
@ -28,10 +34,14 @@ minetest.register_craftitem("mcl_fireworks:rocket_2", {
inventory_image = "mcl_fireworks_rocket.png", inventory_image = "mcl_fireworks_rocket.png",
stack_max = 64, stack_max = 64,
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
itemstack:take_item()
local torso = user:get_inventory():get_stack("armor", 3) local torso = user:get_inventory():get_stack("armor", 3)
if torso and torso:get_name() == "mcl_armor:elytra" then if torso and torso:get_name() == "mcl_armor:elytra" and player_rocketing[user] ~= true then
user:add_player_velocity(vector.multiply(user:get_look_dir(), 30)) 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() rocket_sound()
end end
return itemstack return itemstack
@ -43,11 +53,15 @@ minetest.register_craftitem("mcl_fireworks:rocket_3", {
_tt_help = help.." 3", _tt_help = help.." 3",
inventory_image = "mcl_fireworks_rocket.png", inventory_image = "mcl_fireworks_rocket.png",
stack_max = 64, stack_max = 64,
on_use = function(itemstack, user, pointed_thing, player) on_use = function(itemstack, user, pointed_thing)
itemstack:take_item()
local torso = user:get_inventory():get_stack("armor", 3) local torso = user:get_inventory():get_stack("armor", 3)
if torso and torso:get_name() == "mcl_armor:elytra" then if torso and torso:get_name() == "mcl_armor:elytra" and player_rocketing[user] ~= true then
user:add_player_velocity(vector.multiply(user:get_look_dir(), 40)) 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() rocket_sound()
end end
return itemstack return itemstack

@ -1,6 +1,6 @@
local S = minetest.get_translator("mcl_playerplus") local S = minetest.get_translator("mcl_playerplus")
local elytra = {} elytra = {}
local node_stand_return = ":air" local node_stand_return = ":air"
local get_connected_players = minetest.get_connected_players 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") minetest.log("action", "somehow player got of loaded areas")
end 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) controls.register_on_press(function(player, key)
if key~="jump" and key~="RMB" then return end if key~="jump" and key~="RMB" then return end
if key=="jump" then if key=="jump" then
@ -214,8 +224,6 @@ minetest.register_globalstep(function(dtime)
end end
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 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 elytra[player] = false
end end