aboutsummaryrefslogtreecommitdiff
path: root/README.md
Commit message (Collapse)AuthorAge
* Improve grammar and formatting in the READMEHugo Locurcio2019-07-05
| | | | | | | | This also clarifies the fact that Minetest saves `minetest.conf` when closing Minetest for the first time, rather than when starting it for the first time. This also fixes the default key for the pitch move mode which is now P.
* Update README copyright notice to 2019 (#8606)Vilhelm Prytz2019-06-19
|
* Add compatibility to vcpkg buildsystem (#8317)adrido2019-06-10
|
* Find PostgreSQL correctly (#8435)adrido2019-04-07
|
* README: Remove references to Minecraft and InfiniMiner (#8260)ANAND2019-03-02
|
* Extend pitch fly mode to swimming (#7943)random-geek2018-12-31
|
* Add a basic kubernetes deployment file (#7979)Loïc Blot2018-12-15
| | | | * Add a basic kubernetes deployment file
* Add docker image documentation (#7969)Loïc Blot2018-12-13
| | | | | * Add docker image documentation * Update README.md
* README: Add linking table of contents (#7601)woshiicyrus2018-12-02
|
* Added pitch fly mode (#7817)Gaël C2018-12-01
| | | | | In pitch fly mode, you fly to the exact direction you are pointing at, using the forward key. Other move directions are also pitched accordingly. It allows smoother and more complex movements. Can be enabled/disabled by L key by default (set keymap_pitchfly in minetest.conf)
* Windows: Cpack wix installer (#6153)adrido2018-10-26
| | | | | | Create CPack WIX msi Installer for RUN_IN_PLACE=0 builds Correct paths on Windows for RUN_IN_PLACE=0 Install only required font files Games have their own components, and "minimal" is optional
* Various grammar improvements (#7769)Paramat2018-10-06
| | | | In builtin//pkgmgr.lua, README.md and settingtypes.txt. Based on 2 pull requests by comradekingu.
* Make OpenGL preference configurable, default to LEGACY (#7666)SmallJoker2018-09-22
| | | | | This partially reverts 1ec5028 Add option OPENGL_GL_PREFERENCE
* Document default values for general cmake options (#7595)pauloue2018-07-29
| | | And fix a typo
* Replace apt-get with apt (#7583)niansa2018-07-25
|
* Removed '$' symbols from the start of shell commands. (#7506)RustyRaptor2018-06-30
|
* README.md: Improve formatting for consistency (#7472)Anand S2018-06-22
| | | | * README.md: Improve formatting for consistency
* README.md: Improve version scheme text (#7465)Paramat2018-06-20
|
* Version scheme change: 0.5.0 -> 5.0.0 (#7449)Loïc Blot2018-06-15
| | | | * Version scheme change: 0.5.0 -> 5.0.0
* README.md: Remove 'unfinished' section. (#7440)Paramat2018-06-12
|
* README: Fix Fedora dependencies (#7133)pauloue2018-03-15
|
* Update README.md copyright notice tooLoïc Blot2018-01-01
|
* README.md: Add table of Linux dependenciesReedych2017-11-19
|
* Remove DSTACK keybind setting (#6378)Rui2017-09-05
|
* More readable default controls in READMEDharkael2017-08-27
|
* Add missing ENABLE_SYSTEM_JSONCPP in docsLoic Blot2017-08-20
|
* New version scheme (#6292)Loïc Blot2017-08-20
| | | | | | | * Version changes: current dev version is now 0.5.0 * This change permit to have multi branches with various versions * Dev version is 0.5.0-dev and next release will be 0.5.0
* Change README to Markdown format, add LICENSE.txt (#6244)rubenwardy2017-08-18
>attrans("Track"), formats={}, }, advtrains.ap.t_30deg_flat) minetest.register_craft({ output = 'advtrains:dtrack_placer 50', recipe = { {'default:steel_ingot', 'group:stick', 'default:steel_ingot'}, {'default:steel_ingot', 'group:stick', 'default:steel_ingot'}, {'default:steel_ingot', 'group:stick', 'default:steel_ingot'}, }, }) -- y-turnout advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_sy", texture_prefix="advtrains_dtrack_sy", models_prefix="advtrains_dtrack_sy", models_suffix=".obj", shared_texture="advtrains_dtrack_shared.png", description=attrans("Y-turnout"), formats = {}, }, advtrains.ap.t_yturnout) minetest.register_craft({ output = 'advtrains:dtrack_sy_placer 2', recipe = { {'advtrains:dtrack_placer', '', 'advtrains:dtrack_placer'}, {'', 'advtrains:dtrack_placer', ''}, {'', 'advtrains:dtrack_placer', ''}, }, }) --3-way turnout advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_s3", texture_prefix="advtrains_dtrack_s3", models_prefix="advtrains_dtrack_s3", models_suffix=".obj", shared_texture="advtrains_dtrack_shared.png", description=attrans("3-way turnout"), formats = {}, }, advtrains.ap.t_s3way) minetest.register_craft({ output = 'advtrains:dtrack_s3_placer 1', recipe = { {'advtrains:dtrack_placer', 'advtrains:dtrack_placer', 'advtrains:dtrack_placer'}, {'', 'advtrains:dtrack_placer', ''}, {'', '', ''}, }, }) -- Diamond Crossings -- perpendicular advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_xing", texture_prefix="advtrains_dtrack_xing", models_prefix="advtrains_dtrack_xing", models_suffix=".obj", shared_texture="advtrains_dtrack_shared.png", description=attrans("Perpendicular Diamond Crossing Track"), formats = {} }, advtrains.ap.t_perpcrossing) minetest.register_craft({ output = 'advtrains:dtrack_xing_placer 3', recipe = { {'', 'advtrains:dtrack_placer', ''}, {'advtrains:dtrack_placer', 'advtrains:dtrack_placer', 'advtrains:dtrack_placer'}, {'', 'advtrains:dtrack_placer', ''} } }) -- 90plusx -- When you face east and param2=0, then this set of rails has a rail at 90 -- degrees to the viewer, plus another rail crossing at 30, 45 or 60 degrees. advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_xing90plusx", texture_prefix="advtrains_dtrack_xing4590", models_prefix="advtrains_dtrack_xing90plusx", models_suffix=".obj", shared_texture="advtrains_dtrack_shared.png", description=attrans("90+Angle Diamond Crossing Track"), formats = {} }, advtrains.ap.t_90plusx_crossing) minetest.register_craft({ output = 'advtrains:dtrack_xing90plusx_placer 2', recipe = { {'advtrains:dtrack_placer', '', ''}, {'advtrains:dtrack_placer', 'advtrains:dtrack_placer', 'advtrains:dtrack_placer'}, {'', '', 'advtrains:dtrack_placer'} } }) -- Deprecate any rails using the old name scheme minetest.register_lbm({ label = "Upgrade legacy 4590 rails", name = "advtrains_train_track:replace_legacy_4590", nodenames = {"advtrains:dtrack_xing4590_st"}, run_at_every_load = true, action = function(pos, node) minetest.log("actionPos!: " .. pos.x .. "," .. pos.y .. "," .. pos.z) minetest.log("node!: " .. node.name .. "," .. node.param1 .. "," .. node.param2) advtrains.ndb.swap_node(pos, { name="advtrains:dtrack_xing90plusx_45l", param1=node.param1, param2=node.param2, }) end }) -- This will replace any items left in the inventory minetest.register_alias("advtrains:dtrack_xing4590_placer", "advtrains:dtrack_xing90plusx_placer") -- Diagonal -- This set of rail crossings is named based on the angle of each intersecting -- direction when facing east and param2=0. Rails with l/r swapped are mirror -- images. For example, 30r45l is the mirror image of 30l45r. advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_xingdiag", texture_prefix="advtrains_dtrack_xingdiag", models_prefix="advtrains_dtrack_xingdiag", models_suffix=".obj", shared_texture="advtrains_dtrack_shared.png", description=attrans("Diagonal Diamond Crossing Track"), formats = {}, }, advtrains.ap.t_diagonalcrossing) minetest.register_craft({ output = 'advtrains:dtrack_xingdiag_placer 2', recipe = { {'advtrains:dtrack_placer', '', 'advtrains:dtrack_placer'}, {'', 'advtrains:dtrack_placer', ''}, {'advtrains:dtrack_placer', '', 'advtrains:dtrack_placer'} } }) ---- Not included: very shallow crossings like (30/60)+45. ---- At an angle of only 18.4 degrees, the models would not ---- translate well to a block game. -- END crossings --slopes advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack", texture_prefix="advtrains_dtrack", models_prefix="advtrains_dtrack", models_suffix=".obj", shared_texture="advtrains_dtrack_shared.png", second_texture="default_gravel.png", description=attrans("Track"), formats={vst1={true, false, true}, vst2={true, false, true}, vst31={true}, vst32={true}, vst33={true}}, }, advtrains.ap.t_30deg_slope) minetest.register_craft({ type = "shapeless", output = 'advtrains:dtrack_slopeplacer 2', recipe = { "advtrains:dtrack_placer", "advtrains:dtrack_placer", "default:gravel", }, }) --bumpers advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_bumper", texture_prefix="advtrains_dtrack_bumper", models_prefix="advtrains_dtrack_bumper", models_suffix=".b3d", shared_texture="advtrains_dtrack_rail.png", --bumpers still use the old texture until the models are redone. description=attrans("Bumper"), formats={}, }, advtrains.ap.t_30deg_straightonly) minetest.register_craft({ output = 'advtrains:dtrack_bumper_placer 2', recipe = { {'group:wood', 'dye:red'}, {'default:steel_ingot', 'default:steel_ingot'}, {'advtrains:dtrack_placer', 'advtrains:dtrack_placer'}, }, }) --legacy bumpers for _,rot in ipairs({"", "_30", "_45", "_60"}) do minetest.register_alias("advtrains:dtrack_bumper"..rot, "advtrains:dtrack_bumper_st"..rot) end -- atc track advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_atc", texture_prefix="advtrains_dtrack_atc", models_prefix="advtrains_dtrack", models_suffix=".b3d", shared_texture="advtrains_dtrack_shared_atc.png", description=attrans("ATC controller"), formats={}, get_additional_definiton = advtrains.atc_function }, advtrains.trackpresets.t_30deg_straightonly) -- Tracks for loading and unloading trains -- Copyright (C) 2017 Gabriel Pérez-Cerezo <gabriel@gpcf.eu> local function get_far_node(pos) local node = minetest.get_node(pos) if node.name == "ignore" then minetest.get_voxel_manip():read_from_map(pos, pos) node = minetest.get_node(pos) end return node end local function train_load(pos, train_id, unload) local train=advtrains.trains[train_id] local below = get_far_node({x=pos.x, y=pos.y-1, z=pos.z}) if not string.match(below.name, "chest") then atprint("this is not a chest! at "..minetest.pos_to_string(pos)) return end local inv = minetest.get_inventory({type="node", pos={x=pos.x, y=pos.y-1, z=pos.z}}) if inv and train.velocity < 2 then for k, v in ipairs(train.trainparts) do local i=minetest.get_inventory({type="detached", name="advtrains_wgn_"..v}) if i then if not unload then for _, item in ipairs(inv:get_list("main")) do if i:get_list("box") and i:room_for_item("box", item) then i:add_item("box", item) inv:remove_item("main", item) end end else for _, item in ipairs(i:get_list("box")) do if inv:get_list("main") and inv:room_for_item("main", item) then i:remove_item("box", item) inv:add_item("main", item) end end end end end end end advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_unload", texture_prefix="advtrains_dtrack_unload", models_prefix="advtrains_dtrack", models_suffix=".b3d", shared_texture="advtrains_dtrack_shared_unload.png", description=attrans("Unloading Track"), formats={}, get_additional_definiton = function(def, preset, suffix, rotation) return { after_dig_node=function(pos) advtrains.invalidate_all_paths() advtrains.ndb.clear(pos) end, advtrains = { on_train_enter = function(pos, train_id) train_load(pos, train_id, true) end, }, } end }, advtrains.trackpresets.t_30deg_straightonly) advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_load", texture_prefix="advtrains_dtrack_load", models_prefix="advtrains_dtrack", models_suffix=".b3d", shared_texture="advtrains_dtrack_shared_load.png", description=attrans("Loading Track"), formats={}, get_additional_definiton = function(def, preset, suffix, rotation) return { after_dig_node=function(pos) advtrains.invalidate_all_paths() advtrains.ndb.clear(pos) end, advtrains = { on_train_enter = function(pos, train_id) train_load(pos, train_id, false) end, }, } end }, advtrains.trackpresets.t_30deg_straightonly) if mesecon then advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_detector_off", texture_prefix="advtrains_dtrack_detector", models_prefix="advtrains_dtrack", models_suffix=".b3d", shared_texture="advtrains_dtrack_shared_detector_off.png", description=attrans("Detector Rail"), formats={}, get_additional_definiton = function(def, preset, suffix, rotation) return { mesecons = { receptor = { state = mesecon.state.off, rules = advtrains.meseconrules } }, advtrains = { on_updated_from_nodedb = function(pos, node) mesecon.receptor_off(pos, advtrains.meseconrules) end, on_train_enter=function(pos, train_id) advtrains.ndb.swap_node(pos, {name="advtrains:dtrack_detector_on".."_"..suffix..rotation, param2=advtrains.ndb.get_node(pos).param2}) if advtrains.is_node_loaded(pos) then mesecon.receptor_on(pos, advtrains.meseconrules) end end } } end }, advtrains.ap.t_30deg_straightonly) advtrains.register_tracks("default", { nodename_prefix="advtrains:dtrack_detector_on", texture_prefix="advtrains_dtrack", models_prefix="advtrains_dtrack", models_suffix=".b3d", shared_texture="advtrains_dtrack_shared_detector_on.png", description="Detector(on)(you hacker you)", formats={}, get_additional_definiton = function(def, preset, suffix, rotation) return { mesecons = { receptor = { state = mesecon.state.on, rules = advtrains.meseconrules } }, advtrains = { on_updated_from_nodedb = function(pos, node) mesecon.receptor_on(pos, advtrains.meseconrules) end, on_train_leave=function(pos, train_id) advtrains.ndb.swap_node(pos, {name="advtrains:dtrack_detector_off".."_"..suffix..rotation, param2=advtrains.ndb.get_node(pos).param2}) if advtrains.is_node_loaded(pos) then mesecon.receptor_off(pos, advtrains.meseconrules) end end } } end }, advtrains.ap.t_30deg_straightonly_noplacer) minetest.register_craft({ type="shapeless", output = 'advtrains:dtrack_detector_off_placer', recipe = { "advtrains:dtrack_placer", "mesecons:wire_00000000_off" }, }) end --TODO legacy --I know lbms are better for this purpose for name,rep in pairs({swl_st="swlst", swr_st="swrst", swl_cr="swlcr", swr_cr="swrcr", }) do minetest.register_abm({ -- In the following two fields, also group:groupname will work. nodenames = {"advtrains:track_"..name}, interval = 1.0, -- Operation interval in seconds chance = 1, -- Chance of trigger per-node per-interval is 1.0 / this action = function(pos, node, active_object_count, active_object_count_wider) minetest.set_node(pos, {name="advtrains:track_"..rep, param2=node.param2}) end, }) minetest.register_abm({ -- In the following two fields, also group:groupname will work. nodenames = {"advtrains:track_"..name.."_45"}, interval = 1.0, -- Operation interval in seconds chance = 1, -- Chance of trigger per-node per-interval is 1.0 / this action = function(pos, node, active_object_count, active_object_count_wider) minetest.set_node(pos, {name="advtrains:track_"..rep.."_45", param2=node.param2}) end, }) end if advtrains.register_replacement_lbms then minetest.register_lbm({ name = "advtrains:ramp_replacement_1", -- In the following two fields, also group:groupname will work. nodenames = {"advtrains:track_vert1"}, action = function(pos, node, active_object_count, active_object_count_wider) minetest.set_node(pos, {name="advtrains:dtrack_vst1", param2=(node.param2+2)%4}) end, }) minetest.register_lbm({ name = "advtrains:ramp_replacement_1", -- -- In the following two fields, also group:groupname will work. nodenames = {"advtrains:track_vert2"}, action = function(pos, node, active_object_count, active_object_count_wider) minetest.set_node(pos, {name="advtrains:dtrack_vst2", param2=(node.param2+2)%4}) end, }) minetest.register_abm({ name = "advtrains:st_rep_1", -- In the following two fields, also group:groupname will work. nodenames = {"advtrains:track_st"}, interval=1, chance=1, action = function(pos, node, active_object_count, active_object_count_wider) minetest.set_node(pos, {name="advtrains:dtrack_st", param2=node.param2}) end, }) minetest.register_lbm({ name = "advtrains:st_rep_1", -- -- In the following two fields, also group:groupname will work. nodenames = {"advtrains:track_st_45"}, action = function(pos, node, active_object_count, active_object_count_wider) minetest.set_node(pos, {name="advtrains:dtrack_st_45", param2=node.param2}) end, }) end