mybricks/machine.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'},
},
})