Move all functions to toolranks table; in order to allow mod developers to add support for their mod. Updated readme.

This commit is contained in:
Stefan Vukanović 2017-07-13 15:12:49 +02:00
parent 68cf70d20d
commit 61fde54efc
2 changed files with 61 additions and 50 deletions

View File

@ -3,3 +3,12 @@ Minetest tool ranks mod
Tool gains levels for digging nodes. Higher level tools take longer to
wear out.
## Are you a mod developer?
Does one of your mods add new tools?
If so, to support this mod, check if it is loaded with
```minetest.get_modpath("toolranks")```
and then replace all after_use definitions with toolranks.new_afteruse.
Optionaly, you can also replace tools description with
```toolranks.create_description("Tool Name", 0, 1)```
and then set original_description to your tools name.

100
init.lua
View File

@ -1,11 +1,13 @@
local colors = {
toolranks = {}
toolranks.colors = {
grey = minetest.get_color_escape_sequence("#9d9d9d"),
green = minetest.get_color_escape_sequence("#1eff00"),
gold = minetest.get_color_escape_sequence("#ffdf00"),
white = minetest.get_color_escape_sequence("#ffffff")
}
function get_tool_type(description)
function toolranks.get_tool_type(description)
if string.find(description, "Pickaxe") then
return "pickaxe"
elseif string.find(description, "Axe") then
@ -19,18 +21,18 @@ function get_tool_type(description)
end
end
function create_description(name, uses, level)
function toolranks.create_description(name, uses, level)
local description = name
local tooltype = get_tool_type(description)
local tooltype = toolranks.get_tool_type(description)
local newdesc = colors.green .. description .. "\n" ..
colors.gold .. "Level " .. level .. " " .. tooltype .. "\n" ..
colors.grey .. "Nodes dug: " .. uses
local newdesc = toolranks.colors.green .. description .. "\n" ..
toolranks.colors.gold .. "Level " .. level .. " " .. tooltype .. "\n" ..
toolranks.colors.grey .. "Nodes dug: " .. uses
return newdesc
end
function get_level(uses)
function toolranks.get_level(uses)
if uses <= 100 then
return 1
elseif uses < 200 then
@ -46,7 +48,7 @@ function get_level(uses)
end
end
function new_afteruse(itemstack, user, node, digparams)
function toolranks.new_afteruse(itemstack, user, node, digparams)
local itemmeta = itemstack:get_meta() -- Metadata
local itemdef = itemstack:get_definition() -- Item Definition
local itemdesc = itemdef.original_description -- Original Description
@ -56,16 +58,16 @@ function new_afteruse(itemstack, user, node, digparams)
dugnodes = dugnodes + 1
level = get_level(dugnodes)
level = toolranks.get_level(dugnodes)
if lastlevel < level then
local levelup_text = "Your " .. colors.green ..
itemdesc .. colors.white ..
local levelup_text = "Your " .. toolranks.colors.green ..
itemdesc .. toolranks.colors.white ..
" just leveled up!"
minetest.chat_send_player(user:get_player_name(), levelup_text)
end
local newdesc = create_description(itemdesc, dugnodes, level)
local newdesc = toolranks.create_description(itemdesc, dugnodes, level)
itemmeta:set_string("lastlevel", level)
itemmeta:set_string("dug", dugnodes)
@ -85,91 +87,91 @@ end
minetest.override_item("default:pick_diamond", {
original_description = "Diamond Pickaxe",
description = create_description("Diamond Pickaxe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Diamond Pickaxe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:axe_diamond", {
original_description = "Diamond Axe",
description = create_description("Diamond Axe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Diamond Axe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:shovel_diamond", {
original_description = "Diamond Shovel",
description = create_description("Diamond Shovel", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Diamond Shovel", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:pick_wood", {
original_description = "Wooden Pickaxe",
description = create_description("Wooden Pickaxe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Wooden Pickaxe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:axe_wood", {
original_description = "Wooden Axe",
description = create_description("Wooden Axe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Wooden Axe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:shovel_wood", {
original_description = "Wooden Shovel",
description = create_description("Wooden Shovel", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Wooden Shovel", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:pick_steel", {
original_description = "Steel Pickaxe",
description = create_description("Steel Pickaxe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Steel Pickaxe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:axe_steel", {
original_description = "Steel Axe",
description = create_description("Steel Axe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Steel Axe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:shovel_steel", {
original_description = "Steel Shovel",
description = create_description("Steel Shovel", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Steel Shovel", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:pick_stone", {
original_description = "Stone Pickaxe",
description = create_description("Stone Pickaxe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Stone Pickaxe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:axe_stone", {
original_description = "Stone Axe",
description = create_description("Stone Axe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Stone Axe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:shovel_stone", {
original_description = "Stone Shovel",
description = create_description("Stone Shovel", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Stone Shovel", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:pick_bronze", {
original_description = "Bronze Pickaxe",
description = create_description("Bronze Pickaxe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Bronze Pickaxe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:axe_bronze", {
original_description = "Bronze Axe",
description = create_description("Bronze Axe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Bronze Axe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:shovel_bronze", {
original_description = "Bronze Shovel",
description = create_description("Bronze Shovel", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Bronze Shovel", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:pick_mese", {
original_description = "Mese Pickaxe",
description = create_description("Mese Pickaxe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Mese Pickaxe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:axe_mese", {
original_description = "Mese Axe",
description = create_description("Mese Axe", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Mese Axe", 0, 1),
after_use = toolranks.new_afteruse,
})
minetest.override_item("default:shovel_mese", {
original_description = "Mese Shovel",
description = create_description("Mese Shovel", 0, 1),
after_use = new_afteruse,
description = toolranks.create_description("Mese Shovel", 0, 1),
after_use = toolranks.new_afteruse,
})