mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-12-01 07:13:45 +01:00
64bb50dfd5
* Update crafting recipes for stone tools (pick, shovel, axe, sword and hoe), furnace and brewing stand to use any cobble group stone.
983 lines
33 KiB
Lua
983 lines
33 KiB
Lua
local S = minetest.get_translator(minetest.get_current_modname())
|
|
|
|
local function active_brewing_formspec(fuel_percent, brew_percent)
|
|
|
|
return "size[9,8.75]"..
|
|
"background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]"..
|
|
"label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Brewing Stand"))).."]"..
|
|
"label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]"..
|
|
"list[current_player;main;0,4.5;9,3;9]"..
|
|
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
|
|
"list[current_player;main;0,7.75;9,1;]"..
|
|
mcl_formspec.get_itemslot_bg(0,7.75,9,1)..
|
|
"list[context;fuel;0.5,1.75;1,1;]"..
|
|
mcl_formspec.get_itemslot_bg(0.5,1.75,1,1).."image[0.5,1.75;1,1;mcl_brewing_fuel_bg.png]"..
|
|
"list[context;input;2.75,0.5;1,1;]"..
|
|
mcl_formspec.get_itemslot_bg(2.75,0.5,1,1)..
|
|
"list[context;stand;4.5,2.5;1,1;]"..
|
|
mcl_formspec.get_itemslot_bg(4.5,2.5,1,1).."image[4.5,2.5;1,1;mcl_brewing_bottle_bg.png]"..
|
|
"list[context;stand;6,2.8;1,1;1]"..
|
|
mcl_formspec.get_itemslot_bg(6,2.8,1,1).."image[6,2.8;1,1;mcl_brewing_bottle_bg.png]"..
|
|
"list[context;stand;7.5,2.5;1,1;2]"..
|
|
mcl_formspec.get_itemslot_bg(7.5,2.5,1,1).."image[7.5,2.5;1,1;mcl_brewing_bottle_bg.png]"..
|
|
|
|
"image[2.7,3.33;1.28,0.41;mcl_brewing_burner.png^[lowpart:"..
|
|
(100-fuel_percent)..":mcl_brewing_burner_active.png^[transformR270]"..
|
|
|
|
"image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png^[lowpart:"..
|
|
(brew_percent)..":mcl_brewing_bubbles_active.png]"..
|
|
|
|
"listring[current_player;main]"..
|
|
"listring[context;fuel]"..
|
|
"listring[context;input]"..
|
|
"listring[context;stand]"
|
|
end
|
|
|
|
local brewing_formspec = "size[9,8.75]"..
|
|
"background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]"..
|
|
"label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Brewing Stand"))).."]"..
|
|
"label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]"..
|
|
"list[current_player;main;0,4.5;9,3;9]"..
|
|
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
|
|
"list[current_player;main;0,7.75;9,1;]"..
|
|
mcl_formspec.get_itemslot_bg(0,7.75,9,1)..
|
|
"list[context;fuel;0.5,1.75;1,1;]"..
|
|
mcl_formspec.get_itemslot_bg(0.5,1.75,1,1).."image[0.5,1.75;1,1;mcl_brewing_fuel_bg.png]"..
|
|
"list[context;input;2.75,0.5;1,1;]"..
|
|
mcl_formspec.get_itemslot_bg(2.75,0.5,1,1)..
|
|
"list[context;stand;4.5,2.5;1,1;]"..
|
|
mcl_formspec.get_itemslot_bg(4.5,2.5,1,1).."image[4.5,2.5;1,1;mcl_brewing_bottle_bg.png]"..
|
|
"list[context;stand;6,2.8;1,1;1]"..
|
|
mcl_formspec.get_itemslot_bg(6,2.8,1,1).."image[6,2.8;1,1;mcl_brewing_bottle_bg.png]"..
|
|
"list[context;stand;7.5,2.5;1,1;2]"..
|
|
mcl_formspec.get_itemslot_bg(7.5,2.5,1,1).."image[7.5,2.5;1,1;mcl_brewing_bottle_bg.png]"..
|
|
|
|
"image[2.7,3.33;1.28,0.41;mcl_brewing_burner.png^[transformR270]"..
|
|
"image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png]"..
|
|
|
|
"listring[current_player;main]"..
|
|
"listring[context;fuel]"..
|
|
"listring[context;input]"..
|
|
"listring[context;stand]"
|
|
|
|
|
|
--[[local function swap_node(pos, name)
|
|
local node = minetest.get_node(pos)
|
|
if node.name == name then
|
|
return
|
|
end
|
|
node.name = name
|
|
minetest.swap_node(pos, node)
|
|
end]]
|
|
|
|
|
|
local function brewable(inv)
|
|
|
|
local ingredient = inv:get_stack("input",1):get_name()
|
|
local stands = {}
|
|
local stand_size = inv:get_size("stand")
|
|
local was_alchemy = {false,false,false}
|
|
|
|
local bottle, alchemy
|
|
|
|
for i=1,stand_size do
|
|
|
|
bottle = inv:get_stack("stand", i):get_name()
|
|
alchemy = mcl_potions.get_alchemy(ingredient, bottle)
|
|
|
|
if alchemy then
|
|
stands[i] = alchemy
|
|
was_alchemy[i] = true
|
|
else
|
|
stands[i] = bottle
|
|
end
|
|
|
|
end
|
|
-- if any stand holds a new potion, return the list of new potions
|
|
for i=1,#was_alchemy do
|
|
if was_alchemy[i] then return stands end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
|
|
local function brewing_stand_timer(pos, elapsed)
|
|
-- Inizialize metadata
|
|
local meta = minetest.get_meta(pos)
|
|
|
|
local fuel_timer = meta:get_float("fuel_timer") or 0
|
|
local BREW_TIME = 20 -- all brews brew the same
|
|
local BURN_TIME = BREW_TIME * 10
|
|
|
|
--local input_item = meta:get_string("input_item") or ""
|
|
local stand_timer = meta:get_float("stand_timer") or 0
|
|
local fuel = meta:get_float("fuel") or 0
|
|
local inv = meta:get_inventory()
|
|
|
|
--local input_list, stand_list, fuel_list
|
|
local brew_output, d
|
|
local input_count, fuel_name, fuel_count, formspec, fuel_percent, brew_percent
|
|
|
|
local update = true
|
|
|
|
while update do
|
|
|
|
update = false
|
|
|
|
--input_list = inv:get_list("input")
|
|
--stand_list = inv:get_list("stand")
|
|
--fuel_list = inv:get_list("fuel")
|
|
|
|
-- TODO ... fix this. Goal is to reset the process if the stand changes
|
|
-- for i=1, inv:get_size("stand", i) do -- reset the process due to change
|
|
-- local _name = inv:get_stack("stand", i):get_name()
|
|
-- if _name ~= stand_items[i] then
|
|
-- stand_timer = 0
|
|
-- stand_items[i] = _name
|
|
-- update = true -- need to update the stand with new data
|
|
-- return 1
|
|
-- end
|
|
-- end
|
|
|
|
brew_output = brewable(inv)
|
|
if fuel ~= 0 and brew_output then
|
|
|
|
fuel_timer = fuel_timer + elapsed
|
|
stand_timer = stand_timer + elapsed
|
|
|
|
if fuel_timer >= BURN_TIME then --replace with more fuel
|
|
fuel = 0 --force a new fuel grab
|
|
fuel_timer = 0
|
|
end
|
|
|
|
d = 0.5
|
|
minetest.add_particlespawner({
|
|
amount = 4,
|
|
time = 1,
|
|
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
|
|
maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d},
|
|
minvel = {x=-0.1, y=0, z=-0.1},
|
|
maxvel = {x=0.1, y=0.5, z=0.1},
|
|
minacc = {x=-0.05, y=0, z=-0.05},
|
|
maxacc = {x=0.05, y=.1, z=0.05},
|
|
minexptime = 1,
|
|
maxexptime = 2,
|
|
minsize = 0.5,
|
|
maxsize = 2,
|
|
collisiondetection = true,
|
|
vertical = false,
|
|
texture = "mcl_brewing_bubble_sprite.png",
|
|
})
|
|
|
|
-- Replace the stand item with the brew result
|
|
if stand_timer >= BREW_TIME then
|
|
|
|
input_count = inv:get_stack("input",1):get_count()
|
|
if (input_count-1) ~= 0 then
|
|
inv:set_stack("input",1,inv:get_stack("input",1):get_name().." "..(input_count-1))
|
|
else
|
|
inv:set_stack("input",1,"")
|
|
end
|
|
|
|
for i=1, inv:get_size("stand") do
|
|
if brew_output[i] then
|
|
minetest.sound_play("mcl_brewing_complete", {pos=pos, gain=0.4, max_hear_range=6}, true)
|
|
inv:set_stack("stand", i, brew_output[i])
|
|
minetest.sound_play("mcl_potions_bottle_pour", {pos=pos, gain=0.6, max_hear_range=6}, true)
|
|
end
|
|
end
|
|
stand_timer = 0
|
|
update = false -- stop the update if brew is complete
|
|
end
|
|
|
|
elseif fuel == 0 then --get more fuel from fuel_list
|
|
|
|
-- only allow blaze powder fuel
|
|
fuel_name = inv:get_stack("fuel",1):get_name()
|
|
fuel_count = inv:get_stack("fuel",1):get_count()
|
|
|
|
if fuel_name == "mcl_mobitems:blaze_powder" then -- Grab another fuel
|
|
|
|
if (fuel_count-1) ~= 0 then
|
|
inv:set_stack("fuel",1,fuel_name.." "..(fuel_count-1))
|
|
else
|
|
inv:set_stack("fuel",1,"")
|
|
end
|
|
update = true
|
|
fuel = 1
|
|
else -- no fuel available
|
|
update = false
|
|
end
|
|
|
|
end
|
|
|
|
elapsed = 0
|
|
end
|
|
|
|
--update formspec
|
|
formspec = brewing_formspec
|
|
|
|
local result = false
|
|
|
|
if fuel_timer ~= 0 then
|
|
fuel_percent = math.floor(fuel_timer/BURN_TIME*100 % BURN_TIME)
|
|
brew_percent = math.floor(stand_timer/BREW_TIME*100)
|
|
formspec = active_brewing_formspec(fuel_percent, brew_percent*1 % 100)
|
|
result = true
|
|
else
|
|
minetest.get_node_timer(pos):stop()
|
|
end
|
|
|
|
meta:set_float("fuel_timer", fuel_timer)
|
|
meta:set_float("stand_timer", stand_timer)
|
|
meta:set_float("fuel", fuel)
|
|
meta:set_string("formspec", formspec)
|
|
|
|
return result
|
|
end
|
|
|
|
|
|
--[[local function allow_metadata_inventory_put(pos, listname, index, stack, player)
|
|
local name = player:get_player_name()
|
|
if minetest.is_protected(pos, name) then
|
|
minetest.record_protection_violation(pos, name)
|
|
return 0
|
|
end
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
if listname == "fuel" then
|
|
|
|
-- Test stack with size 1 because we burn one fuel at a time
|
|
local teststack = ItemStack(stack)
|
|
teststack:set_count(1)
|
|
local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}})
|
|
if output.time ~= 0 then
|
|
-- Only allow to place 1 item if fuel get replaced by recipe.
|
|
-- This is the case for lava buckets.
|
|
local replace_item = decremented_input.items[1]
|
|
if replace_item:is_empty() then
|
|
-- For most fuels, just allow to place everything
|
|
return stack:get_count()
|
|
else
|
|
if inv:get_stack(listname, index):get_count() == 0 then
|
|
return 1
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
else
|
|
return 0
|
|
end
|
|
elseif listname == "input" then
|
|
return stack:get_count()
|
|
elseif listname == "stand" then
|
|
return 0
|
|
end
|
|
end]]
|
|
|
|
|
|
-- Drop input items of brewing_stand at pos with metadata meta
|
|
local function drop_brewing_stand_items(pos, meta)
|
|
|
|
local inv = meta:get_inventory()
|
|
|
|
local stack = inv:get_stack("fuel", 1)
|
|
if not stack:is_empty() then
|
|
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
|
minetest.add_item(p, stack)
|
|
end
|
|
|
|
local stack = inv:get_stack("input", 1)
|
|
if not stack:is_empty() then
|
|
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
|
minetest.add_item(p, stack)
|
|
end
|
|
|
|
for i=1, inv:get_size("stand") do
|
|
local stack = inv:get_stack("stand", i)
|
|
if not stack:is_empty() then
|
|
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
|
minetest.add_item(p, stack)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
local on_rotate
|
|
if minetest.get_modpath("screwdriver") then
|
|
on_rotate = screwdriver.rotate_simple
|
|
end
|
|
|
|
local doc_string =
|
|
S("To use a brewing stand, rightclick it.").."\n"..
|
|
S("To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.").."\n"..
|
|
S("Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.").."\n"..
|
|
S("When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.").."\n"..
|
|
S("Different combinations of brewing materials and liquids will give different results. Try to experiment!")
|
|
|
|
local tiles = {
|
|
"mcl_brewing_top.png", --top
|
|
"mcl_brewing_base.png", --bottom
|
|
"mcl_brewing_side.png", --right
|
|
"mcl_brewing_side.png", --left
|
|
"mcl_brewing_side.png", --back
|
|
"mcl_brewing_side.png^[transformFX", --front
|
|
}
|
|
|
|
local function allow_put(pos, listname, index, stack, player)
|
|
local name = player:get_player_name()
|
|
if minetest.is_protected(pos, name) then
|
|
minetest.record_protection_violation(pos, name)
|
|
return 0
|
|
else
|
|
return stack:get_count()
|
|
end
|
|
end
|
|
|
|
local function on_put(pos, listname, index, stack, player)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
local str = ""
|
|
local stack
|
|
for i=1, inv:get_size("stand") do
|
|
stack = inv:get_stack("stand", i)
|
|
if not stack:is_empty() then
|
|
str = str.."1"
|
|
else str = str.."0"
|
|
end
|
|
end
|
|
minetest.swap_node(pos, {name = "mcl_brewing:stand_"..str})
|
|
minetest.get_node_timer(pos):start(1.0)
|
|
--some code here to enforce only potions getting placed on stands
|
|
end
|
|
|
|
--[[local function after_dig(pos, oldnode, oldmetadata, digger)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:from_table(oldmetadata)
|
|
drop_brewing_stand_items(pos, meta)
|
|
end]]
|
|
|
|
local function on_destruct(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
drop_brewing_stand_items(pos, meta)
|
|
end
|
|
|
|
local function allow_take(pos, listname, index, stack, player)
|
|
local name = player:get_player_name()
|
|
if minetest.is_protected(pos, name) then
|
|
minetest.record_protection_violation(pos, name)
|
|
return 0
|
|
else
|
|
return stack:get_count()
|
|
end
|
|
end
|
|
|
|
|
|
minetest.register_node("mcl_brewing:stand_000", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_longdesc = S("The stand allows you to brew potions!"),
|
|
_doc_items_usagehelp = doc_string,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, brewitem=1 },
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
minetest.register_node("mcl_brewing:stand_100", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_create_entry = false,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
|
{-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
|
{-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
|
{-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
|
{-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
|
|
minetest.register_node("mcl_brewing:stand_010", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_create_entry = false,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
|
|
{7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
|
{6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
|
{5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
|
{4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
|
{3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
|
|
minetest.register_node("mcl_brewing:stand_001", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_create_entry = false,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
|
{0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
|
|
minetest.register_node("mcl_brewing:stand_110", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_create_entry = false,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
|
{-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
|
{-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
|
{-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
|
{-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
|
|
{7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
|
{6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
|
{5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
|
{4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
|
{3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
|
|
minetest.register_node("mcl_brewing:stand_101", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_create_entry = false,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
|
{-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
|
{-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
|
{-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
|
{-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
|
{0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
|
|
minetest.register_node("mcl_brewing:stand_011", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_create_entry = false,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
{7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
|
{6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
|
{5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
|
{4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
|
{3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
|
{0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
|
|
minetest.register_node("mcl_brewing:stand_111", {
|
|
description = S("Brewing Stand"),
|
|
_doc_items_create_entry = false,
|
|
_tt_help = S("Brew Potions"),
|
|
groups = {pickaxey=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
|
tiles = tiles,
|
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true,
|
|
drop = "mcl_brewing:stand",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume
|
|
{ 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base
|
|
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
|
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
|
|
|
{-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
|
{-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
|
{-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
|
{-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
|
{-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
|
|
|
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
|
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
|
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
|
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
|
|
|
|
|
{7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
|
{6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
|
{5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
|
{4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
|
{3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
|
|
|
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
|
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
|
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
|
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
|
|
|
{0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
|
{0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
|
|
|
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
|
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
|
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
|
}
|
|
},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 1,
|
|
_mcl_hardness = 1,
|
|
on_destruct = on_destruct,
|
|
allow_metadata_inventory_take = allow_take,
|
|
allow_metadata_inventory_put = allow_put,
|
|
on_metadata_inventory_put = on_put,
|
|
on_metadata_inventory_take = on_put,
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("input", 1)
|
|
inv:set_size("fuel", 1)
|
|
inv:set_size("stand", 3)
|
|
local form = brewing_formspec
|
|
meta:set_string("formspec", form)
|
|
end,
|
|
on_receive_fields = function(pos, formname, fields, sender)
|
|
local sender_name = sender:get_player_name()
|
|
if minetest.is_protected(pos, sender_name) then
|
|
minetest.record_protection_violation(pos, sender_name)
|
|
return
|
|
end
|
|
end,
|
|
on_timer = brewing_stand_timer,
|
|
on_rotate = on_rotate,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mcl_brewing:stand_000",
|
|
recipe = {
|
|
{ "", "mcl_mobitems:blaze_rod", "" },
|
|
{ "group:cobble", "group:cobble", "group:cobble" },
|
|
}
|
|
})
|
|
|
|
minetest.register_alias("mcl_brewing:stand", "mcl_brewing:stand_000")
|
|
|
|
if minetest.get_modpath("doc") then
|
|
doc.add_entry_alias("nodes", "mcl_brewing:stand_000", "nodes", "mcl_brewing:stand_001")
|
|
doc.add_entry_alias("nodes", "mcl_brewing:stand_000", "nodes", "mcl_brewing:stand_010")
|
|
doc.add_entry_alias("nodes", "mcl_brewing:stand_000", "nodes", "mcl_brewing:stand_011")
|
|
doc.add_entry_alias("nodes", "mcl_brewing:stand_000", "nodes", "mcl_brewing:stand_100")
|
|
doc.add_entry_alias("nodes", "mcl_brewing:stand_000", "nodes", "mcl_brewing:stand_101")
|
|
doc.add_entry_alias("nodes", "mcl_brewing:stand_000", "nodes", "mcl_brewing:stand_110")
|
|
doc.add_entry_alias("nodes", "mcl_brewing:stand_000", "nodes", "mcl_brewing:stand_111")
|
|
end
|
|
|
|
if minetest.get_modpath("mesecons_mvps") then
|
|
for _, s in ipairs({"000", "001", "010", "011", "100", "101", "110", "111"}) do
|
|
mesecon.register_mvps_stopper("mcl_brewing:stand_" .. s)
|
|
end
|
|
end
|