autocrafting improvements

This commit is contained in:
kepler155c
2017-12-13 01:38:59 -05:00
parent 73dc16703a
commit 0ce537d4ce
14 changed files with 2864 additions and 2379 deletions

View File

@@ -52,16 +52,16 @@ function itemDB:splitKey(key, item)
end end
function itemDB:get(key) function itemDB:get(key)
if type(key) == 'string' then
key = self:makeKey(self:splitKey(key))
end
local item = TableDB.get(self, key) local item = TableDB.get(self, key)
if item then if item then
return item return item
end end
if type(key) == 'string' then
key = self:makeKey(self:splitKey(key))
end
if not key[2] or key[2] ~= 0 then if not key[2] or key[2] ~= 0 then
item = TableDB.get(self, { key[1], 0, key[3] }) item = TableDB.get(self, { key[1], 0, key[3] })
if item and item.maxDamage > 0 then if item and item.maxDamage > 0 then

View File

@@ -22,7 +22,8 @@ function RefinedAdapter:init(args)
Util.merge(self, defaults) Util.merge(self, defaults)
Util.merge(self, args) Util.merge(self, args)
local controller = Peripheral.getByType('refinedstorage:controller') local controller = Peripheral.getByType('refinedstorage:controller') or
Peripheral.getByMethod('listAvailableItems')
if controller then if controller then
Util.merge(self, controller) Util.merge(self, controller)
end end

View File

@@ -1,10 +1,11 @@
local Util = require('util') local Util = require('util')
local fs = _G.fs
local turtle = _G.turtle local turtle = _G.turtle
local Craft = { local RECIPES_DIR = 'usr/etc/recipes'
recipes = Util.readTable('usr/etc/recipes.db') or { },
} local Craft = { }
local function clearGrid(inventoryAdapter) local function clearGrid(inventoryAdapter)
for i = 1, 16 do for i = 1, 16 do
@@ -65,55 +66,73 @@ local function turtleCraft(recipe, qty, inventoryAdapter)
return turtle.craft() return turtle.craft()
end end
function Craft.loadRecipes()
Craft.recipes = Util.readTable(fs.combine(RECIPES_DIR, 'minecraft.db')) or { }
local files = fs.list('usr/etc/recipes')
table.sort(files)
Util.removeByValue(files, 'minecraft.db')
for _,file in ipairs(files) do
local recipes = Util.readTable(fs.combine(RECIPES_DIR, file))
Util.merge(Craft.recipes, recipes)
end
local recipes = Util.readTable('usr/config/recipes.db') or { }
Util.merge(Craft.recipes, recipes)
end
function Craft.sumIngredients(recipe)
-- produces { ['minecraft:planks:0'] = 8 }
local t = { }
for _,item in pairs(recipe.ingredients) do
t[item] = (t[item] or 0) + 1
end
return t
end
function Craft.craftRecipe(recipe, count, inventoryAdapter) function Craft.craftRecipe(recipe, count, inventoryAdapter)
if type(recipe) == 'string' then if type(recipe) == 'string' then
recipe = Craft.recipes[recipe] recipe = Craft.recipes[recipe]
if not recipe then if not recipe then
return false, 'No recipe' return 0, 'No recipe'
end end
end end
local items = inventoryAdapter:listItems() local items = inventoryAdapter:listItems()
local function sumItems(items)
-- produces { ['minecraft:planks:0'] = 8 }
local t = {}
for _,item in pairs(items) do
t[item] = (t[item] or 0) + 1
end
return t
end
count = math.ceil(count / recipe.count) count = math.ceil(count / recipe.count)
local maxCount = recipe.maxCount or math.floor(64 / recipe.count) local maxCount = recipe.maxCount or math.floor(64 / recipe.count)
local summedItems = sumItems(recipe.ingredients) local summedItems = Craft.sumIngredients(recipe)
for key,icount in pairs(summedItems) do for key,icount in pairs(summedItems) do
local itemCount = getItemCount(items, key) local itemCount = getItemCount(items, key)
if itemCount < icount * count then if itemCount < icount * count then
local irecipe = Craft.recipes[key] local irecipe = Craft.recipes[key]
if irecipe then if irecipe then
--Util.print('Crafting %d %s', icount * count - itemCount, key) local iqty = icount * count - itemCount
if not Craft.craftRecipe(irecipe, local crafted = Craft.craftRecipe(irecipe, iqty, inventoryAdapter)
icount * count - itemCount, if crafted ~= iqty then
inventoryAdapter) then
turtle.select(1) turtle.select(1)
return return 0
end end
end end
end end
end end
local crafted = 0
repeat repeat
if not turtleCraft(recipe, math.min(count, maxCount), inventoryAdapter) then if not turtleCraft(recipe, math.min(count, maxCount), inventoryAdapter) then
turtle.select(1) turtle.select(1)
return false break
end end
crafted = crafted + math.min(count, maxCount)
count = count - maxCount count = count - maxCount
until count <= 0 until count <= 0
turtle.select(1) turtle.select(1)
return true return crafted * recipe.count
end end
-- given a certain quantity, return how many of those can be crafted -- given a certain quantity, return how many of those can be crafted
@@ -184,4 +203,6 @@ function Craft.craftRecipeTest(name, count)
return { Craft.craftRecipe(Craft.recipes[name], count, chestAdapter) } return { Craft.craftRecipe(Craft.recipes[name], count, chestAdapter) }
end end
Craft.loadRecipes()
return Craft return Craft

View File

@@ -62,18 +62,17 @@ if device.workbench then
end end
local RESOURCE_FILE = 'usr/config/resources.db' local RESOURCE_FILE = 'usr/config/resources.db'
local RECIPES_FILE = 'usr/etc/recipes.db' local RECIPES_FILE = 'usr/config/recipes.db'
local colors = _G.colors local colors = _G.colors
local turtle = _G.turtle local turtle = _G.turtle
local craftingPaused = false local craftingPaused = false
local canCraft = not not duckAntenna or turtleChestAdapter:isValid() local canCraft = not not duckAntenna or turtleChestAdapter:isValid()
local recipes = Util.readTable(RECIPES_FILE) or { } local userRecipes = Util.readTable(RECIPES_FILE) or { }
local jobListGrid local jobListGrid
local resources local resources
local demandCrafting = { }
Craft.setRecipes(recipes)
local function getItem(items, inItem, ignoreDamage, ignoreNbtHash) local function getItem(items, inItem, ignoreDamage, ignoreNbtHash)
for _,item in pairs(items) do for _,item in pairs(items) do
@@ -113,7 +112,7 @@ local function mergeResources(t)
end end
end end
for k in pairs(recipes) do for k in pairs(Craft.recipes) do
local v = splitKey(k) local v = splitKey(k)
local item = getItem(t, v) local item = getItem(t, v)
if not item then if not item then
@@ -132,13 +131,20 @@ local function mergeResources(t)
end end
end end
local function filterItems(t, filter) local function filterItems(t, filter, displayMode)
if filter then if filter or displayMode > 0 then
local r = {} local r = { }
filter = filter:lower() if filter then
filter = filter:lower()
end
for _,v in pairs(t) do for _,v in pairs(t) do
if string.find(v.lname, filter) then if not filter or string.find(v.lname, filter) then
table.insert(r, v) if not displayMode or
displayMode == 0 or
displayMode == 1 and v.count > 0 or
displayMode == 2 and v.has_recipe then
table.insert(r, v)
end
end end
end end
return r return r
@@ -146,22 +152,35 @@ local function filterItems(t, filter)
return t return t
end end
local function sumItems3(ingredients, items, summedItems, count) local function sumItems3(ingredients, items, summedItems, count, throttle)
for _,key in pairs(ingredients) do throttle = throttle or Util.throttle()
local function sumItems(items)
-- produces { ['minecraft:planks:0'] = 8 }
local t = {}
for _,item in pairs(items) do
t[item] = (t[item] or 0) + 1
end
return t
end
for key,iqty in pairs(sumItems(ingredients)) do
throttle()
local item = splitKey(key) local item = splitKey(key)
--print(key)
local summedItem = summedItems[key] local summedItem = summedItems[key]
if not summedItem then if not summedItem then
summedItem = Util.shallowCopy(item) summedItem = Util.shallowCopy(item)
summedItem.recipe = recipes[key] summedItem.recipe = Craft.recipes[key]
summedItem.count = getItemQuantity(items, summedItem) summedItem.count = getItemQuantity(items, summedItem)
summedItems[key] = summedItem summedItems[key] = summedItem
end end
summedItem.count = summedItem.count - count summedItem.count = summedItem.count - (count * iqty)
if summedItem.recipe and summedItem.count < 0 then if summedItem.recipe and summedItem.count < 0 then
local need = math.ceil(-summedItem.count / summedItem.recipe.count) local need = math.ceil(-summedItem.count / summedItem.recipe.count)
summedItem.count = 0 summedItem.count = 0
sumItems3(summedItem.recipe.ingredients, items, summedItems, need) sumItems3(summedItem.recipe.ingredients, items, summedItems, need, throttle)
end end
end end
end end
@@ -202,45 +221,65 @@ end
local function craftItem(recipe, items, originalItem, craftList, count) local function craftItem(recipe, items, originalItem, craftList, count)
if craftingPaused or not canCraft or not isGridClear() then if craftingPaused or not canCraft or not isGridClear() then
return return 0
end end
local missing = { } local missing = { }
local toCraft = Craft.getCraftableAmount(recipe, count, items, missing) local toCraft = Craft.getCraftableAmount(recipe, count, items, missing)
if missing.name then if missing.name then
originalItem.status = string.format('%s missing', itemDB:getName(missing.name)) originalItem.status = string.format('%s missing', itemDB:getName(missing.name))
originalItem.statusCode = 'missing' originalItem.statusCode = 'missing'
debug('missing: ' .. missing.name) -- debug(missing.name)
end end
if originalItem.forceCrafting and toCraft == 0 then
for key,qty in pairs(Craft.sumIngredients(recipe)) do
local iRecipe = Craft.recipes[key]
if iRecipe then
local need = count * qty
local has = getItemQuantity(items, splitKey(key))
if has < need then
craftItem(iRecipe, items, originalItem, { }, need - has)
items = inventoryAdapter:listItems()
end
end
end
end
debug('count: ' .. count)
debug('toCraft: ' .. toCraft)
local crafted = 0
if toCraft > 0 then if toCraft > 0 then
Craft.craftRecipe(recipe, toCraft, inventoryAdapter) crafted = Craft.craftRecipe(recipe, toCraft, inventoryAdapter)
clearGrid() clearGrid()
items = inventoryAdapter:listItems() items = inventoryAdapter:listItems()
count = count - crafted
end end
debug('count: ' .. count)
count = count - toCraft
if count > 0 then if count > 0 then
local summedItems = { } local summedItems = { }
sumItems3(recipe.ingredients, items, summedItems, math.ceil(count / recipe.count)) sumItems3(recipe.ingredients, items, summedItems, math.ceil(count / recipe.count))
for _,ingredient in pairs(summedItems) do for _,ingredient in pairs(summedItems) do
if not ingredient.recipe and ingredient.count < 0 then --if not ingredient.recipe and ingredient.count < 0 then
if ingredient.count < 0 then
addCraftingRequest(ingredient, craftList, -ingredient.count) addCraftingRequest(ingredient, craftList, -ingredient.count)
end end
end end
end end
debug('crafted: ' .. crafted)
return crafted
end end
local function craftItems(craftList, allItems) local function craftItems(craftList, allItems)
for _,key in pairs(Util.keys(craftList)) do for _,key in pairs(Util.keys(craftList)) do
local item = craftList[key] local item = craftList[key]
local recipe = recipes[key] local recipe = Craft.recipes[key]
if recipe then if recipe then
craftItem(recipe, allItems, item, craftList, item.count) local crafted = craftItem(recipe, allItems, item, craftList, item.count)
item.count = item.count - crafted
allItems = inventoryAdapter:listItems() -- refresh counts allItems = inventoryAdapter:listItems() -- refresh counts
elseif item.rsControl then elseif item.rsControl then
item.status = 'Activated' item.status = 'Activated'
@@ -249,7 +288,7 @@ local function craftItems(craftList, allItems)
for key,item in pairs(craftList) do for key,item in pairs(craftList) do
if not recipes[key] and not item.rsControl then if not Craft.recipes[key] and not item.rsControl then
if not controller then if not controller then
item.status = '(no recipe)' item.status = '(no recipe)'
else else
@@ -635,16 +674,23 @@ local listingPage = UI.Page {
value = 'Filter', value = 'Filter',
}, },
filter = UI.TextEntry { filter = UI.TextEntry {
x = 9, ex = -2, x = 9, ex = -5,
limit = 50, limit = 50,
backgroundColor = colors.gray, backgroundColor = colors.gray,
backgroundFocusColor = colors.gray, backgroundFocusColor = colors.gray,
}, },
display = UI.Button {
x = -3,
event = 'toggle_display',
value = 0,
text = 'A',
},
}, },
accelerators = { accelerators = {
r = 'refresh', r = 'refresh',
q = 'quit', q = 'quit',
} },
displayMode = 0,
} }
function listingPage.grid:getRowTextColor(row, selected) function listingPage.grid:getRowTextColor(row, selected)
@@ -672,20 +718,6 @@ end
function listingPage.statusBar:draw() function listingPage.statusBar:draw()
return UI.Window.draw(self) return UI.Window.draw(self)
end end
--[[
function listingPage.statusBar.filter:eventHandler(event)
if event.type == 'mouse_rightclick' then
self.value = ''
self:draw()
local page = UI:getCurrentPage()
page.filter = nil
page:applyFilter()
page.grid:draw()
page:setFocus(self)
end
return UI.TextEntry.eventHandler(self, event)
end
]]
function listingPage:eventHandler(event) function listingPage:eventHandler(event)
if event.type == 'quit' then if event.type == 'quit' then
@@ -700,6 +732,20 @@ function listingPage:eventHandler(event)
self.grid:draw() self.grid:draw()
self.statusBar.filter:focus() self.statusBar.filter:focus()
elseif event.type == 'toggle_display' then
local values = {
[0] = 'A',
[1] = 'I',
[2] = 'C',
}
event.button.value = (event.button.value + 1) % 3
self.displayMode = event.button.value
event.button.text = values[event.button.value]
event.button:draw()
self:applyFilter()
self.grid:draw()
elseif event.type == 'learn' then elseif event.type == 'learn' then
UI:setPage('learn') UI:setPage('learn')
@@ -711,9 +757,10 @@ function listingPage:eventHandler(event)
if item then if item then
local key = uniqueKey(item) local key = uniqueKey(item)
if recipes[key] then if userRecipes[key] then
recipes[key] = nil userRecipes[key] = nil
Util.writeTable(RECIPES_FILE, recipes) Util.writeTable(RECIPES_FILE, userRecipes)
Craft.loadRecipes()
end end
if resources[key] then if resources[key] then
@@ -754,7 +801,7 @@ function listingPage:refresh()
end end
function listingPage:applyFilter() function listingPage:applyFilter()
local t = filterItems(self.allItems, self.filter) local t = filterItems(self.allItems, self.filter, self.displayMode)
self.grid:setValues(t) self.grid:setValues(t)
end end
@@ -853,9 +900,10 @@ local function learnRecipe(page)
ingredients[k] = uniqueKey(ingredient) ingredients[k] = uniqueKey(ingredient)
end end
recipes[key] = newRecipe userRecipes[key] = newRecipe
Util.writeTable(RECIPES_FILE, recipes) Util.writeTable(RECIPES_FILE, userRecipes)
Craft.loadRecipes()
local displayName = itemDB:getName(recipe) local displayName = itemDB:getName(recipe)
@@ -950,13 +998,11 @@ end
function craftPage:enable(item) function craftPage:enable(item)
self.item = item self.item = item
craftingPaused = true
self:focusFirst() self:focusFirst()
UI.Dialog.enable(self) UI.Dialog.enable(self)
end end
function craftPage:disable() function craftPage:disable()
craftingPaused = false
UI.Dialog.disable(self) UI.Dialog.disable(self)
end end
@@ -965,12 +1011,9 @@ function craftPage:eventHandler(event)
UI:setPreviousPage() UI:setPreviousPage()
elseif event.type == 'accept' then elseif event.type == 'accept' then
local key = uniqueKey(self.item) local key = uniqueKey(self.item)
local craftList = { } demandCrafting[key] = Util.shallowCopy(self.item)
craftList[key] = Util.shallowCopy(self.item) demandCrafting[key].count = tonumber(self.count.value)
craftList[key].count = tonumber(self.count.value) demandCrafting[key].forceCrafting = true
craftingPaused = false
craftItems(craftList, inventoryAdapter:listItems())
UI:setPreviousPage() UI:setPreviousPage()
else else
return UI.Dialog.eventHandler(self, event) return UI.Dialog.eventHandler(self, event)
@@ -1005,6 +1048,21 @@ Event.onInterval(5, function()
else else
local craftList = watchResources(items) local craftList = watchResources(items)
craftItems(craftList, items) craftItems(craftList, items)
if Util.size(demandCrafting) > 0 then
local list = Util.shallowCopy(demandCrafting)
craftItems(list, inventoryAdapter:listItems())
for _,key in pairs(Util.keys(demandCrafting)) do
debug(key .. ' - ' .. demandCrafting[key].count)
if demandCrafting[key].count <= 0 then -- should check statusCode
demandCrafting[key] = nil
end
end
for k,v in pairs(list) do
craftList[k] = v
end
end
jobListGrid:setValues(craftList) jobListGrid:setValues(craftList)
jobListGrid:update() jobListGrid:update()
jobListGrid:draw() jobListGrid:draw()

View File

@@ -24,7 +24,7 @@ repeat until not turtle.forward()
local inventoryAdapter = ChestAdapter(config.inventory) local inventoryAdapter = ChestAdapter(config.inventory)
local RESOURCE_FILE = 'usr/config/resources.db' local RESOURCE_FILE = 'usr/config/resources.db'
local RECIPES_FILE = 'usr/etc/recipes2.db' local RECIPES_FILE = 'usr/config/recipes2.db'
local recipes = Util.readTable(RECIPES_FILE) or { } local recipes = Util.readTable(RECIPES_FILE) or { }
local resources local resources
@@ -377,7 +377,7 @@ local function findMachines()
end end
local function jobMonitor() local function jobMonitor()
local mon = Peripheral.getBySide('top') local mon = Peripheral.getByType('monitor')
if mon then if mon then
mon = UI.Device({ mon = UI.Device({
@@ -485,7 +485,7 @@ function itemPage:eventHandler(event)
if Util.empty(filtered) then if Util.empty(filtered) then
filtered = nil filtered = nil
end end
debug(filtered)
resources[uniqueKey(filtered)] = filtered resources[uniqueKey(filtered)] = filtered
saveResources() saveResources()

View File

@@ -0,0 +1,94 @@
{
[ "appliedenergistics2:quartz_glass:0" ] = {
ingredients = {
"appliedenergistics2:material:2",
"minecraft:glass:0",
"appliedenergistics2:material:2",
[ 9 ] = "appliedenergistics2:material:2",
[ 10 ] = "minecraft:glass:0",
[ 11 ] = "appliedenergistics2:material:2",
[ 5 ] = "minecraft:glass:0",
[ 6 ] = "appliedenergistics2:material:2",
[ 7 ] = "minecraft:glass:0",
},
count = 4,
},
[ "appliedenergistics2:material:43" ] = {
ingredients = {
"appliedenergistics2:material:0",
"appliedenergistics2:material:8",
"appliedenergistics2:material:22",
},
count = 2,
},
[ "appliedenergistics2:material:44" ] = {
ingredients = {
[ 5 ] = "minecraft:quartz:0",
[ 6 ] = "appliedenergistics2:material:8",
[ 7 ] = "appliedenergistics2:material:22",
},
count = 2,
},
[ "appliedenergistics2:material:35" ] = {
ingredients = {
"minecraft:redstone:0",
"appliedenergistics2:material:0",
"minecraft:redstone:0",
[ 5 ] = "appliedenergistics2:material:0",
[ 6 ] = "appliedenergistics2:material:22",
[ 7 ] = "appliedenergistics2:material:0",
[ 9 ] = "minecraft:redstone:0",
[ 10 ] = "appliedenergistics2:material:0",
[ 11 ] = "minecraft:redstone:0",
},
count = 1,
},
[ "appliedenergistics2:interface:0" ] = {
ingredients = {
"minecraft:iron_ingot:0",
"minecraft:glass:0",
"minecraft:iron_ingot:0",
[ 9 ] = "minecraft:iron_ingot:0",
[ 10 ] = "minecraft:glass:0",
[ 11 ] = "minecraft:iron_ingot:0",
[ 5 ] = "appliedenergistics2:material:44",
[ 7 ] = "appliedenergistics2:material:43",
},
count = 1,
},
[ "appliedenergistics2:crystal_seed:0:5af0f90bcc279578cf09089f43278d57" ] = {
ingredients = {
"minecraft:sand:0",
"appliedenergistics2:material:2",
},
count = 2,
},
[ "appliedenergistics2:material:36" ] = {
ingredients = {
"minecraft:redstone:0",
"appliedenergistics2:material:23",
"minecraft:redstone:0",
[ 5 ] = "appliedenergistics2:material:35",
[ 6 ] = "appliedenergistics2:quartz_glass:0",
[ 7 ] = "appliedenergistics2:material:35",
[ 9 ] = "minecraft:redstone:0",
[ 10 ] = "appliedenergistics2:material:35",
[ 11 ] = "minecraft:redstone:0",
},
count = 1,
},
[ "appliedenergistics2:material:37" ] = {
ingredients = {
"minecraft:glowstone_dust:0",
"appliedenergistics2:material:24",
"minecraft:glowstone_dust:0",
[ 5 ] = "appliedenergistics2:material:36",
[ 6 ] = "appliedenergistics2:quartz_glass:0",
[ 7 ] = "appliedenergistics2:material:36",
[ 9 ] = "minecraft:glowstone_dust:0",
[ 10 ] = "appliedenergistics2:material:36",
[ 11 ] = "minecraft:glowstone_dust:0",
},
count = 1,
},
}

157
etc/recipes/enderio.db Normal file
View File

@@ -0,0 +1,157 @@
{
[ "enderio:itemItemConduit:0" ] = {
ingredients = {
"enderio:itemMaterial:1",
"enderio:itemMaterial:1",
"enderio:itemMaterial:1",
[ 9 ] = "enderio:itemMaterial:1",
[ 10 ] = "enderio:itemMaterial:1",
[ 11 ] = "enderio:itemMaterial:1",
[ 5 ] = "enderio:itemMaterial:3",
[ 6 ] = "enderio:itemMaterial:3",
[ 7 ] = "enderio:itemMaterial:3",
},
count = 8,
},
[ "enderio:itemMaterial:4" ] = {
ingredients = {
"enderio:itemAlloy:2",
},
count = 9,
},
[ "enderio:itemMaterial:3" ] = {
ingredients = {
"enderio:itemAlloy:5",
},
count = 9,
},
[ "enderio:itemLiquidConduit:0" ] = {
ingredients = {
"enderio:itemMaterial:1",
"enderio:itemMaterial:1",
"enderio:itemMaterial:1",
[ 9 ] = "enderio:itemMaterial:1",
[ 10 ] = "enderio:itemMaterial:1",
[ 11 ] = "enderio:itemMaterial:1",
[ 5 ] = "enderio:blockFusedQuartz:1",
[ 6 ] = "enderio:blockFusedQuartz:1",
[ 7 ] = "enderio:blockFusedQuartz:1",
},
count = 8,
},
[ "enderio:itemBasicCapacitor:0" ] = {
ingredients = {
[ 10 ] = "minecraft:gold_nugget:0",
[ 2 ] = "minecraft:gold_nugget:0",
[ 3 ] = "minecraft:redstone:0",
[ 5 ] = "minecraft:gold_nugget:0",
[ 6 ] = "thermalfoundation:material:128",
[ 7 ] = "minecraft:gold_nugget:0",
[ 9 ] = "minecraft:redstone:0",
},
count = 1,
},
[ "enderio:itemMaterial:5" ] = {
ingredients = {
"enderio:itemMaterial:3",
"enderio:itemMaterial:3",
"enderio:itemMaterial:3",
[ 9 ] = "enderio:itemMaterial:3",
[ 10 ] = "enderio:itemMaterial:3",
[ 11 ] = "enderio:itemMaterial:3",
[ 5 ] = "enderio:itemMaterial:3",
[ 6 ] = "minecraft:diamond:0",
[ 7 ] = "enderio:itemMaterial:3",
},
count = 1,
},
[ "enderio:itemMachinePart:1" ] = {
ingredients = {
"minecraft:stick:0",
"minecraft:cobblestone:0",
"minecraft:stick:0",
[ 9 ] = "minecraft:stick:0",
[ 10 ] = "minecraft:cobblestone:0",
[ 11 ] = "minecraft:stick:0",
[ 5 ] = "minecraft:cobblestone:0",
[ 7 ] = "minecraft:cobblestone:0",
},
count = 1,
},
[ "enderio:itemMaterial:6" ] = {
ingredients = {
"enderio:itemMaterial:4",
"enderio:itemMaterial:4",
"enderio:itemMaterial:4",
[ 9 ] = "enderio:itemMaterial:4",
[ 10 ] = "enderio:itemMaterial:4",
[ 11 ] = "enderio:itemMaterial:4",
[ 5 ] = "enderio:itemMaterial:4",
[ 6 ] = "minecraft:emerald:0",
[ 7 ] = "enderio:itemMaterial:4",
},
count = 1,
},
[ "enderio:itemPowerConduit:1" ] = {
ingredients = {
"enderio:itemMaterial:1",
"enderio:itemMaterial:1",
"enderio:itemMaterial:1",
[ 9 ] = "enderio:itemMaterial:1",
[ 10 ] = "enderio:itemMaterial:1",
[ 11 ] = "enderio:itemMaterial:1",
[ 5 ] = "enderio:itemAlloy:1",
[ 6 ] = "enderio:itemPowerConduit:0",
[ 7 ] = "enderio:itemAlloy:1",
},
count = 8,
},
[ "enderio:itemMaterial:2" ] = {
ingredients = {
"minecraft:gravel:0",
"minecraft:clay_ball:0",
"minecraft:gravel:0",
[ 9 ] = "minecraft:gravel:0",
[ 10 ] = "minecraft:clay_ball:0",
[ 11 ] = "minecraft:gravel:0",
[ 5 ] = "minecraft:sand:0",
[ 6 ] = "minecraft:gravel:0",
[ 7 ] = "minecraft:sand:0",
},
count = 8,
},
[ "enderio:itemBasicCapacitor:2" ] = {
ingredients = {
[ 10 ] = "enderio:itemAlloy:2",
[ 2 ] = "enderio:itemAlloy:2",
[ 5 ] = "enderio:itemBasicCapacitor:1",
[ 6 ] = "minecraft:glowstone:0",
[ 7 ] = "enderio:itemBasicCapacitor:1",
},
count = 1,
},
[ "enderio:itemBasicCapacitor:1" ] = {
ingredients = {
[ 10 ] = "enderio:itemAlloy:1",
[ 2 ] = "enderio:itemAlloy:1",
[ 5 ] = "enderio:itemBasicCapacitor:0",
[ 6 ] = "thermalfoundation:material:768",
[ 7 ] = "enderio:itemBasicCapacitor:0",
},
count = 1,
},
[ "enderio:itemMachinePart:0" ] = {
ingredients = {
"minecraft:iron_bars:0",
"minecraft:iron_ingot:0",
"minecraft:iron_bars:0",
[ 9 ] = "minecraft:iron_bars:0",
[ 10 ] = "minecraft:iron_ingot:0",
[ 11 ] = "minecraft:iron_bars:0",
[ 5 ] = "minecraft:iron_ingot:0",
[ 6 ] = "enderio:itemBasicCapacitor:0",
[ 7 ] = "minecraft:iron_ingot:0",
},
count = 1,
},
}

11
etc/recipes/exnihilo.db Normal file
View File

@@ -0,0 +1,11 @@
{
[ "exnihiloadscensio:hammerStone:0" ] = {
ingredients = {
[ 7 ] = "minecraft:cobblestone:0",
[ 9 ] = "minecraft:stick:0",
[ 2 ] = "minecraft:cobblestone:0",
[ 6 ] = "minecraft:stick:0",
},
count = 1,
},
}

View File

@@ -0,0 +1,21 @@
{
[ "extrautils2:user:0" ] = {
ingredients = {
"minecraft:dropper:0",
"extrautils2:ingredients:0",
[ 5 ] = "minecraft:lever:0",
},
count = 1,
},
[ "extrautils2:endershard:0" ] = {
ingredients = {
"minecraft:ender_pearl:0",
"extrautils2:glasscutter:*",
},
craftingTools = {
[ "extrautils2:glasscutter:*" ] = true,
},
maxCount = 1,
count = 8,
},
}

58
etc/recipes/mekanism.db Normal file
View File

@@ -0,0 +1,58 @@
{
[ "mekanism:EnergyTablet:0:3a153e5a66ba42a2d96ffd50ba64918b" ] = {
ingredients = {
"minecraft:redstone:0",
"minecraft:gold_ingot:0",
"minecraft:redstone:0",
[ 9 ] = "minecraft:redstone:0",
[ 10 ] = "minecraft:gold_ingot:0",
[ 11 ] = "minecraft:redstone:0",
[ 5 ] = "mekanism:EnrichedAlloy:0",
[ 6 ] = "minecraft:gold_ingot:0",
[ 7 ] = "mekanism:EnrichedAlloy:0",
},
count = 1,
},
[ "mekanism:SpeedUpgrade:0" ] = {
ingredients = {
[ 10 ] = "minecraft:glass:0",
[ 2 ] = "minecraft:glass:0",
[ 5 ] = "mekanism:EnrichedAlloy:0",
[ 6 ] = "mekanism:Dust:2",
[ 7 ] = "mekanism:EnrichedAlloy:0",
},
count = 1,
},
[ "mekanism:ControlCircuit:1" ] = {
ingredients = {
"mekanism:EnrichedAlloy:0",
"mekanism:ControlCircuit:0",
"mekanism:EnrichedAlloy:0",
},
count = 1,
},
[ "mekanism:BasicBlock:8" ] = {
ingredients = {
"bigreactors:ingotmetals:5",
"minecraft:glass:0",
"bigreactors:ingotmetals:5",
[ 9 ] = "bigreactors:ingotmetals:5",
[ 10 ] = "minecraft:glass:0",
[ 11 ] = "bigreactors:ingotmetals:5",
[ 5 ] = "minecraft:glass:0",
[ 6 ] = "mekanism:Ingot:1",
[ 7 ] = "minecraft:glass:0",
},
count = 1,
},
[ "mekanism:EnergyUpgrade:0" ] = {
ingredients = {
[ 10 ] = "minecraft:glass:0",
[ 2 ] = "minecraft:glass:0",
[ 5 ] = "mekanism:EnrichedAlloy:0",
[ 6 ] = "exnihiloadscensio:itemOreGold:2",
[ 7 ] = "mekanism:EnrichedAlloy:0",
},
count = 1,
},
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,244 @@
{
[ "mysticalagriculture:supremium_ingot:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:supremium_essence:0",
[ 2 ] = "mysticalagriculture:supremium_essence:0",
[ 5 ] = "mysticalagriculture:supremium_essence:0",
[ 6 ] = "mysticalagriculture:superium_ingot:0",
[ 7 ] = "mysticalagriculture:supremium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:prudentium_ingot:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:prudentium_essence:0",
[ 2 ] = "mysticalagriculture:prudentium_essence:0",
[ 5 ] = "mysticalagriculture:prudentium_essence:0",
[ 6 ] = "mysticalagriculture:inferium_ingot:0",
[ 7 ] = "mysticalagriculture:prudentium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:supremium_essence:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:superium_essence:0",
[ 2 ] = "mysticalagriculture:superium_essence:0",
[ 5 ] = "mysticalagriculture:superium_essence:0",
[ 6 ] = "mysticalagriculture:infusion_crystal:*",
[ 7 ] = "mysticalagriculture:superium_essence:0",
},
craftingTools = {
[ "mysticalagriculture:infusion_crystal:*" ] = true,
},
maxCount = 1,
count = 1,
},
[ "mysticalagriculture:intermedium_ingot:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:intermedium_essence:0",
[ 2 ] = "mysticalagriculture:intermedium_essence:0",
[ 5 ] = "mysticalagriculture:intermedium_essence:0",
[ 6 ] = "mysticalagriculture:prudentium_ingot:0",
[ 7 ] = "mysticalagriculture:intermedium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:superium_armor_core:0" ] = {
ingredients = {
"mysticalagriculture:superium_essence:0",
"minecraft:diamond_block:0",
"mysticalagriculture:superium_essence:0",
[ 5 ] = "minecraft:emerald:0",
[ 6 ] = "mysticalagriculture:intermedium_armor_core:0",
[ 7 ] = "minecraft:emerald:0",
[ 9 ] = "mysticalagriculture:superium_essence:0",
[ 10 ] = "minecraft:emerald:0",
[ 11 ] = "mysticalagriculture:superium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:intermedium_essence:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:prudentium_essence:0",
[ 2 ] = "mysticalagriculture:prudentium_essence:0",
[ 5 ] = "mysticalagriculture:prudentium_essence:0",
[ 6 ] = "mysticalagriculture:infusion_crystal:*",
[ 7 ] = "mysticalagriculture:prudentium_essence:0",
},
craftingTools = {
[ "mysticalagriculture:infusion_crystal:*" ] = true,
},
maxCount = 1,
count = 1,
},
[ "mysticalagriculture:inferium_ingot:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:inferium_essence:0",
[ 2 ] = "mysticalagriculture:inferium_essence:0",
[ 5 ] = "mysticalagriculture:inferium_essence:0",
[ 6 ] = "mysticalagriculture:base_essence_ingot:0",
[ 7 ] = "mysticalagriculture:inferium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:intermedium_armor_core:0" ] = {
ingredients = {
"mysticalagriculture:intermedium_essence:0",
"minecraft:gold_block:0",
"mysticalagriculture:intermedium_essence:0",
[ 5 ] = "minecraft:diamond:0",
[ 6 ] = "mysticalagriculture:prudentium_armor_core:0",
[ 7 ] = "minecraft:diamond:0",
[ 9 ] = "mysticalagriculture:intermedium_essence:0",
[ 10 ] = "minecraft:diamond:0",
[ 11 ] = "mysticalagriculture:intermedium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:infusion_crystal:0" ] = {
ingredients = {
"mysticalagriculture:prosperity_shard:0",
"mysticalagriculture:inferium_essence:0",
"mysticalagriculture:prosperity_shard:0",
[ 9 ] = "mysticalagriculture:prosperity_shard:0",
[ 10 ] = "mysticalagriculture:inferium_essence:0",
[ 11 ] = "mysticalagriculture:prosperity_shard:0",
[ 5 ] = "mysticalagriculture:inferium_essence:0",
[ 6 ] = "minecraft:diamond:0",
[ 7 ] = "mysticalagriculture:inferium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:superium_essence:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:intermedium_essence:0",
[ 2 ] = "mysticalagriculture:intermedium_essence:0",
[ 5 ] = "mysticalagriculture:intermedium_essence:0",
[ 6 ] = "mysticalagriculture:infusion_crystal:*",
[ 7 ] = "mysticalagriculture:intermedium_essence:0",
},
craftingTools = {
[ "mysticalagriculture:infusion_crystal:*" ] = true,
},
maxCount = 1,
count = 1,
},
[ "mysticalagriculture:supremium_armor_core:0" ] = {
ingredients = {
"mysticalagriculture:supremium_essence:0",
"minecraft:nether_star:0",
"mysticalagriculture:supremium_essence:0",
[ 5 ] = "minecraft:skull:1",
[ 6 ] = "mysticalagriculture:superium_armor_core:0",
[ 7 ] = "minecraft:skull:1",
[ 9 ] = "mysticalagriculture:supremium_essence:0",
[ 10 ] = "minecraft:skull:1",
[ 11 ] = "mysticalagriculture:supremium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:inferium_armor_core:0" ] = {
ingredients = {
"mysticalagriculture:inferium_essence:0",
"minecraft:gold_ingot:0",
"mysticalagriculture:inferium_essence:0",
[ 5 ] = "minecraft:leather:0",
[ 6 ] = "mysticalagriculture:base_essence_ingot:0",
[ 7 ] = "minecraft:leather:0",
[ 9 ] = "mysticalagriculture:inferium_essence:0",
[ 10 ] = "minecraft:leather:0",
[ 11 ] = "mysticalagriculture:inferium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:prudentium_essence:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:inferium_essence:0",
[ 2 ] = "mysticalagriculture:inferium_essence:0",
[ 5 ] = "mysticalagriculture:inferium_essence:0",
[ 6 ] = "mysticalagriculture:infusion_crystal:*",
[ 7 ] = "mysticalagriculture:inferium_essence:0",
},
craftingTools = {
[ "mysticalagriculture:infusion_crystal:*" ] = true,
},
maxCount = 1,
count = 1,
},
[ "mysticalagriculture:base_essence_ingot:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:prosperity_shard:0",
[ 2 ] = "mysticalagriculture:prosperity_shard:0",
[ 5 ] = "mysticalagriculture:prosperity_shard:0",
[ 6 ] = "thermalfoundation:material:136",
[ 7 ] = "mysticalagriculture:prosperity_shard:0",
},
count = 1,
},
[ "mysticalagriculture:superium_ingot:0" ] = {
ingredients = {
[ 10 ] = "mysticalagriculture:superium_essence:0",
[ 2 ] = "mysticalagriculture:superium_essence:0",
[ 5 ] = "mysticalagriculture:superium_essence:0",
[ 6 ] = "mysticalagriculture:intermedium_ingot:0",
[ 7 ] = "mysticalagriculture:superium_essence:0",
},
count = 1,
},
[ "mysticalagriculture:tier2_inferium_seeds:0" ] = {
count = 1,
ingredients = {
"mysticalagriculture:prudentium_essence:0",
"mysticalagriculture:prudentium_essence:0",
"mysticalagriculture:prudentium_essence:0",
[ 9 ] = "mysticalagriculture:prudentium_essence:0",
[ 10 ] = "mysticalagriculture:prudentium_essence:0",
[ 11 ] = "mysticalagriculture:prudentium_essence:0",
[ 5 ] = "mysticalagriculture:prudentium_essence:0",
[ 6 ] = "mysticalagriculture:tier1_inferium_seeds:0",
[ 7 ] = "mysticalagriculture:prudentium_essence:0",
},
},
[ "mysticalagriculture:tier3_inferium_seeds:0" ] = {
count = 1,
ingredients = {
"mysticalagriculture:intermedium_essence:0",
"mysticalagriculture:intermedium_essence:0",
"mysticalagriculture:intermedium_essence:0",
[ 9 ] = "mysticalagriculture:intermedium_essence:0",
[ 10 ] = "mysticalagriculture:intermedium_essence:0",
[ 11 ] = "mysticalagriculture:intermedium_essence:0",
[ 5 ] = "mysticalagriculture:intermedium_essence:0",
[ 6 ] = "mysticalagriculture:tier2_inferium_seeds:0",
[ 7 ] = "mysticalagriculture:intermedium_essence:0",
},
},
[ "mysticalagriculture:tier1_inferium_seeds:0" ] = {
count = 1,
ingredients = {
"mysticalagriculture:inferium_essence:0",
"mysticalagriculture:inferium_essence:0",
"mysticalagriculture:inferium_essence:0",
[ 9 ] = "mysticalagriculture:inferium_essence:0",
[ 10 ] = "mysticalagriculture:inferium_essence:0",
[ 11 ] = "mysticalagriculture:inferium_essence:0",
[ 5 ] = "mysticalagriculture:inferium_essence:0",
[ 6 ] = "minecraft:wheat_seeds:0",
[ 7 ] = "mysticalagriculture:inferium_essence:0",
},
},
[ "mysticalagriculture:prudentium_armor_core:0" ] = {
ingredients = {
"mysticalagriculture:prudentium_essence:0",
"minecraft:lapis_block:0",
"mysticalagriculture:prudentium_essence:0",
[ 5 ] = "minecraft:gold_ingot:0",
[ 6 ] = "mysticalagriculture:inferium_armor_core:0",
[ 7 ] = "minecraft:gold_ingot:0",
[ 9 ] = "mysticalagriculture:prudentium_essence:0",
[ 10 ] = "minecraft:gold_ingot:0",
[ 11 ] = "mysticalagriculture:prudentium_essence:0",
},
count = 1,
},
}

View File

@@ -0,0 +1,28 @@
{
[ "storagedrawers:basicDrawers:0:b85f006d9f6aa0e06184f8931d4e85c1" ] = {
ingredients = {
"minecraft:planks:0",
"minecraft:planks:0",
"minecraft:planks:0",
[ 9 ] = "minecraft:planks:0",
[ 10 ] = "minecraft:planks:0",
[ 11 ] = "minecraft:planks:0",
[ 6 ] = "minecraft:chest:0",
},
count = 1,
},
[ "storagedrawers:upgradeTemplate:0" ] = {
ingredients = {
"minecraft:stick:0",
"minecraft:stick:0",
"minecraft:stick:0",
[ 9 ] = "minecraft:stick:0",
[ 10 ] = "minecraft:stick:0",
[ 11 ] = "minecraft:stick:0",
[ 5 ] = "minecraft:stick:0",
[ 6 ] = "storagedrawers:basicDrawers:0:b85f006d9f6aa0e06184f8931d4e85c1",
[ 7 ] = "minecraft:stick:0",
},
count = 2,
},
}

22
etc/recipes/tconstruct.db Normal file
View File

@@ -0,0 +1,22 @@
{
[ "minecraft:book:0" ] = {
ingredients = {
"minecraft:paper:0",
"minecraft:paper:0",
"minecraft:paper:0",
[ 5 ] = "minecraft:string:0",
[ 6 ] = "tconstruct:pattern:0",
[ 7 ] = "tconstruct:pattern:0",
},
count = 1,
},
[ "tconstruct:pattern:0" ] = {
ingredients = {
"minecraft:planks:0",
"minecraft:stick:0",
[ 5 ] = "minecraft:stick:0",
[ 6 ] = "minecraft:planks:0",
},
count = 4,
},
}