diff --git a/drink_machines.lua b/drink_machines.lua index 24af1a7..235f22f 100644 --- a/drink_machines.lua +++ b/drink_machines.lua @@ -134,6 +134,18 @@ minetest.register_node('drinks:juice_press', { meta:set_string('formspec', press_error_formspec) end end + if vessel == 'vessels:steel_bottle' then + if instack:get_count() >= 8 then + meta:set_string('container', 'jsb_') + meta:set_string('fruitnumber', 8) + meta:set_string('infotext', 'Juicing...') + meta:set_string('formspec', press_running_formspec) + timer:start(8) + else + meta:set_string('infotext', 'You need more fruit.') + meta:set_string('formspec', press_error_formspec) + end + end if vessel == 'bucket:bucket_empty' then if instack:get_count() >= 16 then meta:set_string('container', 'jbu_') @@ -234,22 +246,24 @@ minetest.register_node('drinks:juice_press', { end end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - if listname == 'dst' then - if stack:get_name() == ('bucket:bucket_empty') then - return 1 - elseif stack:get_name() == ('vessels:drinking_glass') then - return 1 - elseif stack:get_name() == ('vessels:glass_bottle') then - return 1 + if listname == 'dst' then + if stack:get_name() == ('bucket:bucket_empty') then + return 1 + elseif stack:get_name() == ('vessels:drinking_glass') then + return 1 + elseif stack:get_name() == ('vessels:glass_bottle') then + return 1 + elseif stack:get_name() == ('vessels:steel_bottle') then + return 1 elseif stack:get_name() == ('default:papyrus') then return 1 - else - return 0 - end + else + return 0 + end else return 99 - end - end, + end + end, }) function drinks.drinks_liquid_sub(liq_vol, ves_typ, ves_vol, pos) @@ -270,7 +284,7 @@ function drinks.drinks_liquid_sub(liq_vol, ves_typ, ves_vol, pos) if ves_vol == 256 then meta:set_string('formspec', drinks.liquid_storage_formspec(fruit_name, fullness, 256)) end - if ves_typ == 'jcu' or ves_typ == 'jbo' or ves_typ == 'jbu' then + if ves_typ == 'jcu' or ves_typ == 'jbo' or ves_typ == 'jsb' or ves_typ == 'jbu' then inv:set_stack('dst', 1, 'drinks:'..ves_typ..'_'..fruit) end if ves_typ == 'thirsty:bronze_canteen' then @@ -313,6 +327,9 @@ function drinks.drinks_barrel(pos, inputstack) if vessel == 'jbo' then drinks.drinks_liquid_add(4, 'vessels:glass_bottle', 128, pos) end + if vessel == 'jsb' then + drinks.drinks_liquid_add(4, 'vessels:steel_bottle', 128, pos) + end if vessel == 'jbu' then drinks.drinks_liquid_add(16, 'bucket:bucket_empty', 128, pos) end @@ -327,6 +344,9 @@ function drinks.drinks_silo(pos, inputstack) if vessel == 'jbo' then drinks.drinks_liquid_add(4, 'vessels:glass_bottle', 256, pos) end + if vessel == 'jsb' then + drinks.drinks_liquid_add(4, 'vessels:steel_bottle', 256, pos) + end if vessel == 'jbu' then drinks.drinks_liquid_add(16, 'bucket:bucket_empty', 256, pos) end @@ -397,6 +417,9 @@ minetest.register_node('drinks:liquid_barrel', { if outputstack == 'vessels:glass_bottle' then drinks.drinks_liquid_sub(4, 'jbo', 128, pos) end + if outputstack == 'vessels:steel_bottle' then + drinks.drinks_liquid_sub(4, 'jsb', 128, pos) + end if outputstack == 'bucket:bucket_empty' then drinks.drinks_liquid_sub(16, 'jbu', 128, pos) end @@ -499,6 +522,9 @@ minetest.register_node('drinks:liquid_silo', { if outputstack == 'vessels:glass_bottle' then drinks.drinks_liquid_sub(4, 'jbo', 256, pos) end + if outputstack == 'vessels:steel_bottle' then + drinks.drinks_liquid_sub(4, 'jsb', 256, pos) + end if outputstack == 'bucket:bucket_empty' then drinks.drinks_liquid_sub(16, 'jbu', 256, pos) end diff --git a/drinks.lua b/drinks.lua index 4e55cc8..8e8093a 100644 --- a/drinks.lua +++ b/drinks.lua @@ -8,7 +8,7 @@ for i in ipairs (drinks.drink_table) do -- The color of the drink is all done in code, so we don't need to have multiple images. --Actual Node registration -minetest.register_craftitem('drinks:jcu_'..desc, { +drinks.register_item('drinks:jcu_'..desc, 'vessels:drinking_glass', { description = 'Cup of '..craft..' Juice', groups = {drink=1}, juice_type = craft, @@ -20,9 +20,9 @@ minetest.register_craftitem('drinks:jcu_'..desc, { end, }) -minetest.register_craftitem('drinks:jbo_'..desc, { +drinks.register_item('drinks:jbo_'..desc, 'vessels:glass_bottle',{ description = 'Bottle of '..craft..' Juice', - groups = {drink=1}, + groups = {drink = 1}, juice_type = craft, inventory_image = 'drinks_bottle_contents.png^[colorize:'..color..':200^drinks_glass_bottle.png', on_use = function(itemstack, user, pointed_thing) @@ -32,6 +32,17 @@ minetest.register_craftitem('drinks:jbo_'..desc, { end, }) +drinks.register_item('drinks:jsb_'..desc, 'vessels:steel_bottle',{ + description = 'Heavy Steel Bottle ('..craft..' Juice)', + groups = {drink = 1}, + inventory_image = 'vessels_steel_bottle.png', + on_use = function(itemstack, user, pointed_thing) + thirsty.drink(user, 8, 20) + local eat_func = minetest.item_eat((health*2), 'vessels:steel_bottle') + return eat_func(itemstack, user, pointed_thing) + end, +}) + minetest.register_craftitem('drinks:jbu_'..desc, { description = 'Bucket of '..craft..' Juice', juice_type = craft, diff --git a/drinks2.lua b/drinks2.lua index 275921c..d2052b5 100644 --- a/drinks2.lua +++ b/drinks2.lua @@ -8,9 +8,8 @@ for i in ipairs (drinks.drink_table) do health = health or 1 --Actual Node registration -minetest.register_craftitem('drinks:jcu_'..desc, { +drinks.register_item( 'drinks:jcu_'..desc, 'vessels:drinking_glass', { description = 'Cup of '..craft..' Juice', - groups = {drink=1}, juice_type = craft, inventory_image = 'drinks_glass_contents.png^[colorize:'..color..':200^drinks_drinking_glass.png', on_use = function(itemstack, user, pointed_thing) @@ -19,7 +18,7 @@ minetest.register_craftitem('drinks:jcu_'..desc, { end, }) -minetest.register_craftitem('drinks:jbo_'..desc, { +drinks.register_item( 'drinks:jbo_'..desc, 'vessels:glass_bottle', { description = 'Bottle of '..craft..' Juice', groups = {drink=1}, juice_type = craft, @@ -30,6 +29,17 @@ minetest.register_craftitem('drinks:jbo_'..desc, { end, }) +drinks.register_item( 'drinks:jsb_'..desc, 'vessels:steel_bottle', { + description = 'Heavy Steel Bottle ('..craft..' Juice)', + groups = {drink=1}, + juice_type = craft, + inventory_image = 'vessels_steel_bottle.png', + on_use = function(itemstack, user, pointed_thing) + local eat_func = minetest.item_eat((health*2), 'vessels:glass_bottle') + return eat_func(itemstack, user, pointed_thing) + end, +}) + minetest.register_craftitem('drinks:jbu_'..desc, { description = 'Bucket of '..craft..' Juice', juice_type = craft, diff --git a/init.lua b/init.lua index 16be75f..20c627c 100644 --- a/init.lua +++ b/init.lua @@ -78,6 +78,35 @@ if minetest.get_modpath('farming') then table.insert(drinks.drink_table, {'rhubarb', 'Rhubarb', '#fb8461'}) end +-- replace craftitem to node definition +-- use existing node as template (e.g. 'vessel:glass_bottle') +drinks.register_item = function( name, template, def ) + local template_def = minetest.registered_nodes[template] + if template_def then + local drinks_def = table.copy(template_def) + + -- replace/add values + for k,v in pairs(def) do + if k == "groups" then + -- special handling for groups: merge instead replace + for g,n in pairs(v) do + drinks_def[k][g] = n + end + else + drinks_def[k]=v + end + end + + if def.inventory_image then + drinks_def.wield_image = drinks_def.inventory_image + drinks_def.tiles = { drinks_def.inventory_image } + end + + minetest.register_node( name, drinks_def ) + end +end + + if minetest.get_modpath('thirsty') then dofile(minetest.get_modpath('drinks')..'/drinks.lua') else