From 4a65e82ca3818a1df565ecc2bddc97065551bce1 Mon Sep 17 00:00:00 2001 From: mrkubax10 Date: Thu, 30 Mar 2023 14:43:05 +0200 Subject: [PATCH] Implement Geothermal Generator --- api.lua | 33 +++ compatibility.lua | 17 +- crafts.lua | 13 + machines.lua | 252 ++++++++++++++++++ mod.conf | 2 +- ...ustrialtest_geothermal_generator_front.png | Bin 0 -> 640 bytes ...test_geothermal_generator_front_active.png | Bin 0 -> 909 bytes textures/industrialtest_gui_fluid_bg.png | Bin 0 -> 163 bytes textures/industrialtest_gui_lava.png | Bin 0 -> 1015 bytes .../industrialtest_mcl_refined_iron_ingot.png | Bin 0 -> 797 bytes 10 files changed, 314 insertions(+), 3 deletions(-) create mode 100644 textures/industrialtest_geothermal_generator_front.png create mode 100644 textures/industrialtest_geothermal_generator_front_active.png create mode 100644 textures/industrialtest_gui_fluid_bg.png create mode 100644 textures/industrialtest_gui_lava.png create mode 100644 textures/industrialtest_mcl_refined_iron_ingot.png diff --git a/api.lua b/api.lua index 401d8f7..5e05a8f 100644 --- a/api.lua +++ b/api.lua @@ -20,6 +20,7 @@ industrialtest.api={} industrialtest.api.maceratorRecipes={} industrialtest.api.compressorRecipes={} industrialtest.api.extractorRecipes={} +industrialtest.api.geothermalGeneratorFuels={} industrialtest.api.lvPowerFlow=600 industrialtest.api.mvPowerFlow=2400 @@ -408,3 +409,35 @@ end industrialtest.api.getExtractorRecipeResult=function(recipe) return industrialtest.api.extractorRecipes[recipe] end +-- \brief Registers fuel that can be used in geothermal generator +-- \param fuel Table with following keys: , , +-- which is a table containing items which are tables with following keys: , +-- \returns nil +industrialtest.api.registerGeothermalGeneratorFuel=function(config) + local definition={ + name=config.name or "", + calorificValue=config.calorificValue or 0, + texture=config.texture or "industrialtest_gui_fluid_bg.png", + storageItems=config.storageItems or {} + } + industrialtest.api.geothermalGeneratorFuels[definition.name]=definition +end +-- \brief Returns generator fuel information +-- \param name Name of fuel +-- \returns Table with following keys: name, calorificValue, storageItems +industrialtest.api.getGeothermalGeneratorFuel=function(name) + return industrialtest.api.geothermalGeneratorFuels[name] +end +-- \brief Returns generator fuel information by item name +-- \param name ID of item +-- \returns Table with following keys: name, calorificValue, storageItems or nil in case of failure +industrialtest.api.getGeothermalGeneratorFuelByItem=function(name) + for _,value in pairs(industrialtest.api.geothermalGeneratorFuels) do + for _,item in ipairs(value.storageItems) do + if item.name==name then + return value + end + end + end + return nil +end diff --git a/compatibility.lua b/compatibility.lua index e27bb8a..2a36045 100644 --- a/compatibility.lua +++ b/compatibility.lua @@ -16,8 +16,15 @@ local S=minetest.get_translator("industrialtest") -industrialtest.mtgAvailable=minetest.get_modpath("default") -local requiredMclModules={"mcl_core","mcl_copper","mcl_armor","mcl_deepslate","mcl_nether"} +local requiredMtgModules={"default","bucket"} +industrialtest.mtgAvailable=true +for _,mod in ipairs(requiredMtgModules) do + if not minetest.get_modpath(mod) then + industrialtest.mtgAvailable=false + break + end +end +local requiredMclModules={"mcl_core","mcl_copper","mcl_armor","mcl_deepslate","mcl_nether","mcl_buckets"} industrialtest.mclAvailable=true for _,mod in ipairs(requiredMclModules) do if not minetest.get_modpath(mod) then @@ -493,6 +500,8 @@ if industrialtest.mclAvailable then industrialtest.elementKeys.coal="mcl_core:coal_lump" industrialtest.elementKeys.clay="mcl_core:clay_lump" industrialtest.elementKeys.diamond="mcl_core:diamond" + industrialtest.elementKeys.bucket="mcl_buckets:bucket_empty" + industrialtest.elementKeys.bucketWithLava="mcl_buckets:bucket_lava" industrialtest.elementKeys.glowstone="mcl_nether:glowstone_dust" industrialtest.elementKeys.glass="mcl_core:glass" industrialtest.elementKeys.powerCarrier="mesecons:mesecon" @@ -517,6 +526,7 @@ if industrialtest.mclAvailable then industrialtest.elementKeys.stoneWithGold="mcl_core:stone_with_gold" industrialtest.elementKeys.copperBlock="mcl_copper:block" industrialtest.elementKeys.stoneWithCopper="mcl_copper:stone_with_copper" + industrialtest.elementKeys.lavaSource="mcl_core:lava_source" -- register required minerals that are not available in MCL industrialtest.registerMetal("tin","Tin",3,3) @@ -694,6 +704,8 @@ elseif industrialtest.mtgAvailable then industrialtest.elementKeys.stick="default:stick" industrialtest.elementKeys.flint="default:flint" industrialtest.elementKeys.snowball="default:snow" + industrialtest.elementKeys.bucket="bucket:bucket_empty" + industrialtest.elementKeys.bucketWithLava="bucket:bucket_lava" industrialtest.elementKeys.string="farming:string" industrialtest.elementKeys.junglePlanks="default:junglewood" industrialtest.elementKeys.glowstone="dye:yellow" @@ -723,6 +735,7 @@ elseif industrialtest.mtgAvailable then industrialtest.elementKeys.tinBlock="default:tinblock" industrialtest.elementKeys.stoneWithTin="default:stone_with_tin" industrialtest.elementKeys.bronzeBlock="default:bronzeblock" + industrialtest.elementKeys.lavaSource="default:lava_source" else error("No compatible games found!") end diff --git a/crafts.lua b/crafts.lua index 664694e..4876ac8 100644 --- a/crafts.lua +++ b/crafts.lua @@ -74,3 +74,16 @@ if industrialtest.mclAvailable then count=3 }) end + +-- Geothermal Generator fuels +industrialtest.api.registerGeothermalGeneratorFuel({ + name=industrialtest.elementKeys.lavaSource, + calorificValue=industrialtest.api.lvPowerFlow*2, + texture="industrialtest_gui_lava.png", + storageItems={ + { + name=industrialtest.elementKeys.bucketWithLava, + leftover=industrialtest.elementKeys.bucket + } + } +}) diff --git a/machines.lua b/machines.lua index 42703ad..b15dafe 100644 --- a/machines.lua +++ b/machines.lua @@ -447,6 +447,258 @@ minetest.register_craft({ } }) +local function geothermalGeneratorFormspec(fluidPercent,powerPercent,fluid) + local formspec + local fuel=industrialtest.api.getGeothermalGeneratorFuel(fluid) + local tile=(fuel and fuel.texture or "industrialtest_gui_fluid_bg.png") + if industrialtest.mtgAvailable then + formspec={ + "formspec_version[4]", + "size[10.8,12]", + "label[0.5,0.5;"..S("Geothermal Generator").."]", + "list[context;fluid;2,1.8;1,1]", + "listring[context;fluid]", + (fluidPercent>0 and "image[2,3;1,1;industrialtest_gui_fluid_bg.png^[lowpart:"..fluidPercent..":"..tile.."]" or "image[2,3;1,1;industrialtest_gui_fluid_bg.png]"), + "list[context;leftover;2,4.2;1,1]", + "listring[context;leftover]", + "list[context;charged;6,3;1,1]", + "listring[context;charged]", + "box[9,1;0.3,4.8;#202020]", + (powerPercent>0 and "box[9,"..(1+4.8-(powerPercent*4.8))..";0.3,"..(powerPercent*4.8)..";#FF1010]" or ""), + "list[current_player;main;0.5,6.25;8,1]list[current_player;main;0.5,7.5;8,3;8]" + } + elseif industrialtest.mclAvailable then + formspec={ + "size[10.04,12]", + "label[0.25,0.25;"..S("Geothermal Generator").."]", + "list[context;fluid;2,1.8;1,1]", + mcl_formspec.get_itemslot_bg(2,1.8,1,1), + "listring[context;fluid]", + (fluidPercent>0 and "image[2,3;1,1;industrialtest_gui_fluid_bg.png^[lowpart:"..fluidPercent..":"..tile.."]" or "image[2,3;1,1;industrialtest_gui_fluid_bg.png]"), + "list[context;leftover;2,4.2;1,1]", + mcl_formspec.get_itemslot_bg(2,4.2,1,1), + "listring[context;leftover]", + "list[context;charged;6,3;1,1]", + mcl_formspec.get_itemslot_bg(6,3,1,1), + "listring[context;charged]", + "box[9,1;0.3,4.8;#202020]", + (powerPercent>0 and "box[9,"..(1+4.8-(powerPercent*4.8))..";0.3,"..(powerPercent*4.8)..";#FF1010]" or ""), + "list[current_player;main;0.5,7;9,3;9]", + mcl_formspec.get_itemslot_bg(0.5,7,9,3), + "list[current_player;main;0.5,10.24;9,1]", + mcl_formspec.get_itemslot_bg(0.5,10.24,9,1) + } + end + return table.concat(formspec,"") +end +definition={ + description=S("Geothermal Generator"), + tiles={ + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png^industrialtest_geothermal_generator_front.png", + }, + paramtype2="facedir", + legacy_facedir_simple=true, + drop="industrialtest:machine_block", + on_construct=function(pos) + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + inv:set_size("charged",1) + inv:set_size("fluid",1) + inv:set_size("leftover",1) + meta:set_float("fluidAmount",0) + meta:set_string("fluid","") + meta:set_string("formspec",geothermalGeneratorFormspec(0,0,"")) + industrialtest.api.addPowerStorage(meta,7000,industrialtest.api.lvPowerFlow,"oooooo") + end, + on_timer=function(pos,elapsed) + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + local fluidSlot=inv:get_stack("fluid",1) + local chargedSlot=inv:get_stack("charged",1) + local afterFlow,flowTransferred=industrialtest.api.powerFlow(pos) + local shouldUpdateFormspec=false + local shouldRerunTimer=(afterFlow and meta:get_int("industrialtest.powerAmount")>0) + + if fluidSlot:get_count()>0 and meta:get_float("fluidAmount")<=9000 then + local fuel=industrialtest.api.getGeothermalGeneratorFuelByItem(fluidSlot:get_name()) + if fuel and (fuel.name==meta:get_string("fluid") or meta:get_string("fluid")=="") then + local leftover=false + local leftoverAddingSucceeded=false + for _,item in ipairs(fuel.storageItems) do + if item.name==fluidSlot:get_name() and item.leftover then + if inv:room_for_item("leftover",ItemStack(item.leftover)) then + inv:add_item("leftover",ItemStack(item.leftover)) + leftoverAddingSucceeded=true + end + leftover=true + end + end + if not leftover or leftoverAddingSucceeded then + fluidSlot:take_item() + inv:set_stack("fluid",1,fluidSlot) + meta:set_string("fluid",fuel.name) + meta:set_float("fluidAmount",meta:get_float("fluidAmount")+1000) + shouldUpdateFormspec=true + shouldRerunTimer=false + end + end + end + if meta:get_float("fluidAmount")>=50 and not industrialtest.api.isFullyCharged(meta) then + meta:set_float("fluidAmount",meta:get_int("fluidAmount")-50*elapsed) + local toAdd=math.ceil(industrialtest.api.getGeothermalGeneratorFuel(meta:get_string("fluid")).calorificValue*elapsed) + industrialtest.api.addPower(meta,toAdd) + shouldUpdateFormspec=true + minetest.swap_node(pos,{ + name="industrialtest:geothermal_generator_active", + param2=minetest.get_node(pos).param2 + }) + minetest.get_node_timer(pos):start(industrialtest.updateDelay) + end + if chargedSlot:get_count()>0 and meta:get_int("industrialtest.powerAmount")>0 then + if industrialtest.api.transferPowerToItem(meta,chargedSlot,industrialtest.api.lvPowerFlow)>0 then + inv:set_stack("charged",1,chargedSlot) + shouldUpdateFormspec=true + shouldRerunTimer=true + end + end + + if shouldUpdateFormspec then + meta:set_string("formspec",geothermalGeneratorFormspec(meta:get_float("fluidAmount")/100,meta:get_int("industrialtest.powerAmount")/meta:get_int("industrialtest.powerCapacity"),meta:get_string("fluid"))) + end + + return shouldRerunTimer + end, + allow_metadata_inventory_move=function(pos,fromList,fromIndex,toList,toIndex,count) + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + local itemstack=inv:get_stack(fromList,fromIndex) + if toList=="charged" and not industrialtest.api.hasPowerStorage(itemstack:get_meta()) then + return 0 + end + return count + end, + allow_metadata_inventory_put=function(pos,listname,index,stack) + if toList=="charged" and not industrialtest.api.hasPowerStorage(stack:get_meta()) then + return 0 + end + return stack:get_count() + end, + on_metadata_inventory_move=function(pos) + minetest.get_node_timer(pos):start(industrialtest.updateDelay) + end, + on_metadata_inventory_put=function(pos) + minetest.get_node_timer(pos):start(industrialtest.updateDelay) + end, + _industrialtest_updateFormspec=function(meta) + meta:set_string("formspec",geothermalGeneratorFormspec(meta:get_float("fluidAmount")/100,meta:get_int("industrialtest.powerAmount")/meta:get_int("industrialtest.powerCapacity"),meta:get_string("fluid"))) + end +} +if industrialtest.mtgAvailable then + definition.groups={ + cracky=1, + level=2 + } + definition.sounds=default.node_sound_metal_defaults() + definition.can_dig=function(pos) + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + return not (inv:get_list("charged")[1]:get_count()>0 or inv:get_list("fluid")[1]:get_count()>0) + end +elseif industrialtest.mclAvailable then + definition.after_dig_node=function(pos,oldnode,oldmeta) + mclAfterDigNode(pos,oldmeta,{"charged","fluid"}) + end + definition.groups={pickaxey=1} + definition.sounds=mcl_sounds.node_sound_metal_defaults() + definition._mcl_blast_resistance=3 + definition._mcl_hardness=3.5 +end +definition.groups._industrialtest_hasPowerOutput=1 +definition.groups._industrialtest_wrenchUnmountable=1 +minetest.register_node("industrialtest:geothermal_generator",definition) +definition=table.copy(definition) +definition.description=nil +definition.tiles={ + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png", + "industrialtest_machine_block.png^industrialtest_geothermal_generator_front_active.png", +} +definition.on_timer=function(pos,elapsed) + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + local fluidSlot=inv:get_stack("fluid",1) + local chargedSlot=inv:get_stack("charged",1) + local afterFlow,flowTransferred=industrialtest.api.powerFlow(pos) + local shouldUpdateFormspec=false + local shouldRerunTimer=(afterFlow and meta:get_int("industrialtest.powerAmount")>0) + + if fluidSlot:get_count()>0 and meta:get_float("fluidAmount")<=9000 then + local fuel=industrialtest.api.getGeothermalGeneratorFuelByItem(fluidSlot:get_name()) + if fuel and (fuel.name==meta:get_string("fluid") or meta:get_string("fluid")=="") then + local leftover=false + local leftoverAddingSucceeded=false + for _,item in ipairs(fuel.storageItems) do + if item.name==fluidSlot:get_name() and item.leftover then + if inv:room_for_item("leftover",ItemStack(item.leftover)) then + inv:add_item("leftover",ItemStack(item.leftover)) + leftoverAddingSucceeded=true + end + leftover=true + end + end + if not leftover or leftoverAddingSucceeded then + fluidSlot:take_item() + inv:set_stack("fluid",1,fluidSlot) + meta:set_string("fluid",fuel.name) + meta:set_float("fluidAmount",meta:get_float("fluidAmount")+1000) + minetest.chat_send_all(meta:get_float("fluidAmount")) + shouldUpdateFormspec=true + shouldRerunTimer=false + end + end + end + if meta:get_float("fluidAmount")>=50 and not industrialtest.api.isFullyCharged(meta) then + meta:set_float("fluidAmount",meta:get_int("fluidAmount")-50*elapsed) + local toAdd=math.ceil(industrialtest.api.getGeothermalGeneratorFuel(meta:get_string("fluid")).calorificValue*elapsed) + industrialtest.api.addPower(meta,toAdd) + shouldUpdateFormspec=true + shouldRerunTimer=true + else + minetest.swap_node(pos,{ + name="industrialtest:geothermal_generator", + param2=minetest.get_node(pos).param2 + }) + minetest.get_node_timer(pos):start(industrialtest.updateDelay) + end + if chargedSlot:get_count()>0 and meta:get_int("industrialtest.powerAmount")>0 then + if industrialtest.api.transferPowerToItem(meta,chargedSlot,industrialtest.api.lvPowerFlow)>0 then + inv:set_stack("charged",1,chargedSlot) + shouldUpdateFormspec=true + shouldRerunTimer=true + end + end + + if shouldUpdateFormspec then + meta:set_string("formspec",geothermalGeneratorFormspec(meta:get_float("fluidAmount")/100,meta:get_int("industrialtest.powerAmount")/meta:get_int("industrialtest.powerCapacity"),meta:get_string("fluid"))) + end + + return shouldRerunTimer +end +if industrialtest.mclAvailable then + definition.groups.not_in_creative_inventory=1 + definition._doc_items_create_entry=false +end +definition.light_source=8 +minetest.register_node("industrialtest:geothermal_generator_active",definition) + -- Item processing machines local function registerSimpleElectricItemProcessor(config) local function getFormspec(powerPercent,srcPercent) diff --git a/mod.conf b/mod.conf index 1db9c64..52477e1 100644 --- a/mod.conf +++ b/mod.conf @@ -1,5 +1,5 @@ name=industrialtest description=Adds various machinery -optional_depends=default,3d_armor,mcl_core,mcl_copper,mcl_armor,mcl_deepslate,mcl_nether +optional_depends=default,bucket,3d_armor,mcl_core,mcl_copper,mcl_armor,mcl_deepslate,mcl_nether,mcl_buckets author=IndustrialTest Team title=IndustrialTest \ No newline at end of file diff --git a/textures/industrialtest_geothermal_generator_front.png b/textures/industrialtest_geothermal_generator_front.png new file mode 100644 index 0000000000000000000000000000000000000000..bf217dec7d4ca07ba41e5310ebd6abdf639597b7 GIT binary patch literal 640 zcmV-`0)PF9P)JDYOs~NfE^&0Z~v(iC`MFh!Kq1B%7Cz$FiFs!B()b2v~?V zz6$?=wt}sKASi-}oxQI{!g|LQ5+s>r_I{k1bGdsKoO3xXZ?;WCzECnE;gD}Rw&Lq} z#l;|QCh^2IQ=ea)jnZ;`-Q!U8E~t97zSnehB~zvb4!7`xrW++;nTENIlCF41xL3=@ zlfp;B0Ye59zE*m|<`=~on?DpA(Z~!qRZm~0ffEg^WsSV>h_FAOD{FuAs4wxP3QLPp z`(+Pc5+O_o9|_8=lcPjXYC$qB}El?DXCU2bzhBz{0#TyW{EL~Gl)1s&3$x%_c z|IgD*kB`~iJt1g+wygId=-7o?)v~^iEvt3{t|z!G)cr-tY3ft-YF+amf_Dqfuj*Q2 z4=%Q$?@^B%@n6X$+nG+o+ZlAnpyw7kSM99+&N+R6=%)Ol8`wX9VY%;J`vEz$Xe4ri zr(gg8010qNS#tmYE+YT{E+YYWr9XB6006j2L_t(IPo-1A4Z=VSOW6f<%)$re;0JTS zuXDhMT`DmQ$dz3AtON=59@RN<5+~_JtULqb&zI|m_wjxk6vOT|VA$sm$gk%kwyni` zn&NOgg<^1M!yUX`+s{citjgdF!&mW^1gNY;U>?2u$Vvs2ssXMNzEXjbsf9?Ncmh^=5_5wH+# zd=>r!Z3SBeK~Mw{J9}S^g!N7mh=`eG_I{k1bGdsKoS~eax7ubPUnrU3U_e`nEo&XG zxEQ7rAH8wiGUg+5QChCAdmO6X`Bksh_x@eo$&{soqf>ZFH_Vc-OhahBWGLPd?$@*N zr0|ij&y)d$ua%yt^NZq4oj(+t(eNxdRZlJRixai&a}35z#>85Tw_G;@H9B3t z8JsJ7Koa<=R$&j^T?~-E@qr}=BNn?QldxE<$ZvfUX~Sg8(AmS7C=HVb^FnSJsQh}7(lV(=!Sy{TPFvk`g!T& z?pYyN(^m+XBgmy$H>MB+m@J+xcxVJ7twKYRMKBhp9@=~QWfp&(YhSFZ!L5%FF{dd@tbXMq5Hb1z-adinX-Ctf$xTdF1WPXRCH-77o1D~CsAt~~AbvLQ zVLGF`{cw$MIhcI)P@}M76OWwCiW{8`00`Z&G_Sv^1rnB778fhjp{diW3j}=eATkXA zBst&4q67QBE6_thq4chz7bzB8_^?wUax;I7QCe0``3?#iJH@5g+29n6wl0cqB40G{ j(KE)Of2N+>{BQdUuPd}GmaJ5C00000NkvXXu0mjf6ThO| literal 0 HcmV?d00001 diff --git a/textures/industrialtest_gui_fluid_bg.png b/textures/industrialtest_gui_fluid_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..124ddfe38faaa9531bb308d9de2768c4c8550b30 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#IkOyxf>HA3|204%+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9Vjm8>EaloaXvXDARs}3)xdB9hns0nmV}iQLu5QdgUH4eSs>k>u6{1-oD!M3?np*GOa}0aZb+3(dByN-s?(dw?Dq;`TqTmNIhK*4OSWehVE_>FRcomVu_xX zMeB^bK{rRb!^gz~c7hbNlU?8oeh>&j5CWkP2H~&=WDo(75Czc?1F;YX`{4k@Ljoj1 z5+p+k9EPKi3h9smnUDp?AscewB%FfNkPCT`4+T&NXW%T9Kq;JqGB^(vZ~-cz8fxGY z)ImKoK{K>M8?-|wbU_dFYR5vZ2)QbxQAm@J79p)dt_!)LZA1)eqlh*UT_XBL+}3&< z+HLq(M5mY@F@0j%9T*nV<;aKwcOB_-qEo_vgdqtx-MHmOj}*BF173`HA(t}d%|kzi z0~rfoIGE93?uVcVW-1tYD7PXQ4dXun z$Y$mQ(@$A2lVhpOMV+trD9=(=fTjRt;bLVGs-mT{#VCuJDM49cJX?yYl-Y7rWhTlB zW-C#a*{jP}tE-rV-Ku7Tem!yBHcK+O4`hBdSf%#S^7rs8*m9a|J zP~-3R;<6VG9QNhi?~bmwjBL3U^?}fCMe?Z_R_}3q#w7nz{03XU=hx(=Z^G=GMf(1y zL&A0iXWRaGq09rbZ_V`gHMZ78IBl=ISl^S1W#X5nU;K6Z@892(l;j3ozKV6B_@#Hc z?+tZ&ITsaMe3ihVn^tfB(mOctXMptB8MAfnys=mCNqO7#8$W#hVOGcf&z7_7ZJ*zo zGJQ{e?EIp}4;ILs$=-oRh&m!KkBdwzLr&m@QEq(dQAAzs4C3= literal 0 HcmV?d00001 diff --git a/textures/industrialtest_mcl_refined_iron_ingot.png b/textures/industrialtest_mcl_refined_iron_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..122d6c9e40a4ead2eaef7475653a6b2def3b593c GIT binary patch literal 797 zcmV+&1LFLNP)or;P)&?S3J&F z91P-Ogt3@r>I>od2rbvwJvLSEe5zOLdrenoB57)1a|ustx=|FCX$Wo%g z5IzzfH)KHJYo*6){GvEr;}69~Bs2$h)zg!1;CKUT86zh=D(uZ=OWNN&>Py_o{8CtI zzw7}_LIm*RAx?>PvJ~-2%}Zv@eG|XFMGE54x}n)wvHQrEnP(7grcS9LAE z2N&DW_o&B=*stV}ZBM1(?F_o2&~pnNtF^5D&N+R6$fo?F8`wX9VY%PE_5)R^XfYQY zl8OKT010qNS#tmYE+YT{E+YYWr9XB600C7=L_t(IPh()95HN!Ew@pGZW{tb`e~>`P z&ZCSBRe5-=U_zG#X@33c1p^4@v;6=Ygby$x+YZxwvy14ATr!4`TE1@GvC*dINC@npZ(Wa2J4_YwPF?cP+@Uw{KoE2#bh<>HBx@ zVRZ>g7;N9X5$yLH*DixKfdGtFR90e$c>4guCGc3Vzj5xrijo||*Uw)V>|LC}e#Ztt z@+*WD;9-IijUYoLMTHoC{`|=xry$Sp<;xd>hCmE}0bn433=!hv28$S*n}X@rFJCc; zii?417o1=uAR>ENJ-5#zg0U%~3mo;(fK1ab)|5J5D|RUlV_0IC7dct$ql(SwH! zpa6scP_%-?V3uIG0HzS#B_NH+nnCiAbU*;u$0fkS1f&#XGfXq47qA!xa|uWzx@JO_ b6D1D-_m;bJOO3XR00000NkvXXu0mjfzawLr literal 0 HcmV?d00001