diff --git a/Bio_Industries_2/changelog.txt b/Bio_Industries_2/changelog.txt index 95b2e10..4c58f9f 100644 --- a/Bio_Industries_2/changelog.txt +++ b/Bio_Industries_2/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 2.0.12 +Date: 05.09.2025 + Changes: + - Updated Wood Rail Graphic. No more ugly Tint. (Thanks Snouz!) +--------------------------------------------------------------------------------------------------- Version: 2.0.11 Date: 04.09.2025 Bug Fixes: diff --git a/Bio_Industries_2/data-updates.lua b/Bio_Industries_2/data-updates.lua index f3129be..2e1f747 100644 --- a/Bio_Industries_2/data-updates.lua +++ b/Bio_Industries_2/data-updates.lua @@ -537,7 +537,8 @@ if BI.Settings.BI_Game_Tweaks_Recipe then thxbob.lib.recipe.add_new_ingredient("bi-rail-wood", { type = "item", name = "stone-crushed", amount = 6 }) end - -- vanilla rail recipe update + -- vanilla rail update + --- Recipe thxbob.lib.recipe.remove_ingredient("rail", "iron-stick") thxbob.lib.recipe.add_new_ingredient("rail", { type = "item", name = "concrete", amount = 2 }) data.raw["legacy-straight-rail"]["legacy-straight-rail"].icon = ICONPATH_E .. "rail-concrete.png" @@ -547,6 +548,25 @@ if BI.Settings.BI_Game_Tweaks_Recipe then thxbob.lib.tech.add_recipe_unlock("railway", "bi-rail-wood") thxbob.lib.tech.add_recipe_unlock("railway", "bi-rail-wood-to-concrete") + --- Update Vanilla Images - Look more like concrete + require("prototypes.Wood_Products.rail-pictures-vanilla") + data.raw["straight-rail"]["straight-rail"].pictures = new_rail_pictures_vanilla("straight") + data.raw["half-diagonal-rail"]["half-diagonal-rail"].pictures = new_rail_pictures_vanilla("half-diagonal") + data.raw["curved-rail-a"]["curved-rail-a"].pictures = new_rail_pictures_vanilla("curved-a") + data.raw["curved-rail-b"]["curved-rail-b"].pictures = new_rail_pictures_vanilla("curved-b") + --- remnants + data.raw["rail-remnants"]["straight-rail-remnants"].pictures = new_rail_remnants_pictures_vanilla("straight") + data.raw["rail-remnants"]["half-diagonal-rail-remnants"].pictures = new_rail_remnants_pictures_vanilla("half-diagonal") + data.raw["rail-remnants"]["curved-rail-a-remnants"].pictures = new_rail_remnants_pictures_vanilla("curved-a") + data.raw["rail-remnants"]["curved-rail-b-remnants"].pictures = new_rail_remnants_pictures_vanilla("curved-b") + --- Let me try and remove decoratives at the same time (Does not seem to work...) + data.raw["rail-planner"]["bi-rail-wood"].decorative_removal_probability = 1.0 + data.raw["straight-rail"]["straight-rail"].decorative_removal_probability = 1.0 + data.raw["half-diagonal-rail"]["half-diagonal-rail"].decorative_removal_probability = 1.0 + data.raw["curved-rail-a"]["curved-rail-a"].decorative_removal_probability = 1.0 + data.raw["curved-rail-b"]["curved-rail-b"].decorative_removal_probability = 1.0 + + end diff --git a/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-concrete.png b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-concrete.png new file mode 100644 index 0000000..9329ab1 Binary files /dev/null and b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-concrete.png differ diff --git a/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-wood.png b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-wood.png new file mode 100644 index 0000000..3bd8aca Binary files /dev/null and b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-wood.png differ diff --git a/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-ties-concrete.png b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-ties-concrete.png new file mode 100644 index 0000000..8cf3f39 Binary files /dev/null and b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-ties-concrete.png differ diff --git a/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-ties-wood.png b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-ties-wood.png new file mode 100644 index 0000000..9f7f181 Binary files /dev/null and b/Bio_Industries_2/graphics/entities/wood_products/rails/new_rail/rail-ties-wood.png differ diff --git a/Bio_Industries_2/info.json b/Bio_Industries_2/info.json index c50efc8..d752be0 100644 --- a/Bio_Industries_2/info.json +++ b/Bio_Industries_2/info.json @@ -1,6 +1,6 @@ { "name": "Bio_Industries_2", - "version": "2.0.11", + "version": "2.0.12", "factorio_version": "2.0", "title": "Bio Industries", "author": "TheSAguy - Had a few Ideas, Pi-C (Programming Genius), Snouz (Graphics Wizard), Cackling Fiend - Conversion to F2.0", diff --git a/Bio_Industries_2/locale/en/entity-name.cfg b/Bio_Industries_2/locale/en/entity-name.cfg index 373cc46..2889bc2 100644 --- a/Bio_Industries_2/locale/en/entity-name.cfg +++ b/Bio_Industries_2/locale/en/entity-name.cfg @@ -34,6 +34,7 @@ bi-power-to-rail-pole=Powered rails connector bi-rail-power=Powered rails bi-rail-wood-bridge=Wooden rail bridge bi-rail-wood=Wooden rails +bi-straight-rail-wood=Wooden rails bi-curved-rail-a-wood=Wooden rails bi-curved-rail-b-wood=Wooden rails bi-half-diagonal-rail-wood=Wooden rails diff --git a/Bio_Industries_2/prototypes/Wood_Products/rail-pictures-vanilla.lua b/Bio_Industries_2/prototypes/Wood_Products/rail-pictures-vanilla.lua new file mode 100644 index 0000000..bb2ea8a --- /dev/null +++ b/Bio_Industries_2/prototypes/Wood_Products/rail-pictures-vanilla.lua @@ -0,0 +1,267 @@ +local util = require("util") + +local ground_rail_render_layers = +{ + stone_path_lower = "rail-stone-path-lower", + stone_path = "rail-stone-path", + tie = "rail-tie", + screw = "rail-screw", + metal = "rail-metal" +} + +local rail_segment_visualisation_endings = +{ + filename = "__base__/graphics/entity/rails/rail/rail-segment-visualisations-endings.png", + priority = "extra-high", + flags = { "low-object" }, + width = 64, + height = 64, + scale = 0.5, + direction_count = 16, + frame_count = 6, + usage = "rail" +} + + +local function make_new_rail_pictures(keys, elems, max_variations) + local function make_sprite_definition(filename, elem, key, variation_count) + return + { + filename = filename, + priority = elem.priority or "extra-high", + flags = elem.mipmap and { "trilinear-filtering" } or { "low-object" }, + draw_as_shadow = elem.draw_as_shadow, + allow_forced_downscale = elem.allow_forced_downscale, + width = key[3][1], + height = key[3][2], + x = key[2][1], + y = key[2][2], + scale = 0.5; + shift = util.by_pixel(key[4][1], key[4][2]), + variation_count = variation_count, + usage = "rail" + } + end + + local res = {} + for _ , key in ipairs(keys) do + local part = {} + local variation_count = key[5] or 1 + if max_variations then + variation_count = math.min(variation_count, max_variations) + end + if (variation_count > 0) then + for _ , elem in ipairs(elems) do + local layers = nil + local variations = variation_count; + if (elem[1] == "segment_visualisation_middle") then + variations = nil + end + if (type(elem[2]) == "table") then + layers = { layers = {} } + for _, subelem in ipairs(elem[2]) do + table.insert(layers.layers, make_sprite_definition(subelem[1], subelem, key, variations)) + end + else + layers = make_sprite_definition(elem[2], elem, key, variations) + end + + if (elem[1] ~= nil) then + part[elem[1]] = layers + else + part = layers + end + end + end + + res[key[1]] = part + end + return res +end + +function new_rail_pictures_vanilla(rail_type) + local keys + local NOT_USED_POSITION = {0, 0} + local NOT_USED_SIZE = {1, 1} + local NOT_USED_SHIFT = {0, 0} + if rail_type == "straight" then + keys = + { + {"north", { 0, 256 }, {256, 256}, {0,0}, 8}, + {"northeast", { 0, 2048 }, {384, 384}, {0,0}, 3}, + {"east", { 0, 0 }, {256, 256}, {0,0}, 8}, + {"southeast", { 0, 896 }, {384, 384}, {0,0}, 3}, + {"south", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"southwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"west", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"northwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0} + } + elseif rail_type == "half-diagonal" then + keys = + { + {"north", { 0, 1280 }, {384, 384}, {0,0}, 3}, + {"northeast", { 0, 1664 }, {384, 384}, {0,0}, 3}, + {"east", { 0, 2432 }, {384, 384}, {0,0}, 3}, + {"southeast", { 0, 512 }, {384, 384}, {0,0}, 3}, + {"south", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"southwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"west", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"northwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0} + } + elseif rail_type == "curved-a" then + keys = + { + {"north", { 2048, 3 * 512 }, {512, 512}, {0,0}, 4},-- piece 04 + {"northeast", { 2048, 12 * 512 }, {512, 512}, {0,0}, 4},-- piece 13 + {"east", { 2048, 7 * 512 }, {512, 512}, {0,0}, 4},-- piece 08 + {"southeast", { 2048, 0 * 512 }, {512, 512}, {0,0}, 4},-- piece 01 + {"south", { 2048, 11 * 512 }, {512, 512}, {0,0}, 4},-- piece 12 + {"southwest", { 2048, 4 * 512 }, {512, 512}, {0,0}, 4},-- piece 05 + {"west", { 2048, 15 * 512 }, {512, 512}, {0,0}, 4},-- piece 16 + {"northwest", { 2048, 8 * 512 }, {512, 512}, {0,0}, 4},-- piece 09 + } + elseif rail_type == "curved-b" then + keys = + { + {"north", { 2048, 2 * 512 }, {512, 512}, {0,0}, 4},-- piece 03 + {"northeast", { 2048, 13 * 512 }, {512, 512}, {0,0}, 4},-- piece 14 + {"east", { 2048, 6 * 512 }, {512, 512}, {0,0}, 4},-- piece 07 + {"southeast", { 2048, 1 * 512 }, {512, 512}, {0,0}, 4},-- piece 02 + {"south", { 2048, 10 * 512 }, {512, 512}, {0,0}, 4},-- piece 11 + {"southwest", { 2048, 5 * 512 }, {512, 512}, {0,0}, 4},-- piece 06 + {"west", { 2048, 14 * 512 }, {512, 512}, {0,0}, 4},-- piece 15 + {"northwest", { 2048, 9 * 512 }, {512, 512}, {0,0}, 4},-- piece 10 + } + end + local elems = + { + { "metals", "__base__/graphics/entity/rails/rail/rail-metals.png", mipmap = true }, + { "backplates", "__base__/graphics/entity/rails/rail/rail-backplates.png", mipmap = true }, + { "ties", "__Bio_Industries_2__/graphics/entities/wood_products/rails/new_rail/rail-ties-concrete.png" }, + { "stone_path", "__base__/graphics/entity/rails/rail/rail-stone-path-inside.png" }, + { "stone_path_background", "__base__/graphics/entity/rails/rail/rail-stone-path.png" }, + { "segment_visualisation_middle", "__base__/graphics/entity/rails/rail/rail-segment-visualisations-middle.png" }, + } + + local res = make_new_rail_pictures(keys, elems) + res["rail_endings"] = + { + sheets = + { + { + filename = "__base__/graphics/entity/rails/rail/rail-endings-background.png", + priority = "high", + flags = { "low-object" }, + width = 256, + height = 256, + scale = 0.5, + usage = "rail" + }, + { + filename = "__base__/graphics/entity/rails/rail/rail-endings-foreground.png", + priority = "high", + flags = { "trilinear-filtering" }, + width = 256, + height = 256, + scale = 0.5, + usage = "rail" + } + } + } + res["render_layers"] = ground_rail_render_layers + res["segment_visualisation_endings"] = rail_segment_visualisation_endings + return res +end + +function new_rail_remnants_pictures_vanilla(rail_type) + local keys + local NOT_USED_POSITION = {0, 0} + local NOT_USED_SIZE = {1, 1} + local NOT_USED_SHIFT = {0, 0} + if rail_type == "straight" then + keys = + { + {"north", { 0, 256 }, {256, 256}, {0,0}, 8}, + {"northeast", { 0, 2048 }, {384, 384}, {0,0}, 3}, + {"east", { 0, 0 }, {256, 256}, {0,0}, 8}, + {"southeast", { 0, 896 }, {384, 384}, {0,0}, 3}, + {"south", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"southwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"west", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"northwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0} + } + elseif rail_type == "half-diagonal" then + keys = + { + {"north", { 0, 1280 }, {384, 384}, {0,0}, 3}, + {"northeast", { 0, 1664 }, {384, 384}, {0,0}, 3}, + {"east", { 0, 2432 }, {384, 384}, {0,0}, 3}, + {"southeast", { 0, 512 }, {384, 384}, {0,0}, 3}, + {"south", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"southwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"west", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0}, + {"northwest", NOT_USED_POSITION, NOT_USED_SIZE, NOT_USED_SHIFT, 0} + } + elseif rail_type == "curved-a" then + keys = + { + {"north", { 2048, 3 * 512 }, {512, 512}, {0,0}, 4},-- piece 04 + {"northeast", { 2048, 12 * 512 }, {512, 512}, {0,0}, 4},-- piece 13 + {"east", { 2048, 7 * 512 }, {512, 512}, {0,0}, 4},-- piece 08 + {"southeast", { 2048, 0 * 512 }, {512, 512}, {0,0}, 4},-- piece 01 + {"south", { 2048, 11 * 512 }, {512, 512}, {0,0}, 4},-- piece 12 + {"southwest", { 2048, 4 * 512 }, {512, 512}, {0,0}, 4},-- piece 05 + {"west", { 2048, 15 * 512 }, {512, 512}, {0,0}, 4},-- piece 16 + {"northwest", { 2048, 8 * 512 }, {512, 512}, {0,0}, 4},-- piece 09 + } + elseif rail_type == "curved-b" then + keys = + { + {"north", { 2048, 2 * 512 }, {512, 512}, {0,0}, 4},-- piece 03 + {"northeast", { 2048, 13 * 512 }, {512, 512}, {0,0}, 4},-- piece 14 + {"east", { 2048, 6 * 512 }, {512, 512}, {0,0}, 4},-- piece 07 + {"southeast", { 2048, 1 * 512 }, {512, 512}, {0,0}, 4},-- piece 02 + {"south", { 2048, 10 * 512 }, {512, 512}, {0,0}, 4},-- piece 11 + {"southwest", { 2048, 5 * 512 }, {512, 512}, {0,0}, 4},-- piece 06 + {"west", { 2048, 14 * 512 }, {512, 512}, {0,0}, 4},-- piece 15 + {"northwest", { 2048, 9 * 512 }, {512, 512}, {0,0}, 4},-- piece 10 + } + end + local elems = + { + { "metals", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-metals.png", mipmap = true, allow_forced_downscale = true }, + { "backplates", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-backplates.png", mipmap = true, allow_forced_downscale = true }, + { "ties", "__Bio_Industries_2__/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-concrete.png" , allow_forced_downscale = true }, + { "stone_path", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-stone-path-inside.png" , allow_forced_downscale = true }, + { "stone_path_background", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-stone-path.png" , allow_forced_downscale = true } + } + + local res = make_new_rail_pictures(keys, elems) + res["rail_endings"] = + { + sheets = + { + { + filename = "__base__/graphics/entity/rails/rail/rail-endings-background.png", + priority = "high", + flags = { "low-object" }, + width = 256, + height = 256, + scale = 0.5, + usage = "rail" + }, + { + filename = "__base__/graphics/entity/rails/rail/rail-endings-foreground.png", + priority = "high", + flags = { "trilinear-filtering" }, + width = 256, + height = 256, + scale = 0.5, + usage = "rail" + } + } + } + res["render_layers"] = ground_rail_render_layers + return res +end + diff --git a/Bio_Industries_2/prototypes/Wood_Products/rail-pictures-wood.lua b/Bio_Industries_2/prototypes/Wood_Products/rail-pictures-wood.lua index d9ca8e0..c2b151b 100644 --- a/Bio_Industries_2/prototypes/Wood_Products/rail-pictures-wood.lua +++ b/Bio_Industries_2/prototypes/Wood_Products/rail-pictures-wood.lua @@ -21,7 +21,7 @@ local rail_segment_visualisation_endings = scale = 0.5, direction_count = 16, frame_count = 6, - tint = wood_tint, + -- tint = wood_tint, usage = "rail" } @@ -41,7 +41,7 @@ local function make_new_rail_pictures_wood(keys, elems, max_variations) scale = 0.5; shift = util.by_pixel(key[4][1], key[4][2]), variation_count = variation_count, - tint = wood_tint, + -- tint = wood_tint, usage = "rail" } end @@ -140,7 +140,7 @@ function new_rail_pictures_wood(rail_type) { { "metals", "__base__/graphics/entity/rails/rail/rail-metals.png", mipmap = true }, { "backplates", "__base__/graphics/entity/rails/rail/rail-backplates.png", mipmap = true }, - { "ties", "__base__/graphics/entity/rails/rail/rail-ties.png" }, + { "ties", "__Bio_Industries_2__/graphics/entities/wood_products/rails/new_rail/rail-ties-wood.png" }, { "stone_path", "__base__/graphics/entity/rails/rail/rail-stone-path-inside.png" }, { "stone_path_background", "__base__/graphics/entity/rails/rail/rail-stone-path.png" }, { "segment_visualisation_middle", "__base__/graphics/entity/rails/rail/rail-segment-visualisations-middle.png" }, @@ -158,7 +158,7 @@ function new_rail_pictures_wood(rail_type) width = 256, height = 256, scale = 0.5, - tint = wood_tint, + -- tint = wood_tint, usage = "rail" }, { @@ -168,7 +168,7 @@ function new_rail_pictures_wood(rail_type) width = 256, height = 256, scale = 0.5, - tint = wood_tint, + -- tint = wood_tint, usage = "rail" } } @@ -236,7 +236,7 @@ function new_rail_remnants_pictures(rail_type) { { "metals", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-metals.png", mipmap = true, allow_forced_downscale = true }, { "backplates", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-backplates.png", mipmap = true, allow_forced_downscale = true }, - { "ties", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-ties.png" , allow_forced_downscale = true }, + { "ties", "__Bio_Industries_2__/graphics/entities/wood_products/rails/new_rail/rail-remnants-ties-wood.png" , allow_forced_downscale = true }, { "stone_path", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-stone-path-inside.png" , allow_forced_downscale = true }, { "stone_path_background", "__base__/graphics/entity/rails/rail/remnants/rail-remnants-stone-path.png" , allow_forced_downscale = true } } @@ -253,7 +253,7 @@ function new_rail_remnants_pictures(rail_type) width = 256, height = 256, scale = 0.5, - tint = wood_tint, + -- tint = wood_tint, usage = "rail" }, { @@ -263,7 +263,7 @@ function new_rail_remnants_pictures(rail_type) width = 256, height = 256, scale = 0.5, - tint = wood_tint, + -- tint = wood_tint, usage = "rail" } } diff --git a/Bio_Industries_2/prototypes/Wood_Products/rail.lua b/Bio_Industries_2/prototypes/Wood_Products/rail.lua index 4f78eb2..496749d 100644 --- a/Bio_Industries_2/prototypes/Wood_Products/rail.lua +++ b/Bio_Industries_2/prototypes/Wood_Products/rail.lua @@ -76,6 +76,7 @@ local simulations = require("__base__.prototypes.factoriopedia-simulations") name = "bi-straight-rail-wood", order = "a[ground-rail]-a[bi-straight-rail-wood]", icon = ICONPATH_E .. "straight-rail-wood.png", + localised_name = {"entity-name.bi-straight-rail-wood"}, collision_box = {{-1, -1}, {1, 1}}, -- has custommly generated box, but the prototype needs something that is used to generate building smokes flags = {"placeable-neutral", "player-creation", "building-direction-8-way"}, minable = {mining_time = 0.2, result = "bi-rail-wood", count = 1}, @@ -112,6 +113,7 @@ local simulations = require("__base__.prototypes.factoriopedia-simulations") order = "a[ground-rail]-b[bi-half-diagonal-rail-wood]", deconstruction_alternative = "bi-straight-rail-wood", icon = ICONPATH_E .. "curved-rail-wood.png", + localised_name = {"entity-name.bi-half-diagonal-rail-wood"}, collision_box = {{-0.75, -2.236}, {0.75, 2.236}}, -- has custommly generated box, but the prototype needs something that is used to generate building smokes tile_height = 2, extra_planner_goal_penalty = -4, @@ -159,6 +161,7 @@ local simulations = require("__base__.prototypes.factoriopedia-simulations") order = "a[ground-rail]-c[bi-curved-rail-a-wood]", deconstruction_alternative = "bi-straight-rail-wood", icon = ICONPATH_E .. "curved-rail-wood.png", + localised_name = {"entity-name.bi-curved-rail-a-wood"}, collision_box = {{-0.75, -2.516}, {0.75, 2.516}}, -- has custommly generated box, but the prototype needs something that is used to generate building smokes flags = {"placeable-neutral", "player-creation", "building-direction-8-way"}, minable = {mining_time = 0.2, result = "bi-rail-wood", count = 3}, @@ -205,6 +208,7 @@ local simulations = require("__base__.prototypes.factoriopedia-simulations") order = "a[ground-rail]-d[bi-curved-rail-b-wood]", deconstruction_alternative = "bi-straight-rail-wood", icon = ICONPATH_E .. "curved-rail-wood.png", + localised_name = {"entity-name.bi-curved-rail-b-wood"}, collision_box = {{-0.75, -2.441}, {0.75, 2.441}}, -- has custommly generated box, but the prototype needs something that is used to generate building smokes flags = {"placeable-neutral", "player-creation", "building-direction-8-way"}, minable = {mining_time = 0.2, result = "bi-rail-wood", count = 3},