123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- local S
- if minetest.get_modpath("intllib") then
- S = intllib.Getter()
- else
- S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
- end
- local function escape_texture(str)
- return str:gsub("[%[%()^:]", "\\%1")
- end
- local function set_textures(self, data)
- local inv = minetest.get_inventory({type="detached", name="advtrains_wgn_"..data.id})
- if inv then
- if inv:is_empty("box") then
- self.object:set_properties({
- mesh="moretrains_gondola.b3d",
- })
- return
- end
- local stack = inv:get_stack("box",1)
- local name = stack:get_name()
- local ndef = minetest.registered_nodes[name]
- if ndef then
- local dtype = ndef.drawtype
- if dtype == "normal" or dtype == "allfaces" or dtype == "allfaces_optional" or dtype == "glasslike" or dtype == "glasslike_framed" or dtype == "glasslike_framed_optional" or dtype == "liquid" then
- local texture = ndef.tiles or "default_cobble.png"
- if type(texture) == "table" then
- texture = texture[1] or "default_cobble.png"
- end
- self.object:set_properties({
- mesh="moretrains_gondola_mese.b3d",
- textures={"[combine:256x256:0,0=moretrains_wagon_gondola_cobble.png:0,109="..escape_texture(texture).."\\^\\[resize\\:16x16"}
- })
- return
- end
- end
- local idef = minetest.registered_items[name]
- if idef and idef.groups.advtrains_trackplacer and idef.groups.advtrains_trackplacer > 0 then
- self.object:set_properties({
- mesh="moretrains_gondola_rails.b3d",
- textures = {"moretrains_wagon_gondola.png"},
- })
- else
- self.object:set_properties({
- mesh="moretrains_gondola_toiletpaper.b3d",
- textures = {"moretrains_wagon_gondola.png"},
- })
- end
- end
- end
- local function convert(self, dtime, data, train)
- data.type = "advtrains:moretrains_wagon_gondola"
- end
- advtrains.register_wagon("moretrains_wagon_gondola", {
- mesh="moretrains_gondola.b3d",
- textures = {"moretrains_wagon_gondola.png"},
- set_textures = set_textures,
- seats = {},
- drives_on={default=true},
- max_speed=20,
- visual_size = {x=1, y=1},
- wagon_span=2.784,
- collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
- drops={"default:steelblock"},
- has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
- inventory_list_sizes = {
- box=8*3,
- },
- }, S("Gondola wagon (empty)"), "moretrains_wagon_gondola_inv.png")
- advtrains.register_wagon("moretrains_wagon_gondola_mese", {
- mesh="moretrains_gondola_mese.b3d",
- textures = {"moretrains_wagon_gondola.png"},
- seats = {},
- drives_on={default=true},
- custom_on_step = convert,
- max_speed=20,
- visual_size = {x=1, y=1},
- wagon_span=2.784,
- collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
- drops={"default:steelblock"},
- has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
- inventory_list_sizes = {
- box=8*3,
- },
- }, S("Gondola wagon with mese"), "moretrains_wagon_gondola_mese_inv.png")
- advtrains.register_wagon("moretrains_wagon_gondola_cobble", {
- mesh="moretrains_gondola_mese.b3d",
- textures = {"[combine:256x256:0,0=moretrains_wagon_gondola_cobble.png:0,109=default_obsidian_glass.png\\^\\[resize\\:16x16"},
- seats = {},
- custom_on_step = convert,
- drives_on={default=true},
- max_speed=20,
- visual_size = {x=1, y=1},
- wagon_span=2.784,
- collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
- drops={"default:steelblock"},
- has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
- inventory_list_sizes = {
- box=8*3,
- },
- }, S("Gondola wagon with cobble stone"), "moretrains_wagon_gondola_cobble_inv.png")
- advtrains.register_wagon("moretrains_wagon_gondola_toiletpaper", {
- mesh="moretrains_gondola_toiletpaper.b3d",
- textures = {"moretrains_wagon_gondola.png"},
- set_textures = set_textures,
- custom_on_step = convert,
- seats = {},
- drives_on={default=true},
- max_speed=20,
- visual_size = {x=1, y=1},
- wagon_span=2.784,
- collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
- drops={"default:steelblock"},
- has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
- inventory_list_sizes = {
- box=8*3,
- },
- }, S("Gondola wagon with toilet paper"), "moretrains_wagon_gondola_toiletpaper_inv.png")
- advtrains.register_wagon("moretrains_wagon_gondola_rails", {
- mesh="moretrains_gondola_rails.b3d",
- textures = {"moretrains_wagon_gondola.png"},
- custom_on_step = convert,
- seats = {},
- drives_on={default=true},
- max_speed=20,
- visual_size = {x=1, y=1},
- wagon_span=2.784,
- collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
- drops={"default:steelblock"},
- has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
- inventory_list_sizes = {
- box=8*3,
- },
- }, S("Gondola wagon with rails"), "moretrains_wagon_gondola_rails_inv.png")
- minetest.register_craft({
- output = 'advtrains:moretrains_wagon_gondola',
- recipe = {
- {'group:wood', 'default:chest', 'group:wood'},
- {'advtrains:wheel', '', 'advtrains:wheel'},
- },
- })
|