From 53cb15cad0a10a1cd0e6e364791adf01239c9998 Mon Sep 17 00:00:00 2001 From: Hume2 Date: Thu, 10 Oct 2019 18:39:05 +0200 Subject: Make it work --- init.lua | 253 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 init.lua (limited to 'init.lua') diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..1a1d057 --- /dev/null +++ b/init.lua @@ -0,0 +1,253 @@ +-- Default tracks for advtrains +-- (c) orwell96 and contributors + +--flat +advtrains.register_tracks("line", { + nodename_prefix="advtrains:ltrack", + texture_prefix="advtrains_ltrack", + models_prefix="advtrains_ltrack", + models_suffix=".obj", + shared_texture="linetrack_line.png", + description=attrans("Line Track"), + formats={}, + get_additional_definiton = function(def, preset, suffix, rotation) + return { + groups = { + advtrains_track=1, + advtrains_track_line=1, + save_in_at_nodedb=1, + dig_immediate=2, + not_in_creative_inventory=1, + not_blocking_trains=1, + }, + use_texture_alpha = true, + } + end +}, advtrains.ap.t_30deg_flat) +--slopes +advtrains.register_tracks("line", { + nodename_prefix="advtrains:ltrack", + texture_prefix="advtrains_ltrack", + models_prefix="advtrains_ltrack", + models_suffix=".obj", + shared_texture="linetrack_line.png", + description=attrans("Line Track"), + formats={vst1={true, false, true}, vst2={true, false, true}, vst31={true}, vst32={true}, vst33={true}}, + get_additional_definiton = function(def, preset, suffix, rotation) + return { + groups = { + advtrains_track=1, + advtrains_track_line=1, + save_in_at_nodedb=1, + dig_immediate=2, + not_in_creative_inventory=1, + not_blocking_trains=1, + }, + use_texture_alpha = true, + } + end +}, advtrains.ap.t_30deg_slope) + +if atlatc ~= nil then + advtrains.register_tracks("line", { + nodename_prefix="advtrains:ltrack_lua", + texture_prefix="advtrains_ltrack_lua", + models_prefix="advtrains_ltrack", + models_suffix=".obj", + shared_texture="linetrack_lua.png", + description=atltrans("LuaAutomation ATC Line"), + formats={}, + get_additional_definiton = function(def, preset, suffix, rotation) + return { + after_place_node = atlatc.active.after_place_node, + after_dig_node = atlatc.active.after_dig_node, + + on_receive_fields = function(pos, ...) + atlatc.active.on_receive_fields(pos, ...) + + --set arrowconn (for ATC) + local ph=minetest.pos_to_string(pos) + local _, conns=advtrains.get_rail_info_at(pos, advtrains.all_tracktypes) + atlatc.active.nodes[ph].arrowconn=conns[1].c + end, + + advtrains = { + on_train_enter = function(pos, train_id) + --do async. Event is fired in train steps + atlatc.interrupt.add(0, pos, {type="train", train=true, id=train_id}) + end, + }, + luaautomation = { + fire_event=atlatc.rail.fire_event + }, + digiline = { + receptor = {}, + effector = { + action = atlatc.active.on_digiline_receive + }, + }, + groups = { + advtrains_track=1, + advtrains_track_line=1, + save_in_at_nodedb=1, + dig_immediate=2, + not_in_creative_inventory=1, + not_blocking_trains=1, + }, + use_texture_alpha = true, + } + end, + }, advtrains.trackpresets.t_30deg_straightonly) +end + +if minetest.get_modpath("advtrains_line_automation") ~= nil then + local adef = minetest.registered_nodes["advtrains_line_automation:dtrack_stop_st"] + + advtrains.register_tracks("line", { + nodename_prefix="advtrains:ltrack_stn", + texture_prefix="advtrains_ltrack_stn", + models_prefix="advtrains_ltrack", + models_suffix=".obj", + shared_texture="linetrack_stn.png", + description="Station/Stop Line", + formats={}, + get_additional_definiton = function(def, preset, suffix, rotation) + return { + after_place_node = adef.after_place_node, + after_dig_node = adef.after_dig_node, + on_rightclick = adef.on_rightclick, + advtrains = adef.advtrains, + groups = { + advtrains_track=1, + advtrains_track_line=1, + save_in_at_nodedb=1, + dig_immediate=2, + not_in_creative_inventory=1, + not_blocking_trains=1, + }, + use_texture_alpha = true, + } + end, + }, advtrains.trackpresets.t_30deg_straightonly) +end + +if minetest.get_modpath("advtrains_interlocking") ~= nil then + dofile(minetest.get_modpath("linetrack") .. "/interlocking.lua") +end + +advtrains.register_wagon("boat", { + mesh="linetrack_boat.obj", + textures = {"linetrack_boat.png"}, + drives_on={line=true}, + max_speed=10, + seats = { + { + name="Driver stand", + attach_offset={x=0, y=2, z=12}, + view_offset={x=0, y=0, z=0}, + group="dstand", + }, + { + name="1", + attach_offset={x=-4, y=0, z=-4}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="2", + attach_offset={x=4, y=0, z=-4}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="3", + attach_offset={x=-4, y=0, z=4}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="4", + attach_offset={x=4, y=0, z=4}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="5", + attach_offset={x=-4, y=0, z=-12}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="6", + attach_offset={x=4, y=0, z=-12}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="7", + attach_offset={x=-4, y=0, z=-20}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="8", + attach_offset={x=4, y=0, z=-20}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="9", + attach_offset={x=-4, y=0, z=-28}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="10", + attach_offset={x=4, y=0, z=-28}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + }, + seat_groups = { + dstand={ + name = "Driver Stand", + access_to = {"pass"}, + require_doors_open=true, + driving_ctrl_access=true, + }, + pass={ + name = "Passenger area", + access_to = {"dstand"}, + require_doors_open=true, + }, + }, + assign_to_seat_group = {"pass", "dstand"}, + door_entry={-1, 1}, + visual_size = {x=1, y=1}, + wagon_span=2, + collisionbox = {-2.0,-2.0,-2.0, 2.0,4.0,2.0}, + is_locomotive=true, + drops={"default:steelblock 4"}, + horn_sound = "advtrains_subway_horn", + glow = -1, --supposed to disable effect of light to texture color, so that the entity always appears as full-bright +}, "Boat", "linetrack_boat_inv.png") + +minetest.register_node("linetrack:invisible_platform", { + description = "Invisible Platform", + groups = {cracky = 1, not_blocking_trains = 1, platform=1}, + drawtype = "airlike", + inventory_image = "linetrack_invisible_platform.png", + wield_image = "linetrack_invisible_platform.png", + walkable = false, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.1, -0.1, 0.5, 0 , 0.5}, + {-0.5, -0.5, 0 , 0.5, -0.1, 0.5} + }, + }, + paramtype2="facedir", + paramtype = "light", + sunlight_propagates = true, +}) + -- cgit v1.2.3