local distance = vector.distance(pos,pos2)
local new_vel = vector.new(0,0,0)
if distance > coupler_goal then
- local velocity = (distance-coupler_goal)
+ local velocity = (distance-coupler_goal)*2
local dir = vector.direction(vector.new(pos.x,0,0),vector.new(pos2.x,0,0))
self.dir = dir
new_vel = vector.multiply(dir,velocity)
local distance = vector.distance(pos,pos2)
local new_vel = vector.new(0,0,0)
if distance > coupler_goal then
- local velocity = (distance-coupler_goal)
+ local velocity = (distance-coupler_goal)*2
local dir = vector.direction(vector.new(0,0,pos.z),vector.new(0,0,pos2.z))
self.dir = dir
new_vel = vector.multiply(dir,velocity)
end
end
else
- coupling_logic(self)
+ if self.is_car then
+ coupling_logic(self)
+ end
end
end
return
end
+ if self.is_engine then
+ self.object:set_velocity(vector.multiply(self.dir,self.max_speed))
+ return
+ end
+
if self.coupler1 then
self.coupler1:get_luaentity().coupler2 = nil
self.coupler1 = nil
is_engine = true,
power = 6,
max_speed = 6,
- coupler_distance = 2,
+ coupler_distance = 3,
body_pos = vector.new(0,0,-15),
body_rotation = vector.new(0,0,0),
eye_offset = vector.new(6,-1,-10)
})
+register_train("train:minecart",{
+ mesh = "minecart.x",
+ texture = "minecart.png",
+ --is_engine = true,
+ is_car = true,
+ --power = 6,
+ max_speed = 6,
+ coupler_distance = 1.3,
+ --body_pos = vector.new(0,0,-15),
+ --body_rotation = vector.new(0,0,0),
+ --eye_offset = vector.new(6,-1,-10)
+})
+
minetest.register_craftitem("train:train", {
})
minetest.register_craft({
- output = "train:train",
+ output = "train:minecart",
recipe = {
- {"main:iron", "", "main:iron"},
+ {"main:iron", "main:iron", "main:iron"},
{"main:iron", "main:iron", "main:iron"},
},
})
+minetest.register_craftitem("train:minecart", {
+ description = "train",
+ inventory_image = "minecartitem.png",
+ wield_image = "minecartitem.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ if not pointed_thing.type == "node" then
+ return
+ end
+
+ local sneak = placer:get_player_control().sneak
+ local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
+ if not sneak and noddef.on_rightclick then
+ minetest.item_place(itemstack, placer, pointed_thing)
+ return
+ end
+
+ if minetest.get_item_group(minetest.get_node(pointed_thing.under).name, "rail")>0 then
+ minetest.add_entity(pointed_thing.under, "train:minecart")
+ else
+ return
+ end
+
+ itemstack:take_item()
+
+ return itemstack
+ end,
+})
+
+minetest.register_craft({
+ output = "train:train",
+ recipe = {
+ {"main:iron", "", "main:iron"},
+ {"main:iron", "main:iron", "main:iron"},
+ },
+})