-- ArcBlocks API
-- This is a minable blocks data register for my program vertical mining
-- Actual blocks registered :
-- - Minecaft 1.21.1
-- - Create 6.0.6 (the reason why andesite has its own category)
-- GLOBAL VARIABLES
local gtabBlockData = {}
local gtabsCategories = {}
local gnCategory = 0
local gtabsLiquids = {}
local gtabsUnbreakables = {}
-- Raw data creation
table.insert(gtabsCategories,"Ores")
table.insert(gtabsCategories,"Andesite")
table.insert(gtabsCategories,"Dirts")
table.insert(gtabsCategories,"Grasses&Sands")
table.insert(gtabsCategories,"Stone")
table.insert(gtabsCategories,"Deepslate")
table.insert(gtabsCategories,"Construction")
table.insert(gtabsCategories,"Miscellaneous")
table.insert(gtabsCategories,"Other")
-- Table structure : block name | mined item name | maximum quantity looted (without fortune) | block category
gnCategory = 1 -- Category : Ores
table.insert(gtabBlockData,{"minecraft:coal_ore","minecraft:coal",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_coal_ore","minecraft:coal",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:iron_ore","minecraft:raw_iron",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_iron_ore","minecraft:raw_iron",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:copper_ore","minecraft:raw_copper",5,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_copper_ore","minecraft:raw_copper",5,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:gold_ore","minecraft:raw_gold",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_gold_ore","minecraft:raw_gold",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:redstone_ore","minecraft:redstone",5,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_redstone_ore","minecraft:redstone",5,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:emerald_ore","minecraft:emerald",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_emerald_ore","minecraft:emerald",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:lapis_ore","minecraft:lapis_lazuli",9,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_lapis_ore","minecraft:lapis_lazuli",9,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:diamond_ore","minecraft:diamond",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:deepslate_diamond_ore","minecraft:diamond",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:zinc_ore","create:raw_zinc",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:deepslate_zinc_ore","create:raw_zinc",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:nether_gold_ore","minecraft:gold_nugget",6,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:nether_quartz_ore","minecraft:quartz",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:ancient_debris","minecraft:ancient_debris",1,gtabsCategories[gnCategory]})
gnCategory = 2 -- Category : Andesite
table.insert(gtabBlockData,{"minecraft:andesite","minecraft:andesite",1,gtabsCategories[gnCategory]})
gnCategory = 3 -- Category : Dirts
table.insert(gtabBlockData,{"minecraft:dirt","minecraft:dirt",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:netherrack","minecraft:netherrack",1,gtabsCategories[gnCategory]})
gnCategory = 4 -- Category : Grasses&Sands
table.insert(gtabBlockData,{"minecraft:grass_block","minecraft:dirt",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:podzol","minecraft:dirt",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:mycelium","minecraft:dirt",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:crimson_nylium","minecraft:netherrack",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:warped_nylium","minecraft:netherrack",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:sand","minecraft:sand",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:sandstone","minecraft:sandstone",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:red_sand","red_minecraft:sand",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:red_sandstone","red_minecraft:sandstone",1,gtabsCategories[gnCategory]})
gnCategory = 5 -- Category : Stone
table.insert(gtabBlockData,{"minecraft:stone","minecraft:cobblestone",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:cobblestone","minecraft:cobblestone",1,gtabsCategories[gnCategory]})
gnCategory = 6 -- Category : Deepslate
table.insert(gtabBlockData,{"minecraft:deepslate","minecraft:cobbled_deepslate",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:cobbled_deepslate","minecraft:cobbled_deepslate",1,gtabsCategories[gnCategory]})
gnCategory = 7 -- Category : Construction
table.insert(gtabBlockData,{"minecraft:granite","minecraft:granite",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:diorite","minecraft:diorite",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:calcite","minecraft:calcite",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:tuff","minecraft:tuff",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:dripstone_block","minecraft:dripstone_block",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:gravel","minecraft:gravel",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:asurine","create:asurine",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:crimsite","create:crimsite",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:limestone","create:limestone",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:ochrum","create:ochrum",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:scoria","create:scoria",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:scorchia","create:scorchia",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"create:veridium","create:veridium",1,gtabsCategories[gnCategory]})
gnCategory = 8 -- Category : Miscellaneous
table.insert(gtabBlockData,{"minecraft:obsidian","minecraft:obsidian",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:magma_block","minecraft:magma_block",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:soul_sand","minecraft:soul_sand",1,gtabsCategories[gnCategory]})
table.insert(gtabBlockData,{"minecraft:glowstone","minecraft:glowstone_dust",4,gtabsCategories[gnCategory]})
gnCategory = 9 -- Category : Other
table.insert(gtabsLiquids,"minecraft:water")
table.insert(gtabsLiquids,"minecraft:lava")
table.insert(gtabsUnbreakables,"minecraft:bedrock")
table.insert(gtabsUnbreakables,"minecraft:end_portal_frame")
table.insert(gtabsUnbreakables,"minecraft:end_portal")
table.insert(gtabsUnbreakables,"minecraft:nether_portal")
-- INTERNAL FUNCTIONS
local function SearchBlock(psBlockName)
for i=1,#gtabBlockData,1 do
if gtabBlockData[i][1] == psBlockName then return i end
end
return 0
end
-- EXTERNAL FUNCTIONS
local function BlockData(psBlockName)
local nBlockNumber = SearchBlock(psBlockName)
if nBlockNumber == 0 then return {psBlockName,psBlockName,1,gtabsCategories[gnCategory]} end
return gtabBlockData[nBlockNumber]
end
local function GetCategories()
return gtabsCategories
end
local function BlockName(ptabBlockDetails)
local sBlockName
if ptabBlockDetails == nil then return "" end
for sParam,sValue in pairs(ptabBlockDetails) do
if sParam == "name" then
sBlockName = sValue
return sBlockName
end
end
return ""
end
local function IsLiquid(psBlockName)
for i=1,#gtabsLiquids,1 do
if gtabsLiquids[i] == psBlockName then return true end
end
return false
end
local function IsUnbreakable(psBlockName)
for i=1,#gtabsUnbreakables,1 do
if gtabsUnbreakables[i] == psBlockName then return true end
end
return false
end
-- RETURN
return
{
BlockData = BlockData,
GetCategories = GetCategories,
BlockName = BlockName,
IsLiquid = IsLiquid,
IsUnbreakable = IsUnbreakable
}