-- IndustrialTest -- Copyright (C) 2024 mrkubax10 -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . local S=minetest.get_translator("industrialtest") industrialtest.JetpackBase=table.copy(industrialtest.GearTool) industrialtest.internal.unpackTableInto(industrialtest.JetpackBase,{ part="torso" }) function industrialtest.JetpackBase.update(self,player,itemstack,dtime) local control=player:get_player_control() if control.jump and self:tryFly(itemstack) then self.addYVelocityClamped(player,1,10) return true end return false end function industrialtest.JetpackBase.addYVelocityClamped(player,vel,max) local playerVel=player:get_velocity() if playerVel.y+vel>max then player:add_velocity(vector.new(0,math.max(max-playerVel.y,0),0)) else player:add_velocity(vector.new(0,vel,0)) end end industrialtest.Jetpack=table.copy(industrialtest.JetpackBase) industrialtest.internal.unpackTableInto(industrialtest.Jetpack,{ -- _v is hack to suppress "Registered armor doesn't have material at the end of registration name" warning from 3D Armor. name="industrialtest:jetpack_v", description=S("Jetpack"), inventoryImage="industrialtest_jetpack_v_inv.png", modelImage="industrialtest_jetpack_v.png", capacity=5000, prepare=industrialtest.FluidContainerItem.prepare }) function industrialtest.Jetpack.createDefinitionTable(self) local def=industrialtest.JetpackBase.createDefinitionTable(self) def.groups._industrialtest_fueled=1 return def end function industrialtest.Jetpack.tryFly(self,itemstack) if industrialtest.api.isItemFluidStorageEmpty(itemstack) then return false end industrialtest.api.addFluidToItem(itemstack,-1) return true end industrialtest.Jetpack:register() minetest.register_craft({ type="shaped", output="industrialtest:jetpack_v", recipe={ {"industrialtest:refined_iron_ingot","industrialtest:electronic_circuit","industrialtest:refined_iron_ingot"}, {"industrialtest:refined_iron_ingot","industrialtest:fuel_can","industrialtest:refined_iron_ingot"}, {industrialtest.elementKeys.powerCarrier,"",industrialtest.elementKeys.powerCarrier} } }) industrialtest.ElectricJetpack=table.copy(industrialtest.JetpackBase) industrialtest.internal.unpackTableInto(industrialtest.ElectricJetpack,{ name="industrialtest:electric_jetpack", description=S("Electric Jetpack"), inventoryImage="industrialtest_electric_jetpack_inv.png", modelImage="industrialtest_electric_jetpack.png", flow=industrialtest.api.lvPowerFlow, capacity=30000, prepare=industrialtest.ElectricItem.prepare }) function industrialtest.ElectricJetpack.tryFly(self,itemstack) local meta=itemstack:get_meta() if meta:get_int("industrialtest.powerAmount")<10 then return false end industrialtest.api.addPowerToItem(itemstack,-10) return true end industrialtest.ElectricJetpack:register() minetest.register_craft({ type="shaped", output="industrialtest:electric_jetpack", recipe={ {"industrialtest:refined_iron_ingot","industrialtest:advanced_electronic_circuit","industrialtest:refined_iron_ingot"}, {"industrialtest:refined_iron_ingot","industrialtest:batbox","industrialtest:refined_iron_ingot"}, {industrialtest.elementKeys.yellowDust,"",industrialtest.elementKeys.yellowDust} } })