From d166b7ea68e48e443e0a5d72d1cd9b0ed62a60cb Mon Sep 17 00:00:00 2001 From: Christopher Head Date: Wed, 20 Jul 2016 00:48:39 -0700 Subject: [PATCH] Add start-stop rail. --- init.lua | 14 ++++++++--- rails.lua | 32 +++++++++++++++++++++++++- textures/carts_rail_crossing_ss.png | Bin 0 -> 463 bytes textures/carts_rail_curved_ss.png | Bin 0 -> 450 bytes textures/carts_rail_ss.png | Bin 0 -> 514 bytes textures/carts_rail_t_junction_ss.png | Bin 0 -> 439 bytes 6 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 textures/carts_rail_crossing_ss.png create mode 100644 textures/carts_rail_curved_ss.png create mode 100644 textures/carts_rail_ss.png create mode 100644 textures/carts_rail_t_junction_ss.png diff --git a/init.lua b/init.lua index 4531042..3619bd8 100644 --- a/init.lua +++ b/init.lua @@ -249,8 +249,16 @@ function boost_cart.cart:on_step(dtime) -- Slow down or speed up.. local acc = dir.y * -1.8 - local speed_mod = tonumber(minetest.get_meta(pos):get_string("cart_acceleration")) - if speed_mod and speed_mod ~= 0 then + local speed_mod_string = minetest.get_meta(pos):get_string("cart_acceleration") + local speed_mod = tonumber(speed_mod_string) + if speed_mod_string == "halt" then + vel = {x=0, y=0, z=0} + acc = {x=0, y=0, z=0} + dir = {x=0, y=0, z=0} + pos = vector.round(pos) + update.pos = true + update.vel = true + elseif speed_mod and speed_mod ~= 0 then if speed_mod > 0 then for _,v in ipairs({"x","y","z"}) do if math.abs(vel[v]) >= max_vel then @@ -363,4 +371,4 @@ minetest.register_craft({ {"default:steel_ingot", "", "default:steel_ingot"}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, }, -}) \ No newline at end of file +}) diff --git a/rails.lua b/rails.lua index 02c5f48..abf5aa3 100644 --- a/rails.lua +++ b/rails.lua @@ -101,4 +101,34 @@ minetest.register_craft({ {"default:steel_ingot", "group:stick", "default:steel_ingot"}, {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"}, } -}) \ No newline at end of file +}) + +boost_cart:register_rail(":boost_cart:startstoprail", { + description = "Start-stop rail", + tiles = {"carts_rail_ss.png", "carts_rail_curved_ss.png", "carts_rail_t_junction_ss.png", "carts_rail_crossing_ss.png"}, + groups = {dig_immediate = 2, attached_node = 1, rail = 1, connect_to_raillike = 1}, + + after_place_node = function(pos, placer, itemstack) + if not mesecon then + minetest.get_meta(pos):set_string("cart_acceleration", "halt") + end + end, + + mesecons = { + effector = { + action_on = function(pos, node) + boost_cart:boost_rail(pos, 0.5) + end, + + action_off = function(pos, node) + minetest.get_meta(pos):set_string("cart_acceleration", "halt") + end, + }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "boost_cart:startstoprail 2", + recipe = {"carts:powerrail", "carts:brakerail"}, +}) diff --git a/textures/carts_rail_crossing_ss.png b/textures/carts_rail_crossing_ss.png new file mode 100644 index 0000000000000000000000000000000000000000..69ee0706130f7a8172999788927c9c46a8d9d59b GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfx&WUL*Z=?jhlU4dc#7qCi|2Yv z6!=OM`bif0OBVS{6!}XP1xS_zNRxgh*G1N>_);)Pzab zgv-DD67Xy*;oMNLn#l~|> zP3Dyv&o4DuSZ=zg!enuU>5@tyGFw_@wyer@S(VxH8ncyk=Bw(=*VJ3=+Pm%lf1ryQ zW_CT!22zYAL4Lsu4$p3+fjCLt?k)@+tg;?J4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|N zf50xnt}l7yv-TyR&@4|E#}J9jss1;GnjCnt_a5aw7`-Q7BzDiH-~a8?QYG6b?%6Uq zb5={ofmuQsZbq#yj=3z|t;%2!R3rY#e!?{+O_`pT?n)OwyFVdQ&MBb@09X^MuK)l5 literal 0 HcmV?d00001 diff --git a/textures/carts_rail_curved_ss.png b/textures/carts_rail_curved_ss.png new file mode 100644 index 0000000000000000000000000000000000000000..504e31f13535afcf3da7b3e32457a07c694d9b68 GIT binary patch literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf>Hwb**Z=?jhlU4dc*$h@$mI9} zk!-H7OrD=?zQ1fi01(L)2Fex%$Q1?36$if_h7$c6*XWXNqQTx@K>t-h^!ZiP`#-a)8KSYQDjYLZewlMzf2J=ad-F zEis;7YBImfcwxEeqH>c(6{bsosM2hCjroci^VN0cYw9f4G+6A~yY2sfpmP~EEUB9S zq!>$r{DK)Ap4~_Tagw~Fdh=fL(-L zUuTlT`;S1O37#&FArhBs`>zWfGT>qH|B_bqLZv0niT&pP|EUq2=NS0!bZ^z}bz}RN zQuIeqb=%K`v`s&qwi>7{e0OuvwVU19<};T(KYOWC%Jzxu8rj!f^0yZ4@nMxZEE~Xm zUuXC2y`l@47TEi-y!z+)d~J@Q?c!z$)49jn4K?-4Z^tKEiOkp24m=_9Uiwkila@ce cg83hrjKlegEJWp(1Kq~p>FVdQ&MBb@06SEmYXATM literal 0 HcmV?d00001 diff --git a/textures/carts_rail_ss.png b/textures/carts_rail_ss.png new file mode 100644 index 0000000000000000000000000000000000000000..489e7fe59b19d303e47b08a4ba09605883a6f5df GIT binary patch literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf!vLQU*Z=?jhlU5oI7+0rOQ(29 zWqL_xddXyY%Vhb;Wc$eE`pV?`$>#aV=KBMYT!FuAL4aH#5CzH=1;`Zz$`uF6mjug| z1k0BO%a?`7mxsz%gvwWj0g*ygxI%TfLVdJiL$p#uj8bE?Qd_ciXR1zjy6%K5{fXK7 zlXDHG0#Tm9w0s~koKa{rv&d)`5EUEEE;gQ1Vl=13cy5XD{8At?Sy*PWsN8gMrRkCi z(HD6g{zPiq0eWT@uX3NbjR$JPvwzXStZ@1aCciaE}Ku9LG zVE%IYju}vBmZytjh{WaIbI19b7z9`Xj>T(T>4X3F9up=%d=zI^dGq8N z1&$WYn&T{Uzp9zk?zeqC*=)x)MV~3mtx0AxGn)#Zw`{o6@zl*`gYvS&zmp4ZmK<2l zTdE`;^hs4ytBKeAQ}pXbWy83y&(~kv#4csFq@zWsb8CntFWdiL$!>S}+`d;`Vq1{b m>~$h^WtiaPx(mbe{N literal 0 HcmV?d00001 diff --git a/textures/carts_rail_t_junction_ss.png b/textures/carts_rail_t_junction_ss.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a2cb1d034719c86880029c7960e54c04c5489a GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf`~aU2R}lt=(D2|GM~M`7=@bvC zOfTsyZ<#C~nQR}KJU`idf4KsG*}?$1!a%vA0J)+-x#A%C(qQ?r5c%>@`N}XLQm6`7 zs18@Ck5+7mR%(b*YD?DcPS>4~r9UxSe`>D5j6$PXMMiT<>&pIsU4&haW#79pFQCvw zPZ!4!iOaeE>_UeXc%1Kge!urp;coPY|J$z$6kXqaW#8d#4wC}C1l@ibEYOx$y7>HY zZ2t5Ijtx?VtG=|~-LaS9rWJS7)2@yy+!hcc{+J`O0{4=9XoTHT0U7Cj9>VSO3-u W5rd~0DVu