CCCPaste

ArcBlocks

-- 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
}