Add cable embedded in blocks and decorative silverin blocks

This commit is contained in:
Zenon Seth 2024-03-10 12:30:58 +00:00
parent 7482964c28
commit 9fbc40c7eb
7 changed files with 64 additions and 22 deletions

View File

@ -3,12 +3,13 @@ local SIZE = logistica.settings.cable_size
-- Main function to register a new cable of certain tier
-- customNodeBox can specify any of the fixed/connect_DIR - values will be overwritten per-item basis
function logistica.register_cable(desc, name, customNodeBox)
function logistica.register_cable(desc, name, customNodeBox, customTiles, customInvImage)
local lname = string.lower(name)
local cable_name = "logistica:" .. lname
local cable_group = logistica.TIER_ALL
logistica.cables[cable_name] = name
local cnb = customNodeBox or {}
local tiles = customTiles or { "logistica_" .. lname .. ".png" }
local node_box = {
type = "connected",
@ -23,9 +24,7 @@ function logistica.register_cable(desc, name, customNodeBox)
local def = {
description = desc,
tiles = { "logistica_" .. lname .. ".png" },
inventory_image = "logistica_" .. lname .. "_inv.png",
wield_image = "logistica_" .. lname .. "_inv.png",
tiles = tiles,
groups = {
cracky = 3,
choppy = 3,
@ -49,15 +48,23 @@ function logistica.register_cable(desc, name, customNodeBox)
_mcl_blast_resistance = 10
}
if not customInvImage then
def.inventory_image = "logistica_" .. lname .. "_inv.png"
def.wield_image = "logistica_" .. lname .. "_inv.png"
elseif type(customInvImage) == "string" then
def.inventory_image = customInvImage
def.wield_image = customInvImage
end
minetest.register_node(cable_name, def)
local def_broken = {}
for k, v in pairs(def) do def_broken[k] = v end
def_broken.tiles = { "logistica_" .. lname .. ".png^logistica_broken.png" }
def_broken.tiles = logistica.table_map(tiles, function(s) return s.."^logistica_broken.png" end)
def_broken.inventory_image = "logistica_" .. lname .. "_inv.png^logistica_broken.png"
def_broken.groups = { cracky = 3, choppy = 3, oddly_breakable_by_hand = 2, pickaxey = 1, axey = 1, handy = 1, not_in_creative_inventory = 1 }
def_broken.description = "Broken " .. desc
def_broken.node_box = { type = "fixed", fixed = { -0.5, -SIZE, -SIZE, 0.5, SIZE, SIZE } }
def_broken.node_box = { type = "fixed", fixed = cnb.fixed or { -0.5, -SIZE, -SIZE, 0.5, SIZE, SIZE } }
def_broken.selection_box = def_broken.node_box
def_broken.connects_to = nil
def_broken.on_construct = nil

View File

@ -3,12 +3,6 @@ local S = logistica.TRANSLATOR
logistica.craftitem.nodes = {}
local items = logistica.craftitem.nodes
local crystalGroups = {
oddly_breakable_by_hand = 1, cracky = 3, handy = 1, pickaxey = 1
}
local sounds = logistica.sound_mod.node_sound_glass_defaults()
items["logistica:silverin"] = {
tiles = {
"logistica_silverin_nodebox.png",
@ -28,8 +22,8 @@ items["logistica:silverin"] = {
}
},
use_texture_alpha = "blend",
groups = crystalGroups,
sounds = sounds,
groups = { oddly_breakable_by_hand = 1, cracky = 3, handy = 1, pickaxey = 1 },
sounds = logistica.sound_mod.node_sound_glass_defaults(),
description = S("Silverin Crystal"),
inventory_image = "logistica_silverin.png",
stack_max = logistica.stack_max,
@ -88,4 +82,4 @@ items["logistica:silverin_plate"] = {
for name, def in pairs(items) do
minetest.register_node(name, def)
end
end

View File

@ -26,13 +26,23 @@ logistica.register_autocrafter("Autocrafter", "autocrafter", {
--------------------------------
-- regular
logistica.register_cable("Optic cable", "optic_cable")
-- TODO: plate + cable = masked cable
-- logistica.register_cable("Optic cable", "optic_wall", CABLE_SIZE, {
-- fixed = {
-- { -CABLE_SIZE, -CABLE_SIZE, -CABLE_SIZE, CABLE_SIZE, CABLE_SIZE, CABLE_SIZE }
-- }
-- })
logistica.register_cable("Optic Cable", "optic_cable")
-- full-block cable
logistica.register_cable("Embedded Optic Cable", "optic_cable_block",
{
fixed = {
{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
},
connect_top = {}, connect_bottom = {},
connect_front = {}, connect_back = {},
connect_left = {}, connect_right = {},
},
{
"logistica_silverin_plate.png^logistica_cable_connection_overlay.png"
},
-1
)
-- toggleable
logistica.register_cable_toggleable("Toggleable Cable", "optic_cable_toggleable",

14
registration/misc.lua Normal file
View File

@ -0,0 +1,14 @@
-- mostly decorative things that don't fit anywhere else
local S = logistica.TRANSLATOR
local function L(s) return "logistica:"..s end
minetest.register_node(L("silverin_block"), {
drawtype = "normal",
tiles = {"logistica_silverin_plate.png"},
paramtype2 = "facedir",
groups = { cracky = 2, pickaxey = 2 },
sounds = logistica.node_sound_metallic(),
stack_max = logistica.stack_max,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 40
})

View File

@ -175,3 +175,19 @@ minetest.register_craft({
{L("silverin_plate"), itemstrings.clay, L("silverin_plate")},
}
})
minetest.register_craft({
output = L("optic_cable_block"),
recipe = {
{L("silverin_plate")},
{L("optic_cable")},
{L("silverin_plate")},
}
})
minetest.register_craft({
output = L("silverin_block"),
recipe = {
{L("silverin_plate"), L("silverin_plate"), L("silverin_plate")}
}
})

View File

@ -4,5 +4,6 @@ dofile(path.."/node_recipes.lua")
dofile(path.."/item_recipes.lua")
dofile(path.."/machines_api_reg.lua")
dofile(path.."/lava_furnace_recipes.lua")
dofile(path.."/misc.lua")
dofile(path.."/compat_unified_inv.lua")
dofile(path.."/compat_i3.lua")

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB