Compare commits
14 Commits
2a6d038e5a
...
2.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
| d47c4ad2ae | |||
| 5b2a9b09e8 | |||
| 4ed120bea3 | |||
| 0219e61908 | |||
| 0329750877 | |||
| 27479f302c | |||
| 909f20992e | |||
| c041f609ee | |||
| 52c78915c0 | |||
| 1603bdef90 | |||
| ca95a94a95 | |||
| a0abab4e1c | |||
| c192789b63 | |||
| eb5b2ba127 |
28
README.md
28
README.md
@@ -1,25 +1,35 @@
|
||||
# IndustrialTest
|
||||
IndustrialTest is a mod for [Minetest](https://www.minetest.net/) that adds various tech and machinery related stuff.
|
||||
IndustrialTest is a mod for [Minetest](https://luanti.org) that adds various tech and machinery related stuff.
|
||||
|
||||
## Guide
|
||||
Guide can be accessed in-game using `/industrialtest_guide` command.
|
||||
|
||||
## Compatibility
|
||||
Currently IndustrialTest supports following games:
|
||||
- [Minetest Game](https://content.minetest.net/packages/Minetest/minetest_game) and derivatives
|
||||
- [MineClone2](https://content.minetest.net/packages/Wuzzy/mineclone2/) and derivatives
|
||||
- [Minetest Game](https://content.luanti.org/packages/Minetest/minetest_game) and derivatives
|
||||
- [VoxeLibre](https://content.luanti.org/packages/Wuzzy/mineclone2) and derivatives
|
||||
|
||||
## Additional dependencies
|
||||
- Minetest Game
|
||||
- [3D Armor](https://content.minetest.net/packages/stu/3d_armor)
|
||||
- [3D Armor](https://content.luanti.org/packages/stu/3d_armor)
|
||||
- VoxeLibre
|
||||
- none
|
||||
|
||||
## Optional dependencies
|
||||
- [Rubber Addon for MineClone](https://content.minetest.net/packages/biochemist/mcl_rubber)
|
||||
- [Pipeworks](https://content.minetest.net/packages/VanessaE/pipeworks)
|
||||
- [Logistica](https://content.minetest.net/packages/ZenonSeth/logistica)
|
||||
- [Mesecons](https://content.minetest.net/packages/Jeija/mesecons)
|
||||
- [Rubber Addon for MineClone](https://content.luanti.org/packages/biochemist/mcl_rubber)
|
||||
- [Pipeworks](https://content.luanti.org/packages/VanessaE/pipeworks)
|
||||
- [Logistica](https://content.luanti.org/packages/ZenonSeth/logistica)
|
||||
- [Mesecons](https://content.luanti.org/packages/Jeija/mesecons)
|
||||
|
||||
## Locale
|
||||
Mod is available in following languages:
|
||||
- English / en_US (base)
|
||||
- Polish / pl_PL (by mrkubax10)
|
||||
|
||||
New translations highly appreciated!
|
||||
|
||||
## Contributors
|
||||
- mrkubax10 <mrkubax10@onet.pl or mrkubax10 at irc.libera.chat> [programming, some graphics]
|
||||
- HandfulOfFrogs <<handfuloffrogs@gmail.com>> [some programming, graphics]
|
||||
- LuanHawk <Discord: LuanHawk#8733> [lead graphics]
|
||||
- LuanHawk <Discord: luanhawk> [lead graphics]
|
||||
- Migdyn <<temp1@cubesoftware.xyz>> [graphics]
|
||||
|
||||
@@ -385,6 +385,29 @@ addPipeworksCompatibility("industrialtest:induction_furnace",{
|
||||
{listname="src"}
|
||||
},"dst")
|
||||
|
||||
-- Miner
|
||||
addPipeworksCompatibility("industrialtest:miner",{
|
||||
{
|
||||
y=1,
|
||||
listname="powerStorage"
|
||||
},
|
||||
{listname="src"}
|
||||
},"dst")
|
||||
|
||||
-- Pump
|
||||
addPipeworksCompatibility("industrialtest:pump",{
|
||||
{
|
||||
y=1,
|
||||
listname="powerStorage"
|
||||
},
|
||||
{listname="src"}
|
||||
},"dst")
|
||||
|
||||
-- Magnetizer
|
||||
addPipeworksCompatibility("industrialtest:magnetizer",{
|
||||
{listname="powerStorage"}
|
||||
},"powerStorage")
|
||||
|
||||
-- Simple electric item processors
|
||||
for _,name in ipairs(industrialtest.api.tags.simpleElectricItemProcessor) do
|
||||
addPipeworksCompatibility(name,{
|
||||
|
||||
63
guide.lua
63
guide.lua
@@ -66,14 +66,15 @@ local function createMachineInformationTable(fields,machineName,num)
|
||||
local fieldLabels={
|
||||
inputVoltage="Input voltage level",
|
||||
outputVoltage="Output voltage level",
|
||||
voltage="Voltage",
|
||||
lowVoltage="Low voltage",
|
||||
highVoltage="High voltage",
|
||||
voltage="Voltage level",
|
||||
lowVoltage="Low voltage level",
|
||||
highVoltage="High voltage level",
|
||||
damageRed="Damage reduction",
|
||||
recipe="Recipe type",
|
||||
powerCapacity="Power capacity",
|
||||
opPower="Power per operation",
|
||||
powerPerFuel="Power per fuel unit",
|
||||
uses="Uses",
|
||||
efficiency="Default efficiency"
|
||||
}
|
||||
|
||||
@@ -86,7 +87,7 @@ local function createMachineInformationTable(fields,machineName,num)
|
||||
})
|
||||
end
|
||||
|
||||
return createTable(rows,false,string.format("Figure %d. Machine information for %s",(num or 1),machineName))
|
||||
return createTable(rows,false,S("Figure @1. Information for @2",(num or 1),machineName))
|
||||
end
|
||||
|
||||
local pages={
|
||||
@@ -206,7 +207,7 @@ local pages={
|
||||
[[
|
||||
<big>||Canning Machine||</big>
|
||||
<left>
|
||||
||Canning Machine is used to move certain fluid from one item to another. The common usage is to refill fuel in <item name="industrialtest:jetpack_v" height="{{ITEM_HEIGHT}}"> <b>Jetpack</b> or <item name="industrialtest:fuel_can" height="{{ITEM_HEIGHT}}"> <b>Fuel Can</b>.||
|
||||
||Canning Machine is used to move certain fluid from one item to another. The common usage is to refill fuel in <item name="industrialtest:jetpack_v" height="{{ITEM_HEIGHT}}"> <b>Jetpack</b> or <item name="industrialtest:fuel_can" height="{{ITEM_HEIGHT}}"> <b>Fuel Can</b>.||
|
||||
</left>
|
||||
]],
|
||||
createMachineInformationTable({
|
||||
@@ -1840,13 +1841,62 @@ local pages={
|
||||
}
|
||||
},S("Static Boots"))
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name="treetap",
|
||||
title=S("Treetap"),
|
||||
icon=industrialtest.elementKeys.treetap,
|
||||
content={
|
||||
[[
|
||||
<big>||Treetap||</big>
|
||||
<left>
|
||||
||Treetap is used to extract <item name="{{elementKeyStickyResin}}" height="{{ITEM_HEIGHT}}"> <b>Sticky Resin</b> from <item name="{{elementKeyRubberWood}}" height="{{ITEM_HEIGHT}}"> <b>Rubber Wood</b>.||
|
||||
</left>
|
||||
]],
|
||||
createMachineInformationTable({
|
||||
{
|
||||
name="uses",
|
||||
value=tostring(industrialtest.Treetap.uses)
|
||||
}
|
||||
},S("Treetap"))
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
name="wrench",
|
||||
title=S("Wrench"),
|
||||
icon="industrialtest:wrench",
|
||||
content={
|
||||
[[
|
||||
<big>||Wrench||</big>
|
||||
<left>
|
||||
||Wrench is one of the most important tools in this mod. It is used to safely remove machines with no material loss. In many cases when machine is removed without Wrench it drops <item name="industrialtest:machine_block" height="{{ITEM_HEIGHT}}"> <b>Machine Block</b> instead.||
|
||||
</left>
|
||||
]],
|
||||
createMachineInformationTable({
|
||||
{
|
||||
name="uses",
|
||||
value=tostring(industrialtest.Wrench.uses)
|
||||
}
|
||||
},S("Wrench"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
local function preprocessHypertext(content,vars)
|
||||
-- Find and replace strings which should be translated, this pattern matches any string that doesn't include | which is contained within || at both ends
|
||||
content=string.gsub(content,"||([^|]+)||",function(sourceString)
|
||||
return S(sourceString)
|
||||
-- Replace all sequences which should be treated as variables inside translation with format string
|
||||
local trFormatIndex=1
|
||||
local trFormatValues={}
|
||||
sourceString=string.gsub(sourceString,"{{([^{}]+)}}",function(var)
|
||||
local result=string.format("@%d",trFormatIndex)
|
||||
trFormatIndex=trFormatIndex+1
|
||||
table.insert(trFormatValues,vars[var] or "nil")
|
||||
return result
|
||||
end)
|
||||
return S(sourceString,unpack(trFormatValues))
|
||||
end)
|
||||
|
||||
-- Replace all sequences which should be treated as variables with values provided in vars
|
||||
@@ -1894,6 +1944,7 @@ local function getGuideFormspec(playerName,pageName)
|
||||
elementKeyIronIngot=industrialtest.elementKeys.ironIngot,
|
||||
elementKeyIronLump=industrialtest.elementKeys.ironLump,
|
||||
elementKeyIronPickaxe=industrialtest.elementKeys.ironPickaxe,
|
||||
elementKeyStickyResin=industrialtest.elementKeys.stickyResin,
|
||||
elementKeyRubber=industrialtest.elementKeys.rubber,
|
||||
elementKeyRubberWood=industrialtest.elementKeys.rubberWood
|
||||
})
|
||||
|
||||
1462
locale/industrialtest.pl.po
Normal file
1462
locale/industrialtest.pl.po
Normal file
File diff suppressed because it is too large
Load Diff
1462
locale/industrialtest.pot
Normal file
1462
locale/industrialtest.pot
Normal file
File diff suppressed because it is too large
Load Diff
@@ -95,7 +95,11 @@ function industrialtest.ElectricMachine.onTimer(self,pos,elapsed)
|
||||
end
|
||||
|
||||
function industrialtest.ElectricMachine.allowMetadataInventoryMove(self,pos,fromList,fromIndex,toList,toIndex,count)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local inv=meta:get_inventory()
|
||||
local movedItemStack=inv:get_stack(fromList,fromIndex)
|
||||
local found=false
|
||||
|
||||
if self.powerLists then
|
||||
for _,value in ipairs(self.powerLists) do
|
||||
if value.list==toList then
|
||||
@@ -104,7 +108,7 @@ function industrialtest.ElectricMachine.allowMetadataInventoryMove(self,pos,from
|
||||
end
|
||||
end
|
||||
end
|
||||
if found and not industrialtest.api.hasPowerStorage(movedItemStack:get_meta()) then
|
||||
if found and not industrialtest.api.hasPowerStorage(movedItemStack:get_meta()) and not self.isValidElectricItemDef(movedItemStack) then
|
||||
return 0
|
||||
end
|
||||
|
||||
@@ -121,7 +125,7 @@ function industrialtest.ElectricMachine.allowMetadataInventoryPut(self,pos,listn
|
||||
end
|
||||
end
|
||||
end
|
||||
if found and not industrialtest.api.hasPowerStorage(stack:get_meta()) then
|
||||
if found and not industrialtest.api.hasPowerStorage(stack:get_meta()) and not self.isValidElectricItemDef(stack) then
|
||||
return 0
|
||||
end
|
||||
|
||||
@@ -205,6 +209,11 @@ function industrialtest.ElectricMachine.powerExchange(self,pos)
|
||||
local powerFlow=meta:get_int("industrialtest.powerFlow")
|
||||
for _,listDesc in ipairs(self.powerLists) do
|
||||
local slot=inv:get_stack(listDesc.list,1)
|
||||
if not industrialtest.api.hasPowerStorage(slot:get_meta()) and self.isValidElectricItemDef(slot) then
|
||||
local def=slot:get_definition()
|
||||
def._industrialtest_self:prepare(slot)
|
||||
inv:set_stack(listDesc.list,1,slot)
|
||||
end
|
||||
if slot:get_count()>0 then
|
||||
if listDesc.direction=="o" then
|
||||
if meta:get_int("industrialtest.powerAmount")<=0 then
|
||||
@@ -235,6 +244,12 @@ function industrialtest.ElectricMachine.powerExchange(self,pos)
|
||||
return shouldRerunTimer
|
||||
end
|
||||
|
||||
-- Checks if itemstack has a valid electric item definition, even if it's not prepared
|
||||
function industrialtest.ElectricMachine.isValidElectricItemDef(itemstack)
|
||||
local def=itemstack:get_definition()
|
||||
return def._industrialtest_self and def._industrialtest_self.flow and def._industrialtest_self.flow and def._industrialtest_self.prepare
|
||||
end
|
||||
|
||||
function industrialtest.ElectricMachine.createPowerIndicatorWidget(charged,x,y)
|
||||
return table.concat({
|
||||
string.format("box[%f,%f;0.3,4.8;#202020]",x,y),
|
||||
|
||||
@@ -29,7 +29,8 @@ end
|
||||
local function hasMetalBoots(player)
|
||||
local inv
|
||||
if industrialtest.mtgAvailable then
|
||||
_,inv=armor:get_valid_player(player,"")
|
||||
local _unused
|
||||
_unused,inv=armor:get_valid_player(player,"")
|
||||
elseif industrialtest.mclAvailable then
|
||||
inv=player:get_inventory()
|
||||
end
|
||||
|
||||
@@ -121,7 +121,87 @@ minetest.register_craft({
|
||||
}
|
||||
})
|
||||
|
||||
if industrialtest.mclAvailable then
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output=industrialtest.elementKeys.coal,
|
||||
recipe={
|
||||
{"industrialtest:uu_matter","",""},
|
||||
{"","","industrialtest:uu_matter"},
|
||||
{"industrialtest:uu_matter","",""}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output=industrialtest.elementKeys.stoneWithIron,
|
||||
recipe={
|
||||
{"industrialtest:uu_matter","","industrialtest:uu_matter"},
|
||||
{"","industrialtest:uu_matter",""},
|
||||
{"industrialtest:uu_matter","","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output=industrialtest.elementKeys.diamond,
|
||||
recipe={
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"},
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"},
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output=industrialtest.elementKeys.stickyResin.." 32",
|
||||
recipe={
|
||||
{"industrialtest:uu_matter","","industrialtest:uu_matter"},
|
||||
{"","",""},
|
||||
{"industrialtest:uu_matter","","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="industrialtest:tin_dust 4",
|
||||
recipe={
|
||||
{"","",""},
|
||||
{"industrialtest:uu_matter","","industrialtest:uu_matter"},
|
||||
{"","","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="industrialtest:copper_dust 4",
|
||||
recipe={
|
||||
{"","","industrialtest:uu_matter"},
|
||||
{"industrialtest:uu_matter","","industrialtest:uu_matter"},
|
||||
{"","",""}
|
||||
}
|
||||
})
|
||||
|
||||
if industrialtest.mtgAvailable then
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="industrialtest:iridium_lump",
|
||||
recipe={
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"},
|
||||
{"","industrialtest:uu_matter",""},
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
elseif industrialtest.mclAvailable then
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="industrialtest:raw_iridium",
|
||||
recipe={
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"},
|
||||
{"","industrialtest:uu_matter",""},
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="mcl_core:vine 24",
|
||||
@@ -141,4 +221,34 @@ if industrialtest.mclAvailable then
|
||||
{"industrialtest:uu_matter",""}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output=industrialtest.elementKeys.powerCarrier.." 10",
|
||||
recipe={
|
||||
{"","",""},
|
||||
{"","industrialtest:uu_matter",""},
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output=industrialtest.elementKeys.blueDye,
|
||||
recipe={
|
||||
{"","industrialtest:uu_matter",""},
|
||||
{"","industrialtest:uu_matter",""},
|
||||
{"","industrialtest:uu_matter","industrialtest:uu_matter"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type="shaped",
|
||||
output="mcl_core:emerald 8",
|
||||
recipe={
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"},
|
||||
{"industrialtest:uu_matter","industrialtest:uu_matter","industrialtest:uu_matter"},
|
||||
{"","industrialtest:uu_matter",""}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user