mods - add tenplus1 toolranks with some backported changes features
* toolranks from minenux with spanish translation and featured description * backguard compatibility
This commit is contained in:
parent
530947f110
commit
5452ce0dda
@ -35,6 +35,7 @@ For information check [../README.md](../README.md)
|
||||
| stairs | https://codeberg.org/minenux/minetest-mod-stairs | https://codeberg.org/minenux/minetest-mod-stairs/commit/c3a5af6c452daca599d226df694df1b75f15c110 | [stairs/README.md](stairs/README.md) |
|
||||
| screwdriver | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/eb64ff94f82d726e4a55b20fa7ce30e4a7470cc5 | |
|
||||
| tnt | https://codeberg.org/minenux/minetest-mod-tnt | https://codeberg.org/minenux/minetest-mod-tnt/commit/8195861f905a90b53cd52348deb34df41a053027 | [tnt/README.md](tnt/README.md) |
|
||||
| toolranks | https://codeberg.org/minenux/minetest-mod-toolranks | https://codeberg.org/minenux/minetest-mod-toolranks/commit/5c9553e5ac6cc7ae375033b76ef7771a6935c771 | [toolranks/README.md](toolranks/README.md) |
|
||||
| vessels | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/eb64ff94f82d726e4a55b20fa7ce30e4a7470cc5 | |
|
||||
| walls | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/eb64ff94f82d726e4a55b20fa7ce30e4a7470cc5 | |
|
||||
| weather | https://codeberg.org/minenux/minetest-game-minetest | https://codeberg.org/minenux/minetest-game-minetest/commit/eb64ff94f82d726e4a55b20fa7ce30e4a7470cc5 | |
|
||||
|
81
mods/toolranks/README.md
Normal file
81
mods/toolranks/README.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Minetest tool ranks mod
|
||||
|
||||
Tool gains levels for digging nodes. Higher level take longer to wear out.
|
||||
|
||||
Information
|
||||
------------
|
||||
|
||||
It adds improved information on the description label of the tools,
|
||||
like how much was used the tool and how much is improved,
|
||||
and also provides improved xperience over the tool as much you use it..
|
||||
|
||||
![](screenshot.png)
|
||||
|
||||
# Technical information
|
||||
---------------------
|
||||
|
||||
This mod is named `toolranks`
|
||||
|
||||
This ranktool is the tenplus1's version, featured custom values throught
|
||||
configuration interface for dig speed, mutiplier and durability.
|
||||
|
||||
Shows information about the counts the nodes that spend the tool
|
||||
|
||||
Also provide interface to add toolrank support on other mods.
|
||||
|
||||
#### Dependencies
|
||||
|
||||
* default (now optional)
|
||||
|
||||
#### configuration
|
||||
|
||||
| Config item | type | def | values | Description |
|
||||
| -------------------------- | ----- | ---- | ----------- | ----------------------------- |
|
||||
| toolranks_levels | int | 8 | any int | Level (Number of tool levels) |
|
||||
| toolranks_level_digs | int | 1000 | any int | Number of nodes that need to be dug to reach the next tool level |
|
||||
| toolranks_speed_multiplier | float | 1.1 | 1.0 to 10.0 | Dig speed multiplier (at maximum tool level, 1.0 to disable) |
|
||||
| toolranks_use_multiplier | float | 1.1 | 1.0 to 10.0 | Durability multiplier (at maximum tool level,1.0 to disable) |
|
||||
|
||||
#### mods toolrank support
|
||||
|
||||
The default mod of minetest game has default support in this mod,
|
||||
but not farming hoes, many other mods already integrates toolrank support,
|
||||
by example all the tenplus1's "redo"s mod already has support, others will need
|
||||
extra mods like toolranks_extra due rejection from mod authors.
|
||||
|
||||
#### how to add support in mods
|
||||
|
||||
If so, to support this mod, add this code to your mod, after your tool's code:
|
||||
|
||||
```lua
|
||||
if minetest.get_modpath("toolranks") then
|
||||
toolranks.add_tool("mymod:mytool")
|
||||
end
|
||||
```
|
||||
|
||||
Where `mymod` is the technical/namespace name of the mod and `mytool` the item name.
|
||||
|
||||
That function provides all that can be do by custom way also as:
|
||||
|
||||
```lua
|
||||
if minetest.get_modpath("toolranks") then
|
||||
minetest.override_item("mymod:mytool", {
|
||||
original_description = "My Tool",
|
||||
description = toolranks.create_description("My Tool"),
|
||||
after_use = toolranks.new_afteruse
|
||||
})
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
## LICENSE
|
||||
|
||||
(c) 2017 lisacvuk
|
||||
(c) 2017 tenplus1
|
||||
(c) 2023 mckaygerhard
|
||||
|
||||
Code is LGPL v2.1
|
||||
media is CC-BY
|
||||
|
||||
check [license.txt](license.txt)
|
||||
|
1
mods/toolranks/depends.txt
Normal file
1
mods/toolranks/depends.txt
Normal file
@ -0,0 +1 @@
|
||||
default?
|
1
mods/toolranks/description.txt
Normal file
1
mods/toolranks/description.txt
Normal file
@ -0,0 +1 @@
|
||||
TOOL gains levels for digging nodes. Higher level take longer to wear out
|
211
mods/toolranks/init.lua
Normal file
211
mods/toolranks/init.lua
Normal file
@ -0,0 +1,211 @@
|
||||
local S
|
||||
|
||||
if minetest.get_translator ~= nil then
|
||||
S = minetest.get_translator("toolranks") -- 5.x translation function
|
||||
else
|
||||
if minetest.get_modpath("intllib") then
|
||||
dofile(minetest.get_modpath("intllib") .. "/init.lua")
|
||||
if intllib.make_gettext_pair then
|
||||
gettext, ngettext = intllib.make_gettext_pair() -- new gettext method
|
||||
else
|
||||
gettext = intllib.Getter() -- old text file method
|
||||
end
|
||||
S = gettext
|
||||
else -- boilerplate function
|
||||
S = function(str, ...)
|
||||
local args = {...}
|
||||
return str:gsub("@%d+", function(match)
|
||||
return args[tonumber(match:sub(2))]
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
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")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
local max_speed = tonumber(minetest.settings:get("toolranks_speed_multiplier")) or 1.1--2.0
|
||||
local max_use = tonumber(minetest.settings:get("toolranks_use_multiplier")) or 1.1
|
||||
local max_level = tonumber(minetest.settings:get("toolranks_levels")) or 8
|
||||
local level_digs = tonumber(minetest.settings:get("toolranks_level_digs")) or 1000
|
||||
local level_multiplier = 1 / max_level
|
||||
|
||||
|
||||
function toolranks.get_level(uses)
|
||||
|
||||
if type(uses) == "number" and uses > 0 then
|
||||
return math.min(max_level, math.floor(uses / level_digs))
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
|
||||
function toolranks.create_description(name, uses)
|
||||
|
||||
local description = name
|
||||
local newdesc = S(
|
||||
"@1@2\n@3Level @4 @5\n@6@Node dug: @7",
|
||||
toolranks.colors.green,
|
||||
description,
|
||||
toolranks.colors.gold,
|
||||
toolranks.get_level(uses),
|
||||
"", -- was tooltype
|
||||
toolranks.colors.grey,
|
||||
(type(uses) == "number" and uses or 0)
|
||||
)
|
||||
|
||||
return newdesc
|
||||
end
|
||||
|
||||
|
||||
function toolranks.new_afteruse(itemstack, user, node, digparams)
|
||||
|
||||
local pname = user:get_player_name()
|
||||
|
||||
if not pname then return itemstack end -- player nil check
|
||||
|
||||
local itemmeta = itemstack:get_meta()
|
||||
local dugnodes = tonumber(itemmeta:get_string("dug")) or 0
|
||||
|
||||
if digparams.wear > 0 then -- Only count nodes that spend the tool
|
||||
|
||||
dugnodes = dugnodes + 1
|
||||
|
||||
itemmeta:set_string("dug", dugnodes)
|
||||
end
|
||||
|
||||
if itemstack:get_wear() > 60135 then
|
||||
|
||||
minetest.chat_send_player(pname,
|
||||
toolranks.colors.gold .. S("Your tool is about to break!"))
|
||||
|
||||
minetest.sound_play("default_tool_breaks", {
|
||||
to_player = pname,
|
||||
gain = 2.0,
|
||||
}, true)
|
||||
end
|
||||
|
||||
local itemdef = itemstack:get_definition()
|
||||
local itemdesc = itemdef.original_description or ""
|
||||
local lastlevel = tonumber(itemmeta:get_string("lastlevel")) or 0
|
||||
local level = toolranks.get_level(dugnodes)
|
||||
|
||||
if lastlevel < level then
|
||||
|
||||
local levelup_text = S(
|
||||
"Your @1@2@3 just leveled up!",
|
||||
toolranks.colors.green,
|
||||
itemdesc,
|
||||
toolranks.colors.white
|
||||
)
|
||||
|
||||
minetest.chat_send_player(pname, levelup_text .. " "..lastlevel.." -> "..level)
|
||||
|
||||
minetest.sound_play("toolranks_levelup", {
|
||||
to_player = pname,
|
||||
gain = 2.0,
|
||||
}, true)
|
||||
|
||||
-- Make tool better by modifying tool_capabilities (if defined)
|
||||
if itemdef.tool_capabilities then
|
||||
|
||||
local speed_multiplier = 1 + (level * level_multiplier * (max_speed - 1))
|
||||
local use_multiplier = 1 + (level * level_multiplier * (max_use - 1))
|
||||
local caps = table.copy(itemdef.tool_capabilities)
|
||||
|
||||
caps.full_punch_interval = caps.full_punch_interval and
|
||||
(caps.full_punch_interval / speed_multiplier)
|
||||
|
||||
caps.punch_attack_uses = caps.punch_attack_uses and
|
||||
(caps.punch_attack_uses * use_multiplier)
|
||||
|
||||
for _,c in pairs(caps.groupcaps) do
|
||||
|
||||
c.uses = c.uses * use_multiplier
|
||||
|
||||
for i,t in ipairs(c.times) do
|
||||
c.times[i] = t / speed_multiplier
|
||||
end
|
||||
end
|
||||
|
||||
itemmeta:set_tool_capabilities(caps)
|
||||
end
|
||||
end
|
||||
|
||||
-- Old method for compatibility with tools without tool_capabilities defined
|
||||
local wear = digparams.wear
|
||||
|
||||
if level > 0 and not itemdef.tool_capabilities then
|
||||
|
||||
local use_multiplier = 1 + (level * level_multiplier * (max_use - 1))
|
||||
|
||||
wear = wear / use_multiplier
|
||||
end
|
||||
|
||||
itemmeta:set_string("lastlevel", level)
|
||||
itemmeta:set_string("description", toolranks.create_description(itemdesc, dugnodes))
|
||||
itemstack:add_wear(wear)
|
||||
|
||||
return itemstack
|
||||
end
|
||||
|
||||
|
||||
-- Helper function
|
||||
function toolranks.add_tool(name)
|
||||
|
||||
local desc = ItemStack(name):get_definition().description
|
||||
|
||||
minetest.override_item(name, {
|
||||
original_description = desc,
|
||||
description = toolranks.create_description(desc),
|
||||
after_use = toolranks.new_afteruse
|
||||
})
|
||||
end
|
||||
|
||||
local defaultmod = minetest.get_modpath("default")
|
||||
|
||||
if defaultmod then
|
||||
-- Sword
|
||||
toolranks.add_tool("default:sword_wood")
|
||||
toolranks.add_tool("default:sword_stone")
|
||||
toolranks.add_tool("default:sword_steel")
|
||||
toolranks.add_tool("default:sword_bronze")
|
||||
toolranks.add_tool("default:sword_mese")
|
||||
toolranks.add_tool("default:sword_diamond")
|
||||
|
||||
-- Pickaxe
|
||||
toolranks.add_tool("default:pick_wood")
|
||||
toolranks.add_tool("default:pick_stone")
|
||||
toolranks.add_tool("default:pick_steel")
|
||||
toolranks.add_tool("default:pick_bronze")
|
||||
toolranks.add_tool("default:pick_mese")
|
||||
toolranks.add_tool("default:pick_diamond")
|
||||
|
||||
-- Axe
|
||||
toolranks.add_tool("default:axe_wood")
|
||||
toolranks.add_tool("default:axe_stone")
|
||||
toolranks.add_tool("default:axe_steel")
|
||||
toolranks.add_tool("default:axe_bronze")
|
||||
toolranks.add_tool("default:axe_mese")
|
||||
toolranks.add_tool("default:axe_diamond")
|
||||
|
||||
-- Shovel
|
||||
toolranks.add_tool("default:shovel_wood")
|
||||
toolranks.add_tool("default:shovel_stone")
|
||||
toolranks.add_tool("default:shovel_steel")
|
||||
toolranks.add_tool("default:shovel_bronze")
|
||||
toolranks.add_tool("default:shovel_mese")
|
||||
toolranks.add_tool("default:shovel_diamond")
|
||||
|
||||
end
|
||||
|
||||
print("[MOD] Tool Ranks loaded")
|
2
mods/toolranks/license.txt
Normal file
2
mods/toolranks/license.txt
Normal file
@ -0,0 +1,2 @@
|
||||
Code: LGPLv2.1+
|
||||
Sounds: CC BY 3.0
|
11
mods/toolranks/locale/toolranks.en.tr
Normal file
11
mods/toolranks/locale/toolranks.en.tr
Normal file
@ -0,0 +1,11 @@
|
||||
# textdomain: toolranks
|
||||
@1@2@n@3Level @4 @5@n@6Node dug: @7=@1@2@n@3Level @4 @5@n@6Node dug: @7
|
||||
pickaxe=pickaxe
|
||||
axe=axe
|
||||
shovel=shovel
|
||||
hoe=hoe
|
||||
sword=sword
|
||||
tool=tool
|
||||
Most used tool is now a @1@2@3 owned by @4 with @5 uses.=Most used tool is now a @1@2@3 owned by @4 with @5 uses.
|
||||
Your tool is about to break!=Your tool is about to break!
|
||||
Your @1@2@3 just leveled up!=Your @1@2@3 just leveled up!
|
11
mods/toolranks/locale/toolranks.es.tr
Normal file
11
mods/toolranks/locale/toolranks.es.tr
Normal file
@ -0,0 +1,11 @@
|
||||
# textdomain: toolranks
|
||||
@1@2@n@3Level @4 @5@n@6Node dug: @7=@1@2@n@3Nivel @4 @5@n@6Nodos picado: @7
|
||||
pickaxe=pickaxe
|
||||
axe=axe
|
||||
shovel=shovel
|
||||
hoe=hoe
|
||||
sword=sword
|
||||
tool=tool
|
||||
Most used tool is now a @1@2@3 owned by @4 with @5 uses.=La herramienta mas usada es @1@2@3 pertenece a @4 con @5 veces.
|
||||
Your tool is about to break!=Tu herramienta esta a punto de romperse!
|
||||
Your @1@2@3 just leveled up!=Tu @1@2@3 acaba de subir nivel!
|
11
mods/toolranks/locale/toolranks.fr.tr
Normal file
11
mods/toolranks/locale/toolranks.fr.tr
Normal file
@ -0,0 +1,11 @@
|
||||
# textdomain: toolranks
|
||||
@1@2@n@3Level @4 @5@n@6Node dug: @7=@1@2@n@3@5 niveau @4@n@6Blocks minés : @7
|
||||
pickaxe=pioche
|
||||
axe=hache
|
||||
shovel=pelle
|
||||
hoe=houe
|
||||
sword=épée
|
||||
tool=outil
|
||||
Most used tool is now a @1@2@3 owned by @4 with @5 uses.=L’outil le plus utilisé est désormais @1@2@3 appartenant à @4 avec @5 utilisations.
|
||||
Your tool is about to break!=Votre outil va se casser !
|
||||
Your @1@2@3 just leveled up!=Votre @1@2@3 a gagné un niveau !
|
4
mods/toolranks/mod.conf
Normal file
4
mods/toolranks/mod.conf
Normal file
@ -0,0 +1,4 @@
|
||||
name = toolranks
|
||||
depends =
|
||||
optional_depens = default
|
||||
description = TOOL gains levels for digging nodes. Higher level take longer to wear out
|
BIN
mods/toolranks/screenshot.png
Normal file
BIN
mods/toolranks/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
8
mods/toolranks/settingtypes.txt
Normal file
8
mods/toolranks/settingtypes.txt
Normal file
@ -0,0 +1,8 @@
|
||||
# Number of tool levels
|
||||
toolranks_levels (Levels) int 8
|
||||
# Number of nodes that need to be dug to reach the next tool level
|
||||
toolranks_level_digs (Digs per level) int 1000
|
||||
# Dig speed multiplier at maximum tool level (1.0 to disable)
|
||||
toolranks_speed_multiplier (Dig speed multiplier) float 1.1 1.0 10.0
|
||||
# Durability multiplier at maximum tool level (1.0 to disable)
|
||||
toolranks_use_multiplier (Durability multiplier) float 1.1 1.0 10.0
|
BIN
mods/toolranks/sounds/toolranks_levelup.ogg
Normal file
BIN
mods/toolranks/sounds/toolranks_levelup.ogg
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user