From 271417d9a0aedc4e3105bd2fc203917b894cee58 Mon Sep 17 00:00:00 2001 From: kepler155c Date: Sat, 30 Sep 2017 20:34:10 -0400 Subject: [PATCH] 1.7 fixes --- apis/blocks.lua | 18 +- apis/meAdapter.lua | 160 ++++++++++----- apps/chestManager.lua | 63 ++++-- apps/mwm.lua | 29 ++- apps/storageActivity.lua | 2 +- etc/recipes.db | 412 +++++++++++++++++++++------------------ 6 files changed, 415 insertions(+), 269 deletions(-) diff --git a/apis/blocks.lua b/apis/blocks.lua index 377de7b..2077c5b 100644 --- a/apis/blocks.lua +++ b/apis/blocks.lua @@ -412,16 +412,16 @@ function blockTypeDB:load() { 5, nil, 0, 'north-block' }, { 6, nil, 0, 'east-block' }, { 7, nil, 0, 'west-block' }, - { 8, nil, 0, 'south-block' }, - { 9, nil, 0, 'north-block' }, - { 10, nil, 0, 'east-block' }, - { 11, nil, 0, 'west-block' }, - { 12, nil, 0, 'south-block' }, - { 13, nil, 0, 'north-block' }, - { 14, nil, 0, 'east-block' }, - { 15, nil, 0, 'west-block' }, + { 8, nil, 0, 'south' }, + { 9, nil, 0, 'north' }, + { 10, nil, 0, 'east' }, + { 11, nil, 0, 'west' }, + { 12, nil, 0, 'south' }, + { 13, nil, 0, 'north' }, + { 14, nil, 0, 'east' }, + { 15, nil, 0, 'west' }, }) - blockTypeDB:addTemp('piston', { -- piston placement is broken in 1.7 -- need to add work around + blockTypeDB:addTemp('piston', { { 0, nil, 0, 'piston-down' }, { 1, nil, 0, 'piston-up' }, { 2, nil, 0, 'piston-north' }, diff --git a/apis/meAdapter.lua b/apis/meAdapter.lua index e146196..01478ba 100644 --- a/apis/meAdapter.lua +++ b/apis/meAdapter.lua @@ -1,41 +1,36 @@ local class = require('class') -local Util = require('util') +local itemDB = require('itemDB') local Peripheral = require('peripheral') +local Util = require('util') -local MEProvider = class() +local MEAdapter = class() -function MEProvider:init(args) +function MEAdapter:init(args) local defaults = { items = { }, name = 'ME', + jobList = { }, + direction = 'up', + wrapSide = 'bottom', + auto = false, } Util.merge(self, defaults) Util.merge(self, args) - if self.side then - local mep = peripheral.wrap('bottom') - if mep then - Util.merge(self, mep) - end - else + if self.auto then local mep = Peripheral.getByMethod('getAvailableItems') if mep then Util.merge(self, mep) end + else + local mep = peripheral.wrap(self.wrapSide) + if mep then + Util.merge(self, mep) + end end - - local sides = { - top = 'down', - bottom = 'up', - east = 'west', - west = 'east', - north = 'south', - south = 'north', - } - self.oside = sides[self.direction or self.side] end -function MEProvider:isValid() +function MEAdapter:isValid() return self.getAvailableItems and self.getAvailableItems() end @@ -74,7 +69,7 @@ local function convertItem(item) item.displayName = safeString(item.displayName) end -function MEProvider:refresh() +function MEAdapter:refresh() self.items = self.getAvailableItems('all') for _,v in pairs(self.items) do Util.merge(v, v.item) @@ -83,34 +78,103 @@ function MEProvider:refresh() return self.items end -function MEProvider:listItems() +function MEAdapter:listItems() self:refresh() return self.items end -function MEProvider:getItemInfo(name, damage) - - for key,item in pairs(self.items) do - if item.name == name and item.damage == damage then +function MEAdapter:getItemInfo(item) + for key,i in pairs(self.items) do + if item.name == i.name and item.damage == i.damage and item.nbtHash == i.nbtHash then return item end end end - -function MEProvider:craft(name, damage, count) + +function MEAdapter:isCPUAvailable() + local cpus = self.getCraftingCPUs() or { } + local available = false + + for cpu,v in pairs(cpus) do + if not v.busy then + available = true + elseif not self.jobList[cpu] then -- something else is crafting something (don't know what) + return false -- return false since we are in an unknown state + end + end + return available +end + +function MEAdapter:craft(item, count) + + if not self:isCPUAvailable() then + return false + end self:refresh() - local item = self:getItemInfo(name, damage) - + local item = self:getItemInfo(item) if item and item.is_craftable then - self.requestCrafting({ id = name, dmg = damage }, count) - return true + local cpus = self.getCraftingCPUs() or { } + for cpu,v in pairs(cpus) do + if not v.busy then + self.requestCrafting({ + id = item.name, + dmg = item.damage, + nbt_hash = item.nbtHash, + }, + qty or 1, + cpu + ) + + os.sleep(0) -- tell it to craft, yet it doesn't show busy - try waiting a cycle... + cpus = self.getCraftingCPUs() or { } + if not cpus[cpu].busy then + -- print('sleeping again') + os.sleep(.1) -- sigh + cpus = self.getCraftingCPUs() or { } + end + + -- not working :( + if cpus[cpu].busy then + self.jobList[cpu] = { + name = item.name, + damage = item.damage, + nbtHash = item.nbtHash, + count = count, + } + return true + end + break -- only need to try the first available cpu + end + end + return false end end -function MEProvider:craftItems(items) +function MEAdapter:getJobList() + local cpus = self.getCraftingCPUs() or { } + for cpu,v in pairs(cpus) do + if not v.busy then + self.jobList[cpu] = nil + end + end + + return self.jobList +end + +function MEAdapter:isCrafting(item) + for _,v in pairs(self:getJobList()) do + if v.name == item.name and + v.damage == item.damage and + v.nbtHash == item.nbtHash then + return true + end + end +end + +function MEAdapter:craftItems(items) local cpus = self.getCraftingCPUs() or { } local count = 0 @@ -130,28 +194,36 @@ function MEProvider:craftItems(items) end end -function MEProvider:provide(item, count, slot) +function MEAdapter:provide(item, count, slot, direction) return pcall(function() - self.exportItem({ - id = item.name, - dmg = item.damage - }, self.oside, count, slot) + while count > 0 do + local qty = math.min(count, 64) + local s, m = self.exportItem({ + id = item.name, + dmg = item.damage + }, direction or self.direction, qty, slot) + + if not s or s.size ~= qty then + break + end + count = count - 64 + end end) end -function MEProvider:insert(slot, count) - local s, m = pcall(function() self.pullItem(self.oside, slot, count) end) +function MEAdapter:insert(slot, count) + local s, m = pcall(function() self.pullItem(self.direction, slot, count) end) if not s and m then - print('MEProvider:pullItem') + print('MEAdapter:pullItem') print(m) sleep(1) - s, m = pcall(function() self.pullItem(self.oside, slot, count) end) + s, m = pcall(function() self.pullItem(self.direction, slot, count) end) if not s and m then - print('MEProvider:pullItem') + print('MEAdapter:pullItem') print(m) read() end end end -return MEProvider +return MEAdapter diff --git a/apps/chestManager.lua b/apps/chestManager.lua index dc6dd50..daa5be2 100644 --- a/apps/chestManager.lua +++ b/apps/chestManager.lua @@ -5,6 +5,7 @@ local Config = require('config') local Craft = require('turtle.craft') local Event = require('event') local itemDB = require('itemDB') +local MEAdapater = require('meAdapter') local Peripheral = require('peripheral') local RefinedAdapter = require('refinedAdapter') local Terminal = require('terminal') @@ -21,20 +22,42 @@ multishell.setTitle(multishell.getCurrent(), 'Resource Manager') local config = { trashDirection = 'up', -- trash /chest in relation to chest inventoryDirection = { direction = 'north', wrapSide = 'back' }, - chestDirection = { direction = 'down', wrapSide = 'top' }, + chestDirection = { direction = 'down', wrapSide = 'top' }, } Config.load('chestManager', config) -local controller = RefinedAdapter() -if not controller:isValid() then --- error('Refined storage controller not found') - controller = nil -end - ----------------------------------------------------------------------- FIX ME local inventoryAdapter = ChestAdapter(config.inventoryDirection) local turtleChestAdapter = ChestAdapter(config.chestDirection) +local duckAntenna + +local controller = RefinedAdapter() +if not controller:isValid() then + controller = MEAdapater(config.inventoryDirection) + if not controller:isValid() then + controller = nil + else + inventoryAdapter = controller -- ME functions as inventory and crafting + end +end + +if device.workbench then + + local oppositeSide = { + [ 'left' ] = 'right', + [ 'right' ] = 'left', + } + + local duckAntennaSide = oppositeSide[device.workbench.side] + duckAntenna = peripheral.wrap(duckAntennaSide) + if not duckAntenna or not duckAntenna.getAllStacks then + duckAntenna = nil + end +end + +local canCraft = not not duckAntenna or turtleChestAdapter:isValid() + +---------------------------------------------------------------------- FIX ME local RESOURCE_FILE = 'usr/config/resources.db' local RECIPES_FILE = 'usr/etc/recipes.db' @@ -194,7 +217,7 @@ end local function craftItem(recipe, items, originalItem, craftList, count) - if craftingPaused or not device.workbench or not isGridClear() then + if craftingPaused or not canCraft or not isGridClear() then return end @@ -315,7 +338,7 @@ local function getAutocraftItems() for _,res in pairs(resources) do if res.auto then - res.count = 4 -- this could be higher to increase autocrafting speed + res.count = 64 -- this could be higher to increase autocrafting speed local key = uniqueKey(res) craftList[key] = res end @@ -361,7 +384,7 @@ local function watchResources(items) end if res.limit and item.count > res.limit then - inventoryAdapter:provide( + local s, m = inventoryAdapter:provide( { name = item.name, damage = item.damage }, item.count - res.limit, nil, @@ -587,8 +610,6 @@ local listingPage = UI.Page { sortColumn = 'displayName', }, statusBar = UI.StatusBar { - --backgroundColor = colors.gray, - width = UI.term.width, filterText = UI.Text { x = 2, value = 'Filter', @@ -720,6 +741,20 @@ function listingPage:applyFilter() end local function getTurtleInventory() + + if duckAntenna then + local list = duckAntenna.getAllStacks(false) + for k,v in pairs(list) do + v.name = v.id + v.damage = v.dmg + v.displayName = v.display_name + v.count = v.qty + v.maxDamage = v.max_dmg + v.maxCount = v.max_size + end + return list + end + local inventory = { } for i = 1,16 do local qty = turtle.getItemCount(i) @@ -747,7 +782,7 @@ local function learnRecipe(page) local ingredients = getTurtleInventory() if ingredients then turtle.select(1) - if device.workbench and turtle.craft() then + if canCraft and turtle.craft() then recipe = getTurtleInventory() if recipe and recipe[1] then clearGrid() diff --git a/apps/mwm.lua b/apps/mwm.lua index 5b0dee1..d9f350f 100644 --- a/apps/mwm.lua +++ b/apps/mwm.lua @@ -14,6 +14,7 @@ local processes = { } local parentTerm = term.current() local configFile = args[1] or syntax() local defaultEnv = Util.shallowCopy(getfenv(1)) +local running local monitor local exitSession @@ -170,16 +171,26 @@ end function Process:drawSizers(showSizers) + local sizeChars = { + '\135', '\139', '\141', '\142' + } + + if Util.getVersion() < 1.8 then + sizeChars = { + '#', '#', '#', '#' + } + end + self.showSizers = showSizers self.container.setBackgroundColor(colors.black) self.container.setTextColor(colors.white) if self.showSizers then - write(self.container, 1, 1, '\135') - write(self.container, self.width, 1, '\139') - write(self.container, 1, self.height, '\141') - write(self.container, self.width, self.height, '\142') + write(self.container, 1, 1, sizeChars[1]) + write(self.container, self.width, 1, sizeChars[2]) + write(self.container, 1, self.height, sizeChars[3]) + write(self.container, self.width, self.height, sizeChars[4]) self.container.setTextColor(colors.yellow) write(self.container, 1, 3, '+') @@ -250,7 +261,11 @@ function Process:resume(event, ...) if not self.filter or self.filter == event or event == "terminate" then term.redirect(self.terminal) + local previous = running + running = self -- stupid shell set title local ok, result = coroutine.resume(self.co, event, ...) + running = previous + self.terminal = term.current() if ok then self.filter = result @@ -269,7 +284,7 @@ function defaultEnv.multishell.getFocus() end function defaultEnv.multishell.setFocus(uid) - local process, key = Util.find(processes, 'uid', uid) + local process = Util.find(processes, 'uid', uid) if process then if processes[#processes] ~= process then @@ -296,8 +311,8 @@ function defaultEnv.multishell.setTitle(uid, title) end function defaultEnv.multishell.getCurrent() - if #processes > 0 then - return processes[#processes].uid + if running then + return running.uid end end diff --git a/apps/storageActivity.lua b/apps/storageActivity.lua index 719a1a6..11346bc 100644 --- a/apps/storageActivity.lua +++ b/apps/storageActivity.lua @@ -9,7 +9,7 @@ local Util = require('util') local storage = RefinedAdapter() if not storage:isValid() then - storage = MEAdapter() + storage = MEAdapter({ auto = true }) if not storage:isValid() then storage = ChestAdapter() end diff --git a/etc/recipes.db b/etc/recipes.db index efc7ba0..5330231 100644 --- a/etc/recipes.db +++ b/etc/recipes.db @@ -159,17 +159,6 @@ [ 7 ] = "minecraft:stained_glass:8", }, }, - [ "minecraft:stained_glass_pane:9" ] = { - count = 16, - ingredients = { - "minecraft:stained_glass:9", - "minecraft:stained_glass:9", - "minecraft:stained_glass:9", - [ 5 ] = "minecraft:stained_glass:9", - [ 6 ] = "minecraft:stained_glass:9", - [ 7 ] = "minecraft:stained_glass:9", - }, - }, [ "minecraft:wooden_slab:2" ] = { count = 6, ingredients = { @@ -192,6 +181,13 @@ [ 7 ] = "minecraft:redstone:0", }, }, + [ "minecraft:light_weighted_pressure_plate:0" ] = { + count = 1, + ingredients = { + "minecraft:gold_ingot:0", + "minecraft:gold_ingot:0", + }, + }, [ "minecraft:quartz_block:1" ] = { count = 1, ingredients = { @@ -199,11 +195,15 @@ [ 6 ] = "minecraft:stone_slab:7", }, }, - [ "minecraft:light_weighted_pressure_plate:0" ] = { - count = 1, + [ "minecraft:stained_glass_pane:9" ] = { + count = 16, ingredients = { - "minecraft:gold_ingot:0", - "minecraft:gold_ingot:0", + "minecraft:stained_glass:9", + "minecraft:stained_glass:9", + "minecraft:stained_glass:9", + [ 5 ] = "minecraft:stained_glass:9", + [ 6 ] = "minecraft:stained_glass:9", + [ 7 ] = "minecraft:stained_glass:9", }, }, [ "minecraft:dye:11" ] = { @@ -234,15 +234,12 @@ [ 6 ] = "minecraft:end_stone:0", }, }, - [ "minecraft:dark_oak_fence_gate:0" ] = { - count = 1, + [ "minecraft:wooden_slab:0" ] = { + count = 6, ingredients = { - "minecraft:stick:0", - "minecraft:planks:5", - "minecraft:stick:0", - [ 5 ] = "minecraft:stick:0", - [ 6 ] = "minecraft:planks:5", - [ 7 ] = "minecraft:stick:0", + [ 5 ] = "minecraft:planks:0", + [ 6 ] = "minecraft:planks:0", + [ 7 ] = "minecraft:planks:0", }, }, [ "minecraft:stonebrick:3" ] = { @@ -261,12 +258,15 @@ [ 6 ] = "minecraft:netherbrick:0", }, }, - [ "minecraft:wooden_slab:0" ] = { - count = 6, + [ "minecraft:dark_oak_fence_gate:0" ] = { + count = 1, ingredients = { - [ 5 ] = "minecraft:planks:0", - [ 6 ] = "minecraft:planks:0", - [ 7 ] = "minecraft:planks:0", + "minecraft:stick:0", + "minecraft:planks:5", + "minecraft:stick:0", + [ 5 ] = "minecraft:stick:0", + [ 6 ] = "minecraft:planks:5", + [ 7 ] = "minecraft:stick:0", }, }, [ "minecraft:wooden_slab:5" ] = { @@ -321,6 +321,13 @@ [ 7 ] = "minecraft:brick_block:0", }, }, + [ "minecraft:carpet:1" ] = { + count = 3, + ingredients = { + "minecraft:wool:1", + "minecraft:wool:1", + }, + }, [ "minecraft:cobblestone_wall:0" ] = { count = 6, ingredients = { @@ -426,15 +433,11 @@ [ 6 ] = "minecraft:stick:0", }, }, - [ "minecraft:jungle_fence_gate:0" ] = { + [ "minecraft:wool:2" ] = { count = 1, ingredients = { - "minecraft:stick:0", - "minecraft:planks:3", - "minecraft:stick:0", - [ 5 ] = "minecraft:stick:0", - [ 6 ] = "minecraft:planks:3", - [ 7 ] = "minecraft:stick:0", + [ 5 ] = "minecraft:dye:13", + [ 6 ] = "minecraft:wool:0", }, }, [ "minecraft:lapis_block:0" ] = { @@ -451,13 +454,6 @@ [ 7 ] = "minecraft:dye:4", }, }, - [ "minecraft:wool:2" ] = { - count = 1, - ingredients = { - [ 5 ] = "minecraft:dye:13", - [ 6 ] = "minecraft:wool:0", - }, - }, [ "minecraft:wool:8" ] = { count = 1, ingredients = { @@ -465,6 +461,13 @@ [ 6 ] = "minecraft:dye:7", }, }, + [ "minecraft:wool:4" ] = { + count = 1, + ingredients = { + [ 5 ] = "minecraft:dye:11", + [ 6 ] = "minecraft:wool:0", + }, + }, [ "minecraft:carpet:12" ] = { count = 3, ingredients = { @@ -484,13 +487,6 @@ [ 6 ] = "minecraft:wool:15", }, }, - [ "minecraft:carpet:8" ] = { - count = 3, - ingredients = { - [ 5 ] = "minecraft:wool:8", - [ 6 ] = "minecraft:wool:8", - }, - }, [ "minecraft:red_sandstone:2" ] = { count = 4, ingredients = { @@ -500,6 +496,13 @@ [ 6 ] = "minecraft:red_sandstone:0", }, }, + [ "minecraft:carpet:8" ] = { + count = 3, + ingredients = { + [ 5 ] = "minecraft:wool:8", + [ 6 ] = "minecraft:wool:8", + }, + }, [ "minecraft:birch_stairs:0" ] = { count = 8, ingredients = { @@ -511,13 +514,6 @@ [ 6 ] = "minecraft:planks:2", }, }, - [ "minecraft:wool:4" ] = { - count = 1, - ingredients = { - [ 5 ] = "minecraft:dye:11", - [ 6 ] = "minecraft:wool:0", - }, - }, [ "minecraft:gold_block:0" ] = { count = 63, ingredients = { @@ -532,6 +528,13 @@ [ 7 ] = "minecraft:gold_block:0", }, }, + [ "minecraft:carpet:10" ] = { + count = 3, + ingredients = { + [ 5 ] = "minecraft:wool:10", + [ 6 ] = "minecraft:wool:10", + }, + }, [ "minecraft:stone:5" ] = { count = 2, ingredients = { @@ -539,11 +542,15 @@ "minecraft:cobblestone:0", }, }, - [ "minecraft:carpet:10" ] = { - count = 3, + [ "minecraft:jungle_fence_gate:0" ] = { + count = 1, ingredients = { - [ 5 ] = "minecraft:wool:10", - [ 6 ] = "minecraft:wool:10", + "minecraft:stick:0", + "minecraft:planks:3", + "minecraft:stick:0", + [ 5 ] = "minecraft:stick:0", + [ 6 ] = "minecraft:planks:3", + [ 7 ] = "minecraft:stick:0", }, }, [ "minecraft:noteblock:0" ] = { @@ -654,6 +661,20 @@ [ 7 ] = "minecraft:stained_glass:6", }, }, + [ "minecraft:sea_lantern:0" ] = { + count = 1, + ingredients = { + "minecraft:prismarine_shard:0", + "minecraft:prismarine_crystals:0", + "minecraft:prismarine_shard:0", + [ 9 ] = "minecraft:prismarine_shard:0", + [ 10 ] = "minecraft:prismarine_crystals:0", + [ 11 ] = "minecraft:prismarine_shard:0", + [ 5 ] = "minecraft:prismarine_crystals:0", + [ 6 ] = "minecraft:prismarine_crystals:0", + [ 7 ] = "minecraft:prismarine_crystals:0", + }, + }, [ "minecraft:spruce_fence_gate:0" ] = { count = 1, ingredients = { @@ -665,13 +686,6 @@ [ 7 ] = "minecraft:stick:0", }, }, - [ "minecraft:wool:6" ] = { - count = 1, - ingredients = { - [ 5 ] = "minecraft:wool:0", - [ 6 ] = "minecraft:dye:9", - }, - }, [ "minecraft:quartz_block:2" ] = { count = 2, ingredients = { @@ -687,26 +701,19 @@ [ 7 ] = "minecraft:planks:4", }, }, + [ "minecraft:wool:6" ] = { + count = 1, + ingredients = { + [ 5 ] = "minecraft:wool:0", + [ 6 ] = "minecraft:dye:9", + }, + }, [ "minecraft:wooden_button:0" ] = { count = 1, ingredients = { [ 6 ] = "minecraft:planks:0", }, }, - [ "minecraft:sea_lantern:0" ] = { - count = 1, - ingredients = { - "minecraft:prismarine_shard:0", - "minecraft:prismarine_crystals:0", - "minecraft:prismarine_shard:0", - [ 9 ] = "minecraft:prismarine_shard:0", - [ 10 ] = "minecraft:prismarine_crystals:0", - [ 11 ] = "minecraft:prismarine_shard:0", - [ 5 ] = "minecraft:prismarine_crystals:0", - [ 6 ] = "minecraft:prismarine_crystals:0", - [ 7 ] = "minecraft:prismarine_crystals:0", - }, - }, [ "minecraft:stone:4" ] = { count = 4, ingredients = { @@ -716,6 +723,14 @@ [ 6 ] = "minecraft:stone:3", }, }, + [ "minecraft:purpur_slab:0" ] = { + count = 6, + ingredients = { + "minecraft:purpur_block:0", + "minecraft:purpur_block:0", + "minecraft:purpur_block:0", + }, + }, [ "minecraft:lever:0" ] = { count = 1, ingredients = { @@ -771,15 +786,13 @@ [ 7 ] = "minecraft:dye:15", }, }, - [ "minecraft:iron_door:0" ] = { - count = 3, + [ "minecraft:brick_block:0" ] = { + count = 1, ingredients = { - "minecraft:iron_ingot:0", - "minecraft:iron_ingot:0", - [ 9 ] = "minecraft:iron_ingot:0", - [ 10 ] = "minecraft:iron_ingot:0", - [ 5 ] = "minecraft:iron_ingot:0", - [ 6 ] = "minecraft:iron_ingot:0", + "minecraft:brick:0", + "minecraft:brick:0", + [ 5 ] = "minecraft:brick:0", + [ 6 ] = "minecraft:brick:0", }, }, [ "minecraft:carpet:2" ] = { @@ -800,6 +813,17 @@ [ 6 ] = "minecraft:stonebrick:0", }, }, + [ "minecraft:iron_door:0" ] = { + count = 3, + ingredients = { + "minecraft:iron_ingot:0", + "minecraft:iron_ingot:0", + [ 9 ] = "minecraft:iron_ingot:0", + [ 10 ] = "minecraft:iron_ingot:0", + [ 5 ] = "minecraft:iron_ingot:0", + [ 6 ] = "minecraft:iron_ingot:0", + }, + }, [ "minecraft:stained_glass:6" ] = { count = 8, ingredients = { @@ -828,15 +852,6 @@ [ 7 ] = "minecraft:cobblestone:0", }, }, - [ "minecraft:brick_block:0" ] = { - count = 1, - ingredients = { - "minecraft:brick:0", - "minecraft:brick:0", - [ 5 ] = "minecraft:brick:0", - [ 6 ] = "minecraft:brick:0", - }, - }, [ "minecraft:planks:0" ] = { count = 4, ingredients = { @@ -949,13 +964,6 @@ [ 7 ] = "minecraft:planks:3", }, }, - [ "minecraft:carpet:6" ] = { - count = 3, - ingredients = { - [ 5 ] = "minecraft:wool:6", - [ 6 ] = "minecraft:wool:6", - }, - }, [ "minecraft:paper:0" ] = { count = 3, ingredients = { @@ -964,6 +972,13 @@ "minecraft:reeds:0", }, }, + [ "minecraft:carpet:6" ] = { + count = 3, + ingredients = { + [ 5 ] = "minecraft:wool:6", + [ 6 ] = "minecraft:wool:6", + }, + }, [ "minecraft:birch_fence_gate:0" ] = { count = 1, ingredients = { @@ -1094,6 +1109,17 @@ [ 7 ] = "minecraft:planks:1", }, }, + [ "minecraft:bow:0" ] = { + count = 1, + ingredients = { + "minecraft:string:0", + "minecraft:stick:0", + [ 7 ] = "minecraft:stick:0", + [ 9 ] = "minecraft:string:0", + [ 10 ] = "minecraft:stick:0", + [ 5 ] = "minecraft:string:0", + }, + }, [ "minecraft:stained_glass:15" ] = { count = 8, ingredients = { @@ -1115,28 +1141,17 @@ [ 6 ] = "minecraft:stone_slab:1", }, }, - [ "minecraft:wooden_pressure_plate:0" ] = { - count = 1, - ingredients = { - [ 5 ] = "minecraft:planks:0", - [ 6 ] = "minecraft:planks:0", - }, - }, [ "minecraft:planks:3" ] = { count = 4, ingredients = { [ 6 ] = "minecraft:log:3", }, }, - [ "minecraft:bow:0" ] = { + [ "minecraft:wooden_pressure_plate:0" ] = { count = 1, ingredients = { - "minecraft:string:0", - "minecraft:stick:0", - [ 7 ] = "minecraft:stick:0", - [ 9 ] = "minecraft:string:0", - [ 10 ] = "minecraft:stick:0", - [ 5 ] = "minecraft:string:0", + [ 5 ] = "minecraft:planks:0", + [ 6 ] = "minecraft:planks:0", }, }, [ "minecraft:wooden_door:0" ] = { @@ -1182,6 +1197,12 @@ [ 6 ] = "minecraft:wool:5", }, }, + [ "minecraft:planks:1" ] = { + count = 4, + ingredients = { + [ 6 ] = "minecraft:log:1", + }, + }, [ "minecraft:enchanting_table:0" ] = { count = 1, ingredients = { @@ -1194,12 +1215,6 @@ [ 9 ] = "minecraft:obsidian:0", }, }, - [ "minecraft:planks:1" ] = { - count = 4, - ingredients = { - [ 6 ] = "minecraft:log:1", - }, - }, [ "minecraft:wool:13" ] = { count = 1, ingredients = { @@ -1423,15 +1438,15 @@ [ 7 ] = "minecraft:hardened_clay:0", }, }, - [ "minecraft:quartz_stairs:0" ] = { + [ "minecraft:acacia_stairs:0" ] = { count = 8, ingredients = { - "minecraft:quartz_block:0", - [ 9 ] = "minecraft:quartz_block:0", - [ 10 ] = "minecraft:quartz_block:0", - [ 11 ] = "minecraft:quartz_block:0", - [ 5 ] = "minecraft:quartz_block:0", - [ 6 ] = "minecraft:quartz_block:0", + "minecraft:planks:4", + [ 9 ] = "minecraft:planks:4", + [ 10 ] = "minecraft:planks:4", + [ 11 ] = "minecraft:planks:4", + [ 5 ] = "minecraft:planks:4", + [ 6 ] = "minecraft:planks:4", }, }, [ "minecraft:stone_slab:7" ] = { @@ -1442,15 +1457,15 @@ [ 7 ] = "minecraft:quartz_block:0", }, }, - [ "minecraft:acacia_stairs:0" ] = { + [ "minecraft:quartz_stairs:0" ] = { count = 8, ingredients = { - "minecraft:planks:4", - [ 9 ] = "minecraft:planks:4", - [ 10 ] = "minecraft:planks:4", - [ 11 ] = "minecraft:planks:4", - [ 5 ] = "minecraft:planks:4", - [ 6 ] = "minecraft:planks:4", + "minecraft:quartz_block:0", + [ 9 ] = "minecraft:quartz_block:0", + [ 10 ] = "minecraft:quartz_block:0", + [ 11 ] = "minecraft:quartz_block:0", + [ 5 ] = "minecraft:quartz_block:0", + [ 6 ] = "minecraft:quartz_block:0", }, }, [ "minecraft:dye:7" ] = { @@ -1722,18 +1737,11 @@ [ 7 ] = "minecraft:glass:0", }, }, - [ "minecraft:stained_glass:13" ] = { - count = 8, + [ "minecraft:wool:15" ] = { + count = 1, ingredients = { - "minecraft:glass:0", - "minecraft:glass:0", - "minecraft:glass:0", - [ 9 ] = "minecraft:glass:0", - [ 10 ] = "minecraft:glass:0", - [ 11 ] = "minecraft:glass:0", - [ 5 ] = "minecraft:glass:0", - [ 6 ] = "minecraft:dye:2", - [ 7 ] = "minecraft:glass:0", + [ 5 ] = "minecraft:dye:0", + [ 6 ] = "minecraft:wool:0", }, }, [ "minecraft:stained_hardened_clay:9" ] = { @@ -1797,11 +1805,15 @@ [ 7 ] = "minecraft:glass:0", }, }, - [ "minecraft:trapped_chest:0" ] = { - count = 1, + [ "minecraft:jungle_door:0" ] = { + count = 3, ingredients = { - [ 5 ] = "minecraft:chest:0", - [ 6 ] = "minecraft:tripwire_hook:0", + "minecraft:planks:3", + "minecraft:planks:3", + [ 9 ] = "minecraft:planks:3", + [ 10 ] = "minecraft:planks:3", + [ 5 ] = "minecraft:planks:3", + [ 6 ] = "minecraft:planks:3", }, }, [ "minecraft:dye:9" ] = { @@ -1822,22 +1834,25 @@ [ 7 ] = "minecraft:stained_glass:7", }, }, - [ "minecraft:wool:15" ] = { + [ "minecraft:trapped_chest:0" ] = { count = 1, ingredients = { - [ 5 ] = "minecraft:dye:0", - [ 6 ] = "minecraft:wool:0", + [ 5 ] = "minecraft:chest:0", + [ 6 ] = "minecraft:tripwire_hook:0", }, }, - [ "minecraft:jungle_door:0" ] = { - count = 3, + [ "minecraft:stained_glass:13" ] = { + count = 8, ingredients = { - "minecraft:planks:3", - "minecraft:planks:3", - [ 9 ] = "minecraft:planks:3", - [ 10 ] = "minecraft:planks:3", - [ 5 ] = "minecraft:planks:3", - [ 6 ] = "minecraft:planks:3", + "minecraft:glass:0", + "minecraft:glass:0", + "minecraft:glass:0", + [ 9 ] = "minecraft:glass:0", + [ 10 ] = "minecraft:glass:0", + [ 11 ] = "minecraft:glass:0", + [ 5 ] = "minecraft:glass:0", + [ 6 ] = "minecraft:dye:2", + [ 7 ] = "minecraft:glass:0", }, }, [ "minecraft:carpet:3" ] = { @@ -1858,24 +1873,6 @@ [ 7 ] = "minecraft:stick:0", }, }, - [ "minecraft:anvil:0" ] = { - count = 1, - ingredients = { - "minecraft:iron_block:0", - "minecraft:iron_block:0", - "minecraft:iron_block:0", - [ 9 ] = "minecraft:iron_ingot:0", - [ 10 ] = "minecraft:iron_ingot:0", - [ 11 ] = "minecraft:iron_ingot:0", - [ 6 ] = "minecraft:iron_ingot:0", - }, - }, - [ "minecraft:pumpkin_seeds:0" ] = { - count = 4, - ingredients = { - [ 6 ] = "minecraft:pumpkin:0", - }, - }, [ "minecraft:stained_hardened_clay:0" ] = { count = 8, ingredients = { @@ -1890,6 +1887,24 @@ [ 7 ] = "minecraft:hardened_clay:0", }, }, + [ "minecraft:pumpkin_seeds:0" ] = { + count = 4, + ingredients = { + [ 6 ] = "minecraft:pumpkin:0", + }, + }, + [ "minecraft:anvil:0" ] = { + count = 1, + ingredients = { + "minecraft:iron_block:0", + "minecraft:iron_block:0", + "minecraft:iron_block:0", + [ 9 ] = "minecraft:iron_ingot:0", + [ 10 ] = "minecraft:iron_ingot:0", + [ 11 ] = "minecraft:iron_ingot:0", + [ 6 ] = "minecraft:iron_ingot:0", + }, + }, [ "minecraft:dye:10" ] = { count = 2, ingredients = { @@ -1972,6 +1987,17 @@ [ 7 ] = "minecraft:glass:0", }, }, + [ "minecraft:birch_door:0" ] = { + count = 3, + ingredients = { + "minecraft:planks:2", + "minecraft:planks:2", + [ 9 ] = "minecraft:planks:2", + [ 10 ] = "minecraft:planks:2", + [ 5 ] = "minecraft:planks:2", + [ 6 ] = "minecraft:planks:2", + }, + }, [ "minecraft:dye:15" ] = { count = 3, ingredients = { @@ -1987,17 +2013,6 @@ [ 6 ] = "minecraft:string:0", }, }, - [ "minecraft:birch_door:0" ] = { - count = 3, - ingredients = { - "minecraft:planks:2", - "minecraft:planks:2", - [ 9 ] = "minecraft:planks:2", - [ 10 ] = "minecraft:planks:2", - [ 5 ] = "minecraft:planks:2", - [ 6 ] = "minecraft:planks:2", - }, - }, [ "minecraft:redstone_lamp:0" ] = { count = 1, ingredients = { @@ -2119,6 +2134,15 @@ [ 6 ] = "minecraft:dye:0", }, }, + [ "minecraft:purpur_block:0" ] = { + count = 4, + ingredients = { + "minecraft:chorus_fruit_popped:0", + "minecraft:chorus_fruit_popped:0", + [ 5 ] = "minecraft:chorus_fruit_popped:0", + [ 6 ] = "minecraft:chorus_fruit_popped:0", + }, + }, [ "minecraft:stick:0" ] = { count = 4, ingredients = {