local throwable_cake = false -- CAKE -- local sizes = {-0.4375, -0.3125, -0.1875, -0.0625, 0.0625, 0.1875, 0.3125} for i, size in ipairs(sizes) do local slice = i - 1 local name local description local drop local tiles if slice == 0 then name = "cake:cake" description = "Cake" drop = nil tiles = {"cake_top.png", "cake_bottom.png", "cake_side.png"} else name = "cake:cake_"..slice drop = '' tiles = {"cake_top.png", "cake_bottom.png", "cake_side.png", "cake_inner.png", "cake_side.png", "cake_side.png"} end minetest.register_node(name, { description = description, drop = drop, drawtype = "nodebox", tiles = tiles, paramtype = "light", is_ground_content = false, groups = {crumbly=3}, --sounds = sounds, node_box = { type = "fixed", fixed = { {size, -0.5, -0.4375, 0.4375, 0, 0.4375}, } }, on_rightclick = function(pos, node, clicker) clicker:set_hp(clicker:get_hp() + 1) if i < #sizes then minetest.swap_node(pos, {name="cake:cake_"..i}) else minetest.remove_node(pos) end end, }) end if minetest.get_modpath("food") == nil then minetest.register_craftitem("cake:sugar", { description = "Sugar", inventory_image = "cake_sugar.png", groups = {food_sugar=1} }) minetest.register_craft({ type = "shapeless", output = "cake:sugar", recipe = {"default:papyrus"} }) else minetest.register_alias("cake:sugar", "food:sugar") end minetest.register_craft({ type = "shapeless", output = "cake:cake", recipe = {"farming:flour", "group:water_bucket", "group:food_sugar", "group:food_sugar"} }) -- THROWABLE CAKE -- minetest.register_entity("cake:cake_entity", { physical = false, timer = 0, textures = {"cake_entity.png"}, lastpos = {}, collisionbox = {0,0,0,0,0,0}, on_step = function(self, dtime) self.timer=self.timer+dtime local pos = self.object:getpos() local node = minetest.env:get_node(pos) if self.timer>0.2 then local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) for k, obj in pairs(objs) do if obj:get_luaentity() == nil or obj:get_luaentity().name ~= "cake:cake_entity" and obj:get_luaentity().name ~= "__builtin:item" then obj:set_hp(obj:get_hp() + 7) self.object:remove() end end end if self.lastpos.x~=nil then if node.name ~= "air" then minetest.env:add_item(self.lastpos, 'cake:cake') self.object:remove() end end self.lastpos={x=pos.x, y=pos.y, z=pos.z} end, }) if throwable_cake then minetest.override_item("cake:cake", { on_use = function(itemstack, player, pointed_thing) if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end local playerpos = player:getpos() local obj = minetest.env:add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, "cake:cake_entity") local dir = player:get_look_dir() obj:setvelocity({x=dir.x*19, y=dir.y*19, z=dir.z*19}) obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3}) obj:setyaw(player:get_look_yaw()+math.pi) return itemstack end, }) end if minetest.get_modpath("i18n") then local separator = package.config:sub(1,1) dofile(minetest.get_modpath("i18n")..separator.."init.lua") i18n.localize_mod() end