View difference between Paste ID: zPSsCTtv and fj1dMFBg
SHOW: | | - or go back to the newest paste.
1
--Wrap the Blood Altar
2
a=peripheral.wrap("left")
3
4
-- Update this depending on what direction you have a chest(s) against your altar, valid directions are "north", "south", "east", "west"
5
-- This is the direction of the 'pull' chest where the stone is supplied
6
pullDir = "east"
7
-- This is the direction of the 'push' chest, where the created slates will be stored.
8
pushDir = "south"
9
10
-- Declare id numbers for the different slates for the computer to compare to.
11
ids = {...}
12
ids["Basic"] = 4945
13
ids["Reinforced"] = 4946
14
ids["Imbued"] = 4997
15
ids["Demonic"] = 4998
16
ids["Stone"] = 1
17
18
-- This function handles creating the slates once things are verified
19
local function slate(dest,amt)
20
	for i=1,amt do
21
		count = amt + 1 - i
22
		term.clear()
23
  		term.setCursorPos(1,1)
24
		print("Number of ", dest," Slates left to make: ",count)
25
		pullIt(pullDir)
26
		item = a.getStackInSlot(1)
27-
		while item == nil do
27+
		while item["id"] == nil do
28
			pullIt(pullDir)
29
			item = a.getStackInSlot(1)
30
		end
31
		id=item["id"]
32
		while id ~= ids[dest] do
33
			os.sleep(1)
34
			item = a.getStackInSlot(1)
35
			while item == nil do
36
				pullIt(pullDir)
37
				item = a.getStackInSlot(1)
38
			end
39
			id = item["id"]
40
  		end
41
		pushIt(pushDir)
42
	end
43
end
44
45
-- The function that will pull items from the certain chest, allows for a chest size of up to 108 slots.  Will cycle through the slots till it finds an item to pull into the altar.
46
function pullIt(pullDir)
47
	item = a.getStackInSlot(1)
48
	p = 1
49-
	while item == nil do
49+
	while item["id"] == nil do
50
		a.pullItem(pullDir,p,1)
51
		p = p + 1
52
		if p > 108 then
53
			p = 1
54
		end
55
		item = a.getStackInSlot(1)
56
	end
57
end
58
59
-- The function that will push items into a certain chest, allows for a chest size of up to 108 slots.  Will cycle through the slots till it finds a slot to push into the chest.
60
function pushIt(pushDir)
61
	c = 1
62
	while not a.pushItem(pushDir,c) do
63
		c = c + 1
64
		if c > 108 then
65
			c = 1
66
		end
67
	end
68
end
69
70
-- Function that will request the number of items to make then pass through to create the slates once a valid number has been entered.
71
local function amount(dest)
72
	rNum = "a"
73
	while rNum ~= tonumber(rNum) do
74
		term.clear()
75
		term.setCursorPos(1,1)
76
		print("Please enter the amount of ",dest," Slates to make")
77
		print("Enter 'exit' to return")
78
		print("-----------------------------------------")
79
		rNum = read()
80
		if rNum == "exit" then
81
			return
82
		end
83
84
		if tonumber(rNum) == nil then
85
			print("Invalid Entry")
86
			sleep(1)
87
		elseif tonumber(rNum) > 0 then
88
			slate(dest,rNum)
89
			return
90
		else
91
			print("Invalid Number")
92
			sleep(1)
93
		end
94
	end
95
end
96
97
-- Main function that will run until q is pressed, certain key presses will go for different slates.
98
while true do
99
	term.clear()
100
  	term.setCursorPos(1,1)
101
  	print("Welcome to the Advanced Blood Altar Slate Maker")
102
  	print("-----------------------------------------------")
103
  	print(" Press Q to quit")
104
  	print(" Press B to create Basic Slates")
105
  	print(" Press R to create Reinforced Slates")
106
  	print(" Press I to create Imbued Slates")
107
  	print(" Press D to create Demonic Slates")
108
109
	local e, p1, x, y = os.pullEvent()
110
	-- If we receive a Q key then we quit (like we said we would)
111
    	if e == "key" then
112
      		os.pullEvent("char")
113
      		if p1 == keys.q then return
114
 
115
      		elseif p1 == keys.b then
116
			dest = "Basic"
117
			amount(dest)
118
		elseif p1 == keys.r then
119
			dest = "Reinforced"
120
			amount(dest)
121
		elseif p1 == keys.i then
122
			dest = "Imbued"
123
			amount(dest)
124
		elseif p1 == keys.d then
125
			dest = "Demonic"
126
			amount(dest)
127
		else
128
			print("Invalid Keypress")
129
			sleep(3)
130
		end
131
	end
132
end