Initial compressed block API and several compressed block series

This commit is contained in:
teknomunk 2024-05-14 01:07:32 +00:00
parent d264ba70d8
commit ef1853e83e
4 changed files with 145 additions and 254 deletions

View File

@ -1,5 +1,146 @@
local modname = minetest.get_current_modname() local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname) local modpath = minetest.get_modpath(modname)
local S = minetest.get_translator(modname)
local mod = {}
mcl_compressed_block = mod
dofile(modpath.."/nodes.lua") local LABELS = {
dofile(modpath.."/recipes.lua") [0] = "@1",
"Compressed @1",
"Double Compressed @1",
"Triple Compressed @1",
"Quadruple Compressed @1",
"Quintuple Compressed @1",
"Sextuple Compressed @1",
"Septuple Compressed @1",
"Octuple Compressed @1",
}
local NODE_NAMES = {
[0] = "",
"compressed_",
"double_compressed_",
"triple_compressed_",
"quadruple_compressed_",
"quintuple_compressed_",
"sextuple_compressed_",
"septuple_compressed_",
"octuple_compressed_",
}
local BLAST_RESISTENCE = {
11, 19, 33, 58, 102, 179, 313, 548,
}
local HARDNESS = {
3, 4, 5, 7, 9, 12, 16, 21,
}
local block_name = "Cobblestone"
function mod.register_block_compression(base_block, block_name, max_levels, final_drops)
local base_nodedef = minetest.registered_nodes[base_block]
assert(base_nodedef)
local prev_name = base_block
for i = 1,(max_levels-1) do
local overlay_level = math.ceil(i/max_levels * 8)
local name = "mcl_compressed_blocks:"..NODE_NAMES[i]..block_name
minetest.register_node(name,{
description = S(LABELS[i], base_nodedef.description),
_doc_items_longdesc = (
"@1 is a decorative block made from 9 @2. It is useful for saving space in your inventories."
):gsub("@1",LABELS[i]:gsub("@1",block_name)):gsub("@2",LABELS[i-1]:gsub("@1",block_name)),
_doc_items_hidden = false,
tiles = {base_nodedef.tiles[1].."^mcl_compressed_blocks_"..tostring(overlay_level).."x_overlay.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = base_nodedef.sounds,
_mcl_blast_resistance = BLAST_RESISTENCE[i],
_mcl_hardness = HARDNESS[i],
})
minetest.register_craft({
output = name,
recipe = {
{ prev_name, prev_name, prev_name },
{ prev_name, prev_name, prev_name },
{ prev_name, prev_name, prev_name },
},
})
minetest.register_craft({
output = prev_name .. " 9",
recipe = {
{ name },
},
})
prev_name = name
end
-- Compression Terminal Block
local name = "mcl_compressed_blocks:"..NODE_NAMES[max_levels]..block_name
minetest.register_node(name,{
description = S(LABELS[max_levels], base_nodedef.description),
_doc_items_longdesc = (
"@1 is a decorative block made from 9 @2. It is useful for saving space in your inventories."
):gsub("@1",LABELS[max_levels]:gsub("@1",block_name)):gsub("@2",LABELS[max_levels-1]:gsub("@1",block_name)),
_doc_items_hidden = false,
tiles = {base_nodedef.tiles[1].."^mcl_compressed_blocks_8x_overlay.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
drop = final_drops,
sounds = base_nodedef.sounds,
_mcl_blast_resistance = BLAST_RESISTENCE[max_levels],
_mcl_hardness = HARDNESS[max_levels],
_mcl_silk_touch_drop = true,
})
minetest.register_craft({
output = name,
recipe = {
{ prev_name, prev_name, prev_name },
{ prev_name, prev_name, prev_name },
{ prev_name, prev_name, prev_name },
},
})
minetest.register_craft({
output = prev_name .. " 9",
recipe = {
{ name },
},
})
end
mod.register_block_compression("mcl_core:cobble", "cobblestone", 8, {
max_items = 2,
items = {
{items = {"mcl_core:diamond 9"}},
{items = {"mcl_nether:netherite_scrap 18"}},
},
})
mod.register_block_compression("mcl_deepslate:deepslate_cobbled", "deepslate_cobbled", 8, {
max_items = 2,
items = {
{items = {"mcl_core:diamond 9"}},
{items = {"mcl_nether:netherite_scrap 18"}},
},
})
mod.register_block_compression("mcl_core:granite", "granite", 5, {
max_items = 2,
items = {
{items = {"mcl_core:diamond 9"}},
{items = {"mcl_nether:netherite_scrap 18"}},
},
})
mod.register_block_compression("mcl_core:diorite", "diorite", 6, {
max_items = 2,
items = {
{items = {"mcl_core:diamond 9"}},
{items = {"mcl_nether:netherite_scrap 18"}},
},
})
mod.register_block_compression("mcl_core:andesite", "andesite", 6, {
max_items = 2,
items = {
{items = {"mcl_core:diamond 9"}},
{items = {"mcl_nether:netherite_scrap 18"}},
},
})

View File

@ -1,3 +1,4 @@
name = mcl_compressed_blocks name = mcl_compressed_blocks
depends = mcl_core depends = mcl_core, mcl_deepslate
description = adds compressed blocks to voxelibre description = adds compressed blocks to voxelibre

View File

@ -1,124 +0,0 @@
local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname)
--Compressed Cobblestone
minetest.register_node("mcl_compressed_blocks:compressed_cobblestone", {
description = S("Compressed Cobblestone"),
_doc_items_longdesc = S("Compressed Cobblestone is a decorative block made from 9 Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 11,
_mcl_hardness = 3,
})
--Double Compressed Cobble
minetest.register_node("mcl_compressed_blocks:double_compressed_cobblestone", {
description = S("Double Compressed Cobblestone"),
_doc_items_longdesc = S("Double Compressed Cobblestone is a decorative block made from 9 Compressed Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_double_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 19,
_mcl_hardness = 4,
})
--Triple Compressed Cobble
minetest.register_node("mcl_compressed_blocks:triple_compressed_cobblestone", {
description = S("Triple Compressed Cobblestone"),
_doc_items_longdesc = S("Triple Compressed Cobblestone is a decorative block made from 9 Double Compressed Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_triple_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 33,
_mcl_hardness = 5,
})
--Quadruple Compressed Cobble
minetest.register_node("mcl_compressed_blocks:quadruple_compressed_cobblestone", {
description = S("Quadruple Compressed Cobblestone"),
_doc_items_longdesc = S("Quadruple Compressed Cobblestone is a decorative block made from 9 Triple Compressed Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_quadruple_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 58,
_mcl_hardness = 7,
})
--Quintuple Compressed Cobble
minetest.register_node("mcl_compressed_blocks:quintuple_compressed_cobblestone", {
description = S("Quintuple Compressed Cobblestone"),
_doc_items_longdesc = S("Quintuple Compressed Cobblestone is a decorative block made from 9 Quadruple Compressed Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_quintuple_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 102,
_mcl_hardness = 9,
})
--Sextuple Compressed Cobble
minetest.register_node("mcl_compressed_blocks:sextuple_compressed_cobblestone", {
description = S("Sextuple Compressed Cobblestone"),
_doc_items_longdesc = S("Sextuple Compressed Cobblestone is a decorative block made from 9 Quintuple Compressed Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_sextuple_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 179,
_mcl_hardness = 12,
})
--Septuple Compressed Cobble
minetest.register_node("mcl_compressed_blocks:septuple_compressed_cobblestone", {
description = S("Septuple Compressed Cobblestone"),
_doc_items_longdesc = S("Septuple Compressed Cobblestone is a decorative block made from 9 Sextuple Compressed Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_septuple_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 313,
_mcl_hardness = 16,
})
--Ocutple Compressed Cobble
minetest.register_node("mcl_compressed_blocks:octuple_compressed_cobblestone", {
description = S("Octuple Compressed Cobblestone"),
_doc_items_longdesc = S("Octuple Compressed Cobblestone is a decorative block made from 9 Septuple Compressed Cobblestone. It is useful for saving space in your inventories."),
_doc_items_hidden = false,
tiles = {"mcl_compressed_blocks_octuple_compressed_cobblestone.png"},
is_ground_content = true,
stack_max = 64,
groups = {pickaxey=1, stone=1, building_block=1},
drop = {
max_items = 2,
items = {
{items = {"mcl_core:diamond 9"}},
{items = {"mcl_nether:netherite_scrap 18"}},
},
},
sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 548,
_mcl_hardness = 21,
_mcl_silk_touch_drop = true,
})

View File

@ -1,127 +0,0 @@
minetest.register_craft({
output = "mcl_compressed_blocks:compressed_cobblestone",
recipe = {
{ "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" },
{ "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" },
{ "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" },
},
})
minetest.register_craft({
output = "mcl_core:cobble 9",
recipe = {
{ "mcl_compressed_blocks:compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:double_compressed_cobblestone",
recipe = {
{ "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone" },
{ "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone" },
{ "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone", "mcl_compressed_blocks:compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:compressed_cobblestone 9",
recipe = {
{ "mcl_compressed_blocks:double_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:triple_compressed_cobblestone",
recipe = {
{ "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone" },
{ "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone" },
{ "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone", "mcl_compressed_blocks:double_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:double_compressed_cobblestone 9",
recipe = {
{ "mcl_compressed_blocks:triple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:quadruple_compressed_cobblestone",
recipe = {
{ "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone" },
{ "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone" },
{ "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone", "mcl_compressed_blocks:triple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:triple_compressed_cobblestone 9",
recipe = {
{ "mcl_compressed_blocks:quadruple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:quintuple_compressed_cobblestone",
recipe = {
{ "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone" },
{ "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone" },
{ "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone", "mcl_compressed_blocks:quadruple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:quadruple_compressed_cobblestone 9",
recipe = {
{ "mcl_compressed_blocks:quintuple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:sextuple_compressed_cobblestone",
recipe = {
{ "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone" },
{ "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone" },
{ "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone", "mcl_compressed_blocks:quintuple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:quintuple_compressed_cobblestone 9",
recipe = {
{ "mcl_compressed_blocks:sextuple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:septuple_compressed_cobblestone",
recipe = {
{ "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone" },
{ "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone" },
{ "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone", "mcl_compressed_blocks:sextuple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:sextuple_compressed_cobblestone 9",
recipe = {
{ "mcl_compressed_blocks:septuple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:octuple_compressed_cobblestone",
recipe = {
{ "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone" },
{ "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone" },
{ "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone", "mcl_compressed_blocks:septuple_compressed_cobblestone" },
},
})
minetest.register_craft({
output = "mcl_compressed_blocks:septuple_compressed_cobblestone 9",
recipe = {
{ "mcl_compressed_blocks:octuple_compressed_cobblestone" },
},
})