summaryrefslogtreecommitdiff
path: root/readme.md
blob: 2d48ea626ef410e2fc94451bbf4d2beffd9e3fed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# 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.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]
	* place [table] - place counter
		* modname [table]
			* itemname [int]
	* craft [table] - craft counter
		* modname [table]
			* itemname [int]
	* deaths
	* chats
	* joins