forked from nalc/awards
Minetest Mod: Adds achievements.
94304a4a90
Playing lumberjack gets repetitive pretty soon, it's not fun at all to do it for long. Let's do some calculations: Digging 100 trees w/ diamond axe takes ca. 3.5 min. 1 diamond axe lasts for 200-300 trees and needs 3 diamonds. Meaning, to get L337 Lumberjack (100000) trees you need 58 hours only digging trees! Plus the time to find ca. 1000 diamonds (100000/300*3) only for the axes. So much nope. New awards are factors of 6, capped capped at 1296 because it gets boring at about that point and already with 1000 trees in your storage you have enough wood for a long time. Also, award names were slightly changed. |
||
---|---|---|
locale | ||
textures | ||
.gitattributes | ||
.gitignore | ||
api_helpers.lua | ||
api.lua | ||
chat_commands.lua | ||
depends.txt | ||
description.txt | ||
init.lua | ||
LICENSE.txt | ||
mod.conf | ||
readme.md | ||
screenshot.png | ||
sfinv.lua | ||
triggers.lua | ||
unified_inventory.lua |
Awards
by Andrew "Rubenwardy" Ward, LGPL 2.1 or later.
This mod adds achievements to Minetest.
Majority of awards are back ported from Calinou's old fork in Carbone, under same license.
Basic API
- awards.register_achievement(name, def)
- name
- desciption
- sound [optional]
- image [optional] - texture name, eg: award_one.png
- background [optional] - texture name, eg: award_one.png
- trigger [optional] [table]
- type - "dig", "place", "craft", "death", "chat" or "join"
- (for dig/place type) node - the nodes name
- (for craft type) item - the items name
- (for all types) target - how many to dig / place
- See Triggers
- secret [optional] - if true, then player needs to unlock to find out what it is.
- on_unlock [optional] - func(name, def)
- name is player name
- return true to cancel register_on_unlock callbacks and HUD
- awards.register_trigger(name, func(awardname, def))
- Note: awards.on[name] is automatically created for triggers
- awards.run_trigger_callbacks(player, data, trigger, table_func(entry))
- Goes through and checks all triggers registered to a trigger type, unlocking the award if conditions are met.
- data is the player's award data, ie: awards.players[player_name]
- trigger is the name of the trigger type. Ie: awards.on[trigger]
- table_func is called if the trigger is a table - simply return an award name to unlock it
- See triggers.lua for examples
- awards.increment_item_counter(data, field, itemname)
- add to an item's statistic count
- for example, (data, "place", "default:stone") will add 1 to the number of times default:stone has been placed.
- data is the player's award data, ie: awards.players[player_name]
- returns true on success, false on failure (eg: cannot get modname and item from itemname)
- awards.register_on_unlock(func(name, def))
- name is the player name
- def is the award def.
- return true to cancel HUD
- awards.unlock(name, award)
- gives an award to a player
- name is the player name
Included in the Mod
The API, above, allows you to register awards and triggers (things that look for events and unlock awards, they need to be registered in order to get details from award_def.trigger).
However, all awards and triggers are separate from the API. They can be found in init.lua and triggers.lua
Triggers
Callbacks (register a function to be run)
dig
trigger = {
type = "dig",
node = "default:dirt",
target = 50
}
place
trigger = {
type = "place",
node = "default:dirt",
target = 50
}
death
trigger = {
type = "death",
target = 5
}
chat
trigger = {
type = "chat",
target = 100
}
join
trigger = {
type = "join",
target = 100
}
Callbacks relating to triggers
- awards.register_on_dig(func(player, data))
- data is player data (see below)
- return award name or null
- awards.register_on_place(func(player, data))
- data is player data (see below)
- return award name or null
- awards.register_on_death(func(player, data))
- data is player data (see below)
- return award name or null
- awards.register_on_chat(func(player, data))
- data is player data (see below)
- return award name or null
- awards.register_on_join(func(player, data)
- data is player data (see below)
- return award name or null
Player Data
A list of data referenced/hashed by the player's name.
- player name
- name [string]
- count [table] - dig counter
- modname [table]
- itemname [int]
- modname [table]
- place [table] - place counter
- modname [table]
- itemname [int]
- modname [table]
- craft [table] - craft counter
- modname [table]
- itemname [int]
- modname [table]
- deaths
- chats
- joins