write something there
This commit is contained in:
commit
b4b6c08f4f
8546 changed files with 309825 additions and 0 deletions
116
mods/builtin_item/README.md
Normal file
116
mods/builtin_item/README.md
Normal file
|
@ -0,0 +1,116 @@
|
|||
item_entity.lua replacement
|
||||
|
||||
edited by TenPlus1
|
||||
|
||||
Features:
|
||||
- Items are destroyed by lava
|
||||
- Items are pushed along by flowing water (thanks to QwertyMine3 and Gustavo6046)
|
||||
- Items are removed after 900 seconds or the time that is specified by
|
||||
remove_items in minetest.conf (-1 disables it)
|
||||
- Particle effects added
|
||||
- Dropped items slide on nodes with {slippery} groups
|
||||
- Items stuck inside solid nodes move to nearest empty space
|
||||
- Can use new on_pickup() function if available
|
||||
- Added 'dropped_step(self, pos, dtime, moveresult)' custom on_step for dropped items
|
||||
'self.node_inside' contains node table that item is inside
|
||||
'self.def_inside' contains node definition for above
|
||||
'self.node_under' contains node table that is below item
|
||||
'self.def_under' contains node definition for above
|
||||
'self.age' holds age of dropped item in seconds
|
||||
'self.itemstring' contains itemstring e.g. "default:dirt", "default:ice 20"
|
||||
'self.is_moving' true if dropped item is moving
|
||||
'pos' holds position of dropped item
|
||||
'dtime' used for timers
|
||||
'moveresult' table containing collision info
|
||||
|
||||
return false to skip further checks by builtin_item
|
||||
|
||||
License: LGPLv2.1+
|
||||
|
||||
|
||||
dropped_step() examples:
|
||||
|
||||
-- if gunpowder dropped on burning tnt or gunpowder then remove
|
||||
|
||||
if minetest.registered_items["tnt:gunpowder"] then
|
||||
|
||||
minetest.override_item("tnt:gunpowder", {
|
||||
|
||||
dropped_step = function(self, pos)
|
||||
|
||||
if (self.node_inside
|
||||
and self.node_inside.name == "tnt:gunpowder_burning")
|
||||
or (self.node_under
|
||||
and self.node_under.name == "tnt:tnt_burning") then
|
||||
|
||||
minetest.sound_play("builtin_item_lava", {
|
||||
pos = pos,
|
||||
max_hear_distance = 6,
|
||||
gain = 0.5
|
||||
})
|
||||
|
||||
self.itemstring = ""
|
||||
self.object:remove()
|
||||
|
||||
return false -- return with no further action
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
-- if 2x mese crystal and 2x crystal spike dropped in pool of water_source
|
||||
-- then merge into a single crystal_ingot.
|
||||
|
||||
if minetest.registered_items["ethereal:crystal_spike"] then
|
||||
|
||||
minetest.override_item("ethereal:crystal_spike", {
|
||||
|
||||
dropped_step = function(self, pos, dtime)
|
||||
|
||||
self.ctimer = (self.ctimer or 0) + dtime
|
||||
if self.ctimer < 5.0 then return end
|
||||
self.ctimer = 0
|
||||
|
||||
if self.node_inside
|
||||
and self.node_inside.name ~= "default:water_source" then
|
||||
return
|
||||
end
|
||||
|
||||
local objs = core.get_objects_inside_radius(pos, 0.8)
|
||||
|
||||
if not objs or #objs ~= 2 then return end
|
||||
|
||||
local crystal, mese, ent = nil, nil, nil
|
||||
|
||||
for k, obj in pairs(objs) do
|
||||
|
||||
ent = obj:get_luaentity()
|
||||
|
||||
if ent and ent.name == "__builtin:item" then
|
||||
|
||||
if ent.itemstring == "default:mese_crystal 2"
|
||||
and not mese then
|
||||
|
||||
mese = obj
|
||||
|
||||
elseif ent.itemstring == "ethereal:crystal_spike 2"
|
||||
and not crystal then
|
||||
|
||||
crystal = obj
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if mese and crystal then
|
||||
|
||||
mese:remove()
|
||||
crystal:remove()
|
||||
|
||||
core.add_item(pos, "ethereal:crystal_ingot")
|
||||
|
||||
return false -- return with no further action
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue