diff --git a/lignumis/info.json b/lignumis/info.json index 6bb42db..2e01294 100644 --- a/lignumis/info.json +++ b/lignumis/info.json @@ -12,7 +12,7 @@ "space-age >= 2.0.53", "astroponics >= 1.2.0", "bioprocessing-tab", - "cf-lib >= 0.0.13", + "cf-lib >= 1.1.0", "flib", "gleba-water-cane", "lignumis-assets >= 1.0.3", @@ -23,29 +23,29 @@ "pollution-as-surface-property", "Wood-Walls >= 1.2.0", "vulcanus-sulfuric-bacteria", - "?aai-industry", - "?aai-loaders", - "?aai-loaders-sane", - "?any-planet-start", - "?atan-nuclear-science", - "?crushing-industry", - "?Diversitree", - "?fulgora-coralmium-agriculture", - "?gleba-reborn", - "?hot-metals >= 1.1.0", - "?Krastorio2-spaced-out", - "?lane-splitters", - "?metal-and-stars", - "(?)secretas", - "(?)Wood_Gasification_updated", - "?wood-industry", - "?wood-military >= 2.3.3", - "?canal-excavator >= 1.9.0", - "!apm_power_ldinc", - "!early-agriculture", - "!planet-picker", - "!wood-logistics", - "!wood-universe-modpack", - "!rso-mod" + "? aai-industry", + "? aai-loaders", + "? aai-loaders-sane", + "? any-planet-start", + "? crushing-industry", + "? fulgora-coralmium-agriculture", + "? hot-metals >= 1.1.0", + "? lane-splitters", + "? wood-industry", + "? wood-military >= 2.3.3", + "? canal-excavator >= 1.9.0", + "? wood-logistics", + "(?) atan-nuclear-science", + "(?) Diversitree", + "(?) gleba-reborn", + "(?) Krastorio2-spaced-out", + "(?) metal-and-stars", + "(?) secretas", + "(?) Wood_Gasification_updated", + "! apm_power_ldinc", + "! early-agriculture", + "! planet-picker", + "! wood-universe-modpack", + "! rso-mod" ] } \ No newline at end of file diff --git a/lignumis/prototypes/content/lumber-mill.lua b/lignumis/prototypes/content/lumber-mill.lua index 8419fbd..ac57acb 100644 --- a/lignumis/prototypes/content/lumber-mill.lua +++ b/lignumis/prototypes/content/lumber-mill.lua @@ -1,3 +1,4 @@ +local Recipe = require("__cf-lib__/data/Recipe") local Technology = require("__cf-lib__/data/Technology") local LumberMillFactory = require(MF.buildings .. "LumberMill") local LumberMill = LumberMillFactory() @@ -13,68 +14,137 @@ data:extend({ local has_oxygen = data.raw["surface-property"]["oxygen"] ~= nil -LumberMill.EntityBuilder:new() - :burnerEnergySource({ emissions_per_minute = { noise = 100 } }) - :baseProductivity(0.5) - :apply({ - crafting_categories = { "wood-processing" }, +if not mods["wood-logistics"] then + LumberMill.EntityBuilder:new() + :burnerEnergySource({ emissions_per_minute = { noise = 100 } }) + :baseProductivity(0.5) + :apply({ + crafting_categories = { "wood-processing" }, crafting_speed = 2, energy_usage = "1000kW", surface_conditions = { { - property = has_oxygen and "oxygen" or "pressure", - min = 3 + property = has_oxygen and "oxygen" or "pressure", + min = 3 }, { - property = "gravity", - min = 1 + property = "gravity", + min = 1 } - } + } }) -local lumber_mill_item = LumberMill.ItemBuilder:new() - :apply({ + local lumber_mill_item = LumberMill.ItemBuilder:new() + :apply({ default_import_location = "lignumis", order = "2[lumber-mill]" }) -LumberMill.RecipeBuilder:new() - :ingredients(table.trim({ - { type = "item", name = "stone-brick", amount = 40 }, - { type = "item", name = "lumber", amount = 50 }, + LumberMill.RecipeBuilder:new() + :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 }, + { 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 } })) - :apply({ - additional_categories = { "wood-processing" } + :apply({ + additional_categories = { "wood-processing" } }) -LumberMill.TechnologyBuilder:new() - :prerequisites({ "steam-science-pack" }) - :count(250) - :time(15) - :ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }) - :apply() + LumberMill.TechnologyBuilder:new() + :prerequisites({ "steam-science-pack" }) + :count(250) + :time(15) + :ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }) + :apply() -LumberMill.RecipeBuilder:new() - :ingredients({ - { type = "item", name = "stone-brick", amount = 40 }, - { type = "item", name = "lumber", amount = 50 }, - { type = "item", name = "wooden-gear-wheel", amount = 50 }, - { type = "item", name = "copper-plate", amount = basic_circuit_board and 20 or 40 }, + LumberMill.RecipeBuilder:new() + :ingredients({ + { type = "item", name = "stone-brick", amount = 40 }, + { type = "item", name = "lumber", amount = 50 }, + { type = "item", name = "wooden-gear-wheel", amount = 50 }, + { type = "item", name = "copper-plate", amount = basic_circuit_board and 20 or 40 }, { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 20 }, - { type = "item", name = "assembling-machine-1", amount = 2 } + { type = "item", name = "assembling-machine-1", amount = 2 } }) - :apply({ + :apply({ name = "lumber-mill-copper", localised_name = { "entity-name.lumber-mill" }, - additional_categories = { "wood-processing" }, + additional_categories = { "wood-processing" }, icons = { { icon = lumber_mill_item.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 } } } }) -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", + module_slots = 4, + max_health = 500, + 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") \ No newline at end of file diff --git a/lignumis/prototypes/content/lumber.lua b/lignumis/prototypes/content/lumber.lua index 2d0d1de..f3a46f1 100644 --- a/lignumis/prototypes/content/lumber.lua +++ b/lignumis/prototypes/content/lumber.lua @@ -1,34 +1,39 @@ local item_sounds = require("__base__.prototypes.item_sounds") +local Recipe = require("__cf-lib__/data/Recipe") -data:extend({ - { - type = "item", - name = "lumber", - icon = Lignumis.graphics .. "icons/lumber.png", - pictures = { - { filename = Lignumis.graphics .. "icons/lumber.png", size = 64, scale = 0.5 }, - { filename = Lignumis.graphics .. "icons/lumber-1.png", size = 64, scale = 0.5 }, - { filename = Lignumis.graphics .. "icons/lumber-2.png", size = 64, scale = 0.5 }, +if not mods["wood-logistics"] then + data:extend({ + { + type = "item", + name = "lumber", + icon = Lignumis.graphics .. "icons/lumber.png", + pictures = { + { filename = Lignumis.graphics .. "icons/lumber.png", size = 64, scale = 0.5 }, + { filename = Lignumis.graphics .. "icons/lumber-1.png", size = 64, scale = 0.5 }, + { filename = Lignumis.graphics .. "icons/lumber-2.png", size = 64, scale = 0.5 }, + }, + subgroup = "intermediate-product", + order = "A[basic-intermediates]-c[lumber]", + inventory_move_sound = item_sounds.wood_inventory_move, + pick_sound = item_sounds.wood_inventory_pickup, + drop_sound = item_sounds.wood_inventory_move, + stack_size = 100, + random_tint_color = { 1.0, 0.95, 0.9, 1.0 }, + fuel_category = "wood", + fuel_value = "4MJ" }, - subgroup = "intermediate-product", - order = "A[basic-intermediates]-c[lumber]", - inventory_move_sound = item_sounds.wood_inventory_move, - pick_sound = item_sounds.wood_inventory_pickup, - drop_sound = item_sounds.wood_inventory_move, - stack_size = 100, - random_tint_color = { 1.0, 0.95, 0.9, 1.0 }, - fuel_category = "wood", - fuel_value = "4MJ" - }, - { - type = "recipe", - name = "lumber", - category = "crafting", - additional_categories = { "wood-processing" }, - allow_productivity = true, - allow_as_intermediate = true, - ingredients = { { type = "item", name = "wood", amount = 2 } }, - results = { { type = "item", name = "lumber", amount = 1 } }, - energy_required = 1 - } -}) + { + type = "recipe", + name = "lumber", + category = "crafting", + additional_categories = { "wood-processing" }, + allow_productivity = true, + allow_as_intermediate = true, + ingredients = { { type = "item", name = "wood", amount = 2 } }, + results = { { type = "item", name = "lumber", amount = 1 } }, + energy_required = 1 + } + }) +else + Recipe:new("lumber"):addCategory("wood-processing") +end \ No newline at end of file diff --git a/lignumis/prototypes/content/noise.lua b/lignumis/prototypes/content/noise.lua index 4474df5..0505138 100644 --- a/lignumis/prototypes/content/noise.lua +++ b/lignumis/prototypes/content/noise.lua @@ -100,17 +100,17 @@ emit("lab", "biolab", 20) emit("locomotive", "locomotive", 200) 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", "fast-transport-belt", 4) emit_constant("transport-belt", "express-transport-belt", 6) 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", "fast-underground-belt", 20) emit_constant("underground-belt", "express-underground-belt", 30) 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", "fast-splitter", 40) emit_constant("splitter", "express-splitter", 50) diff --git a/lignumis/prototypes/content/wood-logistics.lua b/lignumis/prototypes/content/wood-logistics.lua index 36048d4..a2eef43 100644 --- a/lignumis/prototypes/content/wood-logistics.lua +++ b/lignumis/prototypes/content/wood-logistics.lua @@ -1,104 +1,151 @@ local BeltFactory = require(MF.logistics .. "Belts") 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 -Belt.EntityBuilder:new() - :itemsPerSecond(7.5) - :nextTier("") - :undergroundDistance(4) - :animationSpeedMultiplier(1.01) - :apply({ - transportBelt = { - emissions_per_second = { noise = 2 / 60 } - }, - undergroundBelt = { - emissions_per_second = { noise = 7.5 / 60 }, - factoriopedia_simulation = { - init = - [[ - game.simulation.camera_position = {0, 0.5} - game.simulation.camera_zoom = 1.8 - game.surfaces[1].create_entities_from_blueprint_string - { - string = "0eNqVUNsKgzAM/Zc81+FEBfsrYwwvQQKaltpuivjvS3Wwh8HGnkKSc0tWaIaA1hF70CtMXNvEm6R31MV+Bl0oWECfNwXUGp5AXwRGPddDBHA9Imh4GNMlgTt0vTNSkwYHD5EjsznSrwqQPXnCQ2JvlhuHsUEnAPVdSoE1k7ANv2KlpyOYVLHpyGF7bHMFfrFRidiGGOLDLPvXLP9tZoLf3eRO8jjK5P1YBXd0004oyqzKq6ooqzLNinLbnvlmf6E=", - position = {-0.5, 0} +if not mods["wood-logistics"] then + Belt.EntityBuilder:new() + :itemsPerSecond(7.5) + :nextTier("") + :undergroundDistance(4) + :animationSpeedMultiplier(1.01) + :apply({ + transportBelt = { + emissions_per_second = { noise = 2 / 60 } + }, + undergroundBelt = { + emissions_per_second = { noise = 7.5 / 60 }, + factoriopedia_simulation = { + init = + [[ + game.simulation.camera_position = {0, 0.5} + game.simulation.camera_zoom = 1.8 + game.surfaces[1].create_entities_from_blueprint_string + { + string = "0eNqVUNsKgzAM/Zc81+FEBfsrYwwvQQKaltpuivjvS3Wwh8HGnkKSc0tWaIaA1hF70CtMXNvEm6R31MV+Bl0oWECfNwXUGp5AXwRGPddDBHA9Imh4GNMlgTt0vTNSkwYHD5EjsznSrwqQPXnCQ2JvlhuHsUEnAPVdSoE1k7ANv2KlpyOYVLHpyGF7bHMFfrFRidiGGOLDLPvXLP9tZoLf3eRO8jjK5P1YBXd0004oyqzKq6ooqzLNinLbnvlmf6E=", + position = {-0.5, 0} + } + ]] } - ]] + }, + splitter = { + emissions_per_second = { noise = 20 / 60 } } - }, - splitter = { - emissions_per_second = { noise = 20 / 60 } - } - }) + }) -local splitter_item = Belt.ItemBuilder:new() - :itemsPerRocket("transportBelt", 200) - :itemsPerRocket("undergroundBelt", 100) - :itemsPerRocket("splitter", 100) - :order("0") - :apply() - .splitter + local splitter_item = Belt.ItemBuilder:new() + :itemsPerRocket("transportBelt", 200) + :itemsPerRocket("undergroundBelt", 100) + :itemsPerRocket("splitter", 100) + :order("0") + :apply() + .splitter -Belt.RecipeBuilder:new() - :beltAmount(2) - :ingredients("transportBelt", { - { type = "item", name = "lumber", amount = 1 }, - { type = "item", name = "wooden-gear-wheel", amount = 1 } - }) - :ingredients("undergroundBelt", { - { type = "item", name = "lumber", amount = 1 }, - { type = "item", name = "wood-transport-belt", amount = 4 }, - }) - :ingredients("splitter", { - { type = "item", name = "wood-transport-belt", amount = 2 }, - { type = "item", name = "lumber", amount = 2 }, - basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or - { type = "item", name = "gold-cable", amount = 10 } - }) - :apply({ - transportBelt = { + Belt.RecipeBuilder:new() + :beltAmount(2) + :ingredients("transportBelt", { + { type = "item", name = "lumber", amount = 1 }, + { type = "item", name = "wooden-gear-wheel", amount = 1 } + }) + :ingredients("undergroundBelt", { + { type = "item", name = "lumber", amount = 1 }, + { type = "item", name = "wood-transport-belt", amount = 4 }, + }) + :ingredients("splitter", { + { type = "item", name = "wood-transport-belt", amount = 2 }, + { type = "item", name = "lumber", amount = 2 }, + basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or + { type = "item", name = "gold-cable", amount = 10 } + }) + :apply({ + transportBelt = { + additional_categories = { "wood-processing" } + }, + undergroundBelt = { + additional_categories = { "wood-processing" } + }, + splitter = { + additional_categories = { "wood-processing" } + } + }) + + Belt.TechnologyBuilder:new() + :prerequisites({ "wood-science-pack" }) + :ingredients({ { "wood-science-pack", 1 } }) + :count(10) + :time(10) + :apply() + + if not basic_circuit_board then + data:extend({ + Belt.RecipeBuilder:new() + :ingredients("splitter", { + { type = "item", name = "wood-transport-belt", amount = 2 }, + { type = "item", name = "lumber", amount = 2 }, + { type = "item", name = "electronic-circuit", amount = 2 } + }) + :build({ + splitter = { + name = "wood-splitter-electronic-circuit", + localised_name = { "entity-name.wood-splitter" }, + icons = { + { icon = splitter_item.icon }, + { icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } } + }, + additional_categories = { "wood-processing" } + } + }) + .splitter + }) + + table.insert(data.raw.technology["electronics"].effects, { + type = "unlock-recipe", + recipe = "wood-splitter-electronic-circuit" + }) + end + +else + Recipe:new("wood-transport-belt") + :replaceIngredient("copper-cable", "wooden-gear-wheel", 1) + :assign({ additional_categories = { "wood-processing" } - }, - undergroundBelt = { - additional_categories = { "wood-processing" } - }, - splitter = { - additional_categories = { "wood-processing" } - } - }) + }) -Belt.TechnologyBuilder:new() - :prerequisites({ "wood-science-pack" }) - :ingredients({ { "wood-science-pack", 1 } }) - :count(10) - :time(10) - :apply() + Recipe:new("wood-underground-belt") + :assign({ + additional_categories = { "wood-processing" } + }) -if not basic_circuit_board then - data:extend({ - Belt.RecipeBuilder:new() - :ingredients("splitter", { - { type = "item", name = "wood-transport-belt", amount = 2 }, - { type = "item", name = "lumber", amount = 2 }, - { type = "item", name = "electronic-circuit", amount = 2 } - }) - :build({ - splitter = { - name = "wood-splitter-electronic-circuit", - localised_name = { "entity-name.wood-splitter" }, - icons = { - { icon = splitter_item.icon }, - { icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } } - }, - 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 } } } }) - .splitter - }) + :unlockedByTechnology("electronics") + :apply() + end - table.insert(data.raw.technology["electronics"].effects, { - type = "unlock-recipe", - recipe = "wood-splitter-electronic-circuit" - }) -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 \ No newline at end of file diff --git a/lignumis/settings/updates.lua b/lignumis/settings/updates.lua index aedfdff..37ac7b9 100644 --- a/lignumis/settings/updates.lua +++ b/lignumis/settings/updates.lua @@ -1 +1,2 @@ +require("wood-logistics") require("wood-military") \ No newline at end of file diff --git a/lignumis/settings/wood-logistics.lua b/lignumis/settings/wood-logistics.lua new file mode 100644 index 0000000..a4627a8 --- /dev/null +++ b/lignumis/settings/wood-logistics.lua @@ -0,0 +1,20 @@ +if not mods["wood-logistics"] then + return +end + +local Settings = require("__cf-lib__/settings/Settings") +local force = Settings.force +local default = Settings.default + +force("wood-logistics-lumber", true) +force("wood-logistics-lumber-mill", true) +force("wood-logistics-woodtronics", false) +force("wood-logistics-belts", true) +force("wood-logistics-belts-modify", false) +default("wood-logistics-belts-circuits", true) +force("wood-logistics-inserter", false) +default("wood-logistics-rail-cost", 0) +default("wood-logistics-cargo-wagon", false) +force("wood-logistics-assembling-machine", false) +default("wood-logistics-nerf-small-electric-pole", false) +force("wood-logistics-repair-pack-cost", 0) \ No newline at end of file