#LyX 2.2 created this file. For more info see http://www.lyx.org/ \lyxformat 508 \begin_document \begin_header \save_transient_properties true \origin unavailable \textclass paper \use_default_options true \maintain_unincluded_children false \language english \language_package default \inputencoding auto \fontencoding global \font_roman "default" "default" \font_sans "default" "default" \font_typewriter "default" "default" \font_math "auto" "auto" \font_default_family default \use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 100 \font_tt_scale 100 100 \graphics default \default_output_format default \output_sync 0 \bibtex_command default \index_command default \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry true \use_package amsmath 1 \use_package amssymb 1 \use_package cancel 1 \use_package esint 1 \use_package mathdots 1 \use_package mathtools 1 \use_package mhchem 1 \use_package stackrel 1 \use_package stmaryrd 1 \use_package undertilde 1 \cite_engine basic \cite_engine_type default \biblio_style plain \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \justification true \use_refstyle 1 \index Index \shortcut idx \color #008000 \end_index \leftmargin 1cm \topmargin 1cm \rightmargin 1cm \bottommargin 1cm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \paragraph_indentation default \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \html_math_output 0 \html_css_as_file 0 \html_be_strict false \end_header \begin_body \begin_layout Part* Advanced Trains \end_layout \begin_layout Standard This mod aims to provide realistic, good-looking and functional trains by introducing a revolutionary rail placement system. It features several wagons that can be coupled together. \end_layout \begin_layout Standard This mod is not finished. If you miss features, suggest them, but do not denounce this mod just because they are not yet implemented. They will be. \end_layout \begin_layout Subsection* Placing Rails \end_layout \begin_layout Standard Minetest's in-house rail system features rails that turn at an angle of 90 degrees – totally impractical for the use with realistic trains. So we have our own rails. Remember: Carts can't drive on the rails provided by this mod, as do trains not drive on minetest's default rails because of their different track widths. \end_layout \begin_layout Standard First, craft some rails. \end_layout \begin_layout Standard \begin_inset Graphics filename manual_img/Bildschirmfoto_2016-09-17_09-43-29.png width 5cm \end_inset \end_layout \begin_layout Standard Now, place one at any position and another one right next to it: you have made your first railway track! \end_layout \begin_layout Standard To learn how to make turns have a look at the following examples. A rail node has been placed only at the red-marked places. \end_layout \begin_layout Standard \begin_inset Graphics filename manual_img/Bildschirmfoto_2016-09-17_10-04-12.png width 5cm \end_inset \begin_inset Graphics filename manual_img/Bildschirmfoto_2016-09-17_10-04-57.png width 4cm \end_inset \end_layout \begin_layout Standard \begin_inset Graphics filename manual_img/Bildschirmfoto_2016-09-17_10-05-51.png width 5cm \end_inset \begin_inset Graphics filename manual_img/Bildschirmfoto_2016-09-17_10-07-13.png width 5cm \end_inset \end_layout \begin_layout Standard As shown in the illustrations above, the 30-degree angled rails use a knight's move (2 ahead, 1 aside) for placement. For the rails to look realistic, I encourage you not to build turns that are too narrow. IMO the angles you can build with this are still way to narrow, but this is the best compromise I can find. \end_layout \begin_layout Subsection* Switches \end_layout \begin_layout Standard To create switches we need the trackworker tool. ATM it looks like a Doctor Who Sonic Screwdriver. Aside from turning rails into switches, it is also capable of rotating everything (rails, bumpers, signals) in this mod. Due to internal mechanics, nothing can be rotated using the default screwdriver. \end_layout \begin_layout Standard \begin_inset Graphics filename manual_img/Bildschirmfoto_2016-09-17_09-56-34.png width 5cm \end_inset \end_layout \begin_layout Standard Place some rails. Then left-click 1-2 times on one of these rails, until you see a switch. Use right-click to rotate it how you need it. You can change the switch direction by right-clicking the switch or by powering it with mesecons. \end_layout \begin_layout Standard Unfortunately tracks that are placed next to switches don't always automatically connect to them. You need to correct manually using the Trackworker. One day I will implement proper handling for these. When you are finished it could look like this: \end_layout \begin_layout Standard \begin_inset Graphics filename manual_img/Bildschirmfoto_2016-09-17_10-08-02.png width 5cm \end_inset \end_layout \begin_layout Subsection* Rail crosses \end_layout \begin_layout Standard There are no real cros/* Minetest Copyright (C) 2015 est31 <mtest31@outlook.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #pragma once #include "lua_api/l_base.h" class AreaStore; class LuaAreaStore : public ModApiBase { private: static const char className[]; static const luaL_Reg methods[]; static int gc_object(lua_State *L); static int l_get_area(lua_State *L); static int l_get_areas_for_pos(lua_State *L); static int l_get_areas_in_area(lua_State *L); static int l_insert_area(lua_State *L); static int l_reserve(lua_State *L); static int l_remove_area(lua_State *L); static int l_set_cache_params(lua_State *L); static int l_to_string(lua_State *L); static int l_to_file(lua_State *L); static int l_from_string(lua_State *L); static int l_from_file(lua_State *L); public: AreaStore *as = nullptr; LuaAreaStore(); LuaAreaStore(const std::string &type); ~LuaAreaStore(); // AreaStore() // Creates a AreaStore and leaves it on top of stack static int create_object(lua_State *L); static LuaAreaStore *checkobject(lua_State *L, int narg); static void Register(lua_State *L); };