forked from minetest-mods/item_drop
Update to latest Minetest changes
This commit is contained in:
parent
eb26f112a3
commit
e7ea85077f
14
README.txt
14
README.txt
|
@ -17,18 +17,8 @@ How to use the mod:
|
||||||
Just install it an everything works.
|
Just install it an everything works.
|
||||||
|
|
||||||
For developers:
|
For developers:
|
||||||
This mod changes the minetest.get_node_drops() function to always
|
You dont have to use get_drops() anymore because of changes in the
|
||||||
return {}. Use minetest.get_drops() to get the right drop.
|
builtin files of minetest.
|
||||||
Example:
|
|
||||||
Before:
|
|
||||||
local drop = minetest.get_node_drops("default:dirt", "default:pick_mese")
|
|
||||||
After:
|
|
||||||
local drop
|
|
||||||
if minetest.get_modpath("item_drop") == nil then
|
|
||||||
drop = minetest.get_node_drops("default:dirt", "default:pick_mese")
|
|
||||||
else
|
|
||||||
drop = minetest.get_drops("default:dirt", "default:pick_mese")
|
|
||||||
end
|
|
||||||
|
|
||||||
License:
|
License:
|
||||||
Sourcecode: WTFPL (see below)
|
Sourcecode: WTFPL (see below)
|
||||||
|
|
60
init.lua
60
init.lua
|
@ -62,70 +62,12 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- TODO this can be removed in future version
|
|
||||||
function minetest.get_node_drops(nodename, toolname)
|
|
||||||
return {}
|
|
||||||
end
|
|
||||||
|
|
||||||
-- TODO this can be removed in future version
|
|
||||||
function minetest.get_drops(nodename, toolname)
|
|
||||||
local drop = ItemStack({name=nodename}):get_definition().drop
|
|
||||||
if drop == nil then
|
|
||||||
-- default drop
|
|
||||||
return {ItemStack({name=nodename})}
|
|
||||||
elseif type(drop) == "string" then
|
|
||||||
-- itemstring drop
|
|
||||||
return {ItemStack(drop)}
|
|
||||||
elseif drop.items == nil then
|
|
||||||
-- drop = {} to disable default drop
|
|
||||||
return {}
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Extended drop table
|
|
||||||
local got_items = {}
|
|
||||||
local got_count = 0
|
|
||||||
local _, item, tool
|
|
||||||
for _, item in ipairs(drop.items) do
|
|
||||||
local good_rarity = true
|
|
||||||
local good_tool = true
|
|
||||||
if item.rarity ~= nil then
|
|
||||||
good_rarity = item.rarity < 1 or math.random(item.rarity) == 1
|
|
||||||
end
|
|
||||||
if item.tools ~= nil then
|
|
||||||
good_tool = false
|
|
||||||
for _, tool in ipairs(item.tools) do
|
|
||||||
if tool:sub(1, 1) == '~' then
|
|
||||||
good_tool = toolname:find(tool:sub(2)) ~= nil
|
|
||||||
else
|
|
||||||
good_tool = toolname == tool
|
|
||||||
end
|
|
||||||
if good_tool then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if good_rarity and good_tool then
|
|
||||||
got_count = got_count + 1
|
|
||||||
for _, add_item in ipairs(item.items) do
|
|
||||||
got_items[#got_items+1] = add_item
|
|
||||||
end
|
|
||||||
if drop.max_items ~= nil and got_count == drop.max_items then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return got_items
|
|
||||||
end
|
|
||||||
|
|
||||||
-- TODO this code will work in a future version of Minetest
|
|
||||||
--[[
|
|
||||||
function minetest.handle_node_drops(pos, drops, digger)
|
function minetest.handle_node_drops(pos, drops, digger)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
]]
|
|
||||||
|
|
||||||
minetest.register_on_dignode(function(pos, oldnode, digger)
|
minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||||
local drop = minetest.get_drops(oldnode.name, digger:get_wielded_item():get_name())
|
local drop = minetest.get_node_drops(oldnode.name, digger:get_wielded_item():get_name())
|
||||||
if drop == nil then
|
if drop == nil then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user