2020-08-05 15:20:08 +02:00
local S = minetest.get_translator ( " mcl_brewing " )
2020-05-17 00:22:09 +02:00
2020-06-08 23:47:53 +02:00
local function active_brewing_formspec ( fuel_percent , brew_percent )
2020-05-17 00:22:09 +02:00
return " size[9,8.75] " ..
2020-05-25 15:08:37 +02:00
" background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png] " ..
2021-04-19 14:44:20 +02:00
" label[4,0; " .. minetest.formspec_escape ( minetest.colorize ( " #313131 " , S ( " Brewing Stand " ) ) ) .. " ] " ..
" label[0,4.0; " .. minetest.formspec_escape ( minetest.colorize ( " #313131 " , S ( " Inventory " ) ) ) .. " ] " ..
2020-05-17 00:22:09 +02:00
" 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[current_name;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[current_name;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] " ..
2020-05-25 15:08:37 +02:00
" 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: " ..
2020-06-08 23:47:53 +02:00
( brew_percent ) .. " :mcl_brewing_bubbles_active.png] " ..
2020-05-25 15:08:37 +02:00
2020-05-17 00:22:09 +02:00
" listring[current_player;main] " ..
" listring[current_name;fuel] " ..
" listring[current_name;input] " ..
" listring[context;stand] "
end
2020-05-23 22:39:55 +02:00
local brewing_formspec = " size[9,8.75] " ..
" background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png] " ..
2021-04-19 14:44:20 +02:00
" label[4,0; " .. minetest.formspec_escape ( minetest.colorize ( " #313131 " , S ( " Brewing Stand " ) ) ) .. " ] " ..
" label[0,4.0; " .. minetest.formspec_escape ( minetest.colorize ( " #313131 " , S ( " Inventory " ) ) ) .. " ] " ..
2020-05-23 22:39:55 +02:00
" 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[current_name;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[current_name;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] " ..
2020-05-25 15:08:37 +02:00
" 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] " ..
2020-05-23 22:39:55 +02:00
" listring[current_player;main] " ..
" listring[current_name;fuel] " ..
" listring[current_name;input] " ..
" listring[context;stand] "
local function swap_node ( pos , name )
local node = minetest.get_node ( pos )
if node.name == name then
return
2020-05-17 00:22:09 +02:00
end
2020-05-23 22:39:55 +02:00
node.name = name
minetest.swap_node ( pos , node )
end
2020-05-25 21:31:35 +02:00
local function brewable ( inv )
local ingredient = inv : get_stack ( " input " , 1 ) : get_name ( )
2020-05-28 03:15:46 +02:00
local stands = { }
2020-05-27 00:10:20 +02:00
local stand_size = inv : get_size ( " stand " )
2020-05-28 03:15:46 +02:00
local was_alchemy = { false , false , false }
2020-05-25 21:31:35 +02:00
2020-07-17 02:14:57 +02:00
local bottle , alchemy
2020-05-27 00:10:20 +02:00
for i = 1 , stand_size do
2020-05-25 21:31:35 +02:00
2020-07-17 02:14:57 +02:00
bottle = inv : get_stack ( " stand " , i ) : get_name ( )
alchemy = mcl_potions.get_alchemy ( ingredient , bottle )
2020-05-28 00:36:10 +02:00
if alchemy then
stands [ i ] = alchemy
2020-05-28 03:15:46 +02:00
was_alchemy [ i ] = true
2020-05-28 00:36:10 +02:00
else
stands [ i ] = bottle
2020-05-25 21:31:35 +02:00
end
end
2020-05-27 00:10:20 +02:00
-- if any stand holds a new potion, return the list of new potions
2020-07-25 21:27:04 +02:00
for i = 1 , # was_alchemy do
2020-05-28 03:15:46 +02:00
if was_alchemy [ i ] then return stands end
end
2020-05-25 21:31:35 +02:00
return false
end
2020-05-23 22:39:55 +02:00
local function brewing_stand_timer ( pos , elapsed )
-- Inizialize metadata
local meta = minetest.get_meta ( pos )
2020-05-25 15:28:23 +02:00
2020-06-08 23:47:53 +02:00
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
2020-05-23 22:39:55 +02:00
2020-05-25 15:28:23 +02:00
local input_item = meta : get_string ( " input_item " ) or " "
local stand_timer = meta : get_float ( " stand_timer " ) or 0
2020-06-08 23:47:53 +02:00
local fuel = meta : get_float ( " fuel " ) or 0
2020-05-23 22:39:55 +02:00
local inv = meta : get_inventory ( )
2020-05-25 15:28:23 +02:00
2020-07-17 02:14:57 +02:00
local input_list , stand_list , fuel_list , brew_output , d
local input_count , fuel_name , fuel_count , formspec , fuel_percent , brew_percent
2020-05-23 22:39:55 +02:00
local update = true
while update do
update = false
input_list = inv : get_list ( " input " )
stand_list = inv : get_list ( " stand " )
2020-05-25 15:08:37 +02:00
fuel_list = inv : get_list ( " fuel " )
2020-05-23 22:39:55 +02:00
2020-05-27 00:10:20 +02:00
-- TODO ... fix this. Goal is to reset the process if the stand changes
2020-05-25 15:28:23 +02:00
-- for i=1, inv:get_size("stand", i) do -- reset the process due to change
2020-05-27 00:10:20 +02:00
-- local _name = inv:get_stack("stand", i):get_name()
2020-05-27 03:07:07 +02:00
-- if _name ~= stand_items[i] then
2020-05-25 15:28:23 +02:00
-- stand_timer = 0
2020-05-27 03:07:07 +02:00
-- stand_items[i] = _name
2020-05-25 15:28:23 +02:00
-- update = true -- need to update the stand with new data
2020-05-27 03:07:07 +02:00
-- return 1
2020-05-25 15:28:23 +02:00
-- end
-- end
2020-06-18 13:43:50 +02:00
2020-07-17 02:14:57 +02:00
brew_output = brewable ( inv )
2020-06-08 23:47:53 +02:00
if fuel ~= 0 and brew_output then
2020-05-23 22:39:55 +02:00
2020-06-08 23:47:53 +02:00
fuel_timer = fuel_timer + elapsed
stand_timer = stand_timer + elapsed
2020-05-23 22:39:55 +02:00
2020-06-08 23:47:53 +02:00
if fuel_timer >= BURN_TIME then --replace with more fuel
fuel = 0 --force a new fuel grab
fuel_timer = 0
end
2020-06-27 17:27:57 +02:00
2020-07-17 02:14:57 +02:00
d = 0.5
2020-06-27 17:27:57 +02:00
minetest.add_particlespawner ( {
2020-08-08 10:00:16 +02:00
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 " ,
} )
2020-05-27 00:10:20 +02:00
2020-06-08 23:47:53 +02:00
-- Replace the stand item with the brew result
if stand_timer >= BREW_TIME then
2020-05-27 00:10:20 +02:00
2020-07-17 02:14:57 +02:00
input_count = inv : get_stack ( " input " , 1 ) : get_count ( )
2020-06-08 23:47:53 +02:00
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
2020-05-27 00:10:20 +02:00
2020-06-08 23:47:53 +02:00
for i = 1 , inv : get_size ( " stand " ) do
if brew_output [ i ] then
2020-06-21 14:39:08 +02:00
minetest.sound_play ( " mcl_brewing_complete " , { pos = pos , gain = 0.4 , max_hear_range = 6 } , true )
2020-06-08 23:47:53 +02:00
inv : set_stack ( " stand " , i , brew_output [ i ] )
2020-06-21 14:39:08 +02:00
minetest.sound_play ( " mcl_potions_bottle_pour " , { pos = pos , gain = 0.6 , max_hear_range = 6 } , true )
2020-05-25 21:31:35 +02:00
end
end
2020-06-08 23:47:53 +02:00
stand_timer = 0
update = false -- stop the update if brew is complete
2020-05-25 21:31:35 +02:00
end
2020-06-08 23:47:53 +02:00
elseif fuel == 0 then --get more fuel from fuel_list
2020-05-25 15:08:37 +02:00
2020-06-08 23:47:53 +02:00
-- only allow blaze powder fuel
2020-07-17 02:14:57 +02:00
fuel_name = inv : get_stack ( " fuel " , 1 ) : get_name ( )
fuel_count = inv : get_stack ( " fuel " , 1 ) : get_count ( )
2020-05-25 15:28:23 +02:00
2020-06-08 23:47:53 +02:00
if fuel_name == " mcl_mobitems:blaze_powder " then -- Grab another fuel
2020-05-25 15:28:23 +02:00
2020-06-08 23:47:53 +02:00
if ( fuel_count - 1 ) ~= 0 then
inv : set_stack ( " fuel " , 1 , fuel_name .. " " .. ( fuel_count - 1 ) )
else
inv : set_stack ( " fuel " , 1 , " " )
2020-05-27 00:10:20 +02:00
end
2020-06-08 23:47:53 +02:00
update = true
fuel = 1
else -- no fuel available
update = false
2020-05-23 22:39:55 +02:00
end
2020-06-08 23:47:53 +02:00
2020-05-23 22:39:55 +02:00
end
2020-05-17 00:22:09 +02:00
2020-06-08 23:47:53 +02:00
elapsed = 0
2020-05-23 22:39:55 +02:00
end
2020-05-25 15:08:37 +02:00
--update formspec
2020-07-17 02:14:57 +02:00
formspec = brewing_formspec
2020-05-23 22:39:55 +02:00
local result = false
2020-06-08 23:47:53 +02:00
if fuel_timer ~= 0 then
2020-07-17 02:14:57 +02:00
fuel_percent = math.floor ( fuel_timer / BURN_TIME * 100 % BURN_TIME )
brew_percent = math.floor ( stand_timer / BREW_TIME * 100 )
2020-06-08 23:47:53 +02:00
formspec = active_brewing_formspec ( fuel_percent , brew_percent * 1 % 100 )
2020-05-23 22:39:55 +02:00
result = true
2020-05-17 00:22:09 +02:00
else
2020-05-23 22:39:55 +02:00
minetest.get_node_timer ( pos ) : stop ( )
2020-05-17 00:22:09 +02:00
end
2020-05-23 22:39:55 +02:00
2020-06-08 23:47:53 +02:00
meta : set_float ( " fuel_timer " , fuel_timer )
2020-05-25 15:28:23 +02:00
meta : set_float ( " stand_timer " , stand_timer )
2020-06-08 23:47:53 +02:00
meta : set_float ( " fuel " , fuel )
2020-05-23 22:39:55 +02:00
meta : set_string ( " formspec " , formspec )
return result
2020-05-17 00:22:09 +02:00
end
2020-05-23 22:39:55 +02:00
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
2020-05-17 00:22:09 +02:00
-- 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
2020-05-25 15:08:37 +02:00
local on_rotate
if minetest.get_modpath ( " screwdriver " ) then
on_rotate = screwdriver.rotate_simple
end
2020-05-17 00:22:09 +02:00
2020-06-08 23:47:53 +02:00
local doc_string =
2020-08-05 15:48:28 +02:00
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 " ..
2020-08-08 09:28:47 +02:00
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 " ..
2020-08-05 15:48:28 +02:00
S ( " Different combinations of brewing materials and liquids will give different results. Try to experiment! " )
2020-06-18 13:43:50 +02:00
2020-06-08 23:47:53 +02:00
local tiles = { " mcl_brewing_top.png " , --top
2020-08-08 10:00:16 +02:00
" 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
2020-06-22 21:56:43 +02:00
2020-06-08 23:47:53 +02:00
local allow_put = function ( 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
2020-06-22 21:56:43 +02:00
2020-06-08 23:47:53 +02:00
local on_put = function ( pos , listname , index , stack , player )
local meta = minetest.get_meta ( pos )
local inv = meta : get_inventory ( )
local str = " "
2020-07-17 02:14:57 +02:00
local stack
2020-06-08 23:47:53 +02:00
for i = 1 , inv : get_size ( " stand " ) do
2020-07-17 02:14:57 +02:00
stack = inv : get_stack ( " stand " , i )
2020-06-08 23:47:53 +02:00
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
2020-06-22 21:56:43 +02:00
2020-06-08 23:47:53 +02:00
local after_dig = function ( pos , oldnode , oldmetadata , digger )
local meta = minetest.get_meta ( pos )
meta : from_table ( oldmetadata )
drop_brewing_stand_items ( pos , meta )
2020-06-21 23:41:48 +02:00
end
2020-06-22 21:56:43 +02:00
local on_destruct = function ( pos )
2020-06-21 23:41:48 +02:00
local meta = minetest.get_meta ( pos )
drop_brewing_stand_items ( pos , meta )
2020-06-08 23:47:53 +02:00
end
2020-06-22 21:56:43 +02:00
2020-06-08 23:47:53 +02:00
local allow_take = function ( 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
2020-06-22 21:56:43 +02:00
2020-06-08 23:47:53 +02:00
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 " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , brewitem = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-06-08 23:47:53 +02:00
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
}
} ,
2020-08-22 12:12:31 +02:00
sounds = mcl_sounds.node_sound_metal_defaults ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
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 " ) ,
2020-07-23 23:23:03 +02:00
_doc_items_create_entry = false ,
2020-06-08 23:47:53 +02:00
_tt_help = S ( " Brew Potions " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , not_in_creative_inventory = 1 , not_in_craft_guide = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-05-17 00:22:09 +02:00
paramtype = " light " ,
sunlight_propagates = true ,
is_ground_content = false ,
paramtype2 = " facedir " ,
drawtype = " nodebox " ,
node_box = {
type = " fixed " ,
fixed = {
2020-05-25 15:08:37 +02:00
2020-05-19 23:31:07 +02:00
{ - 1 / 16 , - 5 / 16 , - 1 / 16 , 1 / 16 , 8 / 16 , 1 / 16 } , -- heat plume
2020-05-17 01:15:34 +02:00
{ 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
2020-05-19 23:31:07 +02:00
{ - 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
2020-06-08 23:47:53 +02:00
{ 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 ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
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 " ) ,
2020-07-23 23:23:03 +02:00
_doc_items_create_entry = false ,
2020-06-08 23:47:53 +02:00
_tt_help = S ( " Brew Potions " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , not_in_creative_inventory = 1 , not_in_craft_guide = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-06-08 23:47:53 +02:00
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
2020-05-19 23:31:07 +02:00
{ 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
2020-06-08 23:47:53 +02:00
{ 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 ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
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 " ) ,
2020-07-23 23:23:03 +02:00
_doc_items_create_entry = false ,
2020-06-08 23:47:53 +02:00
_tt_help = S ( " Brew Potions " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , not_in_creative_inventory = 1 , not_in_craft_guide = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-06-08 23:47:53 +02:00
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
2020-05-19 23:31:07 +02:00
{ 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
2020-05-17 00:22:09 +02:00
}
} ,
sounds = mcl_sounds.node_sound_metal_defaults ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
on_construct = function ( pos )
2020-05-17 00:22:09 +02:00
local meta = minetest.get_meta ( pos )
2020-06-08 23:47:53 +02:00
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 )
2020-05-17 00:22:09 +02:00
end ,
2020-06-08 23:47:53 +02:00
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
2020-05-17 00:22:09 +02:00
end
end ,
2020-06-08 23:47:53 +02:00
on_timer = brewing_stand_timer ,
on_rotate = on_rotate ,
} )
minetest.register_node ( " mcl_brewing:stand_110 " , {
description = S ( " Brewing Stand " ) ,
2020-07-23 23:23:03 +02:00
_doc_items_create_entry = false ,
2020-06-08 23:47:53 +02:00
_tt_help = S ( " Brew Potions " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , not_in_creative_inventory = 1 , not_in_craft_guide = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-06-08 23:47:53 +02:00
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 ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
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
2020-05-17 00:22:09 +02:00
end
end ,
2020-05-23 22:39:55 +02:00
2020-06-08 23:47:53 +02:00
on_timer = brewing_stand_timer ,
on_rotate = on_rotate ,
} )
minetest.register_node ( " mcl_brewing:stand_101 " , {
description = S ( " Brewing Stand " ) ,
2020-07-23 23:23:03 +02:00
_doc_items_create_entry = false ,
2020-06-08 23:47:53 +02:00
_tt_help = S ( " Brew Potions " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , not_in_creative_inventory = 1 , not_in_craft_guide = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-06-08 23:47:53 +02:00
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 ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
on_construct = function ( pos )
2020-05-17 00:22:09 +02:00
local meta = minetest.get_meta ( pos )
2020-06-08 23:47:53 +02:00
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 )
2020-05-17 00:22:09 +02:00
end ,
2020-06-08 23:47:53 +02:00
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
2020-05-17 00:22:09 +02:00
end ,
2020-06-08 23:47:53 +02:00
on_timer = brewing_stand_timer ,
on_rotate = on_rotate ,
} )
minetest.register_node ( " mcl_brewing:stand_011 " , {
description = S ( " Brewing Stand " ) ,
2020-07-23 23:23:03 +02:00
_doc_items_create_entry = false ,
2020-06-08 23:47:53 +02:00
_tt_help = S ( " Brew Potions " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , not_in_creative_inventory = 1 , not_in_craft_guide = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-06-08 23:47:53 +02:00
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 ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
2020-05-17 00:22:09 +02:00
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 )
2020-05-23 22:39:55 +02:00
local form = brewing_formspec
2020-05-17 00:22:09 +02:00
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 ,
2020-05-23 22:39:55 +02:00
on_timer = brewing_stand_timer ,
2020-05-25 15:08:37 +02:00
on_rotate = on_rotate ,
2020-06-08 23:47:53 +02:00
} )
minetest.register_node ( " mcl_brewing:stand_111 " , {
description = S ( " Brewing Stand " ) ,
2020-07-23 23:23:03 +02:00
_doc_items_create_entry = false ,
2020-06-08 23:47:53 +02:00
_tt_help = S ( " Brew Potions " ) ,
2020-09-19 09:42:09 +02:00
groups = { pickaxey = 1 , not_in_creative_inventory = 1 , not_in_craft_guide = 1 } ,
2020-06-08 23:47:53 +02:00
tiles = tiles ,
2021-02-18 14:00:17 +01:00
use_texture_alpha = minetest.features . use_texture_alpha_string_modes and " clip " or true ,
2020-06-21 14:57:44 +02:00
drop = " mcl_brewing:stand " ,
2020-06-08 23:47:53 +02:00
paramtype = " light " ,
sunlight_propagates = true ,
is_ground_content = false ,
paramtype2 = " facedir " ,
drawtype = " nodebox " ,
node_box = {
type = " fixed " ,
fixed = {
2020-05-23 22:39:55 +02:00
2020-06-08 23:47:53 +02:00
{ - 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
2020-05-23 22:39:55 +02:00
2020-05-17 00:22:09 +02:00
2020-06-08 23:47:53 +02:00
{ 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
2020-05-17 00:22:09 +02:00
}
2020-06-08 23:47:53 +02:00
} ,
sounds = mcl_sounds.node_sound_metal_defaults ( ) ,
2020-06-21 23:41:48 +02:00
_mcl_blast_resistance = 1 ,
2020-06-21 14:39:08 +02:00
_mcl_hardness = 1 ,
2020-06-22 21:56:43 +02:00
on_destruct = on_destruct ,
2020-06-08 23:47:53 +02:00
allow_metadata_inventory_take = allow_take ,
allow_metadata_inventory_put = allow_put ,
on_metadata_inventory_put = on_put ,
2020-07-17 02:14:57 +02:00
on_metadata_inventory_take = on_put ,
2020-06-08 23:47:53 +02:00
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 ,
2020-05-17 00:22:09 +02:00
2020-06-08 23:47:53 +02:00
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 ( {
2020-11-07 01:11:42 +01:00
output = " mcl_brewing:stand_000 " ,
2020-06-08 23:47:53 +02:00
recipe = {
{ " " , " mcl_mobitems:blaze_rod " , " " } ,
2020-06-20 23:26:42 +02:00
{ " mcl_core:cobble " , " mcl_core:cobble " , " mcl_core:cobble " } ,
2020-06-08 23:47:53 +02:00
}
} )
2020-07-23 23:23:03 +02:00
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
2020-09-19 09:42:09 +02:00
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