brewing station auto learn

This commit is contained in:
kepler155c
2018-10-28 03:24:32 -04:00
parent 763f6bb27a
commit b96c064431
5 changed files with 64 additions and 22 deletions

View File

@@ -248,6 +248,7 @@ function page:applyFilter()
self.grid:setValues(t)
end
debug(options.slot)
if options.slot.value then
debug('Transfer items initialized')
Event.onInterval(2, function()

View File

@@ -153,6 +153,20 @@ function Milo:eject(item, qty)
end
end
function Milo:saveMachineRecipe(recipe, result, machine)
local key = Milo:uniqueKey(result)
-- save the recipe
self.context.userRecipes[key] = recipe
Util.writeTable(Milo.RECIPES_FILE, self.context.userRecipes)
-- save the machine association
Craft.machineLookup[key] = machine
Util.writeTable(Craft.MACHINE_LOOKUP, Craft.machineLookup)
Craft.loadRecipes()
end
function Milo:mergeResources(t)
for _,v in pairs(self.context.resources) do
local item = self:getItem(t, v)

View File

@@ -218,7 +218,7 @@ function NetworkedAdapter:insert(slot, qty, toSlot, item, source)
if amount > 0 then
debug('INS: %s(%d): %s[%d] -> %s',
item.name, amount,
source, slot, adapter.name)
source or self.localName, slot, adapter.name)
self.dirty = true
adapter.dirty = true
local entry = self.activity[key] or 0

View File

@@ -1,4 +1,3 @@
local Craft = require('turtle.craft')
local itemDB = require('itemDB')
local Milo = require('milo')
local UI = require('ui')
@@ -8,8 +7,6 @@ local colors = _G.colors
local device = _G.device
local turtle = _G.turtle
local MACHINE_LOOKUP = 'usr/config/machine_crafting.db'
local context = Milo:getContext()
local machineLearnWizard = UI.Page {
@@ -117,17 +114,7 @@ function pages.confirmation:validate()
recipe.ingredients[k] = Milo:uniqueKey(v)
end
local key = Milo:uniqueKey(result)
-- save the recipe
context.userRecipes[key] = recipe
Util.writeTable(Milo.RECIPES_FILE, context.userRecipes)
-- save the machine association
Craft.machineLookup[key] = machine.name
Util.writeTable(MACHINE_LOOKUP, Craft.machineLookup)
Craft.loadRecipes()
Milo:saveMachineRecipe(recipe, result, machine.name)
local listingPage = UI:getPage('listing')
local displayName = itemDB:getName(result)

View File

@@ -1,21 +1,61 @@
local Milo = require('milo')
local Craft = require('turtle.craft')
local Milo = require('milo')
local device = _G.device
local PotionImportTask = {
name = 'potions',
priority = 30,
brewQueue = { },
}
function PotionImportTask:cycle(context)
for _, v in pairs(device) do
if v.type == 'minecraft:brewing_stand' and v.getBrewTime() == 0 then
local list = v.list()
if not list[4] then
for slot = 1, 3 do
if list[slot] then
context.storage:import(v.name, slot, 1, list[slot])
if v.type == 'minecraft:brewing_stand' then
if v.getBrewTime() == 0 then
local list = v.list()
if list[1] and not list[4] then
-- brewing has completd
if self.brewQueue[v.name] and list[1] then
local key = Milo:uniqueKey(list[1])
if not Craft.findRecipe(key) then
debug('saving new recipe')
Milo:saveMachineRecipe(self.brewQueue[v.name], list[1], v.name)
end
end
for slot = 1, 3 do
if list[slot] then
context.storage:import(v.name, slot, 1, list[slot])
end
end
end
self.brewQueue[v.name] = nil
elseif not self.brewQueue[v.name] then
local recipe = {
count = 3,
ingredients = { },
maxCount = 3,
}
local list = v.list()
local function valid()
for i = 1, 4 do
if not list[i] then
return false
end
end
return true
end
if valid() then
for i = 1, 4 do
recipe.ingredients[i] = Milo:uniqueKey(list[i])
end
self.brewQueue[v.name] = recipe
end
end
end