autocrafting improvements
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
local Util = require('util')
|
|
||||||
|
|
||||||
local Adapter = { }
|
local Adapter = { }
|
||||||
|
|
||||||
function Adapter.wrap(args)
|
function Adapter.wrap(args)
|
||||||
@@ -7,43 +5,46 @@ function Adapter.wrap(args)
|
|||||||
--'refinedAdapter',
|
--'refinedAdapter',
|
||||||
'chestAdapter18',
|
'chestAdapter18',
|
||||||
|
|
||||||
|
-- adapters for version 1.7
|
||||||
'meAdapter',
|
'meAdapter',
|
||||||
'chestAdapter',
|
'chestAdapter',
|
||||||
}
|
}
|
||||||
|
|
||||||
if args and args.side and args.facing and not args.direction then
|
|
||||||
args = Util.shallowCopy(args)
|
|
||||||
local horz = { top = 'down', bottom = 'up' }
|
|
||||||
args.direction = horz[args.side]
|
|
||||||
|
|
||||||
if not args.direction then
|
|
||||||
local sides = {
|
|
||||||
front = 0,
|
|
||||||
back = 2,
|
|
||||||
right = 1,
|
|
||||||
left = 3,
|
|
||||||
}
|
|
||||||
-- pretty sure computer/turtle have sides reversed
|
|
||||||
local cards = {
|
|
||||||
east = 0,
|
|
||||||
south = 1,
|
|
||||||
west = 2,
|
|
||||||
north = 3,
|
|
||||||
}
|
|
||||||
local icards = {
|
|
||||||
[ 0 ] = 'west',
|
|
||||||
[ 1 ] = 'north',
|
|
||||||
[ 2 ] = 'east',
|
|
||||||
[ 3 ] = 'south',
|
|
||||||
}
|
|
||||||
args.direction = icards[(cards[args.facing] + sides[args.side]) % 4]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for _,adapterType in ipairs(adapters) do
|
for _,adapterType in ipairs(adapters) do
|
||||||
local adapter = require(adapterType)(args)
|
local adapter = require(adapterType)(args)
|
||||||
|
|
||||||
if adapter:isValid() then
|
if adapter:isValid() then
|
||||||
|
|
||||||
|
-- figure out which direction to push/pull items from an inventory
|
||||||
|
-- based on the side the inventory is attached and which way the
|
||||||
|
-- turtle/computer is facing
|
||||||
|
if args and args.facing and adapter.side and not adapter.direction then
|
||||||
|
local horz = { top = 'down', bottom = 'up' }
|
||||||
|
adapter.direction = horz[adapter.side]
|
||||||
|
|
||||||
|
if not adapter.direction then
|
||||||
|
local sides = {
|
||||||
|
front = 0,
|
||||||
|
right = 1,
|
||||||
|
back = 2,
|
||||||
|
left = 3,
|
||||||
|
}
|
||||||
|
-- pretty sure computer/turtle have sides reversed
|
||||||
|
local cards = {
|
||||||
|
east = 0,
|
||||||
|
south = 1,
|
||||||
|
west = 2,
|
||||||
|
north = 3,
|
||||||
|
}
|
||||||
|
local icards = {
|
||||||
|
[ 0 ] = 'west',
|
||||||
|
[ 1 ] = 'north',
|
||||||
|
[ 2 ] = 'east',
|
||||||
|
[ 3 ] = 'south',
|
||||||
|
}
|
||||||
|
adapter.direction = icards[(cards[args.facing] + sides[adapter.side]) % 4]
|
||||||
|
end
|
||||||
|
end
|
||||||
return adapter
|
return adapter
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,23 +1,33 @@
|
|||||||
local JSON = require('json')
|
local JSON = require('json')
|
||||||
local TableDB = require('tableDB')
|
local TableDB = require('tableDB')
|
||||||
|
|
||||||
|
local fs = _G.fs
|
||||||
|
|
||||||
|
local NAME_DIR = '/usr/etc/names'
|
||||||
|
|
||||||
local nameDB = TableDB()
|
local nameDB = TableDB()
|
||||||
|
|
||||||
function nameDB:load()
|
function nameDB:load()
|
||||||
|
|
||||||
local blocks = JSON.decodeFromFile('usr/etc/blocks.json')
|
local files = fs.list(NAME_DIR)
|
||||||
|
table.sort(files)
|
||||||
|
|
||||||
if not blocks then
|
for _,file in ipairs(files) do
|
||||||
error('Unable to read usr/etc/blocks.json')
|
local mod = file:match('(%S+).json')
|
||||||
end
|
local blocks = JSON.decodeFromFile(fs.combine(NAME_DIR, file))
|
||||||
|
|
||||||
for strId, block in pairs(blocks) do
|
if not blocks then
|
||||||
strId = 'minecraft:' .. strId
|
error('Unable to read ' .. fs.combine(NAME_DIR, file))
|
||||||
if type(block.name) == 'string' then
|
end
|
||||||
self.data[strId .. ':0'] = block.name
|
|
||||||
else
|
for strId, block in pairs(blocks) do
|
||||||
for nid,name in pairs(block.name) do
|
strId = string.format('%s:%s', mod, strId)
|
||||||
self.data[strId .. ':' .. (nid-1)] = name
|
if type(block.name) == 'string' then
|
||||||
|
self.data[strId .. ':0'] = block.name
|
||||||
|
else
|
||||||
|
for nid,name in pairs(block.name) do
|
||||||
|
self.data[strId .. ':' .. (nid-1)] = name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ local turtle = _G.turtle
|
|||||||
multishell.setTitle(multishell.getCurrent(), 'Resource Manager')
|
multishell.setTitle(multishell.getCurrent(), 'Resource Manager')
|
||||||
|
|
||||||
local config = {
|
local config = {
|
||||||
computerFacing = 'north',
|
computerFacing = 'north', -- direction turtle is facing
|
||||||
|
|
||||||
inventory = 'back',
|
inventory = 'top',
|
||||||
craftingChest = 'top',
|
craftingChest = 'bottom',
|
||||||
controller = 'none',
|
controller = 'none',
|
||||||
|
|
||||||
trashDirection = 'up', -- trash /chest in relation to chest
|
trashDirection = 'up', -- trash/chest in relation to inventory
|
||||||
monitor = 'type/monitor',
|
monitor = 'type/monitor',
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +49,6 @@ if device.workbench then
|
|||||||
[ 'left' ] = 'right',
|
[ 'left' ] = 'right',
|
||||||
[ 'right' ] = 'left',
|
[ 'right' ] = 'left',
|
||||||
}
|
}
|
||||||
|
|
||||||
local duckAntennaSide = oppositeSide[device.workbench.side]
|
local duckAntennaSide = oppositeSide[device.workbench.side]
|
||||||
duckAntenna = peripheral.wrap(duckAntennaSide)
|
duckAntenna = peripheral.wrap(duckAntennaSide)
|
||||||
if not duckAntenna or not duckAntenna.getAllStacks then
|
if not duckAntenna or not duckAntenna.getAllStacks then
|
||||||
@@ -57,11 +56,16 @@ if device.workbench then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local STATUS_INFO = 'info'
|
||||||
|
local STATUS_WARNING = 'warning'
|
||||||
|
local STATUS_ERROR = 'error'
|
||||||
|
|
||||||
local RESOURCE_FILE = 'usr/config/resources.db'
|
local RESOURCE_FILE = 'usr/config/resources.db'
|
||||||
local RECIPES_FILE = 'usr/config/recipes.db'
|
local RECIPES_FILE = 'usr/config/recipes.db'
|
||||||
|
|
||||||
local craftingPaused = false
|
local craftingPaused = false
|
||||||
local canCraft = not not duckAntenna or turtleChestAdapter
|
local canCraft = not not (turtle and turtle.craft)
|
||||||
|
local canLearn = not not duckAntenna or not not turtleChestAdapter
|
||||||
local userRecipes = Util.readTable(RECIPES_FILE) or { }
|
local userRecipes = Util.readTable(RECIPES_FILE) or { }
|
||||||
local jobList
|
local jobList
|
||||||
local resources
|
local resources
|
||||||
@@ -188,6 +192,7 @@ local function addCraftingRequest(item, craftList, count)
|
|||||||
craftList[key] = request
|
craftList[key] = request
|
||||||
end
|
end
|
||||||
request.count = request.count + count
|
request.count = request.count + count
|
||||||
|
return request
|
||||||
end
|
end
|
||||||
|
|
||||||
local function craftItem(recipe, items, originalItem, craftList, count)
|
local function craftItem(recipe, items, originalItem, craftList, count)
|
||||||
@@ -199,6 +204,7 @@ local function craftItem(recipe, items, originalItem, craftList, count)
|
|||||||
if not isGridClear() then
|
if not isGridClear() then
|
||||||
if not clearGrid() then
|
if not clearGrid() then
|
||||||
originalItem.status = 'Grid obstructed'
|
originalItem.status = 'Grid obstructed'
|
||||||
|
originalItem.statusCode = STATUS_ERROR
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -207,7 +213,7 @@ local function craftItem(recipe, items, originalItem, craftList, count)
|
|||||||
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 = STATUS_WARNING
|
||||||
end
|
end
|
||||||
|
|
||||||
local crafted = 0
|
local crafted = 0
|
||||||
@@ -222,9 +228,15 @@ local function craftItem(recipe, items, originalItem, craftList, count)
|
|||||||
if count > 0 and items then
|
if count > 0 and items then
|
||||||
local ingredients = Craft.getResourceList4(recipe, items, count)
|
local ingredients = Craft.getResourceList4(recipe, items, count)
|
||||||
for _,ingredient in pairs(ingredients) do
|
for _,ingredient in pairs(ingredients) do
|
||||||
--if not ingredient.recipe and ingredient.count < 0 then
|
|
||||||
if ingredient.need > 0 then
|
if ingredient.need > 0 then
|
||||||
addCraftingRequest(ingredient, craftList, ingredient.need)
|
local item = addCraftingRequest(ingredient, craftList, ingredient.need)
|
||||||
|
if Craft.findRecipe(item) then
|
||||||
|
item.status = string.format('%s missing', itemDB:getName(ingredient))
|
||||||
|
item.statusCode = STATUS_WARNING
|
||||||
|
else
|
||||||
|
item.status = 'no recipe'
|
||||||
|
item.statusCode = STATUS_ERROR
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -278,7 +290,6 @@ local function forceCraftItem(inRecipe, items, originalItem, craftList, inCount)
|
|||||||
local c = sumItems(summedItem.recipe, need) -- 4
|
local c = sumItems(summedItem.recipe, need) -- 4
|
||||||
craftable = math.min(craftable, math.floor((used + c) / iqty))
|
craftable = math.min(craftable, math.floor((used + c) / iqty))
|
||||||
summedItem.craftable = summedItem.craftable + c
|
summedItem.craftable = summedItem.craftable + c
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -296,9 +307,14 @@ local function forceCraftItem(inRecipe, items, originalItem, craftList, inCount)
|
|||||||
if count < inCount then
|
if count < inCount then
|
||||||
for _,ingredient in pairs(summed) do
|
for _,ingredient in pairs(summed) do
|
||||||
if ingredient.need > 0 then
|
if ingredient.need > 0 then
|
||||||
addCraftingRequest(ingredient, craftList, ingredient.need)
|
local item = addCraftingRequest(ingredient, craftList, ingredient.need)
|
||||||
originalItem.status = string.format('%s missing', itemDB:getName(ingredient))
|
if Craft.findRecipe(item) then
|
||||||
originalItem.statusCode = 'missing'
|
item.status = string.format('%s missing', itemDB:getName(ingredient))
|
||||||
|
item.statusCode = STATUS_WARNING
|
||||||
|
else
|
||||||
|
item.status = '(no recipe)'
|
||||||
|
item.statusCode = STATUS_ERROR
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -306,43 +322,59 @@ local function forceCraftItem(inRecipe, items, originalItem, craftList, inCount)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function craftItems(craftList, allItems)
|
local function craftItems(craftList, allItems)
|
||||||
for _,key in pairs(Util.keys(craftList)) do
|
|
||||||
local item = craftList[key]
|
-- turtle crafting
|
||||||
local recipe = Craft.recipes[key]
|
if canCraft then
|
||||||
if recipe then
|
for _,key in pairs(Util.keys(craftList)) do
|
||||||
item.status = nil
|
local item = craftList[key]
|
||||||
item.statusCode = nil
|
local recipe = Craft.recipes[key]
|
||||||
if item.forceCrafting then
|
if recipe then
|
||||||
item.crafted = forceCraftItem(recipe, allItems, item, craftList, item.count)
|
item.status = nil
|
||||||
else
|
item.statusCode = nil
|
||||||
item.crafted = craftItem(recipe, allItems, item, craftList, item.count)
|
if item.forceCrafting then
|
||||||
|
item.crafted = forceCraftItem(recipe, allItems, item, craftList, item.count)
|
||||||
|
else
|
||||||
|
item.crafted = craftItem(recipe, allItems, item, craftList, item.count)
|
||||||
|
end
|
||||||
|
allItems = listItems() -- refresh counts
|
||||||
|
if not allItems then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
elseif not controllerAdapter then
|
||||||
|
item.status = '(no recipe)'
|
||||||
|
item.statusCode = STATUS_ERROR
|
||||||
end
|
end
|
||||||
allItems = listItems() -- refresh counts
|
|
||||||
if not allItems then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
elseif item.rsControl then
|
|
||||||
item.status = 'Activated'
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for key,item in pairs(craftList) do
|
-- redstone control
|
||||||
if not Craft.recipes[key] and not item.rsControl then
|
for _,item in pairs(craftList) do
|
||||||
if not controllerAdapter then
|
if item.rsControl then
|
||||||
item.status = '(no recipe)'
|
item.status = '(activated)'
|
||||||
else
|
item.statusCode = STATUS_INFO
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- controller
|
||||||
|
if controllerAdapter then
|
||||||
|
for key,item in pairs(craftList) do
|
||||||
|
if not Craft.recipes[key] and not item.rsControl then
|
||||||
if controllerAdapter:isCrafting(item) then
|
if controllerAdapter:isCrafting(item) then
|
||||||
item.status = '(crafting)'
|
item.status = '(crafting)'
|
||||||
|
item.statusCode = STATUS_INFO
|
||||||
else
|
else
|
||||||
local count = item.count
|
local count = item.count
|
||||||
while count >= 1 do -- try to request smaller quantities until successful
|
while count >= 1 do -- try to request smaller quantities until successful
|
||||||
local s = pcall(function()
|
local s = pcall(function()
|
||||||
item.status = '(no recipe)'
|
item.status = '(no recipe)'
|
||||||
|
item.statusCode = STATUS_ERROR
|
||||||
if not controllerAdapter:craft(item, count) then
|
if not controllerAdapter:craft(item, count) then
|
||||||
item.status = '(missing ingredients)'
|
item.status = '(missing ingredients)'
|
||||||
|
item.statusCode = STATUS_WARNING
|
||||||
error('failed')
|
error('failed')
|
||||||
end
|
end
|
||||||
item.status = '(crafting)'
|
item.status = '(crafting)'
|
||||||
|
item.statusCode = STATUS_INFO
|
||||||
end)
|
end)
|
||||||
if s then
|
if s then
|
||||||
break -- successfully requested crafting
|
break -- successfully requested crafting
|
||||||
@@ -353,6 +385,15 @@ local function craftItems(craftList, allItems)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if not controllerAdapter and not canCraft then
|
||||||
|
for _,item in pairs(craftList) do
|
||||||
|
if not item.rsControl then
|
||||||
|
item.status = 'Invalid setup'
|
||||||
|
item.statusCode = STATUS_INFO
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function jobMonitor()
|
local function jobMonitor()
|
||||||
@@ -395,11 +436,11 @@ local function jobMonitor()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function jobList.grid:getRowTextColor(row, selected)
|
function jobList.grid:getRowTextColor(row, selected)
|
||||||
if row.status == '(no recipe)' then
|
if row.statusCode == STATUS_ERROR then
|
||||||
return colors.red
|
return colors.red
|
||||||
elseif row.statusCode == 'missing' then
|
elseif row.statusCode == STATUS_WARNING then
|
||||||
return colors.yellow
|
return colors.yellow
|
||||||
elseif row.statusCode == 'success' then
|
elseif row.statusCode == STATUS_INFO then
|
||||||
return colors.lime
|
return colors.lime
|
||||||
end
|
end
|
||||||
return UI.Grid:getRowTextColor(row, selected)
|
return UI.Grid:getRowTextColor(row, selected)
|
||||||
@@ -580,12 +621,14 @@ local itemPage = UI.Page {
|
|||||||
},
|
},
|
||||||
help = 'Ignore NBT of item'
|
help = 'Ignore NBT of item'
|
||||||
},
|
},
|
||||||
|
--[[
|
||||||
[6] = UI.Button {
|
[6] = UI.Button {
|
||||||
x = 2, y = -2, width = 10,
|
x = 2, y = -2, width = 10,
|
||||||
formLabel = 'Redstone',
|
formLabel = 'Redstone',
|
||||||
event = 'show_rs',
|
event = 'show_rs',
|
||||||
text = 'Configure',
|
text = 'Configure',
|
||||||
},
|
},
|
||||||
|
]]
|
||||||
infoButton = UI.Button {
|
infoButton = UI.Button {
|
||||||
x = 2, y = -2,
|
x = 2, y = -2,
|
||||||
event = 'show_info',
|
event = 'show_info',
|
||||||
@@ -779,10 +822,10 @@ local listingPage = UI.Page {
|
|||||||
grid = UI.Grid {
|
grid = UI.Grid {
|
||||||
y = 2, ey = -2,
|
y = 2, ey = -2,
|
||||||
columns = {
|
columns = {
|
||||||
{ heading = 'Name', key = 'displayName' , width = 22 },
|
{ heading = 'Name', key = 'displayName' },
|
||||||
{ heading = 'Qty', key = 'count' , width = 5 },
|
{ heading = 'Qty', key = 'count' , width = 4 },
|
||||||
{ heading = 'Min', key = 'low' , width = 4 },
|
{ heading = 'Min', key = 'low' , width = 4 },
|
||||||
{ heading = 'Max', key = 'limit' , width = 4 },
|
{ heading = 'Max', key = 'limit' , width = 4 },
|
||||||
},
|
},
|
||||||
sortColumn = 'displayName',
|
sortColumn = 'displayName',
|
||||||
},
|
},
|
||||||
@@ -802,6 +845,7 @@ local listingPage = UI.Page {
|
|||||||
text = 'A',
|
text = 'A',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
notification = UI.Notification(),
|
||||||
accelerators = {
|
accelerators = {
|
||||||
r = 'refresh',
|
r = 'refresh',
|
||||||
q = 'quit',
|
q = 'quit',
|
||||||
@@ -864,10 +908,18 @@ function listingPage:eventHandler(event)
|
|||||||
self.grid:draw()
|
self.grid:draw()
|
||||||
|
|
||||||
elseif event.type == 'learn' then
|
elseif event.type == 'learn' then
|
||||||
UI:setPage('learn')
|
if canLearn then
|
||||||
|
UI:setPage('learn')
|
||||||
|
else
|
||||||
|
self.notification:error('Missing a crafting chest\nCheck configuration')
|
||||||
|
end
|
||||||
|
|
||||||
elseif event.type == 'craft' or event.type == 'grid_select_right' then
|
elseif event.type == 'craft' or event.type == 'grid_select_right' then
|
||||||
UI:setPage('craft', self.grid:getSelected())
|
if Craft.findRecipe(self.grid:getSelected()) then
|
||||||
|
UI:setPage('craft', self.grid:getSelected())
|
||||||
|
else
|
||||||
|
self.notification:error('No recipe defined')
|
||||||
|
end
|
||||||
|
|
||||||
elseif event.type == 'forget' then
|
elseif event.type == 'forget' then
|
||||||
local item = self.grid:getSelected()
|
local item = self.grid:getSelected()
|
||||||
@@ -885,7 +937,7 @@ function listingPage:eventHandler(event)
|
|||||||
saveResources()
|
saveResources()
|
||||||
end
|
end
|
||||||
|
|
||||||
self.statusBar:timedStatus('Forgot: ' .. item.name, 3)
|
self.notification:info('Forgot: ' .. item.name)
|
||||||
self:refresh()
|
self:refresh()
|
||||||
self.grid:draw()
|
self.grid:draw()
|
||||||
end
|
end
|
||||||
@@ -957,7 +1009,7 @@ local function learnRecipe(page)
|
|||||||
local ingredients = getTurtleInventory()
|
local ingredients = getTurtleInventory()
|
||||||
if ingredients then
|
if ingredients then
|
||||||
turtle.select(1)
|
turtle.select(1)
|
||||||
if canCraft and turtle.craft() then
|
if canLearn and turtle.craft() then
|
||||||
local results = getTurtleInventory()
|
local results = getTurtleInventory()
|
||||||
if results and results[1] then
|
if results and results[1] then
|
||||||
clearGrid()
|
clearGrid()
|
||||||
@@ -1029,7 +1081,7 @@ local function learnRecipe(page)
|
|||||||
local displayName = itemDB:getName(recipe)
|
local displayName = itemDB:getName(recipe)
|
||||||
|
|
||||||
listingPage.statusBar.filter:setValue(displayName)
|
listingPage.statusBar.filter:setValue(displayName)
|
||||||
listingPage.statusBar:timedStatus('Learned: ' .. displayName, 3)
|
listingPage.notification:success('Learned: ' .. displayName)
|
||||||
listingPage.filter = displayName
|
listingPage.filter = displayName
|
||||||
listingPage:refresh()
|
listingPage:refresh()
|
||||||
listingPage.grid:draw()
|
listingPage.grid:draw()
|
||||||
@@ -1037,10 +1089,10 @@ local function learnRecipe(page)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
page.statusBar:timedStatus('Failed to craft', 3)
|
listingPage.notification:error('Failed to craft', 3)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
page.statusBar:timedStatus('No recipe defined', 3)
|
listingPage.notification:error('No recipe defined', 3)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1208,7 +1260,9 @@ function craftPage:eventHandler(event)
|
|||||||
end
|
end
|
||||||
|
|
||||||
loadResources()
|
loadResources()
|
||||||
clearGrid()
|
if canCraft then
|
||||||
|
clearGrid()
|
||||||
|
end
|
||||||
|
|
||||||
UI:setPages({
|
UI:setPages({
|
||||||
listing = listingPage,
|
listing = listingPage,
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ multishell.setTitle(multishell.getCurrent(), 'Crafter')
|
|||||||
|
|
||||||
local config = {
|
local config = {
|
||||||
computerFacing = 'north',
|
computerFacing = 'north',
|
||||||
monitor = 'monitor',
|
monitor = 'type/monitor',
|
||||||
}
|
}
|
||||||
Config.load('crafter', config)
|
Config.load('crafter', config)
|
||||||
|
|
||||||
|
|||||||
50
apps/namedb.lua
Normal file
50
apps/namedb.lua
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
_G.requireInjector()
|
||||||
|
|
||||||
|
local itemDB = require('itemDB')
|
||||||
|
local json = require('json')
|
||||||
|
local Util = require('util')
|
||||||
|
|
||||||
|
local args = { ... }
|
||||||
|
local mod = args[1] or error('Syntax: namedb MOD')
|
||||||
|
|
||||||
|
--[[
|
||||||
|
"double_plant": {
|
||||||
|
"name": ["Sunflower",
|
||||||
|
"Lilac",
|
||||||
|
"Double Tallgrass",
|
||||||
|
"Large Fern",
|
||||||
|
"Rose Bush",
|
||||||
|
"Peony"],
|
||||||
|
},
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local list = { }
|
||||||
|
|
||||||
|
for _,v in pairs(itemDB.data) do
|
||||||
|
local t = Util.split(v.name, '(.-):')
|
||||||
|
|
||||||
|
if t[1] == mod then
|
||||||
|
local name = t[2]
|
||||||
|
local damage = v.damage or 0
|
||||||
|
local entry = list[name]
|
||||||
|
if not entry then
|
||||||
|
entry = { }
|
||||||
|
list[name] = entry
|
||||||
|
end
|
||||||
|
if not entry.name and damage == 0 then
|
||||||
|
entry.name = v.displayName
|
||||||
|
else
|
||||||
|
if not entry.name then
|
||||||
|
entry.name = { }
|
||||||
|
elseif type(entry.name) == 'string' then
|
||||||
|
entry.name = { entry.name }
|
||||||
|
end
|
||||||
|
while #entry.name < damage do
|
||||||
|
entry.name[#entry.name + 1] = ''
|
||||||
|
end
|
||||||
|
entry.name[damage + 1] = v.displayName
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
json.encodeToFile(string.format('usr/etc/names/%s.json', mod), list)
|
||||||
@@ -14,15 +14,17 @@ local version = "Version 1.1.6"
|
|||||||
-- Original code by Bomb Bloke
|
-- Original code by Bomb Bloke
|
||||||
-- Modified to integrate with opus os
|
-- Modified to integrate with opus os
|
||||||
|
|
||||||
requireInjector(getfenv(1))
|
_G.requireInjector()
|
||||||
|
|
||||||
local Util = require('util')
|
local Util = require('util')
|
||||||
|
|
||||||
|
local multishell = _ENV.multishell
|
||||||
|
local os = _G.os
|
||||||
|
|
||||||
local recTerm, oldTerm, arg, showInput, skipLast, lastDelay, curInput = {}, Util.shallowCopy(multishell.term), {...}, false, false, 2, ""
|
local recTerm, oldTerm, arg, showInput, skipLast, lastDelay, curInput = {}, Util.shallowCopy(multishell.term), {...}, false, false, 2, ""
|
||||||
local curBlink, oldBlink, tTerm, buffer, colourNum, xPos, yPos, oldXPos, oldYPos, tCol, bCol, xSize, ySize = false, false, {}, {}, {}, 1, 1, 1, 1, colours.white, colours.black, oldTerm.getSize()
|
local curBlink, oldBlink, tTerm, buffer, colourNum, xPos, yPos, oldXPos, oldYPos, tCol, bCol, xSize, ySize = false, false, {}, {}, {}, 1, 1, 1, 1, colours.white, colours.black, oldTerm.getSize()
|
||||||
local greys, buttons = {["0"] = true, ["7"] = true, ["8"] = true, ["f"] = true}, {"l", "r", "m"}
|
local greys, buttons = {["0"] = true, ["7"] = true, ["8"] = true, ["f"] = true}, {"l", "r", "m"}
|
||||||
local charW, charH, chars, resp
|
local charW, charH, chars, resp
|
||||||
local filename
|
|
||||||
|
|
||||||
local calls = { }
|
local calls = { }
|
||||||
local curCalls = { delay = 0 }
|
local curCalls = { delay = 0 }
|
||||||
@@ -39,7 +41,7 @@ end
|
|||||||
|
|
||||||
for i = #arg, 1, -1 do
|
for i = #arg, 1, -1 do
|
||||||
local curArg = arg[i]:lower()
|
local curArg = arg[i]:lower()
|
||||||
|
|
||||||
if curArg == "-i" then
|
if curArg == "-i" then
|
||||||
showInput, ySize = true, ySize + 1
|
showInput, ySize = true, ySize + 1
|
||||||
table.remove(arg, i)
|
table.remove(arg, i)
|
||||||
@@ -108,23 +110,23 @@ end
|
|||||||
|
|
||||||
local function safeString(text)
|
local function safeString(text)
|
||||||
local newText = {}
|
local newText = {}
|
||||||
|
|
||||||
for i = 1, #text do
|
for i = 1, #text do
|
||||||
local val = text:byte(i)
|
local val = text:byte(i)
|
||||||
newText[i] = (val > 31 and val < 127) and val or 63
|
newText[i] = (val > 31 and val < 127) and val or 63
|
||||||
end
|
end
|
||||||
|
|
||||||
return string.char(unpack(newText))
|
return string.char(unpack(newText))
|
||||||
end
|
end
|
||||||
|
|
||||||
local function safeCol(text, subst)
|
local function safeCol(text, subst)
|
||||||
local newText = {}
|
local newText = {}
|
||||||
|
|
||||||
for i = 1, #text do
|
for i = 1, #text do
|
||||||
local val = text:sub(i, i)
|
local val = text:sub(i, i)
|
||||||
newText[i] = greys[val] and val or subst
|
newText[i] = greys[val] and val or subst
|
||||||
end
|
end
|
||||||
|
|
||||||
return table.concat(newText)
|
return table.concat(newText)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -147,7 +149,7 @@ end
|
|||||||
|
|
||||||
local tabId = multishell.getCurrent()
|
local tabId = multishell.getCurrent()
|
||||||
|
|
||||||
multishell.addHotkey('control-p', function()
|
_G.device.keyboard.addHotkey('control-p', function()
|
||||||
os.queueEvent('recorder_stop')
|
os.queueEvent('recorder_stop')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -185,7 +187,7 @@ while true do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
multishell.removeHotkey('control-p')
|
_G.device.keyboard.removeHotkey('control-p')
|
||||||
|
|
||||||
for k,fn in pairs(oldTerm) do
|
for k,fn in pairs(oldTerm) do
|
||||||
multishell.term[k] = fn
|
multishell.term[k] = fn
|
||||||
@@ -206,18 +208,18 @@ print(string.format("Encoding %d frames...", #calls))
|
|||||||
|
|
||||||
do
|
do
|
||||||
local callListCount, tempCalls, blink, oldBlink, curBlink, blinkDelay = 1, {}, false, false, true, 0
|
local callListCount, tempCalls, blink, oldBlink, curBlink, blinkDelay = 1, {}, false, false, true, 0
|
||||||
|
|
||||||
for i = 1, #calls - 1 do
|
for i = 1, #calls - 1 do
|
||||||
curCalls = calls[i]
|
curCalls = calls[i]
|
||||||
tempCalls[callListCount] = curCalls
|
tempCalls[callListCount] = curCalls
|
||||||
for j = 1, #curCalls do if curCalls[j][1] == "setCursorBlink" then blink = curCalls[j][2] end end
|
for j = 1, #curCalls do if curCalls[j][1] == "setCursorBlink" then blink = curCalls[j][2] end end
|
||||||
|
|
||||||
if blink then
|
if blink then
|
||||||
if blinkDelay == 0 then
|
if blinkDelay == 0 then
|
||||||
curCalls[#curCalls + 1] = {"toggleCur", curBlink}
|
curCalls[#curCalls + 1] = {"toggleCur", curBlink}
|
||||||
blinkDelay, curBlink = 0.4, not curBlink
|
blinkDelay, curBlink = 0.4, not curBlink
|
||||||
end
|
end
|
||||||
|
|
||||||
while tempCalls[callListCount].delay > blinkDelay do
|
while tempCalls[callListCount].delay > blinkDelay do
|
||||||
local remainder = tempCalls[callListCount].delay - blinkDelay
|
local remainder = tempCalls[callListCount].delay - blinkDelay
|
||||||
tempCalls[callListCount].delay = blinkDelay
|
tempCalls[callListCount].delay = blinkDelay
|
||||||
@@ -225,19 +227,19 @@ do
|
|||||||
tempCalls[callListCount] = {{"toggleCur", curBlink}, ["delay"] = remainder}
|
tempCalls[callListCount] = {{"toggleCur", curBlink}, ["delay"] = remainder}
|
||||||
blinkDelay, curBlink = 0.4, not curBlink
|
blinkDelay, curBlink = 0.4, not curBlink
|
||||||
end
|
end
|
||||||
|
|
||||||
blinkDelay = blinkDelay - tempCalls[callListCount].delay
|
blinkDelay = blinkDelay - tempCalls[callListCount].delay
|
||||||
else
|
else
|
||||||
if oldBlink then curCalls[#curCalls + 1] = {"toggleCur", false} end
|
if oldBlink then curCalls[#curCalls + 1] = {"toggleCur", false} end
|
||||||
blinkDelay = (curCalls.delay - blinkDelay) % 0.4
|
blinkDelay = (curCalls.delay - blinkDelay) % 0.4
|
||||||
end
|
end
|
||||||
|
|
||||||
callListCount, oldBlink = callListCount + 1, blink
|
callListCount, oldBlink = callListCount + 1, blink
|
||||||
end
|
end
|
||||||
|
|
||||||
tempCalls[callListCount] = calls[#calls]
|
tempCalls[callListCount] = calls[#calls]
|
||||||
tempCalls[callListCount][#tempCalls[callListCount] + 1] = {"toggleCur", false}
|
tempCalls[callListCount][#tempCalls[callListCount] + 1] = {"toggleCur", false}
|
||||||
|
|
||||||
calls, curCalls = tempCalls, nil
|
calls, curCalls = tempCalls, nil
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -298,33 +300,33 @@ if showInput then for x = 1, xSize do buffer[ySize][x][3] = colourNum[colours.li
|
|||||||
|
|
||||||
tTerm.blit = function(text, fgCol, bgCol)
|
tTerm.blit = function(text, fgCol, bgCol)
|
||||||
if xPos > xSize or xPos + #text - 1 < 1 or yPos < 1 or yPos > ySize then return end
|
if xPos > xSize or xPos + #text - 1 < 1 or yPos < 1 or yPos > ySize then return end
|
||||||
|
|
||||||
if not _HOST then text = safeString(text) end
|
if not _HOST then text = safeString(text) end
|
||||||
|
|
||||||
if not term.isColour() then
|
if not term.isColour() then
|
||||||
fgCol = safeCol(fgCol, "0")
|
fgCol = safeCol(fgCol, "0")
|
||||||
bgCol = safeCol(bgCol, "f")
|
bgCol = safeCol(bgCol, "f")
|
||||||
end
|
end
|
||||||
|
|
||||||
if xPos < 1 then
|
if xPos < 1 then
|
||||||
text = text:sub(2 - xPos)
|
text = text:sub(2 - xPos)
|
||||||
fgCol = fgCol:sub(2 - xPos)
|
fgCol = fgCol:sub(2 - xPos)
|
||||||
bgCol = bgCol:sub(2 - xPos)
|
bgCol = bgCol:sub(2 - xPos)
|
||||||
xPos = 1
|
xPos = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
if xPos + #text - 1 > xSize then
|
if xPos + #text - 1 > xSize then
|
||||||
text = text:sub(1, xSize - xPos + 1)
|
text = text:sub(1, xSize - xPos + 1)
|
||||||
fgCol = fgCol:sub(1, xSize - xPos + 1)
|
fgCol = fgCol:sub(1, xSize - xPos + 1)
|
||||||
bgCol = bgCol:sub(1, xSize - xPos + 1)
|
bgCol = bgCol:sub(1, xSize - xPos + 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
for x = 1, #text do
|
for x = 1, #text do
|
||||||
buffer[yPos][xPos + x - 1][1] = text:sub(x, x)
|
buffer[yPos][xPos + x - 1][1] = text:sub(x, x)
|
||||||
buffer[yPos][xPos + x - 1][2] = fgCol:sub(x, x)
|
buffer[yPos][xPos + x - 1][2] = fgCol:sub(x, x)
|
||||||
buffer[yPos][xPos + x - 1][3] = bgCol:sub(x, x)
|
buffer[yPos][xPos + x - 1][3] = bgCol:sub(x, x)
|
||||||
end
|
end
|
||||||
|
|
||||||
xPos = xPos + #text
|
xPos = xPos + #text
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -335,21 +337,21 @@ end
|
|||||||
|
|
||||||
tTerm.clearLine = function()
|
tTerm.clearLine = function()
|
||||||
local oldXPos = xPos
|
local oldXPos = xPos
|
||||||
|
|
||||||
xPos = 1
|
xPos = 1
|
||||||
tTerm.write(string.rep(" ", xSize))
|
tTerm.write(string.rep(" ", xSize))
|
||||||
|
|
||||||
xPos = oldXPos
|
xPos = oldXPos
|
||||||
end
|
end
|
||||||
|
|
||||||
tTerm.clear = function()
|
tTerm.clear = function()
|
||||||
local oldXPos, oldYPos = xPos, yPos
|
local oldXPos, oldYPos = xPos, yPos
|
||||||
|
|
||||||
for y = 1, ySize do
|
for y = 1, ySize do
|
||||||
xPos, yPos = 1, y
|
xPos, yPos = 1, y
|
||||||
tTerm.write(string.rep(" ", xSize))
|
tTerm.write(string.rep(" ", xSize))
|
||||||
end
|
end
|
||||||
|
|
||||||
xPos, yPos = oldXPos, oldYPos
|
xPos, yPos = oldXPos, oldYPos
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -376,7 +378,7 @@ end
|
|||||||
tTerm.scroll = function(lines)
|
tTerm.scroll = function(lines)
|
||||||
if math.abs(lines) < ySize then
|
if math.abs(lines) < ySize then
|
||||||
local oldXPos, oldYPos = xPos, yPos
|
local oldXPos, oldYPos = xPos, yPos
|
||||||
|
|
||||||
for y = 1, ySize do
|
for y = 1, ySize do
|
||||||
if y + lines > 0 and y + lines <= ySize then
|
if y + lines > 0 and y + lines <= ySize then
|
||||||
for x = 1, xSize do
|
for x = 1, xSize do
|
||||||
@@ -388,7 +390,7 @@ tTerm.scroll = function(lines)
|
|||||||
tTerm.clearLine()
|
tTerm.clearLine()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
xPos, yPos = oldXPos, oldYPos
|
xPos, yPos = oldXPos, oldYPos
|
||||||
else tTerm.clear() end
|
else tTerm.clear() end
|
||||||
end
|
end
|
||||||
@@ -400,12 +402,12 @@ end
|
|||||||
tTerm.newInput = function(input)
|
tTerm.newInput = function(input)
|
||||||
local oldTC, oldBC, oldX, oldY = tCol, bCol, xPos, yPos
|
local oldTC, oldBC, oldX, oldY = tCol, bCol, xPos, yPos
|
||||||
tCol, bCol, xPos, yPos, ySize, input = colours.grey, colours.lightGrey, 1, ySize + 1, ySize + 1, input .. " "
|
tCol, bCol, xPos, yPos, ySize, input = colours.grey, colours.lightGrey, 1, ySize + 1, ySize + 1, input .. " "
|
||||||
|
|
||||||
while #curInput + #input + 1 > xSize do curInput = curInput:sub(curInput:find(" ") + 1) end
|
while #curInput + #input + 1 > xSize do curInput = curInput:sub(curInput:find(" ") + 1) end
|
||||||
curInput = curInput .. input .. " "
|
curInput = curInput .. input .. " "
|
||||||
tTerm.clearLine()
|
tTerm.clearLine()
|
||||||
tTerm.write(curInput)
|
tTerm.write(curInput)
|
||||||
|
|
||||||
tCol, bCol, xPos, yPos, ySize = oldTC, oldBC, oldX, oldY, ySize - 1
|
tCol, bCol, xPos, yPos, ySize = oldTC, oldBC, oldX, oldY, ySize - 1
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -422,18 +424,18 @@ local image = {["width"] = xSize * charW, ["height"] = ySize * charH}
|
|||||||
for i = 1, #calls do
|
for i = 1, #calls do
|
||||||
local xMin, yMin, xMax, yMax, oldBuffer, curCalls, changed = xSize + 1, ySize + 1, 0, 0, {}, calls[i], false
|
local xMin, yMin, xMax, yMax, oldBuffer, curCalls, changed = xSize + 1, ySize + 1, 0, 0, {}, calls[i], false
|
||||||
calls[i] = nil
|
calls[i] = nil
|
||||||
|
|
||||||
for y = 1, ySize do
|
for y = 1, ySize do
|
||||||
oldBuffer[y] = {}
|
oldBuffer[y] = {}
|
||||||
for x = 1, xSize do oldBuffer[y][x] = {buffer[y][x][1], buffer[y][x][2], buffer[y][x][3], buffer[y][x][4]} end
|
for x = 1, xSize do oldBuffer[y][x] = {buffer[y][x][1], buffer[y][x][2], buffer[y][x][3], buffer[y][x][4]} end
|
||||||
end
|
end
|
||||||
|
|
||||||
snooze()
|
snooze()
|
||||||
|
|
||||||
if showInput then ySize = ySize - 1 end
|
if showInput then ySize = ySize - 1 end
|
||||||
for j = 1, #curCalls do if tTerm[curCalls[j][1]] then tTerm[curCalls[j][1]](unpack(curCalls[j], 2)) end end
|
for j = 1, #curCalls do if tTerm[curCalls[j][1]] then tTerm[curCalls[j][1]](unpack(curCalls[j], 2)) end end
|
||||||
if showInput then ySize = ySize + 1 end
|
if showInput then ySize = ySize + 1 end
|
||||||
|
|
||||||
if i > 1 then
|
if i > 1 then
|
||||||
for yy = 1, ySize do for xx = 1, xSize do if buffer[yy][xx][1] ~= oldBuffer[yy][xx][1] or (buffer[yy][xx][2] ~= oldBuffer[yy][xx][2] and buffer[yy][xx][1] ~= " ") or buffer[yy][xx][3] ~= oldBuffer[yy][xx][3] then
|
for yy = 1, ySize do for xx = 1, xSize do if buffer[yy][xx][1] ~= oldBuffer[yy][xx][1] or (buffer[yy][xx][2] ~= oldBuffer[yy][xx][2] and buffer[yy][xx][1] ~= " ") or buffer[yy][xx][3] ~= oldBuffer[yy][xx][3] then
|
||||||
changed = true
|
changed = true
|
||||||
@@ -443,7 +445,7 @@ for i = 1, #calls do
|
|||||||
if yy > yMax then yMax = yy end
|
if yy > yMax then yMax = yy end
|
||||||
end end end
|
end end end
|
||||||
else xMin, yMin, xMax, yMax, changed = 1, 1, xSize, ySize, true end
|
else xMin, yMin, xMax, yMax, changed = 1, 1, xSize, ySize, true end
|
||||||
|
|
||||||
if oldBlink and (xPos ~= oldXPos or yPos ~= oldYPos or not curBlink) and oldXPos > 0 and oldYPos > 0 and oldXPos <= xSize and oldYPos <= ySize then
|
if oldBlink and (xPos ~= oldXPos or yPos ~= oldYPos or not curBlink) and oldXPos > 0 and oldYPos > 0 and oldXPos <= xSize and oldYPos <= ySize then
|
||||||
changed = true
|
changed = true
|
||||||
if oldXPos < xMin then xMin = oldXPos end
|
if oldXPos < xMin then xMin = oldXPos end
|
||||||
@@ -452,7 +454,7 @@ for i = 1, #calls do
|
|||||||
if oldYPos > yMax then yMax = oldYPos end
|
if oldYPos > yMax then yMax = oldYPos end
|
||||||
buffer[oldYPos][oldXPos][4] = false
|
buffer[oldYPos][oldXPos][4] = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if curBlink and (xPos ~= oldXPos or yPos ~= oldYPos or not oldBlink) and xPos > 0 and yPos > 0 and xPos <= xSize and yPos <= ySize then
|
if curBlink and (xPos ~= oldXPos or yPos ~= oldYPos or not oldBlink) and xPos > 0 and yPos > 0 and xPos <= xSize and yPos <= ySize then
|
||||||
changed = true
|
changed = true
|
||||||
if xPos < xMin then xMin = xPos end
|
if xPos < xMin then xMin = xPos end
|
||||||
@@ -461,9 +463,9 @@ for i = 1, #calls do
|
|||||||
if yPos > yMax then yMax = yPos end
|
if yPos > yMax then yMax = yPos end
|
||||||
buffer[yPos][xPos][4] = true
|
buffer[yPos][xPos][4] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
oldBlink, oldXPos, oldYPos = curBlink, xPos, yPos
|
oldBlink, oldXPos, oldYPos = curBlink, xPos, yPos
|
||||||
|
|
||||||
local thisFrame = {
|
local thisFrame = {
|
||||||
["xstart"] = (xMin - 1) * charW,
|
["xstart"] = (xMin - 1) * charW,
|
||||||
["ystart"] = (yMin - 1) * charH,
|
["ystart"] = (yMin - 1) * charH,
|
||||||
@@ -472,18 +474,18 @@ for i = 1, #calls do
|
|||||||
["delay"] = curCalls.delay,
|
["delay"] = curCalls.delay,
|
||||||
["disposal"] = 1
|
["disposal"] = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
for y = 1, (yMax - yMin + 1) * charH do
|
for y = 1, (yMax - yMin + 1) * charH do
|
||||||
local row = {}
|
local row = {}
|
||||||
for x = 1, (xMax - xMin + 1) * charW do row[x] = " " end
|
for x = 1, (xMax - xMin + 1) * charW do row[x] = " " end
|
||||||
thisFrame[y] = row
|
thisFrame[y] = row
|
||||||
end
|
end
|
||||||
|
|
||||||
snooze()
|
snooze()
|
||||||
|
|
||||||
for yy = yMin, yMax do
|
for yy = yMin, yMax do
|
||||||
local yBump = (yy - yMin) * charH
|
local yBump = (yy - yMin) * charH
|
||||||
|
|
||||||
for xx = xMin, xMax do if buffer[yy][xx][1] ~= oldBuffer[yy][xx][1] or (buffer[yy][xx][2] ~= oldBuffer[yy][xx][2] and buffer[yy][xx][1] ~= " ") or buffer[yy][xx][3] ~= oldBuffer[yy][xx][3] or buffer[yy][xx][4] ~= oldBuffer[yy][xx][4] or i == 1 then
|
for xx = xMin, xMax do if buffer[yy][xx][1] ~= oldBuffer[yy][xx][1] or (buffer[yy][xx][2] ~= oldBuffer[yy][xx][2] and buffer[yy][xx][1] ~= " ") or buffer[yy][xx][3] ~= oldBuffer[yy][xx][3] or buffer[yy][xx][4] ~= oldBuffer[yy][xx][4] or i == 1 then
|
||||||
local thisChar, thisT, thisB, xBump = chars[buffer[yy][xx][1]:byte()], buffer[yy][xx][2], buffer[yy][xx][3], (xx - xMin) * charW
|
local thisChar, thisT, thisB, xBump = chars[buffer[yy][xx][1]:byte()], buffer[yy][xx][2], buffer[yy][xx][3], (xx - xMin) * charW
|
||||||
if thisChar then
|
if thisChar then
|
||||||
@@ -500,35 +502,35 @@ end
|
|||||||
for y = 1, charH do for x = 1, charW do if thisChar[y][x] then thisFrame[y + yBump][x + xBump] = thisT end end end
|
for y = 1, charH do for x = 1, charW do if thisChar[y][x] then thisFrame[y + yBump][x + xBump] = thisT end end end
|
||||||
end
|
end
|
||||||
end end
|
end end
|
||||||
|
|
||||||
for y = yBump + 1, yBump + charH do
|
for y = yBump + 1, yBump + charH do
|
||||||
local skip, chars, row = 0, {}, {}
|
local skip, chars, row = 0, {}, {}
|
||||||
|
|
||||||
for x = 1, #thisFrame[y] do
|
for x = 1, #thisFrame[y] do
|
||||||
if thisFrame[y][x] == " " then
|
if thisFrame[y][x] == " " then
|
||||||
if #chars > 0 then
|
if #chars > 0 then
|
||||||
row[#row + 1] = table.concat(chars)
|
row[#row + 1] = table.concat(chars)
|
||||||
chars = {}
|
chars = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
skip = skip + 1
|
skip = skip + 1
|
||||||
else
|
else
|
||||||
if skip > 0 then
|
if skip > 0 then
|
||||||
row[#row + 1] = skip
|
row[#row + 1] = skip
|
||||||
skip = 0
|
skip = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
chars[#chars + 1] = thisFrame[y][x]
|
chars[#chars + 1] = thisFrame[y][x]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if #chars > 0 then row[#row + 1] = table.concat(chars) end
|
if #chars > 0 then row[#row + 1] = table.concat(chars) end
|
||||||
thisFrame[y] = row
|
thisFrame[y] = row
|
||||||
end
|
end
|
||||||
|
|
||||||
snooze()
|
snooze()
|
||||||
end
|
end
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
image[#image + 1] = thisFrame
|
image[#image + 1] = thisFrame
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ local changedPage = UI.Page {
|
|||||||
grid = UI.Grid {
|
grid = UI.Grid {
|
||||||
ey = -6,
|
ey = -6,
|
||||||
columns = {
|
columns = {
|
||||||
{ heading = 'Qty', key = 'count', width = 5 },
|
{ heading = 'Qty', key = 'count', width = 6 },
|
||||||
{ heading = 'Change', key = 'change', width = 6 },
|
{ heading = 'Change', key = 'change', width = 6 },
|
||||||
{ heading = 'Rate', key = 'rate', width = 6 },
|
{ heading = 'Rate', key = 'rate', width = 6 },
|
||||||
{ heading = 'Name', key = 'displayName' },
|
{ heading = 'Name', key = 'displayName' },
|
||||||
@@ -64,6 +64,7 @@ function changedPage.grid:getDisplayValues(row)
|
|||||||
|
|
||||||
row.change = ind .. Util.toBytes(row.change)
|
row.change = ind .. Util.toBytes(row.change)
|
||||||
row.count = Util.toBytes(row.count)
|
row.count = Util.toBytes(row.count)
|
||||||
|
row.rate = Util.toBytes(row.rate)
|
||||||
|
|
||||||
return row
|
return row
|
||||||
end
|
end
|
||||||
|
|||||||
592
etc/names/appliedenergistics2.json
Normal file
592
etc/names/appliedenergistics2.json
Normal file
@@ -0,0 +1,592 @@
|
|||||||
|
{
|
||||||
|
"smooth_sky_stone_block": {
|
||||||
|
"name": "Sky Stone Block"
|
||||||
|
},
|
||||||
|
"fluix_block": {
|
||||||
|
"name": "Fluix Block"
|
||||||
|
},
|
||||||
|
"charger": {
|
||||||
|
"name": "Charger"
|
||||||
|
},
|
||||||
|
"network_tool": {
|
||||||
|
"name": "Network Tool"
|
||||||
|
},
|
||||||
|
"wireless_terminal": {
|
||||||
|
"name": [
|
||||||
|
"Wireless Terminal"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"certus_quartz_cutting_knife": {
|
||||||
|
"name": "Certus Quartz Cutting Knife"
|
||||||
|
},
|
||||||
|
"storage_cell_16k": {
|
||||||
|
"name": "16k ME Storage Cell"
|
||||||
|
},
|
||||||
|
"grindstone": {
|
||||||
|
"name": "Quartz Grindstone"
|
||||||
|
},
|
||||||
|
"material": {
|
||||||
|
"name": [
|
||||||
|
"Certus Quartz Crystal",
|
||||||
|
"Charged Certus Quartz Crystal",
|
||||||
|
"Certus Quartz Dust",
|
||||||
|
"Nether Quartz Dust",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Fluix Crystal",
|
||||||
|
"Fluix Dust",
|
||||||
|
"Fluix Pearl",
|
||||||
|
"Pure Certus Quartz Crystal",
|
||||||
|
"Pure Nether Quartz Crystal",
|
||||||
|
"Pure Fluix Crystal",
|
||||||
|
"Inscriber Calculation Press",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Printed Calculation Circuit",
|
||||||
|
"Printed Engineering Circuit",
|
||||||
|
"Printed Logic Circuit",
|
||||||
|
"",
|
||||||
|
"Printed Silicon",
|
||||||
|
"",
|
||||||
|
"Logic Processor",
|
||||||
|
"Calculation Processor",
|
||||||
|
"Engineering Processor",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Advanced Card",
|
||||||
|
"",
|
||||||
|
"Acceleration Card",
|
||||||
|
"",
|
||||||
|
"2³ Spatial Component",
|
||||||
|
"16³ Spatial Component",
|
||||||
|
"128³ Spatial Component",
|
||||||
|
"1k ME Storage Component",
|
||||||
|
"4k ME Storage Component",
|
||||||
|
"16k ME Storage Component",
|
||||||
|
"64k ME Storage Component",
|
||||||
|
"ME Storage Housing",
|
||||||
|
"",
|
||||||
|
"Wireless Receiver",
|
||||||
|
"Wireless Booster",
|
||||||
|
"Formation Core",
|
||||||
|
"Annihilation Core",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Blank Pattern"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"controller": {
|
||||||
|
"name": "ME Controller"
|
||||||
|
},
|
||||||
|
"quartz_glass": {
|
||||||
|
"name": "Quartz Glass"
|
||||||
|
},
|
||||||
|
"quartz_growth_accelerator": {
|
||||||
|
"name": "Crystal Growth Accelerator"
|
||||||
|
},
|
||||||
|
"energy_acceptor": {
|
||||||
|
"name": "Energy Acceptor"
|
||||||
|
},
|
||||||
|
"part": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"ME Glass Cable - Fluix",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Cable Anchor",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Quartz Fiber",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Illuminated Panel",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"ME Storage Bus",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"ME Annihilation Plane",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"ME Pattern Terminal",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"ME Crafting Terminal",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"ME Terminal",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"ME Interface"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dense_energy_cell": {
|
||||||
|
"name": "Dense Energy Cell"
|
||||||
|
},
|
||||||
|
"drive": {
|
||||||
|
"name": "ME Drive"
|
||||||
|
},
|
||||||
|
"crafting_unit": {
|
||||||
|
"name": "Crafting Unit"
|
||||||
|
},
|
||||||
|
"interface": {
|
||||||
|
"name": "ME Interface"
|
||||||
|
},
|
||||||
|
"energy_cell": {
|
||||||
|
"name": "Energy Cell"
|
||||||
|
},
|
||||||
|
"wireless_access_point": {
|
||||||
|
"name": "ME Wireless Access Point"
|
||||||
|
},
|
||||||
|
"condenser": {
|
||||||
|
"name": "Matter Condenser"
|
||||||
|
},
|
||||||
|
"nether_quartz_wrench": {
|
||||||
|
"name": "Nether Quartz Wrench"
|
||||||
|
},
|
||||||
|
"crank": {
|
||||||
|
"name": "Wooden Crank"
|
||||||
|
},
|
||||||
|
"molecular_assembler": {
|
||||||
|
"name": "Molecular Assembler"
|
||||||
|
},
|
||||||
|
"chest": {
|
||||||
|
"name": "ME Chest"
|
||||||
|
},
|
||||||
|
"security_station": {
|
||||||
|
"name": "ME Security Terminal"
|
||||||
|
},
|
||||||
|
"sky_stone_block": {
|
||||||
|
"name": "Sky Stone"
|
||||||
|
},
|
||||||
|
"crafting_storage_64k": {
|
||||||
|
"name": "64k Crafting Storage"
|
||||||
|
},
|
||||||
|
"inscriber": {
|
||||||
|
"name": "Inscriber"
|
||||||
|
},
|
||||||
|
"crystal_seed": {
|
||||||
|
"name": [
|
||||||
|
"Nether Quartz Seed"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
20
etc/names/computercraft.json
Normal file
20
etc/names/computercraft.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"peripheral": {
|
||||||
|
"name": [
|
||||||
|
"Disk Drive",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Advanced Monitor"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"advanced_modem": {
|
||||||
|
"name": "Ender Modem"
|
||||||
|
},
|
||||||
|
"pocket_computer": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"Advanced Pocket Computer"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
226
etc/names/enderio.json
Normal file
226
etc/names/enderio.json
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
{
|
||||||
|
"blockSolarPanel": {
|
||||||
|
"name": [
|
||||||
|
"Photovoltaic Cell",
|
||||||
|
"Advanced Photovoltaic Cell",
|
||||||
|
"Vibrant Photovoltaic Cell"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockFusedQuartz": {
|
||||||
|
"name": [
|
||||||
|
"Fused Quartz",
|
||||||
|
"Quite Clear Glass",
|
||||||
|
"Enlightened Fused Quartz",
|
||||||
|
"",
|
||||||
|
"Dark Fused Quartz",
|
||||||
|
"Dark Clear Glass"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockVacuumChest": {
|
||||||
|
"name": [
|
||||||
|
"Vacuum Chest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemExtractSpeedUpgrade": {
|
||||||
|
"name": "Item Conduit Speed Upgrade"
|
||||||
|
},
|
||||||
|
"blockPainter": {
|
||||||
|
"name": "Painting Machine"
|
||||||
|
},
|
||||||
|
"blockTransceiver": {
|
||||||
|
"name": "Dimensional Transceiver"
|
||||||
|
},
|
||||||
|
"darkSteel_chestplate": {
|
||||||
|
"name": "Dark Plate"
|
||||||
|
},
|
||||||
|
"blockSliceAndSplice": {
|
||||||
|
"name": "Slice'N'Splice"
|
||||||
|
},
|
||||||
|
"itemConduitFacade": {
|
||||||
|
"name": "Conduit Facade"
|
||||||
|
},
|
||||||
|
"itemBasicFilterUpgrade": {
|
||||||
|
"name": [
|
||||||
|
"Basic Item Filter",
|
||||||
|
"Advanced Item Filter",
|
||||||
|
"Counting Item Filter"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockExperienceObelisk": {
|
||||||
|
"name": "Experience Obelisk"
|
||||||
|
},
|
||||||
|
"itemLiquidConduit": {
|
||||||
|
"name": [
|
||||||
|
"Fluid Conduit",
|
||||||
|
"Pressurized Fluid Conduit",
|
||||||
|
"Ender Fluid Conduit"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockFarmStation": {
|
||||||
|
"name": "Farming Station"
|
||||||
|
},
|
||||||
|
"blockEndermanSkull": {
|
||||||
|
"name": [
|
||||||
|
"Enderman Head",
|
||||||
|
"",
|
||||||
|
"Tormented Enderman Head"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockAlloySmelter": {
|
||||||
|
"name": "Alloy Smelter"
|
||||||
|
},
|
||||||
|
"itemRedstoneConduit": {
|
||||||
|
"name": "Redstone Conduit"
|
||||||
|
},
|
||||||
|
"itemPowerConduit": {
|
||||||
|
"name": [
|
||||||
|
"Energy Conduit",
|
||||||
|
"Enhanced Energy Conduit",
|
||||||
|
"Ender Energy Conduit"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemTravelStaff": {
|
||||||
|
"name": "Staff of Traveling"
|
||||||
|
},
|
||||||
|
"blockSagMill": {
|
||||||
|
"name": [
|
||||||
|
"SAG Mill (Configured)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemItemConduit": {
|
||||||
|
"name": "Item Conduit"
|
||||||
|
},
|
||||||
|
"itemConduitProbe": {
|
||||||
|
"name": "Conduit Probe"
|
||||||
|
},
|
||||||
|
"itemPowderIngot": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Enderium Base"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockBuffer": {
|
||||||
|
"name": [
|
||||||
|
"Item Buffer"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockPoweredSpawner": {
|
||||||
|
"name": "Powered Spawner"
|
||||||
|
},
|
||||||
|
"itemBasicCapacitor": {
|
||||||
|
"name": [
|
||||||
|
"Basic Capacitor",
|
||||||
|
"Double-Layer Capacitor",
|
||||||
|
"Octadic Capacitor",
|
||||||
|
"Modified Power Holding Device"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockCapBank": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"Basic Capacitor Bank",
|
||||||
|
"Capacitor Bank",
|
||||||
|
"Vibrant Capacitor Bank"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockTank": {
|
||||||
|
"name": [
|
||||||
|
"Fluid Tank (Configured)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockKillerJoe": {
|
||||||
|
"name": [
|
||||||
|
"Killer Joe"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockWirelessCharger": {
|
||||||
|
"name": "Wireless Charger"
|
||||||
|
},
|
||||||
|
"darkSteel_sword": {
|
||||||
|
"name": [
|
||||||
|
"The Ender"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockVat": {
|
||||||
|
"name": [
|
||||||
|
"The Vat"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemBrokenSpawner": {
|
||||||
|
"name": "Broken Spawner"
|
||||||
|
},
|
||||||
|
"blockSoulBinder": {
|
||||||
|
"name": "Soul Binder"
|
||||||
|
},
|
||||||
|
"itemMachinePart": {
|
||||||
|
"name": [
|
||||||
|
"Machine Chassis",
|
||||||
|
"Basic Gear"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemYetaWrench": {
|
||||||
|
"name": "Yeta Wrench"
|
||||||
|
},
|
||||||
|
"itemAlloy": {
|
||||||
|
"name": [
|
||||||
|
"Electrical Steel",
|
||||||
|
"Energetic Alloy",
|
||||||
|
"Vibrant Alloy",
|
||||||
|
"Redstone Alloy",
|
||||||
|
"Conductive Iron",
|
||||||
|
"Pulsating Iron",
|
||||||
|
"Dark Steel",
|
||||||
|
"Soularium"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemXpTransfer": {
|
||||||
|
"name": "Experience Rod"
|
||||||
|
},
|
||||||
|
"itemFrankenSkull": {
|
||||||
|
"name": [
|
||||||
|
"Zombie Electrode",
|
||||||
|
"Z-Logic Controller",
|
||||||
|
"Frank'N'Zombie",
|
||||||
|
"Ender Resonator",
|
||||||
|
"Sentient Ender",
|
||||||
|
"Skeletal Contractor"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockReservoir": {
|
||||||
|
"name": "Reservoir"
|
||||||
|
},
|
||||||
|
"itemSoulVessel": {
|
||||||
|
"name": [
|
||||||
|
"Soul Vial",
|
||||||
|
"Soul Vial"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemMaterial": {
|
||||||
|
"name": [
|
||||||
|
"Silicon",
|
||||||
|
"Conduit Binder",
|
||||||
|
"Binder Composite",
|
||||||
|
"Pulsating Iron Nugget",
|
||||||
|
"Vibrant Alloy Nugget",
|
||||||
|
"Pulsating Crystal",
|
||||||
|
"Vibrant Crystal",
|
||||||
|
"",
|
||||||
|
"Ender Crystal",
|
||||||
|
"Enticing Crystal",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Grains of the End",
|
||||||
|
"",
|
||||||
|
"Precient Crystal",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Plant clippings and trimmings"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
35
etc/names/exnihiloadscensio.json
Normal file
35
etc/names/exnihiloadscensio.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"blockDust": {
|
||||||
|
"name": "Dust"
|
||||||
|
},
|
||||||
|
"blockBarrel1": {
|
||||||
|
"name": "Stone Barrel"
|
||||||
|
},
|
||||||
|
"hammerStone": {
|
||||||
|
"name": "Stone Hammer"
|
||||||
|
},
|
||||||
|
"itemMaterial": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"Porcelain Clay",
|
||||||
|
"Silkworm",
|
||||||
|
"Ancient Spores",
|
||||||
|
"Grass Seeds"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"blockCrucible": {
|
||||||
|
"name": [
|
||||||
|
"Unfired Crucible",
|
||||||
|
"Crucible"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"itemMesh": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"String Mesh",
|
||||||
|
"Flint Stiffened Mesh",
|
||||||
|
"Iron Stiffened Mesh",
|
||||||
|
"Diamond Stiffened Mesh"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
||||||
70
etc/names/extrautils2.json
Normal file
70
etc/names/extrautils2.json
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"resonator": {
|
||||||
|
"name": "Resonator"
|
||||||
|
},
|
||||||
|
"endershard": {
|
||||||
|
"name": "Ender Shard"
|
||||||
|
},
|
||||||
|
"glasscutter": {
|
||||||
|
"name": "Glass Cutter"
|
||||||
|
},
|
||||||
|
"decorativesolid": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Polished Stone",
|
||||||
|
"Stoneburnt"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"passivegenerator": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Water Mill",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Manual Mill"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pipe": {
|
||||||
|
"name": "Transfer Pipe"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"name": "Mechanical User"
|
||||||
|
},
|
||||||
|
"trashcan": {
|
||||||
|
"name": "Trash Can"
|
||||||
|
},
|
||||||
|
"ingredients": {
|
||||||
|
"name": [
|
||||||
|
"Resonating Redstone Crystal",
|
||||||
|
"Redstone Gear",
|
||||||
|
"Eye of Redstone",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Upgrade Speed",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Upgrade Base",
|
||||||
|
"Drop of Evil"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"drum": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"Iron Drum"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"grocket": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Transfer Node (Fluids)",
|
||||||
|
"",
|
||||||
|
"Retrieval Node (Fluids)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
22
etc/names/ironchest.json
Normal file
22
etc/names/ironchest.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"goldDiamondUpgrade": {
|
||||||
|
"name": "Gold to Diamond Chest Upgrade"
|
||||||
|
},
|
||||||
|
"BlockIronChest": {
|
||||||
|
"name": [
|
||||||
|
"Iron Chest",
|
||||||
|
"Gold Chest",
|
||||||
|
"Diamond Chest",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Crystal Chest",
|
||||||
|
"Obsidian Chest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"woodIronUpgrade": {
|
||||||
|
"name": "Wood to Iron Chest Upgrade"
|
||||||
|
},
|
||||||
|
"ironGoldUpgrade": {
|
||||||
|
"name": "Iron to Gold Chest Upgrade"
|
||||||
|
}
|
||||||
|
}
|
||||||
37
etc/names/rftools.json
Normal file
37
etc/names/rftools.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"crafter1": {
|
||||||
|
"name": "Crafter Tier 1"
|
||||||
|
},
|
||||||
|
"modular_storage": {
|
||||||
|
"name": "Modular Storage"
|
||||||
|
},
|
||||||
|
"crafter3": {
|
||||||
|
"name": "Crafter Tier 3"
|
||||||
|
},
|
||||||
|
"machine_frame": {
|
||||||
|
"name": "Machine Frame"
|
||||||
|
},
|
||||||
|
"storage_module": {
|
||||||
|
"name": [
|
||||||
|
"Storage Module Tier 1",
|
||||||
|
"Storage Module Tier 2",
|
||||||
|
"Storage Module Tier 3",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Remote Storage Module"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"crafter2": {
|
||||||
|
"name": "Crafter Tier 2"
|
||||||
|
},
|
||||||
|
"machine_base": {
|
||||||
|
"name": "Machine Base"
|
||||||
|
},
|
||||||
|
"remote_storage": {
|
||||||
|
"name": "Remote Storage"
|
||||||
|
},
|
||||||
|
"timer_block": {
|
||||||
|
"name": "Timer"
|
||||||
|
}
|
||||||
|
}
|
||||||
33
etc/names/storagedrawers.json
Normal file
33
etc/names/storagedrawers.json
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"compDrawers": {
|
||||||
|
"name": "Compacting Drawer"
|
||||||
|
},
|
||||||
|
"upgradeTemplate": {
|
||||||
|
"name": "Upgrade Template"
|
||||||
|
},
|
||||||
|
"controller": {
|
||||||
|
"name": "Drawer Controller"
|
||||||
|
},
|
||||||
|
"basicDrawers": {
|
||||||
|
"name": [
|
||||||
|
"Basic Drawer",
|
||||||
|
"",
|
||||||
|
"Basic Drawers 2x2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"upgradeVoid": {
|
||||||
|
"name": "Void Upgrade"
|
||||||
|
},
|
||||||
|
"upgradeStorage": {
|
||||||
|
"name": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Storage Upgrade (V)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"controllerSlave": {
|
||||||
|
"name": "Controller Slave"
|
||||||
|
}
|
||||||
|
}
|
||||||
36
etc/names/tconstruct.json
Normal file
36
etc/names/tconstruct.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"materials": {
|
||||||
|
"name": [
|
||||||
|
"Seared Brick",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"Necrotic Bone"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pattern": {
|
||||||
|
"name": "Blank Pattern"
|
||||||
|
},
|
||||||
|
"cast": {
|
||||||
|
"name": "Blank Cast"
|
||||||
|
},
|
||||||
|
"casting": {
|
||||||
|
"name": "Casting Table"
|
||||||
|
},
|
||||||
|
"soil": {
|
||||||
|
"name": "Grout"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,28 @@
|
|||||||
{
|
{
|
||||||
|
[ "exnihiloadscensio:blockBarrel1:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:stone:0",
|
||||||
|
[ 9 ] = "minecraft:stone:0",
|
||||||
|
[ 10 ] = "minecraft:stone_slab:0",
|
||||||
|
[ 11 ] = "minecraft:stone:0",
|
||||||
|
[ 3 ] = "minecraft:stone:0",
|
||||||
|
[ 5 ] = "minecraft:stone:0",
|
||||||
|
[ 7 ] = "minecraft:stone:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "exnihiloadscensio:blockCrucible:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"exnihiloadscensio:itemMaterial:1",
|
||||||
|
[ 9 ] = "exnihiloadscensio:itemMaterial:1",
|
||||||
|
[ 10 ] = "exnihiloadscensio:itemMaterial:1",
|
||||||
|
[ 11 ] = "exnihiloadscensio:itemMaterial:1",
|
||||||
|
[ 3 ] = "exnihiloadscensio:itemMaterial:1",
|
||||||
|
[ 5 ] = "exnihiloadscensio:itemMaterial:1",
|
||||||
|
[ 7 ] = "exnihiloadscensio:itemMaterial:1",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
[ "exnihiloadscensio:hammerStone:0" ] = {
|
[ "exnihiloadscensio:hammerStone:0" ] = {
|
||||||
maxCount = 1,
|
maxCount = 1,
|
||||||
ingredients = {
|
ingredients = {
|
||||||
@@ -9,4 +33,11 @@
|
|||||||
},
|
},
|
||||||
count = 1,
|
count = 1,
|
||||||
},
|
},
|
||||||
|
[ "exnihiloadscensio:itemMaterial:1" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:dye:15",
|
||||||
|
"minecraft:clay_ball:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,24 @@
|
|||||||
{
|
{
|
||||||
[ "extrautils2:user:0" ] = {
|
[ "extrautils2:decorativesolid:2" ] = {
|
||||||
ingredients = {
|
ingredients = {
|
||||||
"minecraft:dropper:0",
|
"minecraft:stonebrick:0",
|
||||||
"extrautils2:ingredients:0",
|
"minecraft:stonebrick:0",
|
||||||
[ 5 ] = "minecraft:lever:0",
|
[ 5 ] = "minecraft:stonebrick:0",
|
||||||
|
[ 6 ] = "minecraft:stonebrick:0",
|
||||||
|
},
|
||||||
|
count = 4,
|
||||||
|
},
|
||||||
|
[ "extrautils2:drum:1" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
"minecraft:heavy_weighted_pressure_plate:0",
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
[ 9 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 10 ] = "minecraft:heavy_weighted_pressure_plate:0",
|
||||||
|
[ 11 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 6 ] = "minecraft:cauldron:0",
|
||||||
|
[ 7 ] = "minecraft:iron_ingot:0",
|
||||||
},
|
},
|
||||||
count = 1,
|
count = 1,
|
||||||
},
|
},
|
||||||
@@ -18,4 +33,136 @@
|
|||||||
maxCount = 1,
|
maxCount = 1,
|
||||||
count = 8,
|
count = 8,
|
||||||
},
|
},
|
||||||
|
[ "extrautils2:grocket:2" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:redstone:0",
|
||||||
|
"extrautils2:pipe:0",
|
||||||
|
"minecraft:redstone:0",
|
||||||
|
[ 5 ] = "minecraft:stone:0",
|
||||||
|
[ 6 ] = "minecraft:bucket:0",
|
||||||
|
[ 7 ] = "minecraft:stone:0",
|
||||||
|
},
|
||||||
|
count = 4,
|
||||||
|
},
|
||||||
|
[ "extrautils2:grocket:4" ] = {
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:ender_pearl:0",
|
||||||
|
[ 2 ] = "minecraft:ender_pearl:0",
|
||||||
|
[ 5 ] = "extrautils2:grocket:2",
|
||||||
|
[ 6 ] = "minecraft:diamond:0",
|
||||||
|
[ 7 ] = "extrautils2:grocket:2",
|
||||||
|
},
|
||||||
|
count = 2,
|
||||||
|
},
|
||||||
|
[ "extrautils2:ingredients:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"extrautils2:endershard:0",
|
||||||
|
"enderio:itemAlloy:3",
|
||||||
|
"enderio:itemAlloy:3",
|
||||||
|
[ 5 ] = "enderio:itemAlloy:3",
|
||||||
|
[ 6 ] = "enderio:itemAlloy:3",
|
||||||
|
[ 7 ] = "enderio:itemAlloy:3",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "extrautils2:ingredients:1" ] = {
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 2 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 5 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 6 ] = "minecraft:planks:0",
|
||||||
|
[ 7 ] = "minecraft:redstone_torch:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "extrautils2:ingredients:6" ] = {
|
||||||
|
count = 1,
|
||||||
|
ingredients = {
|
||||||
|
"extrautils2:ingredients:9",
|
||||||
|
"minecraft:gold_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:redstone_block:0",
|
||||||
|
},
|
||||||
|
maxCount = 4,
|
||||||
|
},
|
||||||
|
[ "extrautils2:miner:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:dropper:0",
|
||||||
|
"extrautils2:ingredients:0",
|
||||||
|
[ 5 ] = "minecraft:iron_pickaxe:*",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "extrautils2:passivegenerator:3" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"extrautils2:decorativesolid:3",
|
||||||
|
"extrautils2:decorativesolid:3",
|
||||||
|
"extrautils2:decorativesolid:3",
|
||||||
|
[ 9 ] = "extrautils2:decorativesolid:3",
|
||||||
|
[ 10 ] = "extrautils2:decorativesolid:3",
|
||||||
|
[ 11 ] = "extrautils2:decorativesolid:3",
|
||||||
|
[ 5 ] = "extrautils2:ingredients:1",
|
||||||
|
[ 6 ] = "extrautils2:ingredients:0",
|
||||||
|
[ 7 ] = "extrautils2:ingredients:1",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "extrautils2:passivegenerator:7" ] = {
|
||||||
|
ingredients = {
|
||||||
|
[ 7 ] = "extrautils2:decorativesolid:2",
|
||||||
|
[ 2 ] = "extrautils2:ingredients:1",
|
||||||
|
[ 5 ] = "extrautils2:decorativesolid:2",
|
||||||
|
[ 6 ] = "extrautils2:ingredients:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "extrautils2:pipe:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:stone_slab:0",
|
||||||
|
"minecraft:stone_slab:0",
|
||||||
|
"minecraft:stone_slab:0",
|
||||||
|
[ 9 ] = "minecraft:stone_slab:0",
|
||||||
|
[ 10 ] = "minecraft:stone_slab:0",
|
||||||
|
[ 11 ] = "minecraft:stone_slab:0",
|
||||||
|
[ 5 ] = "minecraft:glass:0",
|
||||||
|
[ 6 ] = "minecraft:redstone:0",
|
||||||
|
[ 7 ] = "minecraft:glass:0",
|
||||||
|
},
|
||||||
|
count = 64,
|
||||||
|
},
|
||||||
|
[ "extrautils2:resonator:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:redstone:0",
|
||||||
|
"minecraft:coal_block:0",
|
||||||
|
"minecraft:redstone:0",
|
||||||
|
[ 9 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 10 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 11 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 6 ] = "extrautils2:ingredients:0",
|
||||||
|
[ 7 ] = "minecraft:iron_ingot:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "extrautils2:trashcan:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:stone:0",
|
||||||
|
"minecraft:stone:0",
|
||||||
|
"minecraft:stone:0",
|
||||||
|
[ 9 ] = "minecraft:cobblestone:0",
|
||||||
|
[ 10 ] = "minecraft:cobblestone:0",
|
||||||
|
[ 11 ] = "minecraft:cobblestone:0",
|
||||||
|
[ 5 ] = "minecraft:cobblestone:0",
|
||||||
|
[ 6 ] = "minecraft:chest:0",
|
||||||
|
[ 7 ] = "minecraft:cobblestone:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "extrautils2:user:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:dropper:0",
|
||||||
|
"extrautils2:ingredients:0",
|
||||||
|
[ 5 ] = "minecraft:lever:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
114
etc/recipes/ironchest.db
Normal file
114
etc/recipes/ironchest.db
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
{
|
||||||
|
[ "ironchest:BlockIronChest:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
[ 9 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 10 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 11 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 6 ] = "minecraft:chest:0",
|
||||||
|
[ 7 ] = "minecraft:iron_ingot:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "ironchest:BlockIronChest:1" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:gold_ingot:0",
|
||||||
|
"minecraft:gold_ingot:0",
|
||||||
|
"minecraft:gold_ingot:0",
|
||||||
|
[ 9 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 10 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 11 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 6 ] = "ironchest:BlockIronChest:0",
|
||||||
|
[ 7 ] = "minecraft:gold_ingot:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "ironchest:BlockIronChest:2" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:glass:0",
|
||||||
|
"minecraft:glass:0",
|
||||||
|
"minecraft:glass:0",
|
||||||
|
[ 9 ] = "minecraft:glass:0",
|
||||||
|
[ 10 ] = "minecraft:glass:0",
|
||||||
|
[ 11 ] = "minecraft:glass:0",
|
||||||
|
[ 5 ] = "minecraft:diamond:0",
|
||||||
|
[ 6 ] = "ironchest:BlockIronChest:1",
|
||||||
|
[ 7 ] = "minecraft:diamond:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "ironchest:BlockIronChest:5" ] = {
|
||||||
|
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 ] = "ironchest:BlockIronChest:2",
|
||||||
|
[ 7 ] = "minecraft:glass:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "ironchest:BlockIronChest:6" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:obsidian:0",
|
||||||
|
"minecraft:obsidian:0",
|
||||||
|
"minecraft:obsidian:0",
|
||||||
|
[ 9 ] = "minecraft:obsidian:0",
|
||||||
|
[ 10 ] = "minecraft:obsidian:0",
|
||||||
|
[ 11 ] = "minecraft:obsidian:0",
|
||||||
|
[ 5 ] = "minecraft:obsidian:0",
|
||||||
|
[ 6 ] = "ironchest:BlockIronChest:2",
|
||||||
|
[ 7 ] = "minecraft:obsidian:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "ironchest:goldDiamondUpgrade:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:glass:0",
|
||||||
|
"minecraft:glass:0",
|
||||||
|
"minecraft:glass:0",
|
||||||
|
[ 9 ] = "minecraft:glass:0",
|
||||||
|
[ 10 ] = "minecraft:glass:0",
|
||||||
|
[ 11 ] = "minecraft:glass:0",
|
||||||
|
[ 5 ] = "minecraft:diamond:0",
|
||||||
|
[ 6 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 7 ] = "minecraft:diamond:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "ironchest:ironGoldUpgrade:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:gold_ingot:0",
|
||||||
|
"minecraft:gold_ingot:0",
|
||||||
|
"minecraft:gold_ingot:0",
|
||||||
|
[ 9 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 10 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 11 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 6 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 7 ] = "minecraft:gold_ingot:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "ironchest:woodIronUpgrade:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
[ 9 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 10 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 11 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 6 ] = "minecraft:planks:0",
|
||||||
|
[ 7 ] = "minecraft:iron_ingot:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,4 +1,20 @@
|
|||||||
{
|
{
|
||||||
|
[ "minecraft:flint_and_steel:0" ] = {
|
||||||
|
count = 1,
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:flint:0",
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
},
|
||||||
|
maxCount = 1,
|
||||||
|
},
|
||||||
|
[ "minecraft:glass_bottle:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:glass:0",
|
||||||
|
[ 6 ] = "minecraft:glass:0",
|
||||||
|
[ 3 ] = "minecraft:glass:0",
|
||||||
|
},
|
||||||
|
count = 3,
|
||||||
|
},
|
||||||
[ "minecraft:writable_book:0" ] = {
|
[ "minecraft:writable_book:0" ] = {
|
||||||
ingredients = {
|
ingredients = {
|
||||||
"minecraft:book:0",
|
"minecraft:book:0",
|
||||||
|
|||||||
126
etc/recipes/rftools.db
Normal file
126
etc/recipes/rftools.db
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
{
|
||||||
|
[ "rftools:crafter1:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 2 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 5 ] = "minecraft:crafting_table:0",
|
||||||
|
[ 6 ] = "rftools:machine_frame:0",
|
||||||
|
[ 7 ] = "minecraft:crafting_table:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:crafter2:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 2 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 5 ] = "minecraft:crafting_table:0",
|
||||||
|
[ 6 ] = "rftools:crafter1:0",
|
||||||
|
[ 7 ] = "minecraft:crafting_table:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:crafter3:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 2 ] = "minecraft:redstone_torch:0",
|
||||||
|
[ 5 ] = "minecraft:crafting_table:0",
|
||||||
|
[ 6 ] = "rftools:crafter2:0",
|
||||||
|
[ 7 ] = "minecraft:crafting_table:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:machine_frame:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
"minecraft:dye:4",
|
||||||
|
"minecraft:iron_ingot:0",
|
||||||
|
[ 9 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 10 ] = "minecraft:dye:4",
|
||||||
|
[ 11 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 5 ] = "minecraft:gold_nugget:0",
|
||||||
|
[ 7 ] = "minecraft:gold_nugget:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:modular_storage:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:redstone:0",
|
||||||
|
"minecraft:chest:0",
|
||||||
|
"minecraft:redstone:0",
|
||||||
|
[ 9 ] = "minecraft:redstone:0",
|
||||||
|
[ 10 ] = "minecraft:quartz:0",
|
||||||
|
[ 11 ] = "minecraft:redstone:0",
|
||||||
|
[ 5 ] = "minecraft:quartz:0",
|
||||||
|
[ 6 ] = "rftools:machine_frame:0",
|
||||||
|
[ 7 ] = "minecraft:quartz:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:storage_module:2" ] = {
|
||||||
|
count = 1,
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:redstone_block:0",
|
||||||
|
[ 11 ] = "minecraft:quartz_block:1",
|
||||||
|
[ 2 ] = "minecraft:chest:0",
|
||||||
|
[ 5 ] = "minecraft:gold_block:0",
|
||||||
|
[ 6 ] = "rftools:storage_module:1",
|
||||||
|
[ 7 ] = "minecraft:gold_block:0",
|
||||||
|
[ 9 ] = "minecraft:quartz_block:1",
|
||||||
|
},
|
||||||
|
maxCount = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:remote_storage:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:ender_pearl:0",
|
||||||
|
"minecraft:chest:0",
|
||||||
|
"minecraft:ender_pearl:0",
|
||||||
|
[ 9 ] = "minecraft:ender_pearl:0",
|
||||||
|
[ 10 ] = "minecraft:quartz:0",
|
||||||
|
[ 11 ] = "minecraft:ender_pearl:0",
|
||||||
|
[ 5 ] = "minecraft:quartz:0",
|
||||||
|
[ 6 ] = "rftools:machine_frame:0",
|
||||||
|
[ 7 ] = "minecraft:quartz:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:storage_module:0" ] = {
|
||||||
|
count = 1,
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:redstone:0",
|
||||||
|
[ 11 ] = "minecraft:quartz:0",
|
||||||
|
[ 2 ] = "minecraft:chest:0",
|
||||||
|
[ 5 ] = "minecraft:gold_nugget:0",
|
||||||
|
[ 6 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 7 ] = "minecraft:gold_nugget:0",
|
||||||
|
[ 9 ] = "minecraft:quartz:0",
|
||||||
|
},
|
||||||
|
maxCount = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:storage_module:1" ] = {
|
||||||
|
count = 1,
|
||||||
|
ingredients = {
|
||||||
|
[ 10 ] = "minecraft:redstone:0",
|
||||||
|
[ 11 ] = "minecraft:quartz:0",
|
||||||
|
[ 2 ] = "minecraft:chest:0",
|
||||||
|
[ 5 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 6 ] = "rftools:storage_module:0",
|
||||||
|
[ 7 ] = "minecraft:gold_ingot:0",
|
||||||
|
[ 9 ] = "minecraft:quartz:0",
|
||||||
|
},
|
||||||
|
maxCount = 1,
|
||||||
|
},
|
||||||
|
[ "rftools:storage_module:6" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:ender_pearl:0",
|
||||||
|
"minecraft:chest:0",
|
||||||
|
"minecraft:ender_pearl:0",
|
||||||
|
[ 9 ] = "minecraft:quartz:0",
|
||||||
|
[ 10 ] = "minecraft:redstone:0",
|
||||||
|
[ 11 ] = "minecraft:quartz:0",
|
||||||
|
[ 5 ] = "minecraft:gold_nugget:0",
|
||||||
|
[ 6 ] = "minecraft:iron_ingot:0",
|
||||||
|
[ 7 ] = "minecraft:gold_nugget:0",
|
||||||
|
},
|
||||||
|
count = 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,17 +1,19 @@
|
|||||||
{
|
{
|
||||||
[ "storagedrawers:basicDrawers:0:b85f006d9f6aa0e06184f8931d4e85c1" ] = {
|
[ "storagedrawers:upgradeStorage:4" ] = {
|
||||||
ingredients = {
|
ingredients = {
|
||||||
"minecraft:planks:0",
|
"minecraft:emerald:0",
|
||||||
"minecraft:planks:0",
|
"minecraft:stick:0",
|
||||||
"minecraft:planks:0",
|
"minecraft:emerald:0",
|
||||||
[ 9 ] = "minecraft:planks:0",
|
[ 9 ] = "minecraft:emerald:0",
|
||||||
[ 10 ] = "minecraft:planks:0",
|
[ 10 ] = "minecraft:stick:0",
|
||||||
[ 11 ] = "minecraft:planks:0",
|
[ 11 ] = "minecraft:emerald:0",
|
||||||
[ 6 ] = "minecraft:chest:0",
|
[ 5 ] = "minecraft:stick:0",
|
||||||
|
[ 6 ] = "storagedrawers:upgradeTemplate:0",
|
||||||
|
[ 7 ] = "minecraft:stick:0",
|
||||||
},
|
},
|
||||||
count = 1,
|
count = 1,
|
||||||
},
|
},
|
||||||
[ "storagedrawers:upgradeTemplate:0" ] = {
|
[ "storagedrawers:upgradeVoid:0" ] = {
|
||||||
ingredients = {
|
ingredients = {
|
||||||
"minecraft:stick:0",
|
"minecraft:stick:0",
|
||||||
"minecraft:stick:0",
|
"minecraft:stick:0",
|
||||||
@@ -19,10 +21,10 @@
|
|||||||
[ 9 ] = "minecraft:stick:0",
|
[ 9 ] = "minecraft:stick:0",
|
||||||
[ 10 ] = "minecraft:stick:0",
|
[ 10 ] = "minecraft:stick:0",
|
||||||
[ 11 ] = "minecraft:stick:0",
|
[ 11 ] = "minecraft:stick:0",
|
||||||
[ 5 ] = "minecraft:stick:0",
|
[ 5 ] = "minecraft:obsidian:0",
|
||||||
[ 6 ] = "storagedrawers:basicDrawers:0:b85f006d9f6aa0e06184f8931d4e85c1",
|
[ 6 ] = "storagedrawers:upgradeTemplate:0",
|
||||||
[ 7 ] = "minecraft:stick:0",
|
[ 7 ] = "minecraft:obsidian:0",
|
||||||
},
|
},
|
||||||
count = 2,
|
count = 1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -19,4 +19,18 @@
|
|||||||
},
|
},
|
||||||
count = 4,
|
count = 4,
|
||||||
},
|
},
|
||||||
|
[ "tconstruct:soil:0" ] = {
|
||||||
|
ingredients = {
|
||||||
|
"minecraft:gravel:0",
|
||||||
|
"minecraft:sand:0",
|
||||||
|
"minecraft:gravel:0",
|
||||||
|
[ 9 ] = "minecraft:gravel:0",
|
||||||
|
[ 10 ] = "minecraft:sand:0",
|
||||||
|
[ 11 ] = "minecraft:gravel:0",
|
||||||
|
[ 5 ] = "minecraft:sand:0",
|
||||||
|
[ 6 ] = "minecraft:clay:0",
|
||||||
|
[ 7 ] = "minecraft:sand:0",
|
||||||
|
},
|
||||||
|
count = 8,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user