init.lua 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. local S
  2. if minetest.get_modpath("intllib") then
  3. S = intllib.Getter()
  4. else
  5. S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end
  6. end
  7. advtrains.register_wagon("moretrains_draisine", {
  8. mesh="moretrains_draisine.b3d",
  9. textures = {"moretrains_vintage.png"},
  10. drives_on={default=true},
  11. max_speed=3,
  12. seats = {
  13. {
  14. name=S("Driver stand"),
  15. attach_offset={x=0, y=1, z=-8.7},
  16. view_offset={x=0, y=1.5, z=-1},
  17. group="dstand",
  18. },
  19. {
  20. name="1",
  21. attach_offset={x=0, y=1, z=8.7},
  22. view_offset={x=0, y=1.5, z=1},
  23. group="pass",
  24. },
  25. },
  26. seat_groups = {
  27. dstand={
  28. name = "Driver Stand",
  29. access_to = {"pass"},
  30. require_doors_open=true,
  31. driving_ctrl_access=true,
  32. },
  33. pass={
  34. name = "Passenger area",
  35. access_to = {"dstand"},
  36. require_doors_open=true,
  37. },
  38. },
  39. assign_to_seat_group = {"dstand", "pass"},
  40. visual_size = {x=1, y=1},
  41. wagon_span=1.12,
  42. is_locomotive=true,
  43. collisionbox = {-0.8,-0.5,-0.7, 0.8,2,0.7},
  44. custom_on_velocity_change=function(self, velocity)
  45. if self.old_anim_velocity~=advtrains.abs_ceil(velocity) then
  46. self.object:set_animation({x=1,y=80}, advtrains.abs_ceil(velocity)*14, 0, true)
  47. self.old_anim_velocity=advtrains.abs_ceil(velocity)
  48. end
  49. end,
  50. drops={"default:wood"},
  51. }, S("Draisine"), "moretrains_draisine_inv.png")
  52. advtrains.register_wagon("moretrains_minecart", {
  53. mesh="moretrains_minecart.b3d",
  54. textures = {"moretrains_vintage.png"},
  55. drives_on={default=true},
  56. max_speed=6,
  57. seats = {},
  58. visual_size = {x=1, y=1},
  59. wagon_span=1.06,
  60. collisionbox = {-0.8,-0.5,-0.7, 0.8,2,0.7},
  61. drops={"default:wood"},
  62. has_inventory = true,
  63. get_inventory_formspec = function(self, pname, invname)
  64. return "size[8,11]"..
  65. "list["..invname..";box;0,0;8,3;]"..
  66. "list[current_player;main;0,5;8,4;]"..
  67. "listring[]"
  68. end,
  69. inventory_list_sizes = {
  70. box=1*4,
  71. },
  72. }, S("Minecart"), "moretrains_minecart_inv.png")
  73. advtrains.register_wagon("moretrains_minecart_loaded", {
  74. mesh="moretrains_minecart_loaded.b3d",
  75. textures = {"moretrains_vintage.png"},
  76. drives_on={default=true},
  77. max_speed=6,
  78. seats = {},
  79. visual_size = {x=1, y=1},
  80. wagon_span=1.06,
  81. collisionbox = {-0.8,-0.5,-0.7, 0.8,2,0.7},
  82. drops={"default:wood"},
  83. has_inventory = true,
  84. get_inventory_formspec = function(self, pname, invname)
  85. return "size[8,11]"..
  86. "list["..invname..";box;0,0;8,3;]"..
  87. "list[current_player;main;0,5;8,4;]"..
  88. "listring[]"
  89. end,
  90. inventory_list_sizes = {
  91. box=1*4,
  92. },
  93. }, S("Minecart (loaded)"), "moretrains_minecart_loaded_inv.png")
  94. advtrains.register_wagon("moretrains_minecart_engine", {
  95. mesh="moretrains_minecart_engine.b3d",
  96. textures = {"moretrains_vintage.png"},
  97. drives_on={default=true},
  98. max_speed=6,
  99. seats = {
  100. {
  101. name=S("Driver stand"),
  102. attach_offset={x=0, y=2, z=5.5},
  103. view_offset={x=0, y=1.5, z=-1},
  104. group="dstand",
  105. },
  106. {
  107. name="1",
  108. attach_offset={x=0, y=2, z=0.5},
  109. view_offset={x=0, y=1.5, z=1},
  110. group="pass",
  111. },
  112. },
  113. seat_groups = {
  114. dstand={
  115. name = "Driver Stand",
  116. access_to = {"pass"},
  117. require_doors_open=true,
  118. driving_ctrl_access=true,
  119. },
  120. pass={
  121. name = "Passenger area",
  122. access_to = {"dstand"},
  123. require_doors_open=true,
  124. },
  125. },
  126. assign_to_seat_group = {"dstand", "pass"},
  127. visual_size = {x=1, y=1},
  128. wagon_span=1.06,
  129. is_locomotive=true,
  130. collisionbox = {-0.8,-0.5,-0.7, 0.8,2,0.7},
  131. drops={"default:wood"},
  132. }, S("Minecart with Engine"), "moretrains_minecart_engine_inv.png")
  133. minetest.register_craftitem("moretrains_vintage:item_draisine_lever", {
  134. description = S("lever for draisine"),
  135. inventory_image = "moretrains_item_lever.png"
  136. })
  137. minetest.register_craft({
  138. output = "moretrains_vintage:item_draisine_lever",
  139. recipe = {
  140. {"default:steel_ingot", "default:stick", "default:steel_ingot"},
  141. {"", "default:stick", ""},
  142. {"", "default:steel_ingot", ""},
  143. },
  144. })
  145. minetest.register_craft({
  146. output = 'advtrains:moretrains_draisine',
  147. recipe = {
  148. {'', 'moretrains_vintage:item_draisine_lever', ''},
  149. {'group:wood', 'group:wood', 'group:wood'},
  150. {'advtrains:wheel', '', 'advtrains:wheel'},
  151. },
  152. })
  153. minetest.register_craft({
  154. output = 'advtrains:moretrains_minecart',
  155. recipe = {
  156. {'group:wood', '', 'group:wood'},
  157. {'default:steel_ingot', 'group:wood', 'default:steel_ingot'},
  158. {'advtrains:wheel', '', 'advtrains:wheel'},
  159. },
  160. })
  161. minetest.register_craft({
  162. output = 'advtrains:moretrains_minecart_loaded',
  163. recipe = {
  164. {'group:wood', 'default:coalblock', 'group:wood'},
  165. {'default:steel_ingot', 'group:wood', 'default:steel_ingot'},
  166. {'advtrains:wheel', '', 'advtrains:wheel'},
  167. },
  168. })
  169. minetest.register_craft({
  170. output = 'advtrains:moretrains_minecart_engine',
  171. recipe = {
  172. {'group:wood', '', 'group:wood'},
  173. {'default:steel_ingot', 'group:wood', 'default:steel_ingot'},
  174. {'advtrains:wheel', 'default:steelblock', 'advtrains:wheel'},
  175. },
  176. })
  177. minetest.register_craft({
  178. output = "advtrains:moretrains_minecart_loaded",
  179. type = "shapeless",
  180. recipe = {"advtrains:moretrains_minecart", "default:coalblock"},
  181. })
  182. minetest.register_craft({
  183. output = "advtrains:moretrains_minecart_engine",
  184. type = "shapeless",
  185. recipe = {"advtrains:moretrains_minecart", "default:steelblock"},
  186. })