2015-06-29 19:55:56 +02:00
--[[
#!#!#!#Cake mod created by Jordan4ibanez#!#!#
#!#!#!#Released under CC Attribution-ShareAlike 3.0 Unported #!#!#
] ] --
2019-03-07 23:40:43 +01:00
local S = minetest.get_translator ( " mcl_cake " )
2017-01-24 02:31:49 +01:00
local cake_texture = { " cake_top.png " , " cake_bottom.png " , " cake_inner.png " , " cake_side.png " , " cake_side.png " , " cake_side.png " }
local slice_1 = { - 7 / 16 , - 8 / 16 , - 7 / 16 , - 5 / 16 , 0 / 16 , 7 / 16 }
2017-02-28 00:01:51 +01:00
local slice_2 = { - 7 / 16 , - 8 / 16 , - 7 / 16 , - 3 / 16 , 0 / 16 , 7 / 16 }
local slice_3 = { - 7 / 16 , - 8 / 16 , - 7 / 16 , - 1 / 16 , 0 / 16 , 7 / 16 }
local slice_4 = { - 7 / 16 , - 8 / 16 , - 7 / 16 , 1 / 16 , 0 / 16 , 7 / 16 }
local slice_5 = { - 7 / 16 , - 8 / 16 , - 7 / 16 , 3 / 16 , 0 / 16 , 7 / 16 }
local slice_6 = { - 7 / 16 , - 8 / 16 , - 7 / 16 , 5 / 16 , 0 / 16 , 7 / 16 }
local full_cake = { - 7 / 16 , - 8 / 16 , - 7 / 16 , 7 / 16 , 0 / 16 , 7 / 16 }
2015-06-29 19:55:56 +02:00
minetest.register_craft ( {
2017-01-16 21:13:26 +01:00
output = " mcl_cake:cake " ,
2015-06-29 19:55:56 +02:00
recipe = {
2017-01-17 01:09:11 +01:00
{ ' mcl_mobitems:milk_bucket ' , ' mcl_mobitems:milk_bucket ' , ' mcl_mobitems:milk_bucket ' } ,
2017-01-31 23:32:56 +01:00
{ ' mcl_core:sugar ' , ' mcl_throwing:egg ' , ' mcl_core:sugar ' } ,
2017-02-11 21:38:25 +01:00
{ ' mcl_farming:wheat_item ' , ' mcl_farming:wheat_item ' , ' mcl_farming:wheat_item ' } ,
2015-06-29 19:55:56 +02:00
} ,
2017-01-17 01:09:11 +01:00
replacements = {
2017-08-03 16:36:55 +02:00
{ " mcl_mobitems:milk_bucket " , " mcl_buckets:bucket_empty " } ,
{ " mcl_mobitems:milk_bucket " , " mcl_buckets:bucket_empty " } ,
{ " mcl_mobitems:milk_bucket " , " mcl_buckets:bucket_empty " } ,
2017-01-17 01:09:11 +01:00
} ,
2015-06-29 19:55:56 +02:00
} )
2017-01-16 21:13:26 +01:00
minetest.register_node ( " mcl_cake:cake " , {
2019-03-07 23:40:43 +01:00
description = S ( " Cake " ) ,
_doc_items_longdesc = S ( " Cakes can be placed and eaten to restore hunger points. A cake has 7 slices. Each slice restores 2 hunger points and 0.4 saturation points. Cakes will be destroyed when dug or when the block below them is broken. " ) ,
_doc_items_usagehelp = S ( " Place the cake anywhere, then rightclick it to eat a single slice. You can't eat from the cake when your hunger bar is full. " ) ,
2015-06-29 19:55:56 +02:00
tiles = { " cake_top.png " , " cake_bottom.png " , " cake_side.png " , " cake_side.png " , " cake_side.png " , " cake_side.png " } ,
2017-01-16 20:59:07 +01:00
inventory_image = " cake.png " ,
wield_image = " cake.png " ,
2015-06-29 19:55:56 +02:00
paramtype = " light " ,
2017-01-04 22:36:51 +01:00
is_ground_content = false ,
2015-06-29 19:55:56 +02:00
drawtype = " nodebox " ,
selection_box = {
type = " fixed " ,
2017-02-28 00:01:51 +01:00
fixed = full_cake
2015-06-29 19:55:56 +02:00
} ,
node_box = {
type = " fixed " ,
2017-02-28 00:01:51 +01:00
fixed = full_cake
} ,
2015-06-29 19:55:56 +02:00
stack_max = 1 ,
2018-05-13 00:23:34 +02:00
groups = { handy = 1 , cake = 7 , food = 2 , no_eat_delay = 1 , attached_node = 1 , dig_by_piston = 1 , comparator_signal = 14 } ,
2015-06-29 19:55:56 +02:00
drop = ' ' ,
on_rightclick = function ( pos , node , clicker , itemstack )
2019-02-08 21:59:01 +01:00
-- Cake is subject to protection
local name = clicker : get_player_name ( )
if minetest.is_protected ( pos , name ) then
minetest.record_protection_violation ( pos , name )
return
end
2017-05-23 02:09:47 +02:00
local newcake = minetest.do_item_eat ( 2 , ItemStack ( " mcl_cake:cake_6 " ) , ItemStack ( " mcl_cake:cake " ) , clicker , { type = " nothing " } )
-- Check if we were allowed to eat
2019-02-05 21:51:40 +01:00
if newcake : get_name ( ) ~= " mcl_cake:cake " or minetest.settings : get_bool ( " creative_mode " ) == true then
2017-05-23 02:09:47 +02:00
minetest.add_node ( pos , { type = " node " , name = " mcl_cake:cake_6 " , param2 = 0 } )
end
2015-06-29 19:55:56 +02:00
end ,
2017-02-11 18:46:23 +01:00
sounds = mcl_sounds.node_sound_leaves_defaults ( ) ,
2017-02-16 15:25:07 +01:00
_food_particles = false ,
2017-05-20 17:45:04 +02:00
_mcl_saturation = 0.4 ,
2017-02-27 01:13:03 +01:00
_mcl_blast_resistance = 2.5 ,
2017-03-20 19:29:46 +01:00
_mcl_hardness = 0.5 ,
2015-06-29 19:55:56 +02:00
} )
2017-02-16 15:25:07 +01:00
2017-02-28 00:01:51 +01:00
local register_slice = function ( level , nodebox , desc )
local this = " mcl_cake:cake_ " .. level
local after_eat = " mcl_cake:cake_ " .. ( level - 1 )
local on_rightclick
if level > 1 then
on_rightclick = function ( pos , node , clicker , itemstack )
2019-02-08 21:59:01 +01:00
local name = clicker : get_player_name ( )
if minetest.is_protected ( pos , name ) then
minetest.record_protection_violation ( pos , name )
return
end
2017-05-23 02:09:47 +02:00
local newcake = minetest.do_item_eat ( 2 , ItemStack ( after_eat ) , ItemStack ( this ) , clicker , { type = " nothing " } )
-- Check if we were allowed to eat
2019-02-05 21:51:40 +01:00
if newcake : get_name ( ) ~= this or minetest.settings : get_bool ( " creative_mode " ) == true then
2017-05-23 02:09:47 +02:00
minetest.add_node ( pos , { type = " node " , name = after_eat , param2 = 0 } )
end
2017-02-28 00:01:51 +01:00
end
else
2017-05-23 02:09:47 +02:00
-- Last slice
2017-02-28 00:01:51 +01:00
on_rightclick = function ( pos , node , clicker , itemstack )
2019-02-08 21:59:01 +01:00
local name = clicker : get_player_name ( )
if minetest.is_protected ( pos , name ) then
minetest.record_protection_violation ( pos , name )
return
end
2017-05-23 02:09:47 +02:00
local newcake = minetest.do_item_eat ( 2 , ItemStack ( " mcl:cake:cake 0 " ) , ItemStack ( " mcl_cake:cake_1 " ) , clicker , { type = " nothing " } )
-- Check if we were allowed to eat
2019-02-05 21:51:40 +01:00
if newcake : get_name ( ) ~= this or minetest.settings : get_bool ( " creative_mode " ) == true then
2017-05-23 02:09:47 +02:00
minetest.remove_node ( pos )
core.check_for_falling ( pos )
end
2017-02-28 00:01:51 +01:00
end
end
2017-02-16 15:25:07 +01:00
2017-02-28 00:01:51 +01:00
minetest.register_node ( this , {
description = desc ,
2017-03-02 19:53:53 +01:00
_doc_items_create_entry = false ,
2017-02-28 00:01:51 +01:00
tiles = cake_texture ,
paramtype = " light " ,
is_ground_content = false ,
drawtype = " nodebox " ,
selection_box = {
type = " fixed " ,
fixed = nodebox ,
2015-06-29 19:55:56 +02:00
} ,
2017-02-28 00:01:51 +01:00
node_box = {
type = " fixed " ,
fixed = nodebox ,
} ,
2018-05-13 00:23:34 +02:00
groups = { handy = 1 , cake = level , food = 2 , no_eat_delay = 1 , attached_node = 1 , not_in_creative_inventory = 1 , dig_by_piston = 1 , comparator_signal = level * 2 } ,
2017-02-28 00:01:51 +01:00
drop = ' ' ,
on_rightclick = on_rightclick ,
sounds = mcl_sounds.node_sound_leaves_defaults ( ) ,
2017-02-16 15:25:07 +01:00
2017-02-28 00:01:51 +01:00
_food_particles = false ,
2017-05-20 17:45:04 +02:00
_mcl_saturation = 0.4 ,
2017-02-28 00:01:51 +01:00
_mcl_blast_resistance = 2.5 ,
2017-03-20 19:29:46 +01:00
_mcl_hardness = 0.5 ,
2017-02-28 00:01:51 +01:00
} )
2017-03-20 18:12:05 +01:00
if minetest.get_modpath ( " doc " ) then
doc.add_entry_alias ( " nodes " , " mcl_cake:cake " , " nodes " , " mcl_cake:cake_ " .. level )
end
2017-02-28 00:01:51 +01:00
end
2017-02-16 15:25:07 +01:00
2019-03-07 23:40:43 +01:00
register_slice ( 6 , slice_6 , S ( " Cake (6 Slices Left) " ) )
register_slice ( 5 , slice_5 , S ( " Cake (5 Slices Left) " ) )
register_slice ( 4 , slice_4 , S ( " Cake (4 Slices Left) " ) )
register_slice ( 3 , slice_3 , S ( " Cake (3 Slices Left) " ) )
register_slice ( 2 , slice_2 , S ( " Cake (2 Slices Left) " ) )
register_slice ( 1 , slice_1 , S ( " Cake (1 Slice Left) " ) )