]> git.lizzy.rs Git - Crafter.git/commitdiff
Add in actual 2d direction rotation for minecarts
authoroilboi <47129783+oilboi@users.noreply.github.com>
Sat, 4 Jul 2020 12:28:51 +0000 (08:28 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Sat, 4 Jul 2020 12:28:51 +0000 (08:28 -0400)
mods/fireworks/init.lua
mods/minecart/init.lua

index f52f9688eea0f1ca07285d4b788b1f21aa0689f0..f631ba73d2fab61ac79ebdd4fa94c739675031e4 100644 (file)
@@ -3,6 +3,11 @@ local colors ={
     "white",
     "blue"
 }
+local colors_halloween ={
+    "orange",
+    "black"
+}
+
 
 local function fireworks_pop(pos)
     for _,color in pairs(colors) do
index 1020493ee5aeb9cb70c95ca38a894f5b783eb248..fdcfc56fb7234553462869ce5993f64fa5daac53 100644 (file)
@@ -90,6 +90,7 @@ local function rail_brain(self,pos)
                triggered = true
        end
 
+       print(dump(dir))
        if triggered and not pool[minetest.hash_node_position(vector.add(pos,dir))] then
                local possible_dirs = create_axis(pos)
                if table.getn(possible_dirs) == 0 then
@@ -97,13 +98,17 @@ local function rail_brain(self,pos)
                else
                        for _,dir2 in pairs(possible_dirs) do
                                if dir.x ~= 0 and dir2.z ~= 0 then
-                                       local transmitted = self.object:get_velocity().x
-                                       self.object:set_velocity(vector.new(0,0,transmitted))
-                                       self.dir = vector.direction(vector.new(0,0,transmitted),vector.new(0,0,0))
+                                       local intertia = math.abs(self.object:get_velocity().x)
+                                       self.object:set_velocity(vector.multiply(dir2,intertia))
+                                       self.dir = dir2
+                                       self.axis_lock = "z"
+                                       break
                                elseif dir.z ~= 0 and dir2.x ~= 0 then
-                                       local transmitted = self.object:get_velocity().z
-                                       self.object:set_velocity(vector.new(transmitted,0,0))
-                                       self.dir = vector.direction(vector.new(transmitted,0,0),vector.new(0,0,0))
+                                       local intertia = math.abs(self.object:get_velocity().z)
+                                       self.object:set_velocity(vector.multiply(dir2,intertia))
+                                       self.dir = dir2
+                                       self.axis_lock = "x"
+                                       break
                                end
                        end
                end