Add disable_repair group to prevent tool repair (#7381)

This commit is contained in:
Wuzzy 2018-10-16 06:25:34 +02:00 committed by Paramat
parent b6adb7f09e
commit 40ab3e011d
3 changed files with 33 additions and 1 deletions

@ -1551,6 +1551,8 @@ Special groups
connect to each other connect to each other
* `slippery`: Players and items will slide on the node. * `slippery`: Players and items will slide on the node.
Slipperiness rises steadily with `slippery` value, starting at 1. Slipperiness rises steadily with `slippery` value, starting at 1.
* `disable_repair`: If set to 1 for a tool, it cannot be repaired using the
`"toolrepair"` crafting recipe
Known damage and digging time defining groups Known damage and digging time defining groups
@ -6156,6 +6158,8 @@ Used by `minetest.register_craft`.
additional_wear = -0.02, additional_wear = -0.02,
} }
Note: Tools with group `disable_repair=1` will not repairable by this recipe.
### Cooking ### Cooking
{ {

@ -615,6 +615,34 @@ minetest.register_craftitem("experimental:tester_tool_2", {
end, end,
}) })
-- Test the disable_repair=1 group
minetest.register_tool("experimental:unrepairable_tool", {
description = "Unrepairable Tool",
wield_image = "default_stone.png",
inventory_image = "default_stone.png",
tool_capabilities = {
groupcaps = {
cracky = {
times = {3, 2, 1},
}
}
},
groups = { disable_repair = 1 }
})
minetest.register_tool("experimental:repairable_tool", {
description = "Repairable Tool",
wield_image = "default_dirt.png",
inventory_image = "default_dirt.png",
tool_capabilities = {
groupcaps = {
cracky = {
times = {3, 2, 1},
}
}
},
})
minetest.register_craft({ minetest.register_craft({
output = 'experimental:tester_tool_2', output = 'experimental:tester_tool_2',
recipe = { recipe = {

@ -579,7 +579,7 @@ static ItemStack craftToolRepair(
IItemDefManager *idef = gamedef->idef(); IItemDefManager *idef = gamedef->idef();
if (item1.count != 1 || item2.count != 1 || item1.name != item2.name if (item1.count != 1 || item2.count != 1 || item1.name != item2.name
|| idef->get(item1.name).type != ITEM_TOOL || idef->get(item1.name).type != ITEM_TOOL
|| idef->get(item2.name).type != ITEM_TOOL) { || itemgroup_get(idef->get(item1.name).groups, "disable_repair") == 1) {
// Failure // Failure
return ItemStack(); return ItemStack();
} }