advtrains.register_wagon("newlocomotive", "steam",{ mesh="advtrains_engine_steam.b3d", textures = {"advtrains_newlocomotive.png"}, is_locomotive=true, seats = { { name="Driver Stand (left)", attach_offset={x=-5, y=10, z=-10}, view_offset={x=0, y=6, z=0}, driving_ctrl_access=true, }, { name="Driver Stand (right)", attach_offset={x=5, y=10, z=-10}, view_offset={x=0, y=6, z=0}, driving_ctrl_access=true, }, }, visual_size = {x=1, y=1}, wagon_span=1.85, collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0}, update_animation=function(self, velocity) --if self.old_anim_velocity~=advtrains.abs_ceil(velocity) then self.object:set_animation({x=1,y=60}, 100)--math.floor(velocity)) --self.old_anim_velocity=advtrains.abs_ceil(velocity) --end end, custom_on_activate = function(self, staticdata_table, dtime_s) minetest.add_particlespawner({ amount = 10, time = 0, -- ^ If time is 0 has infinite lifespan and spawns the amount on a per-second base minpos = {x=0, y=2, z=1.2}, maxpos = {x=0, y=2, z=1.2}, minvel = {x=-0.2, y=1.8, z=-0.2}, maxvel = {x=0.2, y=2, z=0.2}, minacc = {x=0, y=-0.1, z=0}, maxacc = {x=0, y=-0.3, z=0}, minexptime = 2, maxexptime = 4, minsize = 1, maxsize = 5, -- ^ The particle's properties are random values in between the bounds: -- ^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration), -- ^ minsize/maxsize, minexptime/maxexptime (expirationtime) collisiondetection = true, -- ^ collisiondetection: if true uses collision detection vertical = false, -- ^ vertical: if true faces player using y axis only texture = "smoke_puff.png", -- ^ Uses texture (string) attached = self.object, }) end, drops={"default:steelblock 4"}, }, "Steam Engine", "advtrains_newlocomotive_inv.png") advtrains.register_wagon("wagon_default", "steam",{ mesh="advtrains_wagon.b3d", textures = {"advtrains_wagon.png"}, seats = { { name="Default Seat", attach_offset={x=0, y=10, z=0}, view_offset={x=0, y=6, z=0}, }, }, visual_size = {x=1, y=1}, wagon_span=1.8, collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0}, drops={"default:steelblock 4"}, }, "Passenger Wagon", "advtrains_wagon_inv.png") advtrains.register_wagon("wagon_box", "steam",{ mesh="advtrains_wagon.b3d", textures = {"advtrains_wagon_box.png"}, seats = {}, visual_size = {x=1, y=1}, wagon_span=1.8, collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0}, drops={"default:steelblock 4"}, has_inventory = true, get_inventory_formspec = function(self) return "size[8,11]".. "list[detached:advtrains_wgn_"..self.unique_id..";box;0,0;8,6;]".. "list[current_player;main;0,7;8,4;]".. "listring[]" end, inventory_list_sizes = { box=8*6, }, }, "Box Wagon", "advtrains_wagon_box_inv.png") minetest.register_craft({ output = 'advtrains:newlocomotive', recipe = { {'default:steelblock', 'default:steelblock', 'default:steelblock'}, {'default:steelblock', 'dye:black', 'default:steelblock'}, {'default:steelblock', 'default:steelblock', 'default:steelblock'}, }, }) minetest.register_craft({ output = 'advtrains:wagon_default', recipe = { {'default:steelblock', 'default:steelblock', 'default:steelblock'}, {'default:steelblock', 'dye:dark_green', 'default:steelblock'}, {'default:steelblock', 'default:steelblock', 'default:steelblock'}, }, }) minetest.register_craft({ output = 'advtrains:wagon_box', recipe = { {'default:steelblock', 'default:steelblock', 'default:steelblock'}, {'default:steelblock', 'default:chest', 'default:steelblock'}, {'default:steelblock', 'default:steelblock', 'default:steelblock'}, }, })