Add throwable cake
This commit is contained in:
parent
af72871bf0
commit
85c2284da5
@ -35,6 +35,7 @@ Authors of textures:
|
||||
--------------------
|
||||
rubenwardy (CC-BY-SA):
|
||||
cake_bottom.png, derivative
|
||||
cake_entity.png
|
||||
cake_inner.png, derivative
|
||||
cake_side.png, derivative
|
||||
cake_sugar.png
|
||||
|
54
init.lua
54
init.lua
@ -1,3 +1,7 @@
|
||||
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
|
||||
@ -70,3 +74,53 @@ minetest.register_craft({
|
||||
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
|
||||
|
BIN
textures/cake_entity.png
Normal file
BIN
textures/cake_entity.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 359 B |
Loading…
x
Reference in New Issue
Block a user