diff --git a/compatibility.lua b/compatibility.lua index 3026101..5c8b6f8 100644 --- a/compatibility.lua +++ b/compatibility.lua @@ -538,6 +538,7 @@ if industrialtest.mclAvailable then industrialtest.elementKeys.copperBlock="mcl_copper:block" industrialtest.elementKeys.stoneWithCopper="mcl_copper:stone_with_copper" industrialtest.elementKeys.ironPickaxe="mcl_tools:pick_iron" + industrialtest.elementKeys.ironBoots="mcl_armor:boots_iron" industrialtest.elementKeys.lavaSource="mcl_core:lava_source" industrialtest.elementKeys.waterSource="mcl_core:water_source" industrialtest.elementKeys.sugarCane="mcl_core:reeds" @@ -763,6 +764,7 @@ elseif industrialtest.mtgAvailable then industrialtest.elementKeys.stoneWithTin="default:stone_with_tin" industrialtest.elementKeys.bronzeBlock="default:bronzeblock" industrialtest.elementKeys.ironPickaxe="default:pick_steel" + industrialtest.elementKeys.ironBoots="3d_armor:boots_steel" industrialtest.elementKeys.lavaSource="default:lava_source" industrialtest.elementKeys.waterSource="default:water_source" industrialtest.elementKeys.sugarCane="default:papyrus" diff --git a/init.lua b/init.lua index 6bc4cf9..314d851 100644 --- a/init.lua +++ b/init.lua @@ -58,6 +58,7 @@ dofile(modpath.."/tools/electric_drill.lua") dofile(modpath.."/tools/electric_hoe.lua") dofile(modpath.."/tools/electric_saber.lua") dofile(modpath.."/tools/jetpack.lua") +dofile(modpath.."/tools/static_boots.lua") dofile(modpath.."/tools/treetap.lua") dofile(modpath.."/tools/wrench.lua") diff --git a/tools/static_boots.lua b/tools/static_boots.lua new file mode 100644 index 0000000..0985e27 --- /dev/null +++ b/tools/static_boots.lua @@ -0,0 +1,126 @@ +-- 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") + +local updateDelta=0 +local playerPositions={} + +local function onGlobalStep(player,inv,stack) + if stack:get_name()~="industrialtest:static_boots" then + return false + end + local playerPos=player:get_pos() + playerPos.y=0 + if not playerPositions[player:get_player_name()] then + playerPositions[player:get_player_name()]=playerPos + return true + end + if vector.distance(playerPos,playerPositions[player:get_player_name()])<5 then + return true + end + playerPositions[player:get_player_name()]=playerPos + local armorList=inv:get_list("armor") + for i=1,#armorList do + local meta=armorList[i]:get_meta() + if industrialtest.api.hasPowerStorage(meta) and not industrialtest.api.isFullyCharged(meta) then + industrialtest.api.addPowerToItem(armorList[i],1) + inv:set_stack("armor",i,armorList[i]) + break + end + end + return true +end + +if industrialtest.mtgAvailable then + armor:register_armor("industrialtest:static_boots",{ + description=S("Static Boots"), + inventory_image="industrialtest_static_boots_inv.png", + groups={ + armor_feet=1, + armor_heal=0 + } + }) +elseif industrialtest.mclAvailable then + minetest.register_tool("industrialtest:static_boots",{ + description=S("Static Boots"), + inventory_image="industrialtest_static_boots_inv.png", + groups={ + armor=1, + non_combat_armor=1, + armor_feet=1, + non_combat_feet=1 + }, + sounds={ + _mcl_armor_equip="mcl_armor_equip_iron", + _mcl_armor_unequip="mcl_armor_unequip_iron" + }, + on_place=mcl_armor.equip_on_use, + on_secondary_use=mcl_armor.equip_on_use, + _mcl_armor_element="feet", + _mcl_armor_texture="industrialtest_static_boots.png" + }) +end +minetest.register_craft({ + type="shaped", + output="industrialtest:static_boots", + recipe={ + {industrialtest.elementKeys.ironIngot,"",industrialtest.elementKeys.ironIngot}, + {industrialtest.elementKeys.ironIngot,industrialtest.elementKeys.whiteWool,industrialtest.elementKeys.ironIngot}, + {"industrialtest:insulated_copper_cable","industrialtest:insulated_copper_cable","industrialtest:insulated_copper_cable"} + } +}) +minetest.register_craft({ + type="shaped", + output="industrialtest:static_boots", + recipe={ + {"",industrialtest.elementKeys.ironBoots,""}, + {"",industrialtest.elementKeys.whiteWool,""}, + {"industrialtest:insulated_copper_cable","industrialtest:insulated_copper_cable","industrialtest:insulated_copper_cable"} + } +}) + +minetest.register_on_leaveplayer(function(player) + playerPositions[player:get_player_name()]=nil +end) + +minetest.register_globalstep(function(dtime) + updateDelta=updateDelta+dtime + if updateDelta