MineClone2/mods/blocks/utility/redstone.lua

149 lines
5.1 KiB
Lua

local common_defs = {
doors = {
collision_box = {
fixed = {-0.5, -0.5, -0.3125, 0.5, 1.5, -0.5},
type = "fixed"
},
drawtype = "mesh",
groups = {door = 1, redstone_blocks = 1},
mesh = "utility_door.obj",
paramtype = "light",
paramtype2 = "4dir",
selection_box = {
fixed = {-0.5, -0.5, -0.3125, 0.5, 1.5, -0.5},
type = "fixed"
},
sunlight_propagates = true,
use_texture_alpha = "clip"
}
}
local function set_door_tiles(identifier, side_tiles, alternative_tiles)
local side_tiles_name = ""
if side_tiles then
side_tiles_name = "utility_"..identifier.."_door_side.png"
elseif alternative_tiles then
side_tiles_name = alternative_tiles
end
return {
{
backface_culling = true,
name = "[combine:48x32:0,0=utility_"..identifier.."_door_top.png:"..
"0,16=utility_"..identifier.."_door_bottom.png:16,0="..side_tiles_name..
":16,16="..side_tiles_name..":32,0="..side_tiles_name
}
}
end
local function set_images(identifier, definitions)
local image_name = ""
if not identifier:find("waxed") then
image_name = "utility_"..identifier.."_door.png"
else
image_name = ("utility_"..identifier.."_door.png"):gsub("waxed_", "")
end
definitions.inventory_image = image_name
definitions.wield_image = image_name
end
local doors = {
["acacia"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("acacia", false, "building_acacia_planks.png")
},
["bamboo"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("bamboo", false, "building_bamboo_planks.png")
},
["birch"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("birch", true, nil),
},
["cherry"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("cherry", false, "building_cherry_planks.png"),
},
["copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("copper", false, "building_cut_copper.png")
},
["crimson"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("crimson", false, "building_crimson_planks.png")
},
["dark_oak"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("dark_oak", false, "building_dark_oak_planks.png")
},
["exposed_copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("exposed_copper", false, "building_exposed_cut_copper.png")
},
["iron"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("iron", false, "building_iron_block.png")
},
["jungle"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("jungle", true, nil)
},
["mangrove"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("mangrove", false, "building_mangrove_planks.png")
},
["oak"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("oak", false, "building_oak_planks.png")
},
["oxidized_copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("oxidized_copper", false, "building_oxidized_cut_copper.png")
},
["spruce"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("spruce", false, "building_spruce_planks.png")
},
["warped"] = {
sounds = mcl_sounds.node_sound_wood_defaults(),
tiles = set_door_tiles("warped", false, "building_warped_planks.png")
},
["waxed_copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("copper", false, "building_cut_copper.png")
},
["waxed_exposed_copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("exposed_copper", false, "building_exposed_cut_copper.png")
},
["waxed_oxidized_copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("oxidized_copper", false, "building_oxidized_cut_copper.png")
},
["waxed_weathered_copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("weathered_copper", false, "building_weathered_cut_copper.png")
},
["weathered_copper"] = {
sounds = mcl_sounds.node_sound_metal_defaults(),
tiles = set_door_tiles("weathered_copper", false, "building_weathered_cut_copper.png")
}
}
for identifier, definitions in pairs(doors) do
set_images(identifier, definitions)
voxelibre.register_block(identifier.."_door", table.merge(common_defs.doors, definitions))
end
for identifier, definitions in pairs(doors) do
definitions.mesh = "utility_door_left.obj"
set_images(identifier, definitions)
voxelibre.register_block(identifier.."_door_left", table.merge(common_defs.doors, definitions))
end