Compare commits

...

2 commits

Author SHA1 Message Date
Simon Brodtmann
c5200729ff belts 2025-12-12 18:53:29 +01:00
Simon Brodtmann
f1d7b0250f lumber mill 2025-12-12 18:53:29 +01:00
3 changed files with 242 additions and 127 deletions

View file

@ -1,3 +1,4 @@
local Recipe = require("__cf-lib__/data/Recipe")
local Technology = require("__cf-lib__/data/Technology") local Technology = require("__cf-lib__/data/Technology")
local LumberMillFactory = require(MF.buildings .. "LumberMill") local LumberMillFactory = require(MF.buildings .. "LumberMill")
local LumberMill = LumberMillFactory() local LumberMill = LumberMillFactory()
@ -13,7 +14,8 @@ data:extend({
local has_oxygen = data.raw["surface-property"]["oxygen"] ~= nil local has_oxygen = data.raw["surface-property"]["oxygen"] ~= nil
LumberMill.EntityBuilder:new() if not mods["wood-logistics"] then
LumberMill.EntityBuilder:new()
:burnerEnergySource({ emissions_per_minute = { noise = 100 } }) :burnerEnergySource({ emissions_per_minute = { noise = 100 } })
:baseProductivity(0.5) :baseProductivity(0.5)
:apply({ :apply({
@ -32,13 +34,13 @@ LumberMill.EntityBuilder:new()
} }
}) })
local lumber_mill_item = LumberMill.ItemBuilder:new() local lumber_mill_item = LumberMill.ItemBuilder:new()
:apply({ :apply({
default_import_location = "lignumis", default_import_location = "lignumis",
order = "2[lumber-mill]" order = "2[lumber-mill]"
}) })
LumberMill.RecipeBuilder:new() LumberMill.RecipeBuilder:new()
:ingredients(table.trim({ :ingredients(table.trim({
{ type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 }, { type = "item", name = "lumber", amount = 50 },
@ -51,14 +53,14 @@ LumberMill.RecipeBuilder:new()
additional_categories = { "wood-processing" } additional_categories = { "wood-processing" }
}) })
LumberMill.TechnologyBuilder:new() LumberMill.TechnologyBuilder:new()
:prerequisites({ "steam-science-pack" }) :prerequisites({ "steam-science-pack" })
:count(250) :count(250)
:time(15) :time(15)
:ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }) :ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } })
:apply() :apply()
LumberMill.RecipeBuilder:new() LumberMill.RecipeBuilder:new()
:ingredients({ :ingredients({
{ type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 }, { type = "item", name = "lumber", amount = 50 },
@ -77,4 +79,70 @@ LumberMill.RecipeBuilder:new()
} }
}) })
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper") Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper")
else
table.assign(data.raw["assembling-machine"]["lumber-mill"], {
energy_source = {
type = "burner",
fuel_categories = { "chemical" },
effectivity = 1,
fuel_inventory_size = 3,
emissions_per_minute = { pollution = 10, noise = 100 },
},
crafting_categories = { "wood-processing" },
energy_usage = "1000kW",
surface_conditions = {
{
property = has_oxygen and "oxygen" or "pressure",
min = 3
},
{
property = "gravity",
min = 1
}
}
})
data.raw.item["lumber-mill"].default_import_location = "lignumis"
table.assign(data.raw.recipe["lumber-mill"], {
additional_categories = { "wood-processing" },
ingredients = table.trim({
{ type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "wooden-gear-wheel", amount = 50 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 20 or 40 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 20 } or nil,
{ type = "item", name = "burner-assembling-machine", amount = 2 }
})
})
table.assign(data.raw.technology["advanced-carpentry"], {
prerequisites = { "steam-science-pack" },
unit = {
count = 250,
time = 15,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
}
}
})
Recipe:new("lumber-mill")
:clone("lumber-mill-copper")
:assign({
localised_name = { "entity-name.lumber-mill" },
icons = {
{ icon = data.raw.item["lumber-mill"].icon },
{ icon = basic_circuit_board and "__base__/graphics/icons/copper-plate.png" or "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
}
})
:replaceIngredient("gold-plate", "copper-plate")
:apply()
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper")
end
Recipe:new("wooden-chest"):addCategory("wood-processing")
Recipe:new("small-electric-pole"):addCategory("wood-processing")

View file

@ -100,17 +100,17 @@ emit("lab", "biolab", 20)
emit("locomotive", "locomotive", 200) emit("locomotive", "locomotive", 200)
emit_constant("locomotive", "locomotive", 10) emit_constant("locomotive", "locomotive", 10)
--emit_constant("transport-belt", "wood-transport-belt", 2) emit_constant("transport-belt", "wood-transport-belt", 2)
emit_constant("transport-belt", "transport-belt", 3) emit_constant("transport-belt", "transport-belt", 3)
emit_constant("transport-belt", "fast-transport-belt", 4) emit_constant("transport-belt", "fast-transport-belt", 4)
emit_constant("transport-belt", "express-transport-belt", 6) emit_constant("transport-belt", "express-transport-belt", 6)
emit_constant("transport-belt", "turbo-transport-belt", 8) emit_constant("transport-belt", "turbo-transport-belt", 8)
--emit_constant("underground-belt", "wood-underground-belt", 7.5) emit_constant("underground-belt", "wood-underground-belt", 7.5)
emit_constant("underground-belt", "underground-belt", 10) emit_constant("underground-belt", "underground-belt", 10)
emit_constant("underground-belt", "fast-underground-belt", 20) emit_constant("underground-belt", "fast-underground-belt", 20)
emit_constant("underground-belt", "express-underground-belt", 30) emit_constant("underground-belt", "express-underground-belt", 30)
emit_constant("underground-belt", "turbo-underground-belt", 40) emit_constant("underground-belt", "turbo-underground-belt", 40)
--emit_constant("splitter", "wood-splitter", 20) emit_constant("splitter", "wood-splitter", 20)
emit_constant("splitter", "splitter", 30) emit_constant("splitter", "splitter", 30)
emit_constant("splitter", "fast-splitter", 40) emit_constant("splitter", "fast-splitter", 40)
emit_constant("splitter", "express-splitter", 50) emit_constant("splitter", "express-splitter", 50)

View file

@ -1,9 +1,12 @@
local BeltFactory = require(MF.logistics .. "Belts") local BeltFactory = require(MF.logistics .. "Belts")
local Belt = BeltFactory("wood", "brown", "slow") local Belt = BeltFactory("wood", "brown", "slow")
local Recipe = require("__cf-lib__/data/Recipe")
local Item = require("__cf-lib__/data/Item")
local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value
Belt.EntityBuilder:new() if not mods["wood-logistics"] then
Belt.EntityBuilder:new()
:itemsPerSecond(7.5) :itemsPerSecond(7.5)
:nextTier("") :nextTier("")
:undergroundDistance(4) :undergroundDistance(4)
@ -32,7 +35,7 @@ Belt.EntityBuilder:new()
} }
}) })
local splitter_item = Belt.ItemBuilder:new() local splitter_item = Belt.ItemBuilder:new()
:itemsPerRocket("transportBelt", 200) :itemsPerRocket("transportBelt", 200)
:itemsPerRocket("undergroundBelt", 100) :itemsPerRocket("undergroundBelt", 100)
:itemsPerRocket("splitter", 100) :itemsPerRocket("splitter", 100)
@ -40,7 +43,7 @@ local splitter_item = Belt.ItemBuilder:new()
:apply() :apply()
.splitter .splitter
Belt.RecipeBuilder:new() Belt.RecipeBuilder:new()
:beltAmount(2) :beltAmount(2)
:ingredients("transportBelt", { :ingredients("transportBelt", {
{ type = "item", name = "lumber", amount = 1 }, { type = "item", name = "lumber", amount = 1 },
@ -68,14 +71,14 @@ Belt.RecipeBuilder:new()
} }
}) })
Belt.TechnologyBuilder:new() Belt.TechnologyBuilder:new()
:prerequisites({ "wood-science-pack" }) :prerequisites({ "wood-science-pack" })
:ingredients({ { "wood-science-pack", 1 } }) :ingredients({ { "wood-science-pack", 1 } })
:count(10) :count(10)
:time(10) :time(10)
:apply() :apply()
if not basic_circuit_board then if not basic_circuit_board then
data:extend({ data:extend({
Belt.RecipeBuilder:new() Belt.RecipeBuilder:new()
:ingredients("splitter", { :ingredients("splitter", {
@ -101,4 +104,48 @@ if not basic_circuit_board then
type = "unlock-recipe", type = "unlock-recipe",
recipe = "wood-splitter-electronic-circuit" recipe = "wood-splitter-electronic-circuit"
}) })
end
else
Recipe:new("wood-transport-belt")
:replaceIngredient("copper-cable", "wooden-gear-wheel", 1)
:assign({
additional_categories = { "wood-processing" }
})
Recipe:new("wood-underground-belt")
:assign({
additional_categories = { "wood-processing" }
})
Recipe:new("wood-splitter")
:replaceIngredient("copper-cable", basic_circuit_board and "basic-circuit-board" or "gold-cable", basic_circuit_board and 5 or nil)
:assign({
additional_categories = { "wood-processing" }
})
if not basic_circuit_board then
Recipe:new("wood-splitter")
:clone("wood-splitter-electronic-circuit")
:replaceIngredient(basic_circuit_board and "gold-cable" or "basic-circuit-board", "electronic-circuit", 2)
:assign({
localised_name = { "entity-name.wood-splitter" },
icons = {
{ icon = data.raw.item["wood-splitter"].icon },
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
}
})
:unlockedByTechnology("electronics")
:apply()
end
Item:new("wood-transport-belt")
:itemsPerRocket(200)
:defaultImportLocation("lignumis")
Item:new("wood-underground-belt")
:itemsPerRocket(100)
:defaultImportLocation("lignumis")
Item:new("wood-splitter")
:itemsPerRocket(100)
:defaultImportLocation("lignumis")
end end