Compare commits
No commits in common. "960b2e5b4549ccfe69e99c23bc098470d3ae07eb" and "e11747c34eaacbe7879453905627877e2ccd977b" have entirely different histories.
960b2e5b45
...
e11747c34e
@ -15,7 +15,6 @@ Currently IndustrialTest supports following games:
|
||||
## Optional dependencies
|
||||
- [Rubber Addon for MineClone](https://content.minetest.net/packages/biochemist/mcl_rubber)
|
||||
- [Pipeworks](https://content.minetest.net/packages/VanessaE/pipeworks)
|
||||
- [Mesecons](https://content.minetest.net/packages/Jeija/mesecons)
|
||||
|
||||
## Contributors
|
||||
- mrkubax10 <mrkubax10@onet.pl or mrkubax10 at irc.libera.chat> [programming, some graphics]
|
||||
|
@ -1,124 +0,0 @@
|
||||
-- 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
-- Rotary Macerator
|
||||
local override={
|
||||
mesecons={
|
||||
effector={
|
||||
action_on=function(pos,node)
|
||||
if node.name~="industrialtest:rotary_macerator" then
|
||||
return
|
||||
end
|
||||
|
||||
local meta=minetest.get_meta(pos)
|
||||
meta:set_int("maintainSpeed",1)
|
||||
|
||||
local def=minetest.registered_nodes[node.name]
|
||||
def._industrialtest_updateFormspec(pos)
|
||||
|
||||
minetest.get_node_timer(pos):start(industrialtest.updateDelay)
|
||||
end,
|
||||
action_off=function(pos,node)
|
||||
local meta=minetest.get_meta(pos)
|
||||
meta:set_int("maintainSpeed",0)
|
||||
|
||||
local def=minetest.registered_nodes[node.name]
|
||||
def._industrialtest_updateFormspec(pos)
|
||||
end
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
minetest.override_item("industrialtest:rotary_macerator",override)
|
||||
minetest.override_item("industrialtest:rotary_macerator_active",override)
|
||||
|
||||
-- Nuclear Reactor
|
||||
override={
|
||||
mesecons={
|
||||
effector={
|
||||
action_on=function(pos,node)
|
||||
local isChamber=node.name=="industrialtest:nuclear_reactor_chamber"
|
||||
if node.name~="industrialtest:nuclear_reactor" and not isChamber then
|
||||
return
|
||||
end
|
||||
|
||||
local originalPos
|
||||
local meta=minetest.get_meta(pos)
|
||||
meta:set_int("meseconPowered",1)
|
||||
if isChamber then
|
||||
originalPos=pos
|
||||
pos=minetest.deserialize(meta:get_string("reactor"))
|
||||
node=minetest.get_node(pos)
|
||||
meta=minetest.get_meta(pos)
|
||||
end
|
||||
|
||||
meta:set_int("enabled",1)
|
||||
meta:set_int("stateChanged",1)
|
||||
|
||||
local def=minetest.registered_nodes[node.name]
|
||||
def._industrialtest_updateFormspec(pos)
|
||||
|
||||
if isChamber then
|
||||
def._industrialtest_synchronizeToChamber(originalPos)
|
||||
end
|
||||
|
||||
minetest.get_node_timer(pos):start(industrialtest.updateDelay)
|
||||
end,
|
||||
action_off=function(pos,node)
|
||||
local isChamber=node.name=="industrialtest:nuclear_reactor_chamber"
|
||||
|
||||
local originalPos
|
||||
local meta=minetest.get_meta(pos)
|
||||
meta:set_int("meseconPowered",0)
|
||||
if isChamber then
|
||||
originalPos=pos
|
||||
pos=minetest.deserialize(meta:get_string("reactor"))
|
||||
node=minetest.get_node(pos)
|
||||
meta=minetest.get_meta(pos)
|
||||
end
|
||||
|
||||
if meta:get_int("meseconPowered")==1 then
|
||||
return
|
||||
end
|
||||
if meta:contains("chambers") then
|
||||
local chambers=minetest.deserialize(meta:get_string("chambers"))
|
||||
for _,chamber in ipairs(chambers) do
|
||||
local chamberMeta=minetest.get_meta(chamber)
|
||||
if chamberMeta:get_int("meseconPowered")==1 then
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
meta:set_int("enabled",0)
|
||||
meta:set_int("stateChanged",1)
|
||||
|
||||
local def=minetest.registered_nodes[node.name]
|
||||
def._industrialtest_updateFormspec(pos)
|
||||
|
||||
if isChamber then
|
||||
def._industrialtest_synchronizeToChamber(originalPos)
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
minetest.override_item("industrialtest:nuclear_reactor",override)
|
||||
minetest.override_item("industrialtest:nuclear_reactor_active",override)
|
||||
|
||||
-- Nuclear Reactor Chamber
|
||||
minetest.override_item("industrialtest:nuclear_reactor_chamber",override)
|
@ -157,7 +157,6 @@ local override={
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv=meta:get_inventory()
|
||||
local result=inv:add_item(listname,stack)
|
||||
minetest.registered_nodes["industrialtest:nuclear_reactor"].on_metadata_inventory_put(pos)
|
||||
return result
|
||||
end,
|
||||
can_insert=function(pos,node,stack,direction)
|
||||
@ -189,36 +188,6 @@ local override={
|
||||
minetest.override_item("industrialtest:nuclear_reactor",override)
|
||||
minetest.override_item("industrialtest:nuclear_reactor_active",override)
|
||||
|
||||
-- Nuclear Reactor Chamber
|
||||
override=table.copy(override)
|
||||
def=table.copy(minetest.registered_nodes["industrialtest:nuclear_reactor_chamber"])
|
||||
|
||||
override.groups=def.groups
|
||||
override.groups.tubedevice=1
|
||||
override.groups.tubedevice_receiver=1
|
||||
|
||||
override.tube.insert_object=function(pos,node,stack,direction)
|
||||
local listname=direction.y==0 and "charged" or "fuel"
|
||||
local def=stack:get_definition()
|
||||
if (listname=="charged" and not industrialtest.api.hasPowerStorage(stack:get_meta())) or
|
||||
(listname=="fuel" and (not def.groups or not def.groups._industrialtest_placedInNuclearReactor)) then
|
||||
return nil
|
||||
end
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv=meta:get_inventory()
|
||||
local result=inv:add_item(listname,stack)
|
||||
minetest.registered_nodes["industrialtest:nuclear_reactor_chamber"].on_metadata_inventory_put(pos)
|
||||
return result
|
||||
end
|
||||
|
||||
override.after_place_node_old=def.after_place_node
|
||||
override.after_place_node=function(pos)
|
||||
minetest.registered_nodes["industrialtest:nuclear_reactor_chamber"].after_place_node_old(pos)
|
||||
pipeworks.after_place(pos)
|
||||
end
|
||||
|
||||
minetest.override_item("industrialtest:nuclear_reactor_chamber",override)
|
||||
|
||||
-- BatBox
|
||||
addPipeworksCompatibility("industrialtest:batbox",{
|
||||
{
|
||||
|
@ -46,7 +46,6 @@ elseif industrialtest.mclAvailable then
|
||||
industrialtest.mods.mclRubber=minetest.get_modpath("mcl_rubber")
|
||||
end
|
||||
industrialtest.mods.pipeworks=minetest.get_modpath("pipeworks")
|
||||
industrialtest.mods.mesecons=minetest.get_modpath("mesecons")
|
||||
|
||||
if industrialtest.mtgAvailable and not industrialtest.mods._3dArmor then
|
||||
error("IndustrialTest requires 3D Armor when used with Minetest Game")
|
||||
|
@ -554,13 +554,6 @@ industrialtest.api.registerPlate("tin_plate",S("Tin Plate"),{
|
||||
}
|
||||
},"#e0e0e0ff",true)
|
||||
|
||||
industrialtest.api.registerPlate("lead_plate",S("Lead Plate"),{
|
||||
{
|
||||
resource="industrialtest:lead_ingot",
|
||||
count=1
|
||||
}
|
||||
},"#eafef8ff",true)
|
||||
|
||||
-- Cells
|
||||
minetest.register_craftitem("industrialtest:empty_cell",{
|
||||
description=S("Empty Cell"),
|
||||
|
3
init.lua
3
init.lua
@ -83,6 +83,3 @@ dofile(modpath.."/crafts.lua")
|
||||
if industrialtest.mods.pipeworks then
|
||||
dofile(modpath.."/compat/pipeworks.lua")
|
||||
end
|
||||
if industrialtest.mods.mesecons then
|
||||
dofile(modpath.."/compat/mesecons.lua")
|
||||
end
|
||||
|
@ -95,6 +95,9 @@ machine.onConstruct=function(pos,config)
|
||||
local inv=meta:get_inventory()
|
||||
|
||||
industrialtest.api.addPowerStorage(meta,config.capacity,config.flow,config.ioConfig)
|
||||
if not config.withoutFormspec then
|
||||
meta:set_string("formspec",machine.getFormspec(pos,config))
|
||||
end
|
||||
|
||||
if config.groups then
|
||||
if config.groups._industrialtest_hasPowerInput then
|
||||
@ -127,14 +130,10 @@ machine.onConstruct=function(pos,config)
|
||||
config.onConstruct(pos,meta,inv)
|
||||
end
|
||||
|
||||
if not config.withoutFormspec then
|
||||
meta:set_string("formspec",machine.getFormspec(pos,config))
|
||||
end
|
||||
|
||||
minetest.get_node_timer(pos):start(industrialtest.updateDelay)
|
||||
end
|
||||
|
||||
machine.onDestruct=function(pos,config)
|
||||
machine.onDestruct=function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
if industrialtest.api.isNetworkMaster(meta) then
|
||||
local network=industrialtest.api.createNetworkMap(pos,true)
|
||||
@ -156,9 +155,6 @@ machine.onDestruct=function(pos,config)
|
||||
industrialtest.api.removeNodeFromNetwork(network,pos)
|
||||
end
|
||||
end
|
||||
if config.onDestruct then
|
||||
config.onDestruct(pos)
|
||||
end
|
||||
end
|
||||
|
||||
machine.onTimer=function(pos,elapsed,config)
|
||||
@ -291,9 +287,7 @@ function industrialtest.internal.registerMachine(config)
|
||||
on_construct=function(pos)
|
||||
machine.onConstruct(pos,config)
|
||||
end,
|
||||
on_destruct=function(pos)
|
||||
machine.onDestruct(pos,config)
|
||||
end,
|
||||
on_destruct=machine.onDestruct,
|
||||
on_timer=function(pos,elapsed)
|
||||
local shouldRerunTimer,_=machine.onTimer(pos,elapsed,config)
|
||||
return shouldRerunTimer
|
||||
@ -327,12 +321,6 @@ function industrialtest.internal.registerMachine(config)
|
||||
end,
|
||||
_industrialtest_updateFormspec=function(pos)
|
||||
machine.updateFormspec(pos,config)
|
||||
end,
|
||||
_industrialtest_getFormspec=function(pos)
|
||||
if config.withoutFormspec then
|
||||
return ""
|
||||
end
|
||||
return machine.getFormspec(pos,config)
|
||||
end
|
||||
}
|
||||
if industrialtest.mtgAvailable then
|
||||
|
@ -16,17 +16,15 @@
|
||||
|
||||
local S=minetest.get_translator("industrialtest")
|
||||
local reactor={}
|
||||
local reactorChamber={}
|
||||
|
||||
reactor.getFormspec=function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local charged=meta:get_int("industrialtest.powerAmount")/meta:get_int("industrialtest.powerCapacity")
|
||||
local size=math.floor(meta:get_int("size")/3)
|
||||
local switchText=(meta:get_int("enabled")==0 and S("Start") or S("Stop"))
|
||||
local formspec
|
||||
if industrialtest.mtgAvailable then
|
||||
formspec={
|
||||
"list[context;fuel;1,1;"..size..","..size.."]",
|
||||
"list[context;fuel;1,1;5,4]",
|
||||
"listring[context;fuel]",
|
||||
"list[context;charged;7.7,2.8;1,1]",
|
||||
"listring[context;charged]",
|
||||
@ -36,8 +34,8 @@ reactor.getFormspec=function(pos)
|
||||
}
|
||||
elseif industrialtest.mclAvailable then
|
||||
formspec={
|
||||
"list[context;fuel;1,1;"..size..","..size.."]",
|
||||
mcl_formspec.get_itemslot_bg(1,1,size,size),
|
||||
"list[context;fuel;1,1;5,4]",
|
||||
mcl_formspec.get_itemslot_bg(1,1,5,4),
|
||||
"listring[context;fuel]",
|
||||
"list[context;charged;7,2.8;1,1]",
|
||||
mcl_formspec.get_itemslot_bg(7.7,2.8,1,1),
|
||||
@ -51,23 +49,13 @@ reactor.getFormspec=function(pos)
|
||||
end
|
||||
|
||||
reactor.onConstruct=function(pos,meta,inv)
|
||||
inv:set_size("fuel",4)
|
||||
inv:set_size("fuel",20)
|
||||
inv:set_size("charged",1)
|
||||
meta:set_int("heat",0)
|
||||
meta:set_int("size",6)
|
||||
meta:set_int("enabled",0)
|
||||
meta:set_int("stateChanged",0)
|
||||
end
|
||||
|
||||
reactor.onDestruct=function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local chambers=minetest.deserialize(meta:get_string("chambers")) or {}
|
||||
for _,chamber in ipairs(chambers) do
|
||||
minetest.remove_node(chamber)
|
||||
minetest.add_item(chamber,"industrialtest:nuclear_reactor_chamber")
|
||||
end
|
||||
end
|
||||
|
||||
local function hasFuel(fuelList)
|
||||
for _,stack in ipairs(fuelList) do
|
||||
if stack:get_name()=="industrialtest:uranium_cell" then
|
||||
@ -77,12 +65,12 @@ local function hasFuel(fuelList)
|
||||
return false
|
||||
end
|
||||
|
||||
local function findMaxFuelCluster(size,fuelList)
|
||||
local function findMaxFuelCluster(fuelList)
|
||||
local maxCluster={}
|
||||
for y=1,size do
|
||||
for x=1,size do
|
||||
for y=1,4 do
|
||||
for x=1,5 do
|
||||
local iy=y-1
|
||||
local stack=fuelList[iy*size+x]
|
||||
local stack=fuelList[iy*5+x]
|
||||
local def=minetest.registered_tools[stack:get_name()]
|
||||
if def and def.groups._industrialtest_nuclearReactorFuel then
|
||||
local cluster={
|
||||
@ -91,49 +79,49 @@ local function findMaxFuelCluster(size,fuelList)
|
||||
y=iy
|
||||
}
|
||||
}
|
||||
if x>1 and fuelList[iy*size+x-1]:get_name()==stack:get_name() then
|
||||
if x>1 and fuelList[iy*5+x-1]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x-1,
|
||||
y=iy
|
||||
})
|
||||
end
|
||||
if x<size and fuelList[iy*size+x+1]:get_name()==stack:get_name() then
|
||||
if x<5 and fuelList[iy*5+x+1]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x+1,
|
||||
y=iy
|
||||
})
|
||||
end
|
||||
if y>1 and fuelList[(iy-1)*size+x]:get_name()==stack:get_name() then
|
||||
if y>1 and fuelList[(iy-1)*5+x]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x,
|
||||
y=iy-1
|
||||
})
|
||||
end
|
||||
if y<size and fuelList[(iy+1)*size+x]:get_name()==stack:get_name() then
|
||||
if y<4 and fuelList[(iy+1)*5+x]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x,
|
||||
y=iy+1
|
||||
})
|
||||
end
|
||||
if x>1 and y>1 and fuelList[(iy-1)*size+x-1]:get_name()==stack:get_name() then
|
||||
if x>1 and y>1 and fuelList[(iy-1)*5+x-1]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x-1,
|
||||
y=iy-1
|
||||
})
|
||||
end
|
||||
if x<size and y>1 and fuelList[(iy-1)*size+x+1]:get_name()==stack:get_name() then
|
||||
if x<5 and y>1 and fuelList[(iy-1)*5+x+1]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x+1,
|
||||
y=iy-1
|
||||
})
|
||||
end
|
||||
if x>1 and y<size and fuelList[(iy+1)*size+x-1]:get_name()==stack:get_name() then
|
||||
if x>1 and y<4 and fuelList[(iy+1)*5+x-1]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x-1,
|
||||
y=iy+1
|
||||
})
|
||||
end
|
||||
if x<size and y<size and fuelList[(iy+1)*size+x+1]:get_name()==stack:get_name() then
|
||||
if x<5 and y<4 and fuelList[(iy+1)*5+x+1]:get_name()==stack:get_name() then
|
||||
table.insert(cluster,{
|
||||
x=x+1,
|
||||
y=iy+1
|
||||
@ -152,7 +140,7 @@ local function findMaxFuelCluster(size,fuelList)
|
||||
end
|
||||
|
||||
local function findCoolant(fuelList)
|
||||
for i=1,#fuelList do
|
||||
for i=1,20 do
|
||||
local stack=fuelList[i]
|
||||
local def=minetest.registered_tools[stack:get_name()]
|
||||
if def and def.groups._industrialtest_nuclearReactorCoolant then
|
||||
@ -201,14 +189,11 @@ reactor.onTimer=function(pos,elapsed,meta,inv)
|
||||
shouldRerunTimer=false
|
||||
end
|
||||
|
||||
reactor.synchronizeChambers(pos)
|
||||
|
||||
return shouldRerunTimer,shouldUpdateFormspec
|
||||
end
|
||||
|
||||
reactor.activeOnTimer=function(pos,elapsed,meta,inv)
|
||||
local powerFlow=meta:get_int("industrialtest.powerFlow")
|
||||
local size=math.floor(meta:get_int("size")/3)
|
||||
local chargedSlot=inv:get_stack("charged",1)
|
||||
local fuelList=inv:get_list("fuel")
|
||||
local afterFlow,flowTransferred=industrialtest.api.powerFlow(pos)
|
||||
@ -233,14 +218,13 @@ reactor.activeOnTimer=function(pos,elapsed,meta,inv)
|
||||
param2=minetest.get_node(pos).param2
|
||||
})
|
||||
meta:set_int("enabled",0)
|
||||
reactor.synchronizeChambers(pos)
|
||||
minetest.get_node_timer(pos):start(industrialtest.updateDelay)
|
||||
return false,shouldUpdateFormspec
|
||||
end
|
||||
|
||||
local maxCluster=findMaxFuelCluster(size,fuelList)
|
||||
local maxCluster=findMaxFuelCluster(fuelList)
|
||||
for _,stack in ipairs(maxCluster) do
|
||||
local index=stack.y*size+stack.x
|
||||
local index=stack.y*5+stack.x
|
||||
local usedStack,_=useFuel(fuelList[index],5)
|
||||
inv:set_stack("fuel",index,usedStack)
|
||||
end
|
||||
@ -253,7 +237,7 @@ reactor.activeOnTimer=function(pos,elapsed,meta,inv)
|
||||
local coolant=findCoolant(fuelList)
|
||||
if coolant>0 then
|
||||
local coolantStack,used=useFuel(fuelList[coolant],#maxCluster*50)
|
||||
heat=math.max(0,heat-used)
|
||||
heat=heat-used
|
||||
inv:set_stack("fuel",coolant,coolantStack)
|
||||
end
|
||||
if heat>200 then
|
||||
@ -263,8 +247,6 @@ reactor.activeOnTimer=function(pos,elapsed,meta,inv)
|
||||
end
|
||||
meta:set_int("heat",heat)
|
||||
|
||||
reactor.synchronizeChambers(pos)
|
||||
|
||||
return shouldRerunTimer,shouldUpdateFormspec
|
||||
end
|
||||
|
||||
@ -289,7 +271,6 @@ end
|
||||
|
||||
reactor.metadataChange=function(pos)
|
||||
minetest.get_node_timer(pos):start(industrialtest.updateDelay)
|
||||
reactor.synchronizeChambers(pos)
|
||||
end
|
||||
|
||||
reactor.handleFormspecFields=function(pos,formname,fields)
|
||||
@ -311,121 +292,33 @@ reactor.handleFormspecFields=function(pos,formname,fields)
|
||||
reactor.metadataChange(pos)
|
||||
end
|
||||
|
||||
reactor.synchronizeToChamber=function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv=meta:get_inventory()
|
||||
local fuelList=inv:get_list("fuel")
|
||||
local chargedList=inv:get_list("charged")
|
||||
|
||||
local reactorPos=minetest.deserialize(meta:get_string("reactor"))
|
||||
local reactorMeta=minetest.get_meta(reactorPos)
|
||||
local reactorInv=reactorMeta:get_inventory()
|
||||
reactorInv:set_list("fuel",fuelList)
|
||||
reactorInv:set_list("charged",chargedList)
|
||||
|
||||
reactor.synchronizeChambers(reactorPos)
|
||||
end
|
||||
|
||||
reactor.synchronizeChambers=function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local chambers=meta:contains("chambers") and minetest.deserialize(meta:get_string("chambers")) or {}
|
||||
for _,chamber in ipairs(chambers) do
|
||||
reactorChamber.synchronize(chamber,pos)
|
||||
end
|
||||
end
|
||||
|
||||
reactor.changeSize=function(pos,diff)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv=meta:get_inventory()
|
||||
local size=meta:get_int("size")+diff
|
||||
local actualSize=math.floor(size/3)
|
||||
meta:set_int("size",size)
|
||||
inv:set_size("fuel",actualSize*actualSize)
|
||||
|
||||
local def=minetest.registered_nodes[minetest.get_node(pos).name]
|
||||
def._industrialtest_updateFormspec(pos)
|
||||
end
|
||||
|
||||
reactorChamber.synchronize=function(pos,reactor)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv=meta:get_inventory()
|
||||
local reactorDef=minetest.registered_nodes[minetest.get_node(reactor).name]
|
||||
meta:set_string("formspec",reactorDef._industrialtest_getFormspec(reactor))
|
||||
|
||||
local reactorMeta=minetest.get_meta(reactor)
|
||||
local reactorInv=reactorMeta:get_inventory()
|
||||
local fuelList=reactorInv:get_list("fuel")
|
||||
local chargedList=reactorInv:get_list("charged")
|
||||
inv:set_size("fuel",#fuelList)
|
||||
inv:set_size("charged",#chargedList)
|
||||
inv:set_list("fuel",fuelList)
|
||||
inv:set_list("charged",chargedList)
|
||||
end
|
||||
|
||||
reactorChamber.afterPlaceNode=function(pos)
|
||||
local neighbours={
|
||||
vector.offset(pos,-1,0,0),
|
||||
vector.offset(pos,1,0,0),
|
||||
vector.offset(pos,0,-1,0),
|
||||
vector.offset(pos,0,1,0),
|
||||
vector.offset(pos,0,0,-1),
|
||||
vector.offset(pos,0,0,1)
|
||||
local definition={
|
||||
description=S("Nuclear Reactor Chamber"),
|
||||
tiles={"industrialtest_machine_block.png^industrialtest_nuclear_reactor_top.png"},
|
||||
drop="industrialtest:machine_block",
|
||||
groups={
|
||||
_industrialtest_wrenchUnmountable=1
|
||||
}
|
||||
local reactorPos=nil
|
||||
for _,neighbour in ipairs(neighbours) do
|
||||
local node=minetest.get_node(neighbour)
|
||||
if node.name=="industrialtest:nuclear_reactor" or node.name=="industrialtest:nuclear_reactor_active" then
|
||||
reactorPos=neighbour
|
||||
end
|
||||
end
|
||||
if not reactorPos then
|
||||
minetest.remove_node(pos)
|
||||
return true
|
||||
end
|
||||
|
||||
local meta=minetest.get_meta(pos)
|
||||
meta:set_string("reactor",minetest.serialize(reactorPos))
|
||||
|
||||
reactor.changeSize(reactorPos,1)
|
||||
reactor.synchronizeChambers(reactorPos)
|
||||
|
||||
local reactorMeta=minetest.get_meta(reactorPos)
|
||||
local chambers=reactorMeta:contains("chambers") and minetest.deserialize(reactorMeta:get_string("chambers")) or {}
|
||||
table.insert(chambers,pos)
|
||||
reactorMeta:set_string("chambers",minetest.serialize(chambers))
|
||||
|
||||
industrialtest.api.createNetworkMapForNode(reactorPos)
|
||||
|
||||
reactorChamber.synchronize(pos,reactorPos)
|
||||
end
|
||||
|
||||
reactorChamber.onDestruct=function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
if not meta:contains("reactor") then
|
||||
return
|
||||
end
|
||||
local reactorPos=minetest.deserialize(meta:get_string("reactor"))
|
||||
local reactorMeta=minetest.get_meta(reactorPos)
|
||||
if not reactorMeta or not reactorMeta:contains("chambers") then
|
||||
return
|
||||
end
|
||||
local chambers=minetest.deserialize(reactorMeta:get_string("chambers"))
|
||||
for i,chamber in ipairs(chambers) do
|
||||
if chamber.x==pos.x and chamber.y==pos.y and chamber.z==pos.z then
|
||||
table.remove(chambers,i)
|
||||
break
|
||||
end
|
||||
end
|
||||
reactorMeta:set_string("chambers",minetest.serialize(chambers))
|
||||
reactor.changeSize(reactorPos,-1)
|
||||
reactor.synchronizeChambers(reactorPos)
|
||||
end
|
||||
|
||||
reactorChamber.handleFormspecFields=function(pos,formname,fields)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local reactorPos=minetest.deserialize(meta:get_string("reactor"))
|
||||
reactor.handleFormspecFields(reactorPos,formname,fields)
|
||||
}
|
||||
if industrialtest.mtgAvailable then
|
||||
definition.sounds=default.node_sound_metal_defaults()
|
||||
definition.groups.cracky=1
|
||||
definition.groups.level=2
|
||||
elseif industrialtest.mclAvailable then
|
||||
definition.sounds=mcl_sounds.node_sound_metal_defaults()
|
||||
definition._mcl_blast_resistance=6
|
||||
definition._mcl_hardness=5
|
||||
end
|
||||
minetest.register_node("industrialtest:nuclear_reactor_chamber",definition)
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="industrialtest:nuclear_reactor_chamber",
|
||||
recipe={
|
||||
{"","industrialtest:copper_plate",""},
|
||||
{"industrialtest:copper_plate","industrialtest:machine_block","industrialtest:copper_plate"},
|
||||
{"","industrialtest:copper_plate",""}
|
||||
}
|
||||
})
|
||||
|
||||
industrialtest.internal.registerMachine({
|
||||
name="nuclear_reactor",
|
||||
@ -454,8 +347,7 @@ industrialtest.internal.registerMachine({
|
||||
},
|
||||
paramtype2="facedir",
|
||||
legacy_facedir_simple=true,
|
||||
on_receive_fields=reactor.handleFormspecFields,
|
||||
_industrialtest_synchronizeToChamber=reactor.synchronizeToChamber
|
||||
on_receive_fields=reactor.handleFormspecFields
|
||||
},
|
||||
activeCustomKeys={
|
||||
tiles={
|
||||
@ -471,14 +363,12 @@ industrialtest.internal.registerMachine({
|
||||
on_receive_fields=reactor.handleFormspecFields
|
||||
},
|
||||
onConstruct=reactor.onConstruct,
|
||||
onDestruct=reactor.onDestruct,
|
||||
onTimer=reactor.onTimer,
|
||||
activeOnTimer=reactor.activeOnTimer,
|
||||
allowMetadataInventoryMove=reactor.allowMetadataInventoryMove,
|
||||
allowMetadataInventoryPut=reactor.allowMetadataInventoryPut,
|
||||
onMetadataInventoryMove=reactor.metadataChange,
|
||||
onMetadataInventoryPut=reactor.metadataChange,
|
||||
onMetadataInventoryTake=reactor.metadataChange
|
||||
onMetadataInventoryPut=reactor.metadataChange
|
||||
})
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
@ -489,42 +379,3 @@ minetest.register_craft({
|
||||
{"","industrialtest:generator",""}
|
||||
}
|
||||
})
|
||||
|
||||
local definition={
|
||||
description=S("Nuclear Reactor Chamber"),
|
||||
tiles={"industrialtest_machine_block.png^industrialtest_nuclear_reactor_top.png"},
|
||||
drop="industrialtest:machine_block",
|
||||
groups={
|
||||
_industrialtest_wrenchUnmountable=1,
|
||||
_industrialtest_cable=1
|
||||
},
|
||||
on_destruct=reactorChamber.onDestruct,
|
||||
after_place_node=reactorChamber.afterPlaceNode,
|
||||
can_dig=minetest.registered_nodes["industrialtest:nuclear_reactor"].can_dig,
|
||||
on_receive_fields=reactorChamber.handleFormspecFields,
|
||||
allow_metadata_inventory_move=minetest.registered_nodes["industrialtest:nuclear_reactor"].allow_metadata_inventory_move,
|
||||
allow_metadata_inventory_put=minetest.registered_nodes["industrialtest:nuclear_reactor"].allow_metadata_inventory_put,
|
||||
on_metadata_inventory_move=reactor.synchronizeToChamber,
|
||||
on_metadata_inventory_put=reactor.synchronizeToChamber,
|
||||
on_metadata_inventory_take=reactor.synchronizeToChamber,
|
||||
_industrialtest_cableFlow=industrialtest.api.evPowerFlow
|
||||
}
|
||||
if industrialtest.mtgAvailable then
|
||||
definition.sounds=default.node_sound_metal_defaults()
|
||||
definition.groups.cracky=1
|
||||
definition.groups.level=2
|
||||
elseif industrialtest.mclAvailable then
|
||||
definition.sounds=mcl_sounds.node_sound_metal_defaults()
|
||||
definition._mcl_blast_resistance=6
|
||||
definition._mcl_hardness=5
|
||||
end
|
||||
minetest.register_node("industrialtest:nuclear_reactor_chamber",definition)
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="industrialtest:nuclear_reactor_chamber",
|
||||
recipe={
|
||||
{"","industrialtest:lead_plate",""},
|
||||
{"industrialtest:lead_plate","industrialtest:machine_block","industrialtest:lead_plate"},
|
||||
{"","industrialtest:lead_plate",""}
|
||||
}
|
||||
})
|
||||
|
@ -18,7 +18,6 @@ local S=minetest.get_translator("industrialtest")
|
||||
|
||||
local rotaryMacerator={}
|
||||
rotaryMacerator.opPower=60
|
||||
rotaryMacerator.maintainSpeedOpPower=10
|
||||
|
||||
rotaryMacerator.getFormspec=function(pos)
|
||||
local meta=minetest.get_meta(pos)
|
||||
@ -26,7 +25,6 @@ rotaryMacerator.getFormspec=function(pos)
|
||||
local maxSrcTime=meta:get_float("maxSrcTime")
|
||||
local srcPercent=maxSrcTime>0 and meta:get_float("srcTime")/maxSrcTime*100 or 0
|
||||
local rpm=meta:get_int("rpm")
|
||||
local buttonMaintainSpeedText=meta:get_int("maintainSpeed")==1 and S("Don't maintain speed") or S("Maintain speed")
|
||||
local formspec
|
||||
if industrialtest.mtgAvailable then
|
||||
formspec={
|
||||
@ -40,7 +38,6 @@ rotaryMacerator.getFormspec=function(pos)
|
||||
"list[context;dst;6,2.8;1,1;]",
|
||||
"list[context;upgrades;9,0.9;1,4]",
|
||||
"label[0.5,2.8;"..minetest.formspec_escape(S("Speed: @1",rpm)).."]",
|
||||
"button[0.5,3.4;3,0.8;maintainSpeed;"..minetest.formspec_escape(buttonMaintainSpeedText).."]",
|
||||
"listring[context;src]",
|
||||
"listring[context;modifier]",
|
||||
"listring[context;powerStorage]",
|
||||
@ -64,7 +61,6 @@ rotaryMacerator.getFormspec=function(pos)
|
||||
"list[context;upgrades;9,0.9;1,4]",
|
||||
mcl_formspec.get_itemslot_bg(9,0.9,1,4),
|
||||
"label[0.5,2.8;"..minetest.formspec_escape(S("Speed: @1",rpm)).."]",
|
||||
"button[0.5,3.4;3,0.8;maintainSpeed;"..minetest.formspec_escape(buttonMaintainSpeedText).."]",
|
||||
"listring[context;src]",
|
||||
"listring[context;modifier]",
|
||||
"listring[context;powerStorage]",
|
||||
@ -84,7 +80,6 @@ rotaryMacerator.onConstruct=function(pos,meta,inv)
|
||||
meta:set_int("rpm",0)
|
||||
meta:set_float("srcTime",0)
|
||||
meta:set_float("maxSrcTime",0)
|
||||
meta:set_int("maintainSpeed",0)
|
||||
end
|
||||
|
||||
rotaryMacerator.onTimer=function(pos,elapsed,meta,inv)
|
||||
@ -93,21 +88,12 @@ rotaryMacerator.onTimer=function(pos,elapsed,meta,inv)
|
||||
local srcSlot=inv:get_stack("src",1)
|
||||
local modifierSlot=inv:get_stack("modifier",1)
|
||||
local dstSlot=inv:get_stack("dst",1)
|
||||
local powerAmount=meta:get_int("industrialtest.powerAmount")
|
||||
local rpm=meta:get_int("rpm")
|
||||
local maintainSpeed=meta:get_int("maintainSpeed")
|
||||
|
||||
shouldRerunTimer,shouldUpdateFormspec=industrialtest.internal.chargeFromPowerStorageItem(meta,inv)
|
||||
local powerAmount=meta:get_int("industrialtest.powerAmount")
|
||||
|
||||
if maintainSpeed==1 and powerAmount>=rotaryMacerator.maintainSpeedOpPower then
|
||||
local newRpm=math.max(rpm+10*elapsed,0)
|
||||
if newRpm>rpm then
|
||||
meta:set_int("rpm",newRpm)
|
||||
shouldUpdateFormspec=true
|
||||
end
|
||||
industrialtest.api.addPower(meta,-rotaryMacerator.maintainSpeedOpPower)
|
||||
shouldRerunTimer=true
|
||||
elseif rpm>0 then
|
||||
if rpm>0 then
|
||||
meta:set_int("rpm",math.max(rpm-1000*elapsed,0))
|
||||
shouldRerunTimer=shouldRerunTimer or rpm>0
|
||||
shouldUpdateFormspec=true
|
||||
|
51
minerals.lua
51
minerals.lua
@ -20,46 +20,32 @@ if industrialtest.mtgAvailable then
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:stone_with_uranium",
|
||||
wherein="default:stone",
|
||||
clust_scarcity=15*15*15,
|
||||
clust_scarcity=7*7*7,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=-128,
|
||||
y_min=-31000
|
||||
})
|
||||
|
||||
industrialtest.internal.registerMetal("lead","Lead",2)
|
||||
minetest.register_ore({
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:stone_with_lead",
|
||||
wherein="default:stone",
|
||||
clust_scarcity=11*11*11,
|
||||
clust_scarcity=7*7*7,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=-48,
|
||||
y_min=-31000
|
||||
})
|
||||
|
||||
industrialtest.internal.registerMetal("iridium","Iridium",4)
|
||||
minetest.register_ore({
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:stone_with_iridium",
|
||||
wherein="default:stone",
|
||||
clust_scarcity=40*40*40,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=-512,
|
||||
y_min=-31000
|
||||
})
|
||||
elseif industrialtest.mclAvailable then
|
||||
industrialtest.internal.registerMetal("uranium","Uranium",4,4,4,4,5,5)
|
||||
local stonelike={"mcl_core:stone","mcl_core:diorite","mcl_core:andesite","mcl_core:granite"}
|
||||
local deepslatelike={"mcl_deepslate:deepslate","mcl_deepslate:tuff"}
|
||||
|
||||
industrialtest.internal.registerMetal("uranium","Uranium",4,4,4,4,5,5)
|
||||
minetest.register_ore({
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:stone_with_uranium",
|
||||
wherein=stonelike,
|
||||
clust_scarcity=15*15*15,
|
||||
clust_scarcity=7*7*7,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=mcl_worlds.layer_to_y(20),
|
||||
@ -69,19 +55,18 @@ elseif industrialtest.mclAvailable then
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:deepslate_with_uranium",
|
||||
wherein=deepslatelike,
|
||||
clust_scarcity=15*15*15,
|
||||
clust_scarcity=7*7*7,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=mcl_worlds.layer_to_y(15),
|
||||
y_min=mcl_vars.mg_overworld_min
|
||||
})
|
||||
|
||||
industrialtest.internal.registerMetal("lead","Lead",4,4,4,4,6,5)
|
||||
minetest.register_ore({
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:stone_with_lead",
|
||||
wherein=stonelike,
|
||||
clust_scarcity=11*11*11,
|
||||
clust_scarcity=7*7*7,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=mcl_worlds.layer_to_y(30),
|
||||
@ -91,29 +76,7 @@ elseif industrialtest.mclAvailable then
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:deepslate_with_lead",
|
||||
wherein=deepslatelike,
|
||||
clust_scarcity=11*11*11,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=mcl_worlds.layer_to_y(15),
|
||||
y_min=mcl_vars.mg_overworld_min
|
||||
})
|
||||
|
||||
industrialtest.internal.registerMetal("iridium","Iridium",4,5,4,4,5,5)
|
||||
minetest.register_ore({
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:stone_with_iridium",
|
||||
wherein=stonelike,
|
||||
clust_scarcity=40*40*40,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=mcl_worlds.layer_to_y(20),
|
||||
y_min=mcl_vars.mg_overworld_min
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type="scatter",
|
||||
ore="industrialtest:deepslate_with_iridium",
|
||||
wherein=deepslatelike,
|
||||
clust_scarcity=40*40*40,
|
||||
clust_scarcity=7*7*7,
|
||||
clust_num_ores=3,
|
||||
clust_size=3,
|
||||
y_max=mcl_worlds.layer_to_y(15),
|
||||
|
2
mod.conf
2
mod.conf
@ -1,5 +1,5 @@
|
||||
name=industrialtest
|
||||
description=Adds various machinery
|
||||
optional_depends=default,bucket,3d_armor,mcl_core,mcl_copper,mcl_armor,mcl_deepslate,mcl_nether,mcl_buckets,mcl_util,mcl_dye,mcl_rubber,pipeworks,mesecons
|
||||
optional_depends=default,bucket,3d_armor,mcl_core,mcl_copper,mcl_armor,mcl_deepslate,mcl_nether,mcl_buckets,mcl_util,mcl_dye,mcl_rubber,pipeworks
|
||||
author=IndustrialTest Team
|
||||
title=IndustrialTest
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 700 B |
@ -54,7 +54,7 @@ local function registerNanoSuitPart(config)
|
||||
on_place=mcl_armor.equip_on_use,
|
||||
on_secondary_use=mcl_armor.equip_on_use,
|
||||
_mcl_armor_element=config.element,
|
||||
_mcl_armor_texture=(config.element=="feet" and "industrialtest_mcl_" or "industrialtest_")..config.name..".png",
|
||||
_mcl_armor_texture="industrialtest_"..config.name..".png",
|
||||
_industrialtest_powerStorage=true,
|
||||
_industrialtest_powerCapacity=1000000,
|
||||
_industrialtest_powerFlow=industrialtest.api.evPowerFlow,
|
||||
|
Loading…
x
Reference in New Issue
Block a user