Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/h-v-smacker/facade into A…
Browse files Browse the repository at this point in the history
…PI_cleanup
  • Loading branch information
fluxionary committed Nov 23, 2019
2 parents 556c9de + c0ab417 commit ed44122
Show file tree
Hide file tree
Showing 5 changed files with 844 additions and 119 deletions.
1 change: 1 addition & 0 deletions depends.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
default
mychisel?
columnia?
56 changes: 5 additions & 51 deletions init.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
facade = {}
facade = {}

local wehavechisels = minetest.get_modpath("mychisel") and minetest.global_exists("chisel")
local in_creative = (minetest.settings:get("facade.in_creative_inventory") or "true"):lower() == "true"
-- Define the shapes and registration functions
dofile (minetest.get_modpath("facade") .. "/shapes.lua")

local function table_clone(org)
return {unpack(org)}
Expand Down Expand Up @@ -511,54 +511,8 @@ end

if wehavechisels then chisel.add_mod("facade", 14) end -- register the total number of different designs in this mod with mychisel

facade.register_facade_nodes("default", "clay", "default:clay", "Clay")
facade.register_facade_nodes("default", "desert_sandstone", "default:desert_sandstone", "Desert Sandstone")
facade.register_facade_nodes("default", "desert_stone", "default:desert_stone", "Desert Stone")
facade.register_facade_nodes("default", "sandstone", "default:sandstone", "Sandstone")
facade.register_facade_nodes("default", "silver_sandstone", "default:silver_sandstone", "Silver Sandstone")
facade.register_facade_nodes("default", "stone", "default:stone", "Stone")
--facade.register_facade_nodes("default", "obsidian", "default:obsidian", "Obsidian")


if minetest.get_modpath("bakedclay") then
local clays = {
{ "white", "White" },
{ "grey", "Grey" },
{ "black", "Black" },
{ "red", "Red" },
{ "yellow", "Yellow" },
{ "green", "Green" },
{ "cyan", "Cyan" },
{ "blue", "Blue" },
{ "magenta", "Magenta" },
{ "orange", "Orange" },
{ "violet", "Violet" },
{ "brown", "Brown" },
{ "pink", "Pink" },
{ "dark_grey", "Dark Grey" },
{ "dark_green", "Dark Green" },
}

for _, clay in pairs(clays) do
facade.register_facade_nodes("baked_clay", clay[1], "bakedclay:" .. clay[1], clay[2] .. " Baked Clay")
end
end

if minetest.get_modpath("darkage") then
facade.register_facade_nodes("darkage", "basalt", "darkage:basalt", "Basalt")
facade.register_facade_nodes("darkage", "chalk", "darkage:chalk", "Chalk")
facade.register_facade_nodes("darkage", "gneiss", "darkage:gneiss", "Gneiss")
facade.register_facade_nodes("darkage", "marble", "darkage:marble", "Marble")
facade.register_facade_nodes("darkage", "ors", "darkage:ors", "Ors")
facade.register_facade_nodes("darkage", "schist", "darkage:schist", "Schist")
facade.register_facade_nodes("darkage", "serpentine", "darkage:serpentine", "Serpentine")
facade.register_facade_nodes("darkage", "shale", "darkage:shale", "Shale")
facade.register_facade_nodes("darkage", "slate", "darkage:slate", "Slate")
end

if minetest.get_modpath("nether") then
facade.register_facade_nodes("nether", "rack", "nether:rack", "Netherrack")
end
-- Register the nodes made from compatible materials
dofile(minetest.get_modpath("facade") .. "/materials.lua")

-- Add a dedicated machine to produce the facade shapes
dofile(minetest.get_modpath("facade") .. "/shaper.lua")
58 changes: 58 additions & 0 deletions materials.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
-- Registration of materials

facade.register_facade_nodes("default", "clay", "default:clay", "Clay")
facade.register_facade_nodes("default", "stone", "default:stone", "Stone")
facade.register_facade_nodes("default", "desert_stone", "default:desert_stone", "Desert Stone")
facade.register_facade_nodes("default", "sandstone", "default:sandstone", "Sandstone")
facade.register_facade_nodes("default", "desert_sandstone", "default:desert_sandstone", "Desert Sandstone")
facade.register_facade_nodes("default", "silver_sandstone", "default:silver_sandstone", "Silver Sandstone")
--facade.register_facade_nodes("default", "obsidian", "default:obsidian", "Obsidian")


if minetest.get_modpath("bakedclay") then
local clays = {
{ "white", "White" },
{ "grey", "Grey" },
{ "black", "Black" },
{ "red", "Red" },
{ "yellow", "Yellow" },
{ "green", "Green" },
{ "cyan", "Cyan" },
{ "blue", "Blue" },
{ "magenta", "Magenta" },
{ "orange", "Orange" },
{ "violet", "Violet" },
{ "brown", "Brown" },
{ "pink", "Pink" },
{ "dark_grey", "Dark Grey" },
{ "dark_green", "Dark Green" },
}

for _, clay in pairs(clays) do
facade.register_facade_nodes("baked_clay", clay[1], "bakedclay:" .. clay[1], clay[2] .. " Baked Clay")
end
end


if minetest.get_modpath("darkage") then
facade.register_facade_nodes("darkage", "basalt", "darkage:basalt", "Basalt")
facade.register_facade_nodes("darkage", "chalk", "darkage:chalk", "Chalk")
facade.register_facade_nodes("darkage", "gneiss", "darkage:gneiss", "Gneiss")
facade.register_facade_nodes("darkage", "marble", "darkage:marble", "Marble")
facade.register_facade_nodes("darkage", "ors", "darkage:ors", "Ors")
facade.register_facade_nodes("darkage", "schist", "darkage:schist", "Schist")
facade.register_facade_nodes("darkage", "serpentine", "darkage:serpentine", "Serpentine")
facade.register_facade_nodes("darkage", "shale", "darkage:shale", "Shale")
facade.register_facade_nodes("darkage", "slate", "darkage:slate", "Slate")
end


if minetest.get_modpath( "nether") then
facade.register_facade_nodes("nether", "rack", "nether:rack", "Netherrack")
end


--[[if minetest.get_modpath( "lapis") then
facade.register_facade_nodes("lapis", "lapis_block", "lapis:lapis_block", "Lapis")
facade.register_facade_nodes("lapis", "lapis_lazurite", "lapis:lazurite", "Lazurite")
end]]--
159 changes: 91 additions & 68 deletions shaper.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,74 +6,97 @@
-- Balancing output per 1 input block with respect to apparent volume of output shape.
-- All current shapes are added, but shapes not present in this table will still be produced
-- one at a time — if that is the desired quantity, adding them is not required.
local output_ratios = {
bannerstone = 1,
bannerstone_corner = 1,
centerstone = 1,
column = 1,
column_corner = 1,
corbel = 1,
corbel_corner = 1,
local output_ratios = {
bannerstone = 1,
bannerstone_corner = 1,
centerstone = 1,
column = 1,
column_corner = 1,
corbel = 1,
corbel_corner = 1,
corbel_corner_inner = 1,
carved_stone_a = 1,
carved_stone_a = 1,
carved_stone_a_corner = 1,
rgspro = 2,
rgspro = 2,
rgspro_inner_corner = 1,
rgspro_outer_corner = 1,
corner_bricks = 2,
corner_bricks = 2,
columnia_mid = 4,
columnia_bottom = 1,
columnia_top = 1,
columnia_crosslink = 1,
columnia_link = 4,
columnia_linkdown = 4,
}

-- The material to be used for buttons when no material is actually loaded.
-- It should be a generic material for which all the facade shapes are defined.
local demo_material = "default:stone"
local demo_material = "default:stone"

-- Whether the facade should obey area protection for the inventories (as machines in technic mod)
-- or allow anybody to use them, but disallow the removal of machine itself (like circular saw in moreblocks)
local protect_inventories = (minetest.settings:get("facade.protect_inventories") or "false"):lower() == "false"

local function prepare_formspec(material_name)
local output = string.gsub(material_name, "^.*:", "facade:")
local output = string.gsub(material_name, "^.*:", "facade:")
local shaper_formspec = "size[8,11;]" ..
"label[0,0;" .. "Choose shape to produce:" .. "]" ..

-- row 1, blocky shapes
"item_image_button[0,0.5;1,1;" .. output .. "_bannerstone" .. ";bannerstone; ]" ..
"item_image_button[1,0.5;1,1;" .. output .. "_bannerstone_corner" .. ";bannerstone_corner; ]" ..
"item_image_button[2,0.5;1,1;" .. output .. "_centerstone" .. ";centerstone; ]" ..
"item_image_button[3,0.5;1,1;" .. output .. "_carved_stone_a" .. ";carved_stone_a; ]" ..
"item_image_button[4,0.5;1,1;" .. output .. "_carved_stone_a_corner" .. ";carved_stone_a_corner; ]" ..
"item_image_button[5,0.5;1,1;" .. output .. "_column" .. ";column; ]" ..
"item_image_button[6,0.5;1,1;" .. output .. "_column_corner" .. ";column_corner; ]" ..

-- row 2, corbel
"item_image_button[0,1.5;1,1;" .. output .. "_corbel" .. ";corbel; ]" ..
"item_image_button[1,1.5;1,1;" .. output .. "_corbel_corner_inner" .. ";corbel_corner_inner; ]" ..
"item_image_button[2,1.5;1,1;" .. output .. "_corbel_corner" .. ";corbel_corner; ]" ..

-- row 3, cornice
"item_image_button[0,2.5;1,1;" .. output .. "_rgspro" .. ";rgspro; ]" ..
"item_image_button[1,2.5;1,1;" .. output .. "_rgspro_inner_corner" .. ";rgspro_inner_corner; ]" ..
"item_image_button[2,2.5;1,1;" .. output .. "_rgspro_outer_corner" .. ";rgspro_outer_corner; ]"

-- row for shapes which are not available for all materials
"label[0,0;" .. "Choose shape to produce:" .. "]" ..

-- row 1, blocky shapes
"item_image_button[0,0.5;1,1;" .. output .. "_bannerstone" .. ";bannerstone; ]" ..
"item_image_button[1,0.5;1,1;" .. output .. "_bannerstone_corner" .. ";bannerstone_corner; ]" ..
"item_image_button[2,0.5;1,1;" .. output .. "_centerstone" .. ";centerstone; ]" ..
"item_image_button[3,0.5;1,1;" .. output .. "_carved_stone_a" .. ";carved_stone_a; ]" ..
"item_image_button[4,0.5;1,1;" .. output .. "_carved_stone_a_corner" .. ";carved_stone_a_corner; ]" ..
"item_image_button[5,0.5;1,1;" .. output .. "_column" .. ";column; ]" ..
"item_image_button[6,0.5;1,1;" .. output .. "_column_corner" .. ";column_corner; ]" ..

-- row 2, corbel
"item_image_button[0,1.5;1,1;" .. output .. "_corbel" .. ";corbel; ]" ..
"item_image_button[1,1.5;1,1;" .. output .. "_corbel_corner_inner" .. ";corbel_corner_inner; ]" ..
"item_image_button[2,1.5;1,1;" .. output .. "_corbel_corner" .. ";corbel_corner; ]" ..

-- row 3, cornice
"item_image_button[0,2.5;1,1;" .. output .. "_rgspro" .. ";rgspro; ]" ..
"item_image_button[1,2.5;1,1;" .. output .. "_rgspro_inner_corner" .. ";rgspro_inner_corner; ]" ..
"item_image_button[2,2.5;1,1;" .. output .. "_rgspro_outer_corner" .. ";rgspro_outer_corner; ]"

-- row 4, columnia
if not minetest.get_modpath("columnia") then
shaper_formspec = shaper_formspec ..
"item_image_button[0,3.5;1,1;" .. output .. "_columnia_mid" .. ";columnia_mid; ]"..
"item_image_button[1,3.5;1,1;" .. output .. "_columnia_bottom" .. ";columnia_bottom; ]"..
"item_image_button[2,3.5;1,1;" .. output .. "_columnia_crosslink" .. ";columnia_crosslink; ]"..
"item_image_button[3,3.5;1,1;" .. output .. "_columnia_link" .. ";columnia_link; ]"..
"item_image_button[4,3.5;1,1;" .. output .. "_columnia_linkdown" .. ";columnia_linkdown; ]"

-- this code is a provision in case top column pieces enter service
if minetest.registered_nodes[output .. "_columnia_top"] then
shaper_formspec = shaper_formspec ..
"item_image_button[5,3.5;1,1;" .. output .. "_columnia_top" .. ";columnia_top; ]"
end

end

-- row 5 for shapes which are not available for all materials
-- only one such shape exists so far, but more should be easy to add here
if minetest.registered_nodes[output .. "_corner_bricks"] then
shaper_formspec = shaper_formspec ..
"item_image_button[0,3.5;1,1;" .. output .. "_corner_bricks" .. ";corner_bricks; ]"
shaper_formspec = shaper_formspec ..
"item_image_button[0,4.5;1,1;" .. output .. "_corner_bricks" .. ";corner_bricks; ]"
end

-- inventory part
shaper_formspec = shaper_formspec ..
"label[0, 5.5;" .. "In:" .. "]" ..
"list[current_name;src;1,5.5;1,1;]" ..
"label[3, 5.5;" .. "Out:" .. "]" ..
"list[current_name;dst;4,5.5;4,1;]" ..
"label[0, 5.5;" .. "In:" .. "]" ..
"list[current_name;src;1,5.5;1,1;]" ..
"label[3, 5.5;" .. "Out:" .. "]" ..
"list[current_name;dst;4,5.5;4,1;]" ..

"list[current_player;main;0,7;8,4;]" ..
"listring[current_name;dst]" ..
"listring[current_player;main]" ..
"listring[current_name;src]" ..
"listring[current_player;main]"
"list[current_player;main;0,7;8,4;]" ..
"listring[current_name;dst]" ..
"listring[current_player;main]" ..
"listring[current_name;src]" ..
"listring[current_player;main]"

return shaper_formspec
end
Expand Down Expand Up @@ -253,9 +276,9 @@ local function after_place_node(pos, placer)
end

minetest.register_node("facade:shaper", {
description = "Shaper Machine",
drawtype = "nodebox",
node_box = {
description = "Shaper Machine",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
-- base
Expand All @@ -276,38 +299,38 @@ minetest.register_node("facade:shaper", {
{ -1 / 128, 6 / 32, -1 / 32, 1 / 128, 7 / 32, 1 / 32 },
},
},
selection_box = {
selection_box = {
type = "fixed",
fixed = {
{ -1 / 2, -1 / 2, -1 / 2, 1 / 2, 1 / 2, 1 / 2 },
},
},
tiles = { "facade_shaper_top.png",
"facade_shaper_bottom.png",
"facade_shaper_right.png",
"facade_shaper_left.png",
"facade_shaper_back.png",
"facade_shaper_front.png" },
groups = { oddly_breakable_by_hand = 2, cracky = 3, dig_immediate = 1 },
paramtype = "light",
paramtype2 = "facedir",
legacy_facedir_simple = true,
on_construct = on_construct,
after_place_node = after_place_node,
can_dig = check_removability,
tiles = { "facade_shaper_top.png",
"facade_shaper_bottom.png",
"facade_shaper_right.png",
"facade_shaper_left.png",
"facade_shaper_back.png",
"facade_shaper_front.png" },
groups = { oddly_breakable_by_hand = 2, cracky = 3, dig_immediate = 1 },
paramtype = "light",
paramtype2 = "facedir",
legacy_facedir_simple = true,
on_construct = on_construct,
after_place_node = after_place_node,
can_dig = check_removability,
allow_metadata_inventory_put = check_inventory_put,
allow_metadata_inventory_take = check_inventory_take,
allow_metadata_inventory_move = check_inventory_move,
on_metadata_inventory_put = update_formspec_put,
on_metadata_inventory_take = update_formspec_take,
on_receive_fields = form_handler,
on_metadata_inventory_put = update_formspec_put,
on_metadata_inventory_take = update_formspec_take,
on_receive_fields = form_handler,
})

minetest.register_craft({
output = 'facade:shaper',
recipe = {
{ '', 'default:diamond', '' },
{ '', 'default:diamond', '' },
{ 'default:steel_ingot', 'default:steelblock', 'default:steel_ingot' },
{ '', 'default:steelblock', '' },
{ '', 'default:steelblock', '' },
},
})

0 comments on commit ed44122

Please sign in to comment.