Merge pull request #3 from todada/drinks_as_nodes
Make drinks placeable in the world. I'll change the ifs to elseifs shortly. Also @todada you had a little bug with drinking from the steel bottle and getting an empty glass bottle in return, but I'll fix that when I do the changes from if to elseif.master
commit
91f50905bc
|
@ -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
|
||||
|
|
17
drinks.lua
17
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,
|
||||
|
|
16
drinks2.lua
16
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,
|
||||
|
|
29
init.lua
29
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
|
||||
|
|
Loading…
Reference in New Issue