]> git.lizzy.rs Git - Crafter.git/blob - mods/minecart/oldcode.txt
Lower treecapitator volume
[Crafter.git] / mods / minecart / oldcode.txt
1         local oldvel = self.object:getvelocity()
2         local olddir = vector.normalize(oldvel)
3         local x = math.abs(oldvel.x)
4         local z = math.abs(oldvel.z)
5         local pos = self.object:getpos()
6         pos.y = pos.y - 0.5
7         local pos2 = self.object:getpos()
8         local pos3 = self.object:getpos()
9         pos3.y = pos3.y + 0.5
10         
11         local xer
12         local zer
13         local dir = {x=0,y=0,z=0}
14         
15         --check direction
16         --x axis
17         if x > z then
18                 if olddir.x>0 then xer=1 elseif olddir.x<0 then xer=-1 end
19                 --check up
20                 if minetest.get_node_group(minetest.get_node(vector.new(pos.x+xer,pos.y+1,pos.z)).name,"rail")>0 then
21                         dir.x = xer
22                         dir.y = 1
23                 --check down
24                 elseif minetest.get_node_group(minetest.get_node(vector.new(pos.x+xer,pos.y-1,pos.z)).name,"rail")>0 then
25                         dir.x = xer
26                         dir.y = -1
27                 --check flat
28                 elseif minetest.get_node_group(minetest.get_node(vector.new(pos.x+xer,pos.y,pos.z)).name,"rail")>0 then
29                         dir.x = xer
30                 end
31         --z axis
32         elseif z > x then
33                 if olddir.z>0 then zer=1 elseif olddir.z<0 then zer=-1 end
34                 --check up
35                 if minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y+1,pos.z+zer)).name,"rail")>0 then
36                         dir.z = zer
37                         dir.y = 1
38                 --check down
39                 elseif minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y-1,pos.z+zer)).name,"rail")>0 then
40                         dir.z = zer
41                         dir.y = -1
42                 --check flat
43                 elseif minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y,pos.z+zer)).name,"rail")>0 then
44                         dir.z = zer
45                 end
46         end
47         
48         --turn
49         if vector.equals(dir,vector.new(0,0,0)) then
50                 if x > z then
51                         if minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y,pos.z+1)).name,"rail")>0 then
52                                 dir.z = 1
53                                 --recenter on the rail
54                                 self.object:moveto(vector.new(math.floor(pos2.x+0.5),pos2.y,pos2.z))
55                         elseif minetest.get_node_group(minetest.get_node(vector.new(pos.x,pos.y,pos.z-1)).name,"rail")>0 then
56                                 dir.z = -1
57                                 --recenter on the rail
58                                 self.object:moveto(vector.new(math.floor(pos2.x+0.5),pos2.y,pos2.z))
59                         end
60                 elseif z > x then
61                         print("zzzz")
62                         if minetest.get_node_group(minetest.get_node(vector.new(pos.x+1,pos.y,pos.z)).name,"rail")>0 then
63                                 dir.x = 1
64                                 --recenter on the rail
65                                 self.object:moveto(vector.new(pos2.x,pos2.y,math.floor(pos2.z+0.5)))
66                         elseif minetest.get_node_group(minetest.get_node(vector.new(pos.x-1,pos.y,pos.z)).name,"rail")>0 then
67                                 dir.x = -1
68                                 --recenter on the rail
69                                 self.object:moveto(vector.new(pos2.x,pos2.y,math.floor(pos2.z+0.5)))
70                         end
71                 end
72         end
73         --apply
74         --if not vector.equals(dir,vector.new(0,0,0)) then
75         self.object:setvelocity(dir)
76         --end
77