1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-10-29 14:45:20 +01:00

Fix meta tool capabilities regression (#16563)

This also adds a unittest to avoid issues in the future.
This commit is contained in:
cx384
2025-10-11 19:38:21 +02:00
committed by GitHub
parent c2e2b97944
commit f205f6f539
3 changed files with 54 additions and 10 deletions

View File

@@ -106,18 +106,24 @@ struct ItemStack
const ToolCapabilities& getToolCapabilities(
const IItemDefManager *itemdef, const ItemStack *hand = nullptr) const
{
const ToolCapabilities *item_cap = itemdef->get(name).tool_capabilities;
// Check for override
auto &meta_item_cap = metadata.getToolCapabilitiesOverride();
if (meta_item_cap.has_value())
return meta_item_cap.value();
if (item_cap) {
return metadata.getToolCapabilities(*item_cap); // Check for override
}
const ToolCapabilities *item_cap = itemdef->get(name).tool_capabilities;
if (item_cap)
return *item_cap;
// Fall back to the hand's tool capabilities
if (hand) {
auto &hand_meta_item_cap = hand->metadata.getToolCapabilitiesOverride();
if (hand_meta_item_cap.has_value())
return hand_meta_item_cap.value();
item_cap = itemdef->get(hand->name).tool_capabilities;
if (item_cap) {
return hand->metadata.getToolCapabilities(*item_cap);
}
if (item_cap)
return *item_cap;
}
item_cap = itemdef->get("").tool_capabilities;