-
-
Save Jordach/15cef28c52e76a4d61808fa02a1ff199 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- get 3d facedir to simple axis; | |
-- 0 = y+ 1 = z+ 2 = z- 3 = x+ 4 = x- 5 = y- | |
function mcore.facedir_stripper(node) | |
local number = node.param2/4 | |
print ("before strip: " .. number) | |
local chara = tostring(number) | |
number = tonumber(chara:sub(1,1)) | |
print ("after strip: " .. number) | |
return number | |
end | |
function mcore.get_node_from_front(pos) | |
--pos is the standard pos table provided by minetest, eg: pos = {x=int, y=int, z=int} | |
local node = minetest.get_node_or_nil(pos) | |
local facedir = mcore.facedir_stripper(node) | |
local npos = pos | |
--print(tostring(facedir)) | |
if facedir == 0 then | |
npos.y = npos.y + 1 | |
--print(dump(npos)) | |
return npos | |
elseif facedir == 1 then | |
npos.z = npos.z + 1 | |
--print(dump(npos)) | |
return npos | |
elseif facedir == 2 then | |
npos.z = npos.z - 1 | |
--print(dump(npos)) | |
return npos | |
elseif facedir == 3 then | |
npos.x = npos.x + 1 | |
--print(dump(npos)) | |
return npos | |
elseif facedir == 4 then | |
npos.x = npos.x - 1 | |
--print(dump(npos)) | |
return npos | |
elseif facedir == 5 then | |
npos.y = npos.y - 1 | |
--print(dump(npos)) | |
return npos | |
end | |
end | |
function mcore.get_node_from_rear(pos) | |
--pos is the standard pos table provided by minetest, eg: pos = {x=int, y=int, z=int} | |
local node = minetest.get_node_or_nil(pos) | |
local facedir = mcore.facedir_stripper(node) | |
local npos = pos | |
if facedir == 0 then | |
npos.y = npos.y - 1 | |
return npos | |
elseif facedir == 1 then | |
npos.z = npos.z - 1 | |
return npos | |
elseif facedir == 2 then | |
npos.z = npos.z + 1 | |
return npos | |
elseif facedir == 3 then | |
npos.x = npos.x - 1 | |
return npos | |
elseif facedir == 4 then | |
npos.x = npos.x + 1 | |
return npos | |
elseif facedir == 5 then | |
npos.y = npos.y + 1 | |
return npos | |
end | |
end | |
minetest.register_node("atvomat:mover",{ | |
description = "Mover (Moves Items from Red to Green)", | |
paramtype2 = "facedir", | |
groups = {oddly_breakable_by_hand=3}, | |
tiles = {"atvomat_mover_front.png", "atvomat_mover_back.png", "atvomat_mover.png", "atvomat_mover.png", "atvomat_mover.png", "atvomat_mover.png"}, | |
on_construct = function(pos) | |
local meta = minetest.get_meta(pos) | |
meta:set_string("formspec", atmover) | |
local inv = meta:get_inventory() | |
inv:set_size("main", 1) | |
minetest.get_node_timer(pos):start(1.0) | |
end, | |
on_place = minetest.rotate_node, | |
on_timer = function(pos, elapsed) | |
local oldpos = pos | |
local fpos = pos | |
local rpos = pos | |
minetest.add_node(mcore.get_node_from_rear(rpos), {name="core:stone"}) | |
minetest.add_node(mcore.get_node_from_front(fpos), {name="core:cobble"}) | |
return true | |
end, | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment