diff --git a/api/common.lua b/api/common.lua index 6a8e970..8b01966 100644 --- a/api/common.lua +++ b/api/common.lua @@ -22,6 +22,9 @@ industrialtest.api={ geothermalGeneratorFuels={}, waterMillFuels={}, rotaryMaceratorModifiers={}, + pumpTargets={}, + pumpFluids={}, + compressedFluids={}, storageCells={}, tags={} } @@ -32,6 +35,8 @@ industrialtest.api.hvPowerFlow=10200 industrialtest.api.evPowerFlow=40800 industrialtest.api.ivPowerFlow=163800 +industrialtest.api.nodeFluidCapacity=1000 + function industrialtest.internal.clamp(num,min,max) return math.max(math.min(num,max),min) end diff --git a/api/fluid.lua b/api/fluid.lua index be6b53d..c5e58fd 100644 --- a/api/fluid.lua +++ b/api/fluid.lua @@ -25,6 +25,16 @@ local function createItemFluidStorageText(itemstack) return minetest.colorize(color,S("@1 / @2 mB",fluidAmount,fluidCapacity)) end +-- \brief Adds fluid storage to node metadata +-- \param meta MetaDataRef +-- \param capacity number +-- \returns nil +function industrialtest.api.addFluidStorage(meta,capacity) + meta:set_int("industrialtest.fluidCapacity",capacity) + meta:set_int("industrialtest.fluidAmount",0) + meta:set_string("industrialtest.fluidType","ignore") +end + -- \brief Check if itemstack contains fluid storage -- \param itemstack ItemStack -- \returns bool diff --git a/api/registration.lua b/api/registration.lua index 0955181..02ab63c 100644 --- a/api/registration.lua +++ b/api/registration.lua @@ -307,6 +307,65 @@ function industrialtest.api.getRotaryMaceratorModifier(name,modifier) return industrialtest.api.rotaryMaceratorModifiers[name.." "..modifier] end +-- \brief Registers target node with which Pump can interact +-- \param name string +-- \param fluidNodes table +-- \param direction string +-- \return nil +function industrialtest.api.registerPumpTarget(name,direction) + industrialtest.api.pumpTargets[name]={ + name=name, + direction=direction + } +end + +-- \brief Returns Pump target info +-- \param name string +-- \returns table +function industrialtest.api.getPumpTarget(name) + return industrialtest.api.pumpTargets[name] +end + +-- \brief Registers fluid node which can be pumped by pump +-- \param name string +-- \param texture string +-- \returns nil +function industrialtest.api.registerPumpFluid(name,texture) + industrialtest.api.pumpFluids[name]={ + name=name, + texture=texture + } +end + +-- \brief Returns registered node which can be pumped by pump +-- \param name string +-- \returns table +function industrialtest.api.getPumpFluid(name) + return industrialtest.api.pumpFluids[name] +end + +-- \brief Registers fluid which can be pumped into compressor resulting with different item +-- \param fluidType string +-- \param requiredAmount number +-- \param time number +-- \param result string +-- \returns nil +function industrialtest.api.registerCompressedFluid(fluidType,requiredAmount,time,result) + industrialtest.api.compressedFluids[fluidType]={ + fluidType=fluidType, + requiredAmount=requiredAmount, + time=time, + result=result + } +end + +-- \brief Returns information about fluid which can be pumped into compressor resulting with different item +-- \param fluidType string +-- \returns table +function industrialtest.api.getCompressedFluid(fluidType) + return industrialtest.api.compressedFluids[fluidType] +end + minetest.register_on_mods_loaded(function() for _,def in pairs(industrialtest.api.rotaryMaceratorModifiers) do if def.stackLeftover then diff --git a/craftitems.lua b/craftitems.lua index df794cf..28a0b3f 100644 --- a/craftitems.lua +++ b/craftitems.lua @@ -533,6 +533,9 @@ minetest.register_craftitem("industrialtest:empty_cell",{ description=S("Empty Cell"), inventory_image="industrialtest_empty_cell.png", liquids_pointable=true, + groups={ + _industrialtest_simpleFluidStorage=1 + }, on_place=function(itemstack,user,pointed) if pointed.type~="node" or not user or not user:is_player() then return nil @@ -554,7 +557,9 @@ minetest.register_craftitem("industrialtest:empty_cell",{ end minetest.remove_node(pointed.under) return itemstack - end + end, + _industrialtest_getResultingFluidStorageItemByNode=industrialtest.api.getStorageCellByNode, + _industrialtest_simpleFluidStorageCapacity=1000 }) minetest.register_craft({ type="shaped", diff --git a/crafts.lua b/crafts.lua index 656efd0..6875e64 100644 --- a/crafts.lua +++ b/crafts.lua @@ -125,3 +125,12 @@ if industrialtest.mtgAvailable then } }) end + +-- Pumped fluids +if industrialtest.mtgAvailable then + industrialtest.api.registerPumpFluid("default:river_water_source","industrialtest_gui_river_water.png") + industrialtest.api.registerCompressedFluid("default:river_water_source",industrialtest.api.nodeFluidCapacity/2,5,"default:snow") +end +industrialtest.api.registerPumpFluid(industrialtest.elementKeys.waterSource,"industrialtest_gui_water.png") +industrialtest.api.registerPumpFluid(industrialtest.elementKeys.lavaSource,"industrialtest_gui_lava.png") +industrialtest.api.registerCompressedFluid(industrialtest.elementKeys.waterSource,industrialtest.api.nodeFluidCapacity/2,5,industrialtest.elementKeys.snowball)