409 lines
11 KiB
Lua
409 lines
11 KiB
Lua
local mater = {}
|
|
local shape = {}
|
|
local make_ok = {}
|
|
local anzahl = {}
|
|
|
|
minetest.register_node("mybricks:machine", {
|
|
description = "Brick Machine",
|
|
tiles = {
|
|
"mybricks_machine_top.png",
|
|
"mybricks_machine_top.png",
|
|
"mybricks_machine_side.png",
|
|
"mybricks_machine_side.png",
|
|
"mybricks_machine_side.png",
|
|
"mybricks_machine_side.png",
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {cracky=2},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5},
|
|
{0.375, -0.5, -0.5, 0.5, 0.5, -0.375},
|
|
{-0.5, -0.5, -0.5, -0.375, 0.5, -0.375},
|
|
{-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
|
|
{-0.5, -0.5, 0.375, -0.375, 0.5, 0.5},
|
|
{0.375, -0.5, 0.375, 0.5, 0.5, 0.5},
|
|
{-0.0625, 0.0625, -0.25, 0, 0.1875, 0.25},
|
|
{-0.0625, 0.0625, -0.125, 0, 0.25, 0.125},
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
|
|
}
|
|
},
|
|
|
|
after_place_node = function(pos, placer)
|
|
local meta = minetest.get_meta(pos);
|
|
meta:set_string("owner", (placer:get_player_name() or ""));
|
|
meta:set_string("infotext", "Brick Machine (owned by " .. (placer:get_player_name() or "") .. ")");
|
|
end,
|
|
|
|
can_dig = function(pos,player)
|
|
local meta = minetest.get_meta(pos);
|
|
local inv = meta:get_inventory()
|
|
if player:get_player_name() == meta:get_string("owner") and
|
|
inv:is_empty("ingot") and
|
|
inv:is_empty("res") then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end,
|
|
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", "invsize[10,11;]"..
|
|
"background[-0.15,-0.25;10.40,11.75;mybricks_background.png]"..
|
|
"list[current_name;ingot;7,2;1,1;]"..
|
|
"list[current_name;res;7,4;1,1;]"..
|
|
"label[7,1.5;Input:]"..
|
|
"label[7,3.5;Output:]"..
|
|
"label[0,0;Choose Brick Stye:]"..
|
|
"image_button[1,1;1,1;mybricks_mach1.png;brick; ]"..
|
|
"image_button[1,2;1,1;mybricks_mach8.png;smbrick; ]"..
|
|
"image_button[1,3;1,1;mybricks_mach7.png;tbrick; ]"..
|
|
"image_button[2.5,1;1,1;mybricks_mach4.png;tile; ]"..
|
|
"image_button[2.5,2;1,1;mybricks_mach2.png;square; ]"..
|
|
"image_button[2.5,3;1,1;mybricks_mach3.png;square_sm; ]"..
|
|
"image_button[4,1;1,1;mybricks_mach5.png;split; ]"..
|
|
"image_button[4,2;1,1;mybricks_mach6.png;vsplit; ]"..
|
|
"image_button[1,4;1,1;mybricks_mach9.png;brickw; ]"..
|
|
"image_button[1,5;1,1;mybricks_mach10.png;smbrickw; ]"..
|
|
"image_button[1,6;1,1;mybricks_mach11.png;tbrickw; ]"..
|
|
"image_button[2.5,4;1,1;mybricks_mach12.png;tilew; ]"..
|
|
"image_button[2.5,5;1,1;mybricks_mach13.png;squarew; ]"..
|
|
"image_button[2.5,6;1,1;mybricks_mach14.png;square_smw; ]"..
|
|
"image_button[4,4;1,1;mybricks_mach15.png;splitw; ]"..
|
|
"image_button[4,5;1,1;mybricks_mach16.png;vsplitw; ]"..
|
|
"list[current_player;main;1,7;8,4;]")
|
|
meta:set_string("infotext", "Brick Machine")
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("ingot", 1)
|
|
inv:set_size("res", 1)
|
|
end,
|
|
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
|
|
if fields["brick"]
|
|
or fields["smbrick"]
|
|
or fields["tbrick"]
|
|
or fields["square"]
|
|
or fields["square_sm"]
|
|
or fields["tile"]
|
|
or fields["split"]
|
|
or fields["vsplit"]
|
|
or fields["brickw"]
|
|
or fields["smbrickw"]
|
|
or fields["tbrickw"]
|
|
or fields["squarew"]
|
|
or fields["square_smw"]
|
|
or fields["tilew"]
|
|
or fields["splitw"]
|
|
or fields["vsplitw"]
|
|
then
|
|
|
|
if fields["brick"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["smbrick"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:smbrick_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["tbrick"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:tbrick_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["square"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_square_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["square_sm"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_square_sm_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["tile"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_tile_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["split"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_split_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["vsplit"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_vsplit_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["brickw"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brickw_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["smbrickw"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:smbrickw_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["tbrickw"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:tbrickw_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["squarew"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_squarew_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["square_smw"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_squarew_sm_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["tilew"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_tilew_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["splitw"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_splitw_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
if fields["vsplitw"] then
|
|
make_ok = "0"
|
|
anzahl = "1"
|
|
shape = "mybricks:brick_vsplitw_"
|
|
if inv:is_empty("ingot") then
|
|
return
|
|
end
|
|
end
|
|
|
|
local ingotstack = inv:get_stack("ingot", 1)
|
|
local resstack = inv:get_stack("res", 1)
|
|
|
|
local mat_tab = {
|
|
{"default:leaves", "default_leaves"},
|
|
{"default:jungleleaves", "default_jungleleaves"},
|
|
{"default:pine_needles", "default_pine_needles"},
|
|
{"default:clay", "default_clay"},
|
|
{"default:coalblock", "default_coal_block"},
|
|
{"default:cobble", "default_cobble"},
|
|
{"default:desert_cobble", "default_desert_cobble"},
|
|
{"default:desert_stone", "default_desert_stone"},
|
|
{"default:dirt", "default_dirt"},
|
|
{"default:glass", "default_glass"},
|
|
{"default:gravel", "default_gravel"},
|
|
{"default:junglewood", "default_junglewood"},
|
|
{"default:mossycobble", "default_mossycobble"},
|
|
{"default:obsidian", "default_obsidian"},
|
|
{"default:pine_wood", "default_pine_wood"},
|
|
{"default:aspen_wood", "default_aspen_wood"},
|
|
{"default:acacia_wood", "default_acacia_wood"},
|
|
{"default:sandstone", "default_sandstone"},
|
|
{"default:stone", "default_stone"},
|
|
{"default:wood", "default_wood"},
|
|
{"farming:straw", "farming_straw"},
|
|
{"wool:black", "wool_black"},
|
|
{"wool:blue", "wool_blue"},
|
|
{"wool:brown", "wool_brown"},
|
|
{"wool:cyan", "wool_cyan"},
|
|
{"wool:dark_green", "wool_dark_green"},
|
|
{"wool:dark_grey", "wool_dark_grey"},
|
|
{"wool:green", "wool_green"},
|
|
{"wool:grey", "wool_grey"},
|
|
{"wool:magenta", "wool_magenta"},
|
|
{"wool:orange", "wool_orange"},
|
|
{"wool:pink", "wool_pink"},
|
|
{"wool:red", "wool_red"},
|
|
{"wool:violet", "wool_violet"},
|
|
{"wool:white", "wool_white"},
|
|
{"wool:yellow", "wool_yellow"},
|
|
|
|
{"bat_blocks:bat_cobble", "bat_cobble"},
|
|
{"bat_blocks:bat_cobble_white", "bat_cobble_white"},
|
|
{"bat_blocks:bat_cobble_tan", "bat_cobble_tan"},
|
|
{"bat_blocks:bat_pavers", "bat_pavers"},
|
|
{"bat_blocks:bat_block", "bat_block"},
|
|
{"bat_blocks:bat_tile", "bat_tile"},
|
|
{"bat_blocks:bat_diag", "bat_diag"},
|
|
{"bat_blocks:bat_x", "bat_x_block"},
|
|
{"bat_blocks:bat_brick", "bat_brick"},
|
|
{"bat_blocks:bat_smbrick", "bat_smbrick"},
|
|
|
|
{"castle:dungeon_stone", "dungeon_stone"},
|
|
{"castle:pavement", "pavement_brick"},
|
|
{"castle:rubble", "rubble"},
|
|
{"castle:roofslate", "slate"},
|
|
{"castle:stonewall", "stonewall"},
|
|
|
|
{"moreblocks:cactus_brick", "cactus_brick"},
|
|
{"moreblocks:cactus_checker", "cactus_checker"},
|
|
{"moreblocks:coal_stone_bricks", "coal_stone_bricks"},
|
|
{"moreblocks:circle_stone_bricks", "circle_stone_bricks"},
|
|
{"moreblocks:iron_checker", "iron_checker"},
|
|
{"moreblocks:iron_stone_bricks", "iron_stone_bricks"},
|
|
{"moreblocks:plankstone", "plankstone"},
|
|
{"moreblocks:stone_tile", "stone_tile"},
|
|
{"moreblocks:wood_tile_center", "wood_tile_center"},
|
|
{"moreblocks:wood_tile_full", "wood_tile_full"},
|
|
|
|
{"moretrees:apple_planks", "apple_tree"},
|
|
{"moretrees:beech_planks", "beech"},
|
|
{"moretrees:oak_planks", "oak"},
|
|
{"moretrees:sequoia_planks", "sequoia"},
|
|
{"moretrees:birch_planks", "birch"},
|
|
{"moretrees:palm_planks", "palm"},
|
|
{"moretrees:spruce_planks", "spruce"},
|
|
{"moretrees:willow_planks", "willow"},
|
|
{"moretrees:rubber_tree_planks", "rubber_tree"},
|
|
{"moretrees:fir_planks", "fir"},
|
|
|
|
{"hardenedclay:hardened_clay", "hardened_clay"},
|
|
{"hardenedclay:hardened_clay_white", "hardened_clay_white"},
|
|
{"hardenedclay:hardened_clay_black", "hardened_clay_black"},
|
|
{"hardenedclay:hardened_clay_light_blue", "hardened_clay_light_blue"},
|
|
{"hardenedclay:hardened_clay_green", "hardened_clay_green"},
|
|
{"hardenedclay:hardened_clay_red", "hardened_clay_red"},
|
|
{"hardenedclay:hardened_clay_light_grey", "hardened_clay_light_grey"},
|
|
{"hardenedclay:hardened_clay_violet", "hardened_clay_violet"},
|
|
{"hardenedclay:hardened_clay_lime", "hardened_clay_lime"},
|
|
{"hardenedclay:hardened_clay_magenta", "hardened_clay_magenta"},
|
|
{"hardenedclay:hardened_clay_orange", "hardened_clay_orange"},
|
|
{"hardenedclay:hardened_clay_brown", "hardened_clay_brown"},
|
|
{"hardenedclay:hardened_clay_blue", "hardened_clay_blue"},
|
|
{"hardenedclay:hardened_clay_yellow", "hardened_clay_yellow"},
|
|
{"hardenedclay:hardened_clay_pink", "hardened_clay_pink"},
|
|
{"hardenedclay:hardened_clay_cyan", "hardened_clay_cyan"},
|
|
{"hardenedclay:hardened_clay_grey", "hardened_clay_grey"},
|
|
|
|
{"ores:slate", "slate"},
|
|
{"ores:silt", "silt"},
|
|
{"ores:shale", "shale"},
|
|
{"ores:schist", "schist"},
|
|
{"ores:redsandstone", "redsandstone"},
|
|
{"ores:gneiss", "gneiss"},
|
|
{"ores:basalt", "basalt"},
|
|
{"ores:granite", "granite"},
|
|
{"ores:marble", "marble"},
|
|
}
|
|
|
|
for i in ipairs (mat_tab) do
|
|
local titem = mat_tab[i][1]
|
|
local tmat = mat_tab[i][2]
|
|
|
|
if ingotstack:get_name()==titem then
|
|
mater = tmat
|
|
make_ok = "1"
|
|
end
|
|
end
|
|
|
|
if sender:get_player_name() == meta:get_string("owner") and
|
|
make_ok == "1" then
|
|
local give = {}
|
|
for i = 0, anzahl-1 do
|
|
give[i+1]=inv:add_item("res",shape..mater)
|
|
end
|
|
ingotstack:take_item()
|
|
inv:set_stack("ingot",1,ingotstack)
|
|
end
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'mybricks:machine',
|
|
recipe = {
|
|
{'default:brick', 'default:brick', 'default:brick'},
|
|
{'default:brick', 'default:steel_ingot', 'default:brick'},
|
|
{'default:brick', "default:brick", 'default:brick'},
|
|
},
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|