Add in minecarts as rail cars
This commit is contained in:
parent
8aa01273f3
commit
46d03ff0a6
@ -229,7 +229,7 @@ local function coupling_logic(self)
|
|||||||
local distance = vector.distance(pos,pos2)
|
local distance = vector.distance(pos,pos2)
|
||||||
local new_vel = vector.new(0,0,0)
|
local new_vel = vector.new(0,0,0)
|
||||||
if distance > coupler_goal then
|
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))
|
local dir = vector.direction(vector.new(pos.x,0,0),vector.new(pos2.x,0,0))
|
||||||
self.dir = dir
|
self.dir = dir
|
||||||
new_vel = vector.multiply(dir,velocity)
|
new_vel = vector.multiply(dir,velocity)
|
||||||
@ -242,7 +242,7 @@ local function coupling_logic(self)
|
|||||||
local distance = vector.distance(pos,pos2)
|
local distance = vector.distance(pos,pos2)
|
||||||
local new_vel = vector.new(0,0,0)
|
local new_vel = vector.new(0,0,0)
|
||||||
if distance > coupler_goal then
|
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))
|
local dir = vector.direction(vector.new(0,0,pos.z),vector.new(0,0,pos2.z))
|
||||||
self.dir = dir
|
self.dir = dir
|
||||||
new_vel = vector.multiply(dir,velocity)
|
new_vel = vector.multiply(dir,velocity)
|
||||||
@ -287,7 +287,9 @@ local function rail_brain(self,pos)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
coupling_logic(self)
|
if self.is_car then
|
||||||
|
coupling_logic(self)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -373,6 +375,11 @@ train.on_punch = function(self, puncher)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.is_engine then
|
||||||
|
self.object:set_velocity(vector.multiply(self.dir,self.max_speed))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
if self.coupler1 then
|
if self.coupler1 then
|
||||||
self.coupler1:get_luaentity().coupler2 = nil
|
self.coupler1:get_luaentity().coupler2 = nil
|
||||||
self.coupler1 = nil
|
self.coupler1 = nil
|
||||||
@ -514,12 +521,25 @@ register_train("train:steam_train",{
|
|||||||
is_engine = true,
|
is_engine = true,
|
||||||
power = 6,
|
power = 6,
|
||||||
max_speed = 6,
|
max_speed = 6,
|
||||||
coupler_distance = 2,
|
coupler_distance = 3,
|
||||||
body_pos = vector.new(0,0,-15),
|
body_pos = vector.new(0,0,-15),
|
||||||
body_rotation = vector.new(0,0,0),
|
body_rotation = vector.new(0,0,0),
|
||||||
eye_offset = vector.new(6,-1,-10)
|
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_craftitem("train:train", {
|
||||||
@ -550,6 +570,43 @@ minetest.register_craftitem("train:train", {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "train:minecart",
|
||||||
|
recipe = {
|
||||||
|
{"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({
|
minetest.register_craft({
|
||||||
output = "train:train",
|
output = "train:train",
|
||||||
recipe = {
|
recipe = {
|
||||||
@ -560,8 +617,6 @@ minetest.register_craft({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
minetest.register_node("train:rail",{
|
minetest.register_node("train:rail",{
|
||||||
description = "Rail",
|
description = "Rail",
|
||||||
wield_image = "rail.png",
|
wield_image = "rail.png",
|
||||||
|
1
mods/train/models/attributes.txt
Normal file
1
mods/train/models/attributes.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
steam train: https://notabug.org/rbduck/minetest-moretrains
|
Loading…
x
Reference in New Issue
Block a user