From 11a441f274777cb22f32898a1d80008083907368 Mon Sep 17 00:00:00 2001 From: 1F616EMO Date: Tue, 30 Jan 2024 20:15:57 +0800 Subject: [PATCH] Apply changes from https://github.com/Montandalar/trainblocks --- .gitignore | 44 ++++ craft.lua | 328 ++++++++++++++++++------- init.lua | 156 ++++++++++-- locale/template.txt | 5 + locale/trainblocks.zh_TW.tr | 5 + settingtypes.txt | 7 + textures/durchgang_verboten.png | Bin 0 -> 201 bytes textures/front_line0.png | Bin 0 -> 4356 bytes textures/front_platform0.png | Bin 0 -> 243 bytes textures/front_station_sign_modern.png | Bin 0 -> 120 bytes textures/inventory_line0.png | Bin 0 -> 4335 bytes textures/inventory_platform0.png | Bin 0 -> 207 bytes textures/no_pedestrians.png | Bin 0 -> 191 bytes textures/station_sign2_modern.png | Bin 0 -> 1577 bytes 14 files changed, 433 insertions(+), 112 deletions(-) create mode 100644 .gitignore create mode 100644 settingtypes.txt create mode 100644 textures/durchgang_verboten.png create mode 100644 textures/front_line0.png create mode 100644 textures/front_platform0.png create mode 100644 textures/front_station_sign_modern.png create mode 100644 textures/inventory_line0.png create mode 100644 textures/inventory_platform0.png create mode 100644 textures/no_pedestrians.png create mode 100644 textures/station_sign2_modern.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bdba7d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# Compiled Lua sources +luac.out + +# luarocks build files +*.src.rock +*.zip +*.tar.gz + +# Object files +*.o +*.os +*.ko +*.obj +!models/*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo +*.def +*.exp + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +*.tr.old + diff --git a/craft.lua b/craft.lua index 8862bea..d4b9992 100644 --- a/craft.lua +++ b/craft.lua @@ -1,94 +1,234 @@ --- trainblocks/craft.lua --- Crafting recipes for trainblocks ---[[ - Copyright (C) 2018 maxx, LuLa, gpcf - Copyright (C) 2024 1F616EMO - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -]] - -minetest.register_craft({ - output = 'trainblocks:subwayblock', - recipe = { - { '', 'dye:blue', '' }, - { 'dye:white', 'default:glass', 'dye:white' }, - { '', 'dye:blue', '' }, - } -}) - -minetest.register_craft({ - output = 'trainblocks:sbahnblock', - recipe = { - { '', 'dye:green', '' }, - { 'dye:white', 'default:glass', 'dye:white' }, - { '', 'dye:green', '' }, - } -}) - ---lineblocks from 1 to 10 -local dyes1 = { "blue", "red", "violet", "green", "orange", "yellow", "gray", "magenta", "cyan", "black" } -local dyes2 = { "white", "white", "white", "white", "white", "black", "white", "white", "white", "white" } - -for count = 1, 10, 1 do - minetest.register_craft({ - output = "trainblocks:line" .. count .. " 4", - recipe = { - { '', "dye:" .. dyes1[count], '' }, - { "dye:" .. dyes2[count], 'default:glass', '' }, - { '', '', '' }, - } - }) -end - - - ---subway direction signs - -minetest.register_craft({ - output = 'trainblocks:subwaysignL 2', - recipe = { - { '', '', '' }, - { 'dye:white', 'default:glass', 'dye:blue' }, - { '', '', '' }, - } -}) - -minetest.register_craft({ - output = 'trainblocks:subwaysignR 2', - recipe = { - { '', '', '' }, - { 'dye:blue', 'default:glass', 'dye:white' }, - { '', '', '' }, - } -}) - ---sbahn direction signs - -minetest.register_craft({ - output = 'trainblocks:sbahnsignL 2', - recipe = { - { '', '', '' }, - { 'dye:white', 'default:glass', 'dye:green' }, - { '', '', '' }, - } -}) - -minetest.register_craft({ - output = 'trainblocks:sbahnsignR 2', - recipe = { - { '', '', '' }, - { 'dye:blue', 'default:glass', 'dye:green' }, - { '', '', '' }, - } -}) +-- trainblocks/craft.lua +-- Crafting recipes for trainblocks +--[[ + Copyright (C) 2018 maxx, LuLa, gpcf + Copyright (C) 2024 1F616EMO + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +]] + +minetest.register_craft({ + output = 'trainblocks:subwayblock', + recipe = { + { '', 'dye:blue', '' }, + { 'dye:white', 'default:glass', 'dye:white' }, + { '', 'dye:blue', '' }, + } +}) + +minetest.register_craft({ + output = 'trainblocks:sbahnblock', + recipe = { + { '', 'dye:green', '' }, + { 'dye:white', 'default:glass', 'dye:white' }, + { '', 'dye:green', '' }, + } +}) + +-- lineblocks from 1 to 10 +-- gray -> grey from https://github.com/Montandalar/trainblocks/commit/5e6f906f7d5716127a4b760df8bc6ea1f61c84ea +-- Bonus: Line 0 +local dyes1 = { "blue", "blue", "red", "violet", "green", "orange", "yellow", "grey", "magenta", "cyan", "black" } +local dyes2 = { "blue", "white", "white", "white", "white", "white", "black", "white", "white", "white", "white" } + +for count = 0, 10, 1 do + minetest.register_craft({ + output = "trainblocks:line" .. count .. " 4", + recipe = { + { '', "dye:" .. dyes1[count + 1], '' }, + { "dye:" .. dyes2[count + 1], 'default:glass', '' }, + } + }) +end + + + +--subway direction signs + +minetest.register_craft({ + output = 'trainblocks:subwaysignL 2', + recipe = { + { 'dye:white', 'default:glass', 'dye:blue' } + } +}) + +minetest.register_craft({ + output = 'trainblocks:subwaysignR 2', + recipe = { + { 'dye:blue', 'default:glass', 'dye:white' }, + } +}) + +--sbahn direction signs + +minetest.register_craft({ + output = 'trainblocks:sbahnsignL 2', + recipe = { + { 'dye:white', 'default:glass', 'dye:green' }, + } +}) + +minetest.register_craft({ + output = 'trainblocks:sbahnsignR 2', + recipe = { + { 'dye:blue', 'default:glass', 'dye:green' }, + } +}) + +-- Switch betwen modern station direction signs and older style +-- from https://github.com/Montandalar/trainblocks/commit/4f4f6004e1e5067969fcc0efd8785a55ef36a6e2 + +minetest.register_craft({ + type = "shapeless", + output = 'trainblocks:stationsignR_modern', + recipe = {'trainblocks:stationsignR'} +}) +minetest.register_craft({ + type = "shapeless", + output = 'trainblocks:stationsignL_modern', + recipe = {'trainblocks:stationsignL'} +}) +minetest.register_craft({ + type = "shapeless", + recipe = {'trainblocks:stationsignR_modern'}, + output = 'trainblocks:stationsignR' +}) +minetest.register_craft({ + type = "shapeless", + recipe = {'trainblocks:stationsignL_modern'}, + output = 'trainblocks:stationsignL' +}) + +-- Platform signs 0-10 +-- from https://github.com/Montandalar/trainblocks/commit/f5e86f18f437ba3cb3337369d0b009e94dd5a8f5 + +minetest.register_craft({ + output = "trainblocks:platformsign0", + recipe = { + {'dye:blue', 'default:glass', ''}, + {'', 'dye:white', ''}, + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign1", + recipe = { + {'dye:blue', 'default:glass', 'dye:white'}, + {'', '', 'dye:white'}, + {'', '' ,'dye:white'} + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign2", + recipe = { + {'dye:blue', 'default:glass', ''}, + {'dye:white', 'dye:white', ''}, + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign3", + recipe = { + {'dye:blue', 'default:glass', ''}, + {'dye:white', 'dye:white', 'dye:white'}, + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign4", + recipe = { + {'dye:blue', 'default:glass', ''}, + {'dye:white', 'dye:white', ''}, + {'dye:white', 'dye:white' ,''} + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign5", + recipe = { + {'dye:blue', 'default:glass', ''}, + {'dye:white', 'dye:white', 'dye:white'}, + {'dye:white', 'dye:white' ,''} + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign6", + recipe = { + {'dye:blue', 'default:glass', ''}, + {'dye:white', 'dye:white', 'dye:white'}, + {'dye:white', 'dye:white' ,'dye:white'} + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign7", + recipe = { + {'dye:blue', 'default:glass', 'dye:white'}, + {'', '', 'dye:white'}, + {'', 'dye:white' ,''} + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign8", + recipe = { + {'dye:blue', 'default:glass', 'dye:white'}, + {'dye:white', '', 'dye:white'}, + {'dye:white', 'dye:white' ,'dye:white'} + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign9", + recipe = { + {'dye:blue', 'default:glass', 'dye:white'}, + {'', 'dye:white', 'dye:white'}, + {'', '' ,'dye:white'} + } +}) + +minetest.register_craft({ + output = "trainblocks:platformsign10", + recipe = { + {'dye:blue', 'default:glass', ''}, + {'dye:white', '', ''}, + {'dye:white', '' ,'dye:white'} + } +}) + +-- Recipies for (modern) station blocks +-- from https://github.com/Montandalar/trainblocks/commit/735e61288ad55317d4fffcdb4e58b5feebc419d0 + +minetest.register_craft({ + output = 'trainblocks:station_block', + recipe = { + {'', 'dye:black', ''}, + {'dye:white', 'default:glass', 'dye:white'}, + {'', 'dye:black', ''}, + } +}) + +minetest.register_craft({ + type = 'shapeless', + output = 'trainblocks:station_block_modern', + recipe = {'trainblocks:station_block'} +}) + +minetest.register_craft({ + type = 'shapeless', + recipe = {'trainblocks:station_block_modern'}, + output = 'trainblocks:station_block' +}) \ No newline at end of file diff --git a/init.lua b/init.lua index 53ae257..335f3a9 100644 --- a/init.lua +++ b/init.lua @@ -2,6 +2,7 @@ -- Adds signs fitting the advtrains theme --[[ Copyright (C) 2018 maxx, LuLa, gpcf + Copyright (C) 2020, 2021 Montandalar/Blockhead Copyright (C) 2024 1F616EMO This program is free software: you can redistribute it and/or modify @@ -36,23 +37,35 @@ minetest.register_node("trainblocks:subwayblock", { drop = "trainblocks:subwayblock" }) -minetest.register_node("trainblocks:sbahnblock", { - description = S("S-Bahn block"), - light_source = 8, - tiles = { - "down_sbahnblock.png", - "down_sbahnblock.png", - "front_sbahnblock.png", - "front_sbahnblock.png", - "front_sbahnblock.png", - "front_sbahnblock.png" - }, - is_ground_content = true, - groups = { cracky = 3 }, - drop = "trainblocks:sbahnblock" -}) +do + -- Add a setting for legacy sbahnblock textures + -- from https://github.com/Montandalar/trainblocks/commit/0fa3f52123bfe5aea386f987e7204c94aba72725 -for count = 1, 10, 1 do + local sbahncolorize = "" + if minetest.settings:get_bool("trainblocks_legacy_sbahnblock", false) then + sbahncolorize = "^[colorize:#00DF11FF" + end --00E876FF + + minetest.register_node("trainblocks:sbahnblock", { + description = S("S-Bahn block"), + light_source = 8, + tiles = { + "down_sbahnblock.png", + "down_sbahnblock.png" .. sbahncolorize, + "front_sbahnblock.png", + "front_sbahnblock.png", + "front_sbahnblock.png", + "front_sbahnblock.png" + }, + is_ground_content = true, + groups = { cracky = 3 }, + drop = "trainblocks:sbahnblock" + }) +end + +-- Platform 0 from https://github.com/Montandalar/trainblocks/commit/12a365d1c280d2b106621a8088229ee50937c488 +-- Bonus: Line 0 +for count = 0, 10, 1 do minetest.register_node("trainblocks:line" .. count, { description = S("Line sign @1", count), tiles = { "front_line" .. count .. ".png" }, @@ -76,7 +89,6 @@ for count = 1, 10, 1 do wall_top = { -0.5, -0.25, -0.25, -0.4375, 0.25, 0.25 }, wall_bottom = { -0.5, -0.25, -0.25, -0.4375, 0.25, 0.25 }, wall_side = { -0.5, -0.25, -0.25, -0.4375, 0.25, 0.25 }, - } }) @@ -296,6 +308,114 @@ minetest.register_node("trainblocks:mr", { drop = "trainblocks:sbahnblock" }) +-- Modern station blocks +-- from https://github.com/Montandalar/trainblocks/commit/12a365d1c280d2b106621a8088229ee50937c488 + +minetest.register_node("trainblocks:stationsignL_modern", { + description = S("Modern Station Sign (Left)"), + tiles = { + "station_sign3.png", + "station_sign3.png", + "station_sign3.png", + "station_sign3.png", + "station_sign2_modern.png", + "station_sign2_modern.png^[transformFX", + }, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, + }, + }, + + paramtype2 = "facedir", + paramtype = 'light', + light_source = 6, + is_ground_content = false, + groups = { cracky = 3 }, +}) + +minetest.register_node("trainblocks:stationsignR_modern", { + description = S("Modern Station Sign (Right)"), + tiles = { + "station_sign3.png", + "station_sign3.png", + "station_sign3.png", + "station_sign3.png", + "station_sign2_modern.png", + "station_sign2_modern.png", + }, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, + }, + }, + + paramtype2 = "facedir", + paramtype = 'light', + light_source = 6, + is_ground_content = false, + groups = { cracky = 3 }, +}) + +minetest.register_node("trainblocks:station_block_modern", { + description = S("Modern Station Block"), + light_source = 8, + tiles = { + "down_station_sign.png", + "down_station_sign.png", + "front_station_sign_modern.png", + "front_station_sign_modern.png", + "front_station_sign_modern.png", + "front_station_sign_modern.png", + }, + is_ground_content = true, + groups = { cracky = 3 }, + drop = "trainblocks:station_block" +}) + +-- "No Pedestrains" signs +-- from https://github.com/Montandalar/trainblocks/commit/3e00d5cf40759c085deccc915f1fa6fb2c092523 +-- train blocking fix from https://github.com/Montandalar/trainblocks/commit/a312afc27c2967e0ba04d6b4da3a074cf54f73df + +local box_flat = { + type = "fixed", + fixed = { -0.5000, -0.4375, -0.5000, 0.5000, -0.4375, 0.5000 } +} + +local pedsigns = { + { name = "no_pedestrians", desc = S("No Pedestrians Sign") }, + { name = "durchgang_verboten", desc = S("No Pedestrians Sign (German)") } +} + +for _, v in pairs(pedsigns) do + minetest.register_node("trainblocks:" .. v.name, { + description = v.desc, + light_source = 2, + drawtype = "signlike", + paramtype = "light", + paramtype2 = "wallmounted", + tiles = { v.name .. ".png" }, + inventory_image = v.name .. ".png", + wield_image = v.name .. ".png", + groups = { + cracky = 3, + not_blocking_trains = 1, + }, + drop = "trainblocks:" .. v.name, + is_ground_content = true, + node_box = box_flat, + selection_box = box_flat, + }) +end + +-- Add a setting to disable crafting recipes +-- from https://github.com/Montandalar/trainblocks/commit/15e2b88f44671aa68d1a758a6aca363b602a1282 +if not minetest.settings:get_bool('trainblocks_disable_recipes', false) then + dofile(minetest.get_modpath("trainblocks") .. "/craft.lua") +end -dofile(minetest.get_modpath("trainblocks") .. "/craft.lua") dofile(minetest.get_modpath("trainblocks") .. "/alias.lua") diff --git a/locale/template.txt b/locale/template.txt index 2fb23a7..d3d6408 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -1,4 +1,6 @@ # textdomain: trainblocks + +### init.lua ### Subway block= S-Bahn block= Line sign @1= @@ -11,3 +13,6 @@ Station Sign (Left)= Station Sign (Right)= Station Block= Mountain Railway Block= +Modern Station Sign (Left)= +Modern Station Sign (Right)= +Modern Station Block= diff --git a/locale/trainblocks.zh_TW.tr b/locale/trainblocks.zh_TW.tr index fda0297..ec08352 100644 --- a/locale/trainblocks.zh_TW.tr +++ b/locale/trainblocks.zh_TW.tr @@ -1,4 +1,6 @@ # textdomain: trainblocks + +### init.lua ### Subway block=地鐵方塊 S-Bahn block=城鐵方塊 Line sign @1=路線告示牌 @1 @@ -11,3 +13,6 @@ Station Sign (Left)=車站告示牌(左) Station Sign (Right)=車站告示牌(右) Station Block=車站方塊 Mountain Railway Block=山區鐵路方塊 +Modern Station Sign (Left)=現代車站告示牌(左) +Modern Station Sign (Right)=現代車站告示牌(右) +Modern Station Block=現代車站方塊 diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 0000000..850812a --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1,7 @@ +# Disable crafting recipes. Server admins may want to disable crafting of the +# blocks in this mod to restrict their use. +trainblocks_disable_recipes (Disable crafting recipes) bool false + +# Puts a vibrant green texture on top of the s-bahn block, which used to be a +# missing texture. +trainblocks_legacy_sbahnblock (Legacy S-Bahn block) bool false \ No newline at end of file diff --git a/textures/durchgang_verboten.png b/textures/durchgang_verboten.png new file mode 100644 index 0000000000000000000000000000000000000000..635ea6558b3e01f8ffb766feea5d2b3ea3603c10 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHVEbxddW?;}$24TjErS@e&LH+=r z5LX}#1W(k(o~n!ezs=yRzNQbzXDkWw3ubV5b|VeQ3HEex4B@yQ+Ix`mfB_FP>%0XM zIOp&PEaD8>^518xtk+6AE0ttMgCeDr(|gq~s;0AXxu!VpemO6K-D*{*-UBXCmY3|# nxz9Js&baS9L8w!z{`qP73lBx!TrFL@7-YGptDnm{r-UW|@W?%S literal 0 HcmV?d00001 diff --git a/textures/front_line0.png b/textures/front_line0.png new file mode 100644 index 0000000000000000000000000000000000000000..a1600815bc9be27241a514355ee5f109878ff198 GIT binary patch literal 4356 zcmeHLdu$X%7~eZ6EtNuBtMX7;w~8R{?e5*)YwdxhcXBJea+U)ML11rpwq5Am9=ChF zD^U|LAP+TKiKu}p7!lCaKp==15am$~q6Qy9@sT2rKQumo5D^HyfH#5Ka=IhO^4A)IADIQsjVOR+t^w&dOY82}L_#0h+%kLOwsXz_9%=7nPMPR!D z3YhF2Sup%yDv4)qIA%E4~njWW_wVAflqJu27U4(+iyjN#9KZwb`z zK(Rx+0_sjE$`jdfPe9vvip)<<5(zqz@U)^g;gk7L7;{@O)2F*OjJVy#&^Ct)7->7p z(G2IHaXZa1G{?FzE4I9?5E}uUm!Vi*>6x!FPWN;DNYb`%Mge}AQd1M=YijUBQk9iv zgkhO=k3M@}@Ply0@~fLx4ZCM(OStUA@cN%N5>M|e4s0%6ux!R{weibK$CU7^R=@hg z?8L9z8d8ZxUw*NFdg;K?_|c(tt8DdMyZH@)Ckt&CPwqQ&b@#h>q~}<$EurrhXeqKh%Ee`-_biws==tEYErl4LLUEJG}k) zj*_E)91v!#nck&!4SvoRywaIEc+!2eU~NJB2-mSKtzGoCh9>c~r)GWj`HI(9R&L!i zZSOO`HJp0);H>d8XPs-mvTVb;z1xqZW>*I1mrZ#FpHzL*U2BBO2lv#iT2`_C@S|5g z=$J>Wozzi2+2Q(m*cZ9ZQ-eL6@}cqThE9?&VF4m(s}sOgqC%O2A4iE zsN?+e`|1njiTqnTcXXD0y02u;oLwv$_Vx+OpqGanU-R&|;FQiYOD;MtZ@QOG+;G05 zRa@A8^1LN@?9Dd!d;9O8=f3h&>g9BL*C#)J-+ubaW7ynD$#x6dW`jV^D3J!eAymtW zYRo1`Y82Trv4pvgRTDD_L0pJ*Jc=5XxR3Z{&prZIBp)%;8KOgp8q}l&7bnrQ#dQ&J z@j}rn5fdjAS7kULh#_6TGqL8l#$|kj$;(08FjE9>LiB|`q5;CKMol7|wXrsu3}loR zJ29acuS!ZXSMPryM*(j>qDj{i97UzmX1fuGZrlyi23bdfOUfG*M67&9vRI=GzjwDj38N~pq!KlnNLmCG&?_o&L zsKgSc7l?fgQdi_2v96h$(PJ*B_e8)w&wCBJd+jC|P@xd#SH+YuJ>KsljPW^16%~my zn+}iN!!ULi>1JJsWSt&~j3PlM-A-0=OHq#~u~IK8KCbCPTto&HklPgC5g6Lz6r6~3 z33iEOMad2nNG79@$~Mn%?3%cMsT1(J=@4$|Wg zy`=2)Ag5iHX{YQqsU(qmKuyL3*iI!TG$JYyZ!|j$!MW-%?<4Fsy2lc37IYaLd_=7h zPi1;KB1#NR(*;9K#!b6ijLXHkS+C1w_x6Bhpri(oXmFY-*6cC1g@eU_u!0e%Kw#Qo zEu5K0)nr6fn|(w+Ip@1WaGWGT7yOXcfi$14Bi-qGJniA=?DP$~kSZy1>%XCm!-H1= z9=1HFXu6tgHBH$QH4QDwzGYvV74sh>~TS)fUe6G1e&SQqJmC?aW5bTV$Y12N95ta)}#mG!icMAeO;BWMNTY5pU_ z$C?{8&eSZAPB$TA7eFwQW=IG9cfqLKf+-_sbg#IIx=xcS6VNNkfM3=I$qRBJl~0B_ z&0q%q=abuu|8oc&?;oU3`u5A!FIS%w=o7dU!@*dn z^PxcDSQL70(Y)*K0-AbW|YuPgf_W>ygv%i{@mvVlUfnIRD+&iT2y zsd*(pE(3#eQEFmIYKlU6W=V#EyQgnJie4%^P@E^gC&U$`K&G5oG~oaL|CdDf?FMog zlf2zsm<4%!Ku%Kkba4#fxSkxr%EH5u#LC<(cDU<8fP&zEQI8|jl7tdCHwaBg3Snk= WpCO-Vu=SoD$UIM1KbLh*2~7a+EIoMu literal 0 HcmV?d00001 diff --git a/textures/front_station_sign_modern.png b/textures/front_station_sign_modern.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf4063a8b18f9d928b55f7e5a532e9b985ed8d5 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E0F&G|NqjP^X~##x}GkM zAsp9}6A}_u{68L`cswBdc))?<0sr_~8hVuM1vp(CZl0>-;qy^oV`gTsEaG`uX!*+) PsFA_b)z4*}Q$iB}AuuAy literal 0 HcmV?d00001 diff --git a/textures/inventory_line0.png b/textures/inventory_line0.png new file mode 100644 index 0000000000000000000000000000000000000000..2b94d6fdd379a28889955c10308f0df09a20fbea GIT binary patch literal 4335 zcmeHLYitx%6rOFVEu}oHJS+wn2M~G8&ST$0x6tk`bVCI0%uKu6 zDpForpn@PoA^0G^MMXqSM8F3`Ffk@z1POwKKZr)u@B=WZdS-U}5);!z|8;in-aF@> z^WAg4d+ynt-4LBWcWCL@QVhd}hHHZhp&wy3TOoW-_A3O2*+!y_vBCCG`#&_k%@51=rypCzlfbCG|4?<&M zJQDg7(B#K+>wX7g^D41k0S)m667h^|G~#o^ktpUVz$}}t-W1}jouTaxHz3lilcO2V zLE|jVF)X~X0_?GE#aIPk{tnIdLXW@ZI$hVTE3qB%Eug;H9=#&Pm+P5eGiJ zfB)rCwhp4BYMm%m=-alhQCFU?_k6RoBXRS3=L4M&U5L+~J!!M!=zAMH?FqNC_FC17 zbvwizH+E+~dud4dEN$s;H=fW>qSc8xU)Hrg=dGDBdS=6wWs6wXCHc~8Z(P|59I_CJzI}2NzS4-zt9N9AN)s})m&##_-_~(7@ zwzCUP{iKksgUXVHW6mg%vxW9d+ny-_H(FeJs=T!5VrR#Zsl{a%3ii0v)LZ)QDy(AH z{XgF3^$z-c)AqwxuU)7_OHho@=c8zrVp$S2NWCRx@L4jYPc$KN7(t{9nw&Od zHHDj)d|YiZ`~(5>c$a@lIuhxIPw9CUfDbCmrzyrxQ;I_Mw$P1GGl1kB`bP^r){;il zLZqurnt(#hC}m9S4Iv8M_UR@qX@w&S6iOlmRCQRD>9eGHF1syE3KFuCwyc2cKAMIs z^^n!aH*>}cr?(?u-i_NwyDN4}8MGo1E~pAkrhDO_pD@?wL{*SQ&KmL}OM6&{ND3a0 zKsvo{hKx%>ob)-RxX24G594w5f(oZ}gHH*_gaUB83^@x*kd=J0w^t^V2vCv>IT$JKA_bavkxq}(gaU5_x8M>aFUyFo zxCJE&+#FR?c-T%^;S-2TrxMnLNjO&>4f_e!PWMQnN#2maz)#f4sithtL`+sty}_Go zG9KFPX51bJ%Q$^*XD)0DZxPaT$V3y*=(YqjTo1Y1&R049uav- zB*s0YlNAu@qdg4CJ6&Fw;d!?U^+nfJ$;j{;s!jlpz!jvY^*x5)Yi-ojzS@~aWbOhG zM$!!Fp#M%7l@FLQYerYZmDDYqR9XtXiVWE0WKg`I7E;~CFwdD;cK*jJzZd`G3IIK@ zNWb_Uplg7xelgH5<$>%PpsQaD^h}O2#bwyBvkx^ZG2f-*_cN@ zG5?3CFhUJRKvm42=-4d};EPue8v{zC!@=rU$r)i8R`|zo{Fu--u3G#Q!!|xzbUs-( R@(a+w!lC)Ww`-QI`3p4>sm1^R literal 0 HcmV?d00001 diff --git a/textures/inventory_platform0.png b/textures/inventory_platform0.png new file mode 100644 index 0000000000000000000000000000000000000000..82e0021c71755878a99b62e37a72224c651a75ee GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;V{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}c0*}aI1_o|n5N2eUHAey{$X?><>&pI!nN`?ANH)PM5GW*@84^+AoS&PU znpXnkGB7w7r6!i7rYMwWmSiZnd-?{X=%um)#n}RULR=YS%K!iW|4p&B8Ym*>>Eal| qaXmSKf%zZ5!ja?#S;v%v3=Ca$tao#KL{0)#FnGH9xvX-T@L^F&p@t~YqG{{R2x#Q&#%)bsq#pUT|1>#f71_f-NDd6icEGkj6M{x+k^t8jyY h`u+bIk{C{CFc?IrzkPLH+#F~wgQu&X%Q~loCIJ1aLc;(6 literal 0 HcmV?d00001 diff --git a/textures/station_sign2_modern.png b/textures/station_sign2_modern.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f5c4489bacd515ac1e295454a8841dc39ba161 GIT binary patch literal 1577 zcmV+^2G;qBP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-_bmg^`C{MRaG2}mFw%fT4VnH|jXr@+{qq@BdM z-Jdrc8xTT|DuF}wzkeJ3gP&OA$!Ul_d2jG@$tB4cM6>+#%;{F(0#I5Nj;u(vY|VJPO~-Ce#-n&c4n0JSv0A2WVMYQ#?$X0OBl^ea0es0*ZXdAp6C(^x7g*219}wR-wns#Azfj5sE zq73cm^gU2q0J$C8JX*k`7>CgkS~S@dP`;XC7PP{N1*|k;$17)UTt{EHAVeos0(y}m zcF3X)lB5ilTyNYY*ko55!DW$3)jey-oVfP5tyzbx`XtMMbuDMt4>wD292aiv$x)P_1*{HFS#6Sa6y9)A;geEjyAfe z(Z>*DOfe@(7I&Z~pF)Z$rJRK_9A((b(9e)8ve?Bfy7(n5aY;)qD4*hr7GFY%C6&C& zYFAtnt6#$!*RYYOJZ|hFWX3xu(sx&|*t1AFNGQzqJoo6og51j!Nv~DeAVQuZ-xiT2rPGQH?Se!oSWQl~w7`%Sk|26c7hHTx2 zZE1C%Ew!~FeKMza3Rma!Qv*MZs6{id=-DrQfi@g|4maHhHZK+~yW{EZ)#kookB}Zi zJl}kt=C0D^v@Kjs;RL6d0liA$HuQIq(~0t@)DPoy1=K6)(KCiVNvkW+8E|!v`}ypf zS^Bi}p7BQaiG7;TmoD8a-?@gLVJ%-N*$b&X7<)nnT@3z@@1q;v*GQmep?_FU^YlN~ z$PL_Yq{ob|-8#=BesyTy5Pja$6~z6QIf^V=NSOg2DtFao#76u!<-XpA(PkbV1@r zu1gNTaW32J<(UyZmzgJy5DVoVmU@^~bcJ}DI4UbD<$LoE%bd43E42pe+>^gBSX5WC zT&FpLB$kju8UiFVP(=+UVzjEH7|76m!o@#q`_tr-$W;X+#{%k5AliQLKlt6PQHoDF zNx=l*f3d8OQ6R7jw40XoeQa6n6TtTjT&Z1uy#>sElHTlU(IX(d4P0DzHE9pH+yRE3 zG*K6A$w$*$Dgp0j^i2g|@D>JaB-y@*_000J1 zOjJbx00960|E1ZV-2eap0b)x>L;#2d9Y_EG08U9nK~xA^WB3mQ3^)lesQ>@}AB_0< zkD-SD50GX5ua2RD{l6VU_4ohtK*Tu^_ZdT_I*;GK$r&x bcwGPhz~5q?4e^XQ00000NkvXXu0mjf3ZK*I literal 0 HcmV?d00001