mirror of
https://github.com/osmarks/random-stuff
synced 2024-12-28 19:10:35 +00:00
53 lines
1.5 KiB
Lua
53 lines
1.5 KiB
Lua
local storage = peripheral.find "minecraft:ender chest"
|
|
local monitor = peripheral.find "monitor"
|
|
local button = settings.get "melon.button" or "right"
|
|
local dispense_count = 16
|
|
local dispense_direction = settings.get "melon.dispense" or "west"
|
|
local display_name = "Melon"
|
|
local to_store = "minecraft:melon"
|
|
|
|
local function mon_write(...)
|
|
monitor.setTextScale(1)
|
|
local oldterm = term.redirect(monitor)
|
|
term.clear()
|
|
term.setCursorPos(1, 1)
|
|
print "GTech AutoMelon"
|
|
write(...)
|
|
term.redirect(oldterm)
|
|
end
|
|
|
|
local function fill_chest()
|
|
while true do
|
|
local count = 0
|
|
for slot, stack in pairs(storage.list()) do
|
|
if stack.name == to_store then
|
|
count = count + stack.count
|
|
end
|
|
end
|
|
mon_write(("%dx %s stored\nPress button for %dx %s"):format(count, display_name, dispense_count, display_name))
|
|
local timer = os.startTimer(5)
|
|
while true do
|
|
local ev, param = os.pullEvent()
|
|
if (ev == "timer" and param == timer) or ev == "refresh_storage" then break end
|
|
end
|
|
end
|
|
end
|
|
|
|
local function handle_button()
|
|
while true do
|
|
os.pullEvent "redstone"
|
|
if redstone.getInput(button) then
|
|
local contents = storage.list()
|
|
for slot, stack in pairs(contents) do
|
|
if stack.count > dispense_count then
|
|
print("Dispensing", dispense_count, "from", slot, "to", dispense_direction)
|
|
storage.drop(slot, dispense_count, dispense_direction)
|
|
os.queueEvent("refresh_storage")
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
parallel.waitForAll(handle_button, fill_chest) |