View difference between Paste ID: mi9ZUPVC and MUqTyeWV
SHOW: | | - or go back to the newest paste.
1
RECIPES = require("RECIPES")
2
local sides = require("sides")
3
local component = require("component")
4
local event = require("event")
5
local tank = component.ender_tank
6
7
local currentCraft = ""
8
9
-- This will be filled automatically by the code, no need to modify it
10
local transposerList = {
11
	items = {
12
		id = "",
13
		side = ""	
14
	}, 
15
	fluids = {
16
			id = "",	
17
            side = "",
18-
            output= ""
18+
            output = ""
19
	}
20
}
21
22
function tablelength(T)
23
    local count = 0
24
    for _ in pairs(T) do count = count + 1 end
25
    return count
26
end
27
28
function getCurrentRecipeIndex(items) -- items from inventory  
29
    local isRecipeFound = false
30
31
    for i=1, tablelength(RECIPES) do
32
        for j=1, tablelength(items) do
33
            local damage = "0"
34
            if items[j]["damage"] ~= nil then
35
                damage = items[j]["damage"]
36
            end
37
            local curRecipe = RECIPES[i]["item"][1]
38
            if RECIPES[i]["item"][2] ~= "*" then
39
                curRecipe = curRecipe .. "." .. RECIPES[i]["item"][2]
40
            end
41
42
            if string.match(items[j]["name"] .. "." .. math.floor(damage), curRecipe) then
43-
                return RECIPES[i]["name"]
43+
                return i
44
            end
45
        end
46
    end
47
	
48
	return nil
49
end
50
51
function getInventoryItems()
52
	local items = component.proxy(transposerList["items"]["id"]).getAllStacks(sides[transposerList["items"]["side"]]).getAll()                            
53
	local realItems ={}
54
	local increment = 1  
55
	
56
	for k,v in pairs(items) do
57
		if v["name"] ~= "minecraft:air" then 
58
			realItems[increment] = v 
59
			increment = increment + 1 
60
		end 
61
	end
62
	
63
	return realItems
64
end
65
66
function getTransposersInfo() 
67
	local transposers = component.list("transposer");
68
	for id, data in pairs(transposers) do
69
		getTransposerSides(id)
70
    end
71
end
72
73
function getTransposerSides(transposerId)
74
	local possibleSides = {"bottom", "top", "back", "front", "right", "left"}
75
	local transposer = component.proxy(transposerId)
76
	local sides = {}
77
	
78
	for i=1, 6 do
79
		if transposer.getInventoryName(i-1) ~= nil and transposer.getFluidInTank(i-1)["n"] < 1 then 
80
			transposerList["items"]["id"] = transposerId
81-
			transposerList["items"]["side"] = possibleSides[i]
81+
            transposerList["items"]["side"] = possibleSides[i]
82-
		elseif transposer.getFluidInTank(i-1)["n"] > 0 or transposer.getTankCapacity(i-1) == 16000 then
82+
            print("Found inventory", transposerId, possibleSides[i])
83-
			local fluid = transposer.getFluidInTank(i-1)[1]
83+
		elseif transposer.getFluidInTank(i-1)["n"] > 0 and transposer.getTankCapacity(i-1) == 16000 then
84-
			
84+
85
				transposerList["fluids"]["id"] = transposerId
86
				transposerList["fluids"]["side"] = possibleSides[i]	
87-
				transposerList["fluids"]["side"] = possibleSides[i]		
87+
                print("Found ender tank", transposerId, possibleSides[i])	
88
            end
89-
        elseif transposer.getFluidInTank(i-1)["n"] > 0 OR transposer.getTankCapacity(i-1) ~= 16000 then
89+
        elseif transposer.getFluidInTank(i-1)["n"] > 0 and transposer.getTankCapacity(i-1) ~= 16000 then
90-
            transposerList["fluids"]["output"] = transposerId
90+
            transposerList["fluids"]["output"] = possibleSides[i]
91
            print("Found liquid output", transposerId, possibleSides[i])
92
        end
93
    end
94
end
95-
function getOutputLocation(transposer)
95+
96-
	if transposer.getInventoryName(sides.up) == "actuallyadditions:block_phantom_liquiface" then
96+
local function setTank(fluid)
97-
		return sides.up
97+
    local f,s,t = tonumber(fluid[1]),tonumber(fluid[2]),tonumber(fluid[3])
98-
	elseif transposer.getInventoryName(sides.down) == "actuallyadditions:block_phantom_liquiface" then
98+
    tank.setFrequency(f,s,t)
99-
		return sides.down
99+
100
101
function moveFluidToMachine(recipeIndex)
102
	local fluid = RECIPES[recipeIndex]["fluid"]
103
	local transposer = component.proxy(transposerList["fluids"]["id"])
104
	local inputSide = transposerList["fluids"]["side"]	
105-
	local fluid = RECIPES[recipeName]["fluid"]
105+
    local outputSide = transposerList["fluids"]["output"]
106
    print(inputSide, outputSide)
107
    setTank(fluid)    
108-
	local outputSide = transposerList["fluids"]["output"]
108+
	if transposer.getTankLevel(sides[outputSide]) == 0 then
109
		transposer.transferFluid(sides[inputSide], sides[outputSide], tonumber(fluid[4]))
110-
	if transposer.getTankLevel(outputSide) == 0 then
110+
111-
		transposer.transferFluid(sides[inputSide], outputSide, fluidAmount)
111+
112
end
113
114
function init()
115
	getTransposersInfo()
116
end
117
118
function loopDeLoop()	
119
	while event.pull(1, "interrupted") == nil do
120
		if getInventoryItems()[1] ~= nil then
121
			local currentRecipeIndex = getCurrentRecipeIndex(getInventoryItems())	
122
			if currentRecipeIndex == nil then
123
				print("that's not a recipe you dum dum, check your items")
124
            else
125
                print(currentRecipeIndex)
126
				print("crafting : " .. RECIPES[currentRecipeIndex]["name"])
127
				moveFluidToMachine(currentRecipeIndex)
128
			end
129
		end
130
		local event, address, arg1, arg2, arg3 = event.pull(1)
131
		if type(address) == "string" and component.isPrimary(address) then
132
			if event == "key_down" and arg2 == keyboard.keys.q then
133
				os.exit()
134
			end
135
		end
136
	end
137
end
138
139
init()
140
loopDeLoop()