Charakterbewegungen hinzugefügt, Deko hinzugefügt, Kochrezepte angepasst
This commit is contained in:
parent
95945c0306
commit
a0c893ca0b
1124 changed files with 64294 additions and 763 deletions
133
mods/futil/minetest/item.lua
Normal file
133
mods/futil/minetest/item.lua
Normal file
|
@ -0,0 +1,133 @@
|
|||
local f = string.format
|
||||
|
||||
-- if allow_unregistered is false or absent, if the original item or its alias is not a registered item, will return nil
|
||||
function futil.resolve_item(item_or_string, allow_unregistered)
|
||||
local item_stack = ItemStack(item_or_string)
|
||||
local name = item_stack:get_name()
|
||||
|
||||
local seen = { [name] = true }
|
||||
|
||||
local alias = minetest.registered_aliases[name]
|
||||
while alias do
|
||||
name = alias
|
||||
seen[name] = true
|
||||
alias = minetest.registered_aliases[name]
|
||||
if seen[alias] then
|
||||
error(f("alias cycle on %s", name))
|
||||
end
|
||||
end
|
||||
|
||||
if minetest.registered_items[name] or allow_unregistered then
|
||||
item_stack:set_name(name)
|
||||
return item_stack:to_string()
|
||||
end
|
||||
end
|
||||
|
||||
function futil.resolve_itemstack(item_or_string)
|
||||
return ItemStack(futil.resolve_item(item_or_string, true))
|
||||
end
|
||||
|
||||
if ItemStack().equals then
|
||||
-- https://github.com/minetest/minetest/pull/12771
|
||||
function futil.items_equals(item1, item2)
|
||||
item1 = type(item1) == "userdata" and item1 or ItemStack(item1)
|
||||
item2 = type(item2) == "userdata" and item2 or ItemStack(item2)
|
||||
|
||||
return item1 == item2
|
||||
end
|
||||
else
|
||||
local equals = futil.equals
|
||||
|
||||
function futil.items_equals(item1, item2)
|
||||
item1 = type(item1) == "userdata" and item1 or ItemStack(item1)
|
||||
item2 = type(item2) == "userdata" and item2 or ItemStack(item2)
|
||||
|
||||
return equals(item1:to_table(), item2:to_table())
|
||||
end
|
||||
end
|
||||
|
||||
-- TODO: probably this should have a 3nd argument to handle tool and tool_group stuff
|
||||
function futil.get_primary_drop(stack, filter)
|
||||
stack = ItemStack(stack)
|
||||
|
||||
local name = stack:get_name()
|
||||
local meta = stack:get_meta()
|
||||
local palette_index = tonumber(meta:get_int("palette_index"))
|
||||
local def = stack:get_definition()
|
||||
|
||||
if palette_index then
|
||||
-- https://github.com/mt-mods/unifieddyes/blob/36c8bb5f5b8a0485225d2547c8978291ff710291/api.lua#L70-L90
|
||||
local del_color
|
||||
|
||||
if def.paramtype2 == "color" and palette_index == 240 and def.palette == "unifieddyes_palette_extended.png" then
|
||||
del_color = true
|
||||
elseif
|
||||
def.paramtype2 == "colorwallmounted"
|
||||
and palette_index == 0
|
||||
and def.palette == "unifieddyes_palette_colorwallmounted.png"
|
||||
then
|
||||
del_color = true
|
||||
elseif
|
||||
def.paramtype2 == "colorfacedir"
|
||||
and palette_index == 0
|
||||
and string.find(def.palette, "unifieddyes_palette_")
|
||||
then
|
||||
del_color = true
|
||||
end
|
||||
|
||||
if del_color then
|
||||
meta:set_string("palette_index", "")
|
||||
palette_index = nil
|
||||
end
|
||||
end
|
||||
|
||||
local drop = def.drop
|
||||
|
||||
if drop == nil then
|
||||
stack:set_count(1)
|
||||
return stack
|
||||
elseif drop == "" then
|
||||
return nil
|
||||
elseif type(drop) == "string" then
|
||||
drop = ItemStack(drop)
|
||||
drop:set_count(1)
|
||||
return drop
|
||||
elseif type(drop) == "table" then
|
||||
local most_common_item
|
||||
local inherit_color = false
|
||||
local rarity = math.huge
|
||||
|
||||
if not drop.items then
|
||||
error(f("unexpected drop table for %s: %s", stack:to_string(), dump(drop)))
|
||||
end
|
||||
|
||||
for _, items in ipairs(drop.items) do
|
||||
if (items.rarity or 1) < rarity then
|
||||
for item in ipairs(items.items) do
|
||||
if (not filter) or filter(item) then
|
||||
most_common_item = item
|
||||
inherit_color = items.inherit_color or false
|
||||
rarity = items.rarity
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not most_common_item then
|
||||
return
|
||||
end
|
||||
|
||||
most_common_item = ItemStack(most_common_item)
|
||||
most_common_item:set_count(1)
|
||||
|
||||
if inherit_color and palette_index then
|
||||
local meta2 = most_common_item:get_meta()
|
||||
meta2:set_int("palette_index", palette_index)
|
||||
end
|
||||
|
||||
return most_common_item
|
||||
else
|
||||
error(f("invalid drop of %s? %q", dump(name, drop)))
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue