1
0
mirror of https://gitlab.com/rubenwardy/awards.git synced 2025-06-28 14:16:12 +02:00

12 Commits

Author SHA1 Message Date
9c74a3f85a Update docs 2021-01-10 16:30:05 +00:00
b4a4a1fd74 Improve API: add awards.get_award_states() 2021-01-10 16:25:20 +00:00
4e8d175714 Fixed a couple typos.
- The Mesecons-related award claimed to be awarded when placing mesecon wires, but instead was coded to be awarded when placing pipes from Pipeworks. Fixed code to match description.
 - The Basic-Materials-related award claimed to require crafting flint and steel one hundred times, but instead was coded to require crafting oil extract five hundred times. Fixed description to match code.
2020-06-16 07:47:41 +00:00
c7b60be880 player:getpos() is deprecated and calling it causes the game to halt if deprecated_lua_api_handling is set to "error" in minetest.conf. Call player:get_pos() instead to prevent the game from halting. 2020-04-19 19:05:06 +00:00
ce58720493 Fix group total, fix item increment count argument, add player checks, resize award icon, fix log output 2020-04-05 16:00:33 +00:00
d542042a50 Interpret group ratings of zero as not in group.
The MT API docs instruct to interpret `nil` and `0` as the same rating.
2020-04-04 17:40:48 -04:00
7e3064ef93 Check for valid players in default triggers instead of crashing. 2020-04-04 17:03:45 -04:00
9d98f950b8 Fix eat trigger to actually notify awards on item eat. 2020-04-04 15:35:14 -04:00
8a34ea8055 Add awards.add_defaults setting to control adding default awards.
Useful for games not based on MTG but using some of its mods.
2020-04-04 13:47:20 -04:00
da3d9b3980 Add awards for death, pipeworks, and mesecons 2019-09-15 18:14:58 +01:00
8f46d5b37d Add icons for awards 2019-08-20 11:28:15 +01:00
Max
1ffa8f10ac Add missing german translations 2019-01-26 15:26:53 +00:00
187 changed files with 826 additions and 198 deletions

View File

@ -37,10 +37,11 @@ awards.register_award("mymod:award", {
The above trigger type is an example of a counted_key trigger: The above trigger type is an example of a counted_key trigger:
rather than a single counter there's a counter per key - in this rather than a single counter there's a counter per key - in this
case the key is the value of the `node` field. If you leave out case the key is the value of the `node` field.
the key in a `counted_key` trigger, then the total will be used
instead. For example, here is an award which unlocks after you've If you leave out the key in a `counted_key` trigger, then the total will be used
placed 10 nodes of any type: instead. For example, here is an award which unlocks after you've placed 10
nodes of any type:
```lua ```lua
awards.register_award("mymod:award", { awards.register_award("mymod:award", {
@ -125,6 +126,10 @@ awards.register_trigger("foo", {
type = "custom", type = "custom",
progress = "@1/@2 foos", progress = "@1/@2 foos",
auto_description = { "Do a foo", "Foo @1 times" }, auto_description = { "Do a foo", "Foo @1 times" },
on_register = function(self, award)
print(award.name .. " was registered with foo trigger type")
end,
}) })
minetest.register_on_foo(function() minetest.register_on_foo(function()
@ -168,7 +173,9 @@ end
# API # API
* awards.register_award(name, def), the def table has the following fields: ## Awards
* `awards.register_award(name, def)`, the def table has the following fields:
* `title` - title of the award (defaults to name) * `title` - title of the award (defaults to name)
* `description` - longer description of the award, displayed in Awards tab * `description` - longer description of the award, displayed in Awards tab
* `difficulty` - see [Award Difficulty](#award-difficulty). * `difficulty` - see [Award Difficulty](#award-difficulty).
@ -182,23 +189,48 @@ end
* `background` - the background image, use default otherwise. * `background` - the background image, use default otherwise.
* `trigger` - trigger definition, see [Builtin Trigger Types](#builtin-trigger-types). * `trigger` - trigger definition, see [Builtin Trigger Types](#builtin-trigger-types).
* `on_unlock(name, def)` - callback on unlock. * `on_unlock(name, def)` - callback on unlock.
* awards.register_trigger(name, def), the def table has the following fields: * `awards.registered_awards` - table of award name to definition.
* `type` - see [Trigger Types](#trigger-types). * `awards.register_on_unlock(func(name, def))`
* `name` is the player name
* `def` is the award def.
* return true to cancel HUD
* `awards.unlock(player_name, award_name)`
* gives an award to a player
* `awards.get_award_states(player_name)`
* Returns list of tables, sorted by `score`, each having the fields:
```lua
{
name = "mymod:awardname",
def = {}, -- Award definition
unlocked = true, -- Whether award has been unlocked
started = true, -- Whether any progress has been made
score = 0, -- Score used in sorting
-- Either a table or nil
-- Will be nil if progress is indeterminable or
-- if the award is unlocked
progress = {
current = 5,
target = 10,
label = "label", -- Label to show over progress bar
}
}
```
## Triggers
* `awards.register_trigger(name, def)`, the def table has the following fields:
* `type` - see trigger type types in [Trigger Types](#trigger-types).
* `progress` - used to format progress, defaults to "%1/%2". * `progress` - used to format progress, defaults to "%1/%2".
* `auto_description` - a table of two elements. Each element is a format string. Element 1 is singular, element 2 is plural. Used for the award description (not title) if none is given. * `auto_description` - a table of two elements. Each element is a format string. Element 1 is singular, element 2 is plural. Used for the award description (not title) if none is given.
* `on_register(award_def)` - called when an award registers with this type. * `on_register(self, award_def)` - called when an award registers with this type.
* "counted_key" only: * "counted_key" only:
* `auto_description_total` - Used if the trigger is for the total. * `auto_description_total` - Used if the trigger is for the total.
* `get_key(self, def)` - get key for particular award, return nil for a total. * `get_key(self, def)` - get key for particular award, return nil for a total.
* `key_is_item` - true if the key is an item name. On notify(), * `key_is_item` - true if the key is an item name. On notify(),
any watched groups will also be notified as `group:groupname` keys. any watched groups will also be notified as `group:groupname` keys.
* awards.register_on_unlock(func(name, def)) * `awards.registered_triggers` - table of trigger name to definition.
* 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
## Builtin Trigger Types ## Builtin Trigger Types

View File

@ -3,7 +3,9 @@
-- The global award namespace -- The global award namespace
awards = { awards = {
show_mode = "hud", show_mode = "hud",
registered_awards = {},
registered_triggers = {}, registered_triggers = {},
on_unlock = {},
} }
-- Internationalization support. -- Internationalization support.
@ -16,7 +18,11 @@ dofile(minetest.get_modpath("awards").."/src/api_triggers.lua")
dofile(minetest.get_modpath("awards").."/src/chat_commands.lua") dofile(minetest.get_modpath("awards").."/src/chat_commands.lua")
dofile(minetest.get_modpath("awards").."/src/gui.lua") dofile(minetest.get_modpath("awards").."/src/gui.lua")
dofile(minetest.get_modpath("awards").."/src/triggers.lua") dofile(minetest.get_modpath("awards").."/src/triggers.lua")
dofile(minetest.get_modpath("awards").."/src/awards.lua")
-- Optionally add default awards.
if minetest.settings:get_bool("awards.add_defaults", true) then
dofile(minetest.get_modpath("awards").."/src/awards.lua")
end
awards.load() awards.load()
minetest.register_on_shutdown(awards.save) minetest.register_on_shutdown(awards.save)

View File

@ -102,8 +102,8 @@ msgstr[1] "Bauen Sie Blöcke ab: @1×@2"
#: triggers.lua #: triggers.lua
msgid "Mine @1 block." msgid "Mine @1 block."
msgid_plural "Mine @1 blocks." msgid_plural "Mine @1 blocks."
msgstr[0] "" msgstr[0] "Bauen Sie einen @1 Block ab."
msgstr[1] "" msgstr[1] "Bauen Sie @1 Blöcke ab."
#: triggers.lua #: triggers.lua
msgid "@1/@2 placed" msgid "@1/@2 placed"
@ -119,8 +119,8 @@ msgstr[1] "Platzieren Sie Blöcke: @1×@2"
#: triggers.lua #: triggers.lua
msgid "Place a block." msgid "Place a block."
msgid_plural "Place @1 blocks." msgid_plural "Place @1 blocks."
msgstr[0] "" msgstr[0] "Platzieren Sie einen Block."
msgstr[1] "" msgstr[1] "Platzieren Sie @1 Blöcke."
#: triggers.lua #: triggers.lua
msgid "@1/@2 eaten" msgid "@1/@2 eaten"
@ -151,13 +151,13 @@ msgstr[1] "Sterben Sie @1 mal."
#: triggers.lua #: triggers.lua
msgid "@1/@2 chat messages" msgid "@1/@2 chat messages"
msgstr "" msgstr "@1/@2 Chatnachrichten"
#: triggers.lua #: triggers.lua
msgid "Write something in chat." msgid "Write something in chat."
msgid_plural "Write @1 chat messages." msgid_plural "Write @1 chat messages."
msgstr[0] "" msgstr[0] "Schreiben Sie etwas im Chat."
msgstr[1] "" msgstr[1] "Schreiben Sie @1 Chatnachrichten."
#: triggers.lua #: triggers.lua
msgid "@1/@2 game joins" msgid "@1/@2 game joins"

2
settingtypes.txt Normal file
View File

@ -0,0 +1,2 @@
# Add default achievements from the awards mod
awards.add_defaults (Add Default Achievements) bool true

View File

@ -43,6 +43,11 @@ end
-- name - the name of the player -- name - the name of the player
-- award - the name of the award to give -- award - the name of the award to give
function awards.unlock(name, award) function awards.unlock(name, award)
-- Ensure the player is online.
if not minetest.get_player_by_name(name) then
return
end
-- Access Player Data -- Access Player Data
local data = awards.player(name) local data = awards.player(name)
local awdef = awards.registered_awards[award] local awdef = awards.registered_awards[award]
@ -60,7 +65,7 @@ function awards.unlock(name, award)
end end
-- Unlock Award -- Unlock Award
minetest.log("action", name.." has unlocked award "..name) minetest.log("action", name.." has unlocked award "..award)
data.unlocked[award] = award data.unlocked[award] = award
awards.save() awards.save()
@ -91,7 +96,7 @@ function awards.unlock(name, award)
local title = awdef.title or award local title = awdef.title or award
local desc = awdef.description or "" local desc = awdef.description or ""
local background = awdef.background or "awards_bg_default.png" local background = awdef.background or "awards_bg_default.png"
local icon = awdef.icon or "awards_unknown.png" local icon = (awdef.icon or "awards_unknown.png") .. "^[resize:32x32"
local sound = awdef.sound local sound = awdef.sound
if sound == nil then if sound == nil then
-- Explicit check for nil because sound could be `false` to disable it -- Explicit check for nil because sound could be `false` to disable it
@ -160,7 +165,7 @@ function awards.unlock(name, award)
local four = player:hud_add({ local four = player:hud_add({
hud_elem_type = "image", hud_elem_type = "image",
name = "award_icon", name = "award_icon",
scale = {x = 4, y = 4}, scale = {x = 2, y = 2}, -- adjusted for 32x32 from x/y = 4
text = icon, text = icon,
position = {x = 0.5, y = 0.05}, position = {x = 0.5, y = 0.05},
offset = {x = -200.5, y = 126}, offset = {x = -200.5, y = 126},
@ -177,3 +182,71 @@ function awards.unlock(name, award)
end) end)
end end
end end
function awards.get_award_states(name)
local hash_is_unlocked = {}
local retval = {}
-- Add all unlocked awards
local data = awards.player(name)
if data and data.unlocked then
for awardname, _ in pairs(data.unlocked) do
local def = awards.registered_awards[awardname]
if def then
hash_is_unlocked[awardname] = true
local score = -100000
local difficulty = def.difficulty or 1
if def.trigger and def.trigger.target then
difficulty = difficulty * def.trigger.target
end
score = score + difficulty
retval[#retval + 1] = {
name = awardname,
def = def,
unlocked = true,
started = true,
score = score,
progress = nil,
}
end
end
end
-- Add all locked awards
for _, def in pairs(awards.registered_awards) do
if not hash_is_unlocked[def.name] and def:can_unlock(data) then
local progress = def.get_progress and def:get_progress(data)
local started = false
local score = def.difficulty or 1
if def.secret then
score = 1000000
elseif def.trigger and def.trigger.target and progress then
local perc = progress.current / progress.target
score = score * (1 - perc) * def.trigger.target
if perc < 0.001 then
score = score + 100
else
started = true
end
else
score = 100
end
retval[#retval + 1] = {
name = def.name,
def = def,
unlocked = false,
started = started,
score = score,
progress = progress,
}
end
end
table.sort(retval, function(a, b)
return a.score < b.score
end)
return retval
end

View File

@ -2,9 +2,7 @@
local S, NS = awards.gettext, awards.ngettext local S, NS = awards.gettext, awards.ngettext
awards.registered_awards = {}
awards.on = {} awards.on = {}
awards.on_unlock = {}
local default_def = {} local default_def = {}
@ -43,11 +41,12 @@ function awards.register_trigger(tname, tdef)
} }
tdef.register(tmp) tdef.register(tmp)
function def.getProgress(_, data) function def.get_progress(_, data)
local done = math.min(data[tname] or 0, tmp.target) local current = math.min(data[tname] or 0, tmp.target)
return { return {
perc = done / tmp.target, current = current,
label = S(tdef.progress, done, tmp.target), target = tmp.target,
label = S(tdef.progress, current, tmp.target),
} }
end end
@ -102,7 +101,7 @@ function awards.register_trigger(tname, tdef)
end end
-- Called to get progress values and labels -- Called to get progress values and labels
function def.getProgress(_, data) function def.get_progress(_, data)
data[tname] = data[tname] or {} data[tname] = data[tname] or {}
local done local done
@ -114,7 +113,8 @@ function awards.register_trigger(tname, tdef)
done = math.min(done, tmp.target) done = math.min(done, tmp.target)
return { return {
perc = done / tmp.target, current = done,
target = tmp.target,
label = S(tdef.progress, done, tmp.target), label = S(tdef.progress, done, tmp.target),
} }
end end
@ -144,8 +144,8 @@ function awards.register_trigger(tname, tdef)
if tdef.key_is_item and key:sub(1, 6) ~= "group:" then if tdef.key_is_item and key:sub(1, 6) ~= "group:" then
local itemdef = minetest.registered_items[key] local itemdef = minetest.registered_items[key]
if itemdef then if itemdef then
for groupname, _ in pairs(itemdef.groups or {}) do for groupname,rating in pairs(itemdef.groups or {}) do
if tdef.watched_groups[groupname] then if rating ~= 0 and tdef.watched_groups[groupname] then
tdef.notify(player, "group:" .. groupname, n) tdef.notify(player, "group:" .. groupname, n)
end end
end end
@ -160,8 +160,9 @@ function awards.register_trigger(tname, tdef)
data[tname] = data[tname] or {} data[tname] = data[tname] or {}
local currentVal = (data[tname][key] or 0) + n local currentVal = (data[tname][key] or 0) + n
data[tname][key] = currentVal data[tname][key] = currentVal
data[tname].__total = (data[tname].__total or 0)
if key:sub(1, 6) ~= "group:" then if key:sub(1, 6) ~= "group:" then
data[tname].__total = (data[tname].__total or 0) + n data[tname].__total = data[tname].__total + n
end end
tdef:run_callbacks(player, data, function(entry) tdef:run_callbacks(player, data, function(entry)
@ -173,7 +174,6 @@ function awards.register_trigger(tname, tdef)
else else
return return
end end
if current >= entry.target then if current >= entry.target then
return entry.award return entry.award
end end
@ -201,7 +201,7 @@ end
function awards.increment_item_counter(data, field, itemname, count) function awards.increment_item_counter(data, field, itemname, count)
itemname = minetest.registered_aliases[itemname] or itemname itemname = minetest.registered_aliases[itemname] or itemname
data[field][itemname] = (data[field][itemname] or 0) + 1 data[field][itemname] = (data[field][itemname] or 0) + (count or 1)
end end
function awards.get_item_count(data, field, itemname) function awards.get_item_count(data, field, itemname)

View File

@ -2,12 +2,13 @@
local S = awards.gettext local S = awards.gettext
-- Saint-Maclou -- Saint-Maclou
if minetest.get_modpath("moreblocks") then if minetest.get_modpath("moreblocks") then
awards.register_award("award_saint_maclou",{ awards.register_award("award_saint_maclou",{
title = S("Saint-Maclou"), title = S("Saint-Maclou"),
description = S("Place 20 coal checkers."), description = S("Place 20 coal checkers."),
icon = "awards_novicebuilder.png", icon = "awards_saint_maclou.png",
trigger = { trigger = {
type = "place", type = "place",
node = "moreblocks:coal_checker", node = "moreblocks:coal_checker",
@ -19,7 +20,7 @@ if minetest.get_modpath("moreblocks") then
awards.register_award("award_castorama",{ awards.register_award("award_castorama",{
title = S("Castorama"), title = S("Castorama"),
description = S("Place 20 iron checkers."), description = S("Place 20 iron checkers."),
icon = "awards_novicebuilder.png", icon = "awards_castorama.png",
trigger = { trigger = {
type = "place", type = "place",
node = "moreblocks:iron_checker", node = "moreblocks:iron_checker",
@ -31,7 +32,7 @@ if minetest.get_modpath("moreblocks") then
awards.register_award("award_sam_the_trapper",{ awards.register_award("award_sam_the_trapper",{
title = S("Sam the Trapper"), title = S("Sam the Trapper"),
description = S("Place 2 trap stones."), description = S("Place 2 trap stones."),
icon = "awards_novicebuilder.png", icon = "awards_sam_the_trapper.png",
trigger = { trigger = {
type = "place", type = "place",
node = "moreblocks:trap_stone", node = "moreblocks:trap_stone",
@ -46,7 +47,7 @@ if minetest.get_modpath("unified_inventory") then
awards.register_award("awards_ui_bags", { awards.register_award("awards_ui_bags", {
title = S("Backpacker"), title = S("Backpacker"),
description = S("Craft 4 large bags."), description = S("Craft 4 large bags."),
icon = "awards_ui_bags.png", icon = "awards_backpacker.png",
trigger = { trigger = {
type = "craft", type = "craft",
item = "unified_inventory:bag_large", item = "unified_inventory:bag_large",
@ -60,7 +61,7 @@ if minetest.get_modpath("fire") then
awards.register_award("awards_pyro", { awards.register_award("awards_pyro", {
title = S("Pyromaniac"), title = S("Pyromaniac"),
description = S("Craft 8 times flint and steel."), description = S("Craft 8 times flint and steel."),
icon = "fire_flint_steel.png", icon = "awards_pyromaniac.png",
trigger = { trigger = {
type = "craft", type = "craft",
item = "fire:flint_and_steel", item = "fire:flint_and_steel",
@ -79,14 +80,68 @@ if minetest.get_modpath("fire") then
} }
}) })
end end
-- Burned to death
awards.register_award("award_burn", {
title = S("You're a witch!"),
description = S("Burn to death in a fire."),
secret = true,
})
awards.register_on_death(function(player,data)
local pos = player:get_pos()
if pos and minetest.find_node_near(pos, 2, "fire:basic_flame") ~= nil then
return "award_burn"
end
return nil
end)
end end
-- You Suck!
awards.register_award("award_you_suck", {
title = S("You Suck!"),
description = S("Die 100 times."),
trigger = {
type = "death",
target = 100
},
secret = true,
})
-- Die hi
awards.register_award("award_deep_down", {
title = S("Death in the Deeps"),
description = S("Die below -10000"),
secret = true,
})
awards.register_on_death(function(player,data)
local pos = player:get_pos()
if pos and pos.y < -10000 then
return "award_deep_down"
end
return nil
end)
-- Die near diamond ore
awards.register_award("award_no_screen", {
title = S("In space, no one can hear you scream"),
description = S("Die above 10000"),
secret = true,
})
awards.register_on_death(function(player,data)
local pos = player:get_pos()
if pos and pos.y > 10000 then
return "award_no_screen"
end
return nil
end)
if minetest.get_modpath("default") then if minetest.get_modpath("default") then
-- Light it up -- Light it up
awards.register_award("award_lightitup",{ awards.register_award("award_lightitup",{
title = S("Light It Up"), title = S("Light It Up"),
description = S("Place 100 torches."), description = S("Place 100 torches."),
icon = "awards_novicebuilder.png^awards_level1.png", icon = "awards_light_it_up.png^awards_level1.png",
difficulty = 0.01, difficulty = 0.01,
trigger = { trigger = {
type = "place", type = "place",
@ -98,7 +153,7 @@ if minetest.get_modpath("default") then
-- Light ALL the things! -- Light ALL the things!
awards.register_award("award_well_lit",{ awards.register_award("award_well_lit",{
title = S("Well Lit"), title = S("Well Lit"),
icon = "awards_novicebuilder.png^awards_level2.png", icon = "awards_well_lit.png^awards_level2.png",
description = S("Place 1,000 torches."), description = S("Place 1,000 torches."),
difficulty = 0.01, difficulty = 0.01,
trigger = { trigger = {
@ -111,7 +166,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_meselamp",{ awards.register_award("award_meselamp",{
title = S("Really Well Lit"), title = S("Really Well Lit"),
description = S("Craft 10 mese lamps."), description = S("Craft 10 mese lamps."),
icon = "default_meselamp.png", icon = "awards_really_well_lit.png",
difficulty = 0.2, difficulty = 0.2,
trigger = { trigger = {
type = "craft", type = "craft",
@ -123,7 +178,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_stonebrick", { awards.register_award("awards_stonebrick", {
title = S("Outpost"), title = S("Outpost"),
description = S("Craft 200 stone bricks."), description = S("Craft 200 stone bricks."),
icon = "default_stone_brick.png^awards_level1.png", icon = "awards_outpost.png^awards_level1.png",
difficulty = 0.08, difficulty = 0.08,
trigger = { trigger = {
type = "craft", type = "craft",
@ -135,7 +190,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_stonebrick2", { awards.register_award("awards_stonebrick2", {
title = S("Watchtower"), title = S("Watchtower"),
description = S("Craft 800 stone bricks."), description = S("Craft 800 stone bricks."),
icon = "default_stone_brick.png^awards_level2.png", icon = "awards_watchtower.png^awards_level2.png",
difficulty = 0.08, difficulty = 0.08,
trigger = { trigger = {
type = "craft", type = "craft",
@ -147,7 +202,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_stonebrick3", { awards.register_award("awards_stonebrick3", {
title = S("Fortress"), title = S("Fortress"),
description = S("Craft 3,200 stone bricks."), description = S("Craft 3,200 stone bricks."),
icon = "default_stone_brick.png^awards_level3.png", icon = "awards_fortress.png^awards_level3.png",
difficulty = 0.08, difficulty = 0.08,
trigger = { trigger = {
type = "craft", type = "craft",
@ -159,7 +214,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_desert_stonebrick", { awards.register_award("awards_desert_stonebrick", {
title = S("Desert Dweller"), title = S("Desert Dweller"),
description = S("Craft 400 desert stone bricks."), description = S("Craft 400 desert stone bricks."),
icon = "default_desert_stone_brick.png", icon = "awards_desert_dweller.png",
difficulty = 0.09, difficulty = 0.09,
trigger = { trigger = {
type = "craft", type = "craft",
@ -171,7 +226,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_desertstonebrick", { awards.register_award("awards_desertstonebrick", {
title = S("Pharaoh"), title = S("Pharaoh"),
description = S("Craft 100 sandstone bricks."), description = S("Craft 100 sandstone bricks."),
icon = "default_sandstone_brick.png", icon = "awards_pharaoh.png",
difficulty = 0.09, difficulty = 0.09,
trigger = { trigger = {
type = "craft", type = "craft",
@ -183,7 +238,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_bookshelf", { awards.register_award("awards_bookshelf", {
title = S("Little Library"), title = S("Little Library"),
description = S("Craft 7 bookshelves."), description = S("Craft 7 bookshelves."),
icon = "default_bookshelf.png", icon = "awards_little_library.png",
difficulty = 0.2, difficulty = 0.2,
trigger = { trigger = {
type = "craft", type = "craft",
@ -195,7 +250,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_obsidian", { awards.register_award("awards_obsidian", {
title = S("Lava and Water"), title = S("Lava and Water"),
description = S("Mine your first obsidian."), description = S("Mine your first obsidian."),
icon = "default_obsidian.png^awards_level1.png", icon = "awards_lava_and_water.png^awards_level1.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 1.5, difficulty = 1.5,
trigger = { trigger = {
@ -209,7 +264,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_obsessed_with_obsidian",{ awards.register_award("award_obsessed_with_obsidian",{
title = S("Obsessed with Obsidian"), title = S("Obsessed with Obsidian"),
description = S("Mine 50 obsidian."), description = S("Mine 50 obsidian."),
icon = "default_obsidian.png^awards_level2.png", icon = "awards_obsessed_with_obsidian.png^awards_level2.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 1.5, difficulty = 1.5,
trigger = { trigger = {
@ -223,8 +278,8 @@ if minetest.get_modpath("default") then
awards.register_award("award_lavaminer",{ awards.register_award("award_lavaminer",{
title = S("Lava Miner"), title = S("Lava Miner"),
description = S("Mine any block while being very close to lava."), description = S("Mine any block while being very close to lava."),
icon = "awards_lava_miner.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
icon = "default_lava.png",
difficulty = 1, difficulty = 1,
}) })
awards.register_on_dig(function(player,data) awards.register_on_dig(function(player,data)
@ -240,7 +295,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_on_the_way", { awards.register_award("award_on_the_way", {
title = S("On The Way"), title = S("On The Way"),
description = S("Place 100 rails."), description = S("Place 100 rails."),
icon = "carts_rail_straight.png", icon = "awards_on_the_way.png",
difficulty = 0.1, difficulty = 0.1,
trigger = { trigger = {
type = "place", type = "place",
@ -252,7 +307,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_lumberjack_firstday", { awards.register_award("award_lumberjack_firstday", {
title = S("First Day in the Woods"), title = S("First Day in the Woods"),
description = S("Dig 6 tree blocks."), description = S("Dig 6 tree blocks."),
icon = "default_tree.png^awards_level1.png", icon = "awards_first_day_in_the_woods.png^awards_level1.png",
difficulty = 0.03, difficulty = 0.03,
trigger = { trigger = {
type = "dig", type = "dig",
@ -265,7 +320,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_lumberjack", { awards.register_award("award_lumberjack", {
title = S("Lumberjack"), title = S("Lumberjack"),
description = S("Dig 36 tree blocks."), description = S("Dig 36 tree blocks."),
icon = "default_tree.png^awards_level2.png", icon = "awards_lumberjack.png^awards_level2.png",
difficulty = 0.03, difficulty = 0.03,
trigger = { trigger = {
type = "dig", type = "dig",
@ -278,7 +333,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_lumberjack_semipro", { awards.register_award("award_lumberjack_semipro", {
title = S("Semi-pro Lumberjack"), title = S("Semi-pro Lumberjack"),
description = S("Dig 216 tree blocks."), description = S("Dig 216 tree blocks."),
icon = "default_tree.png^awards_level3.png", icon = "awards_semi_pro_lumberjack.png^awards_level3.png",
difficulty = 0.03, difficulty = 0.03,
trigger = { trigger = {
type = "dig", type = "dig",
@ -291,7 +346,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_lumberjack_professional", { awards.register_award("award_lumberjack_professional", {
title = S("Professional Lumberjack"), title = S("Professional Lumberjack"),
description = S("Dig 1,296 tree blocks."), description = S("Dig 1,296 tree blocks."),
icon = "default_tree.png^awards_level4.png", icon = "awards_professional_lumberjack.png^awards_level4.png",
difficulty = 0.03, difficulty = 0.03,
trigger = { trigger = {
type = "dig", type = "dig",
@ -304,7 +359,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_junglebaby", { awards.register_award("award_junglebaby", {
title = S("Junglebaby"), title = S("Junglebaby"),
description = S("Dig 100 jungle tree blocks."), description = S("Dig 100 jungle tree blocks."),
icon = "default_jungletree.png^awards_level1.png", icon = "awards_junglebaby.png^awards_level1.png",
difficulty = 0.05, difficulty = 0.05,
trigger = { trigger = {
type = "dig", type = "dig",
@ -317,7 +372,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_jungleman", { awards.register_award("award_jungleman", {
title = S("Jungleman"), title = S("Jungleman"),
description = S("Dig 1,000 jungle tree blocks."), description = S("Dig 1,000 jungle tree blocks."),
icon = "default_jungletree.png^awards_level2.png", icon = "awards_jungleman.png^awards_level2.png",
difficulty = 0.05, difficulty = 0.05,
trigger = { trigger = {
type = "dig", type = "dig",
@ -330,7 +385,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_mesefind", { awards.register_award("award_mesefind", {
title = S("First Mese Find"), title = S("First Mese Find"),
description = S("Mine your first mese ore."), description = S("Mine your first mese ore."),
icon = "default_stone.png^default_mineral_mese.png", icon = "awards_first_mese_find.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 1, difficulty = 1,
trigger = { trigger = {
@ -345,7 +400,7 @@ if minetest.get_modpath("default") then
secret = true, secret = true,
title = S("Mese Mastery"), title = S("Mese Mastery"),
description = S("Mine a mese block."), description = S("Mine a mese block."),
icon = "default_mese_block.png", icon = "awards_mese_mastery.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 1.1, difficulty = 1.1,
trigger = { trigger = {
@ -359,7 +414,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_youre_a_copper", { awards.register_award("award_youre_a_copper", {
title = S("Youre a copper"), title = S("Youre a copper"),
description = S("Dig 1,000 copper ores."), description = S("Dig 1,000 copper ores."),
icon = "default_stone.png^default_mineral_copper.png", icon = "awards_youre_a_copper.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 0.2, difficulty = 0.2,
trigger = { trigger = {
@ -373,7 +428,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_mine2", { awards.register_award("award_mine2", {
title = S("Mini Miner"), title = S("Mini Miner"),
description = S("Dig 100 stone blocks."), description = S("Dig 100 stone blocks."),
icon = "awards_miniminer.png^awards_level1.png", icon = "awards_mini_miner.png^awards_level1.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 0.02, difficulty = 0.02,
trigger = { trigger = {
@ -387,7 +442,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_mine3", { awards.register_award("award_mine3", {
title = S("Hardened Miner"), title = S("Hardened Miner"),
description = S("Dig 1,000 stone blocks."), description = S("Dig 1,000 stone blocks."),
icon = "awards_miniminer.png^awards_level2.png", icon = "awards_hardened_miner.png^awards_level2.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 0.02, difficulty = 0.02,
trigger = { trigger = {
@ -401,7 +456,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_mine4", { awards.register_award("award_mine4", {
title = S("Master Miner"), title = S("Master Miner"),
description = S("Dig 10,000 stone blocks."), description = S("Dig 10,000 stone blocks."),
icon = "awards_miniminer.png^awards_level3.png", icon = "awards_master_miner.png^awards_level3.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 0.02, difficulty = 0.02,
trigger = { trigger = {
@ -415,7 +470,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_marchand_de_sable", { awards.register_award("award_marchand_de_sable", {
title = S("Marchand De Sable"), title = S("Marchand De Sable"),
description = S("Dig 1,000 sand."), description = S("Dig 1,000 sand."),
icon = "default_sand.png", icon = "awards_marchand_de_sable.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 0.05, difficulty = 0.05,
trigger = { trigger = {
@ -428,7 +483,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_crafter_of_sticks", { awards.register_award("awards_crafter_of_sticks", {
title = S("Crafter of Sticks"), title = S("Crafter of Sticks"),
description = S("Craft 100 sticks."), description = S("Craft 100 sticks."),
icon = "default_stick.png", icon = "awards_crafter_of_sticks.png",
difficulty = 0.01, difficulty = 0.01,
trigger = { trigger = {
type = "craft", type = "craft",
@ -440,7 +495,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_junglegrass", { awards.register_award("awards_junglegrass", {
title = S("Jungle Discoverer"), title = S("Jungle Discoverer"),
description = S("Mine your first jungle grass."), description = S("Mine your first jungle grass."),
icon = "default_junglegrass.png", icon = "awards_jungle_discoverer.png",
difficulty = 0.009, difficulty = 0.009,
trigger = { trigger = {
type = "dig", type = "dig",
@ -452,7 +507,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_grass", { awards.register_award("awards_grass", {
title = S("Grasslands Discoverer"), title = S("Grasslands Discoverer"),
description = S("Mine some grass."), description = S("Mine some grass."),
icon = "default_grass_3.png", icon = "awards_grasslands_discoverer.png",
difficulty = 0.009, difficulty = 0.009,
trigger = { trigger = {
type = "dig", type = "dig",
@ -464,7 +519,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_dry_grass", { awards.register_award("awards_dry_grass", {
title = S("Savannah Discoverer"), title = S("Savannah Discoverer"),
description = S("Mine some dry grass."), description = S("Mine some dry grass."),
icon = "default_dry_grass_3.png", icon = "awards_savannah_discoverer.png",
difficulty = 0.009, difficulty = 0.009,
trigger = { trigger = {
type = "dig", type = "dig",
@ -476,7 +531,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_cactus", { awards.register_award("awards_cactus", {
title = S("Desert Discoverer"), title = S("Desert Discoverer"),
description = S("Mine your first cactus."), description = S("Mine your first cactus."),
icon = "default_cactus_side.png", icon = "awards_desert_discoverer.png",
difficulty = 0.03, difficulty = 0.03,
trigger = { trigger = {
type = "dig", type = "dig",
@ -488,7 +543,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_dry_shrub", { awards.register_award("awards_dry_shrub", {
title = S("Far Lands"), title = S("Far Lands"),
description = S("Mine your first dry shrub."), description = S("Mine your first dry shrub."),
icon = "default_dry_shrub.png", icon = "awards_far_lands.png",
difficulty = 0.009, difficulty = 0.009,
trigger = { trigger = {
type = "dig", type = "dig",
@ -500,7 +555,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_ice", { awards.register_award("awards_ice", {
title = S("Glacier Discoverer"), title = S("Glacier Discoverer"),
description = S("Mine your first ice."), description = S("Mine your first ice."),
icon = "default_ice.png", icon = "awards_glacier_discoverer.png",
difficulty = 0.02, difficulty = 0.02,
trigger = { trigger = {
type = "dig", type = "dig",
@ -513,7 +568,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_snowblock", { awards.register_award("awards_snowblock", {
title = S("Very Simple Snow Man"), title = S("Very Simple Snow Man"),
description = S("Place two snow blocks."), description = S("Place two snow blocks."),
icon = "default_snow.png", icon = "awards_very_simple_snow_man.png",
difficulty = 0.02, difficulty = 0.02,
trigger = { trigger = {
type = "place", type = "place",
@ -525,7 +580,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_gold_ore", { awards.register_award("awards_gold_ore", {
title = S("First Gold Find"), title = S("First Gold Find"),
description = S("Mine your first gold ore."), description = S("Mine your first gold ore."),
icon = "default_stone.png^default_mineral_gold.png^awards_level1.png", icon = "awards_first_gold_find.png^awards_level1.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 0.9, difficulty = 0.9,
trigger = { trigger = {
@ -538,7 +593,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_gold_rush", { awards.register_award("awards_gold_rush", {
title = S("Gold Rush"), title = S("Gold Rush"),
description = S("Mine 45 gold ores."), description = S("Mine 45 gold ores."),
icon = "default_stone.png^default_mineral_gold.png^awards_level2.png", icon = "awards_gold_rush.png^awards_level2.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 0.9, difficulty = 0.9,
trigger = { trigger = {
@ -551,7 +606,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_diamond_ore", { awards.register_award("awards_diamond_ore", {
title = S("Wow, I am Diamonds!"), title = S("Wow, I am Diamonds!"),
description = S("Mine your first diamond ore."), description = S("Mine your first diamond ore."),
icon = "default_stone.png^default_mineral_diamond.png^awards_level1.png", icon = "awards_wow_i_am_diamonds.png^awards_level1.png",
difficulty = 1, difficulty = 1,
trigger = { trigger = {
type = "dig", type = "dig",
@ -563,7 +618,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_diamond_rush", { awards.register_award("awards_diamond_rush", {
title = S("Girl's Best Friend"), title = S("Girl's Best Friend"),
description = S("Mine 18 diamond ores."), description = S("Mine 18 diamond ores."),
icon = "default_stone.png^default_mineral_diamond.png^awards_level2.png", icon = "awards_girls_best_friend.png^awards_level2.png",
background = "awards_bg_mining.png", background = "awards_bg_mining.png",
difficulty = 1, difficulty = 1,
trigger = { trigger = {
@ -576,7 +631,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_diamondblock", { awards.register_award("awards_diamondblock", {
title = S("Hardest Block on Earth"), title = S("Hardest Block on Earth"),
description = S("Craft a diamond block."), description = S("Craft a diamond block."),
icon = "default_diamond_block.png", icon = "awards_hardest_block_on_earth.png",
difficulty = 1.1, difficulty = 1.1,
trigger = { trigger = {
type = "craft", type = "craft",
@ -588,7 +643,7 @@ if minetest.get_modpath("default") then
awards.register_award("awards_mossycobble", { awards.register_award("awards_mossycobble", {
title = S("In the Dungeon"), title = S("In the Dungeon"),
description = S("Mine a mossy cobblestone."), description = S("Mine a mossy cobblestone."),
icon = "default_mossycobble.png", icon = "awards_in_the_dungeon.png",
difficulty = 0.9, difficulty = 0.9,
trigger = { trigger = {
type = "dig", type = "dig",
@ -600,7 +655,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_furnace", { awards.register_award("award_furnace", {
title = S("Smelter"), title = S("Smelter"),
description = S("Craft 10 furnaces."), description = S("Craft 10 furnaces."),
icon = "default_furnace_front.png", icon = "awards_smelter.png",
difficulty = 0.08, difficulty = 0.08,
trigger = { trigger = {
type = "craft", type = "craft",
@ -612,7 +667,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_chest", { awards.register_award("award_chest", {
title = S("Treasurer"), title = S("Treasurer"),
description = S("Craft 15 chests."), description = S("Craft 15 chests."),
icon = "default_chest_front.png", icon = "awards_treasurer.png",
difficulty = 0.08, difficulty = 0.08,
trigger = { trigger = {
type = "craft", type = "craft",
@ -622,9 +677,9 @@ if minetest.get_modpath("default") then
}) })
awards.register_award("award_chest2", { awards.register_award("award_chest2", {
title = S("Bankier"), title = S("Banker"),
description = S("Craft 30 locked chests."), description = S("Craft 30 locked chests."),
icon = "default_chest_lock.png", icon = "awards_banker.png",
difficulty = 0.08, difficulty = 0.08,
trigger = { trigger = {
type = "craft", type = "craft",
@ -636,7 +691,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_brick", { awards.register_award("award_brick", {
title = S("Bricker"), title = S("Bricker"),
description = S("Craft 200 brick blocks."), description = S("Craft 200 brick blocks."),
icon = "default_brick.png", icon = "awards_bricker.png",
difficulty = 0.03, difficulty = 0.03,
trigger = { trigger = {
type = "craft", type = "craft",
@ -648,7 +703,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_obsidianbrick", { awards.register_award("award_obsidianbrick", {
title = S("House of Obsidian"), title = S("House of Obsidian"),
description = S("Craft 100 obsidian bricks."), description = S("Craft 100 obsidian bricks."),
icon = "default_obsidian_brick.png", icon = "awards_house_of_obsidian.png",
difficulty = 0.4, difficulty = 0.4,
trigger = { trigger = {
type = "craft", type = "craft",
@ -660,7 +715,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_placestone", { awards.register_award("award_placestone", {
title = S("Build a Cave"), title = S("Build a Cave"),
description = S("Place 100 stone."), description = S("Place 100 stone."),
icon = "default_stone.png", icon = "awards_build_a_cave.png",
difficulty = 0.1, difficulty = 0.1,
trigger = { trigger = {
type = "place", type = "place",
@ -672,7 +727,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_woodladder", { awards.register_award("award_woodladder", {
title = S("Long Ladder"), title = S("Long Ladder"),
description = S("Place 400 wooden ladders."), description = S("Place 400 wooden ladders."),
icon = "default_ladder_wood.png", icon = "awards_long_ladder.png",
difficulty = 0.1, difficulty = 0.1,
trigger = { trigger = {
type = "place", type = "place",
@ -684,7 +739,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_steelladder", { awards.register_award("award_steelladder", {
title = S("Industrial Age"), title = S("Industrial Age"),
description = S("Place 40 steel ladders."), description = S("Place 40 steel ladders."),
icon = "default_ladder_steel.png", icon = "awards_industrial_age.png",
difficulty = 1, difficulty = 1,
trigger = { trigger = {
type = "place", type = "place",
@ -696,7 +751,7 @@ if minetest.get_modpath("default") then
awards.register_award("award_apples", { awards.register_award("award_apples", {
title = S("Yummy!"), title = S("Yummy!"),
description = S("Eat 80 apples."), description = S("Eat 80 apples."),
icon = "default_apple.png", icon = "awards_yummy.png",
difficulty = 0.1, difficulty = 0.1,
trigger = { trigger = {
type = "eat", type = "eat",
@ -704,12 +759,57 @@ if minetest.get_modpath("default") then
target = 80 target = 80
} }
}) })
-- Died in flowing lava
awards.register_award("award_in_the_flow", {
title = S("In the Flow"),
description = S("Die in flowing lava."),
secret = true,
})
awards.register_on_death(function(player,data)
local pos = player:get_pos()
if pos and (minetest.find_node_near(pos, 2, "default:lava_flowing") ~= nil or
minetest.find_node_near(pos, 2, "default:lava_source") ~= nil) then
return "award_in_the_flow"
end
return nil
end)
-- Die near diamond ore
awards.register_award("award_this_is_sad", {
title = S("This is Sad"),
description = S("Die near diamond ore."),
secret = true,
})
awards.register_on_death(function(player,data)
local pos = player:get_pos()
if pos and minetest.find_node_near(pos, 5, "default:stone_with_diamond") ~= nil then
return "award_this_is_sad"
end
return nil
end)
end
if minetest.get_modpath("bones") then
-- Die near bones
awards.register_award("award_the_stack", {
title = S("Graveyard"),
description = S("Die near bones."),
secret = true,
})
awards.register_on_death(function(player,data)
local pos = player:get_pos()
if pos and minetest.find_node_near(pos, 5, "bones:bones") ~= nil then
return "award_the_stack"
end
return nil
end)
end end
if minetest.get_modpath("vessels") then if minetest.get_modpath("vessels") then
awards.register_award("award_vessels_shelf", { awards.register_award("award_vessels_shelf", {
title = S("Glasser"), title = S("Glasser"),
icon = "vessels_shelf.png", icon = "awards_glasser.png",
description = S("Craft 14 vessels shelves."), description = S("Craft 14 vessels shelves."),
trigger = { trigger = {
type = "craft", type = "craft",
@ -723,7 +823,7 @@ if minetest.get_modpath("farming") then
awards.register_award("awards_farmer", { awards.register_award("awards_farmer", {
title = S("Farming Skills Acquired"), title = S("Farming Skills Acquired"),
description = S("Harvest a fully grown wheat plant."), description = S("Harvest a fully grown wheat plant."),
icon = "farming_wheat_8.png^awards_level1.png", icon = "awards_farming_skills_acquired.png^awards_level1.png",
trigger = { trigger = {
type = "dig", type = "dig",
node = "farming:wheat_8", node = "farming:wheat_8",
@ -733,7 +833,7 @@ if minetest.get_modpath("farming") then
awards.register_award("awards_farmer2", { awards.register_award("awards_farmer2", {
title = S("Field Worker"), title = S("Field Worker"),
description = S("Harvest 25 fully grown wheat plants."), description = S("Harvest 25 fully grown wheat plants."),
icon = "farming_wheat_8.png^awards_level2.png", icon = "awards_field_worker.png^awards_level2.png",
trigger = { trigger = {
type = "dig", type = "dig",
node = "farming:wheat_8", node = "farming:wheat_8",
@ -744,7 +844,7 @@ if minetest.get_modpath("farming") then
awards.register_award("awards_farmer3", { awards.register_award("awards_farmer3", {
title = S("Aspiring Farmer"), title = S("Aspiring Farmer"),
description = S("Harvest 125 fully grown wheat plants."), description = S("Harvest 125 fully grown wheat plants."),
icon = "farming_wheat_8.png^awards_level3.png", icon = "awards_aspiring_farmer.png^awards_level3.png",
trigger = { trigger = {
type = "dig", type = "dig",
node = "farming:wheat_8", node = "farming:wheat_8",
@ -755,7 +855,7 @@ if minetest.get_modpath("farming") then
awards.register_award("awards_farmer4", { awards.register_award("awards_farmer4", {
title = S("Wheat Magnate"), title = S("Wheat Magnate"),
description = S("Harvest 625 fully grown wheat plants."), description = S("Harvest 625 fully grown wheat plants."),
icon = "farming_wheat_8.png^awards_level4.png", icon = "awards_wheat_magnate.png^awards_level4.png",
trigger = { trigger = {
type = "dig", type = "dig",
node = "farming:wheat_8", node = "farming:wheat_8",
@ -766,7 +866,7 @@ if minetest.get_modpath("farming") then
awards.register_award("award_bread", { awards.register_award("award_bread", {
title = S("Baker"), title = S("Baker"),
description = S("Eat 10 loaves of bread."), description = S("Eat 10 loaves of bread."),
icon = "farming_bread.png", icon = "awards_baker.png",
trigger = { trigger = {
type = "eat", type = "eat",
item = "farming:bread", item = "farming:bread",
@ -780,7 +880,7 @@ if minetest.get_modpath("wool") and minetest.get_modpath("farming") then
awards.register_award("awards_wool", { awards.register_award("awards_wool", {
title = S("Wool Over Your Eyes"), title = S("Wool Over Your Eyes"),
description = S("Craft 250 white wool."), description = S("Craft 250 white wool."),
icon = "wool_white.png", icon = "awards_wool_over_your_eyes.png",
trigger = { trigger = {
type = "craft", type = "craft",
item = "wool:white", item = "wool:white",
@ -793,7 +893,7 @@ if minetest.get_modpath("beds") then
awards.register_award("award_bed", { awards.register_award("award_bed", {
title = S("Hotelier"), title = S("Hotelier"),
description = S("Craft 15 fancy beds."), description = S("Craft 15 fancy beds."),
icon = "beds_bed_fancy.png", icon = "awards_hotelier.png",
trigger = { trigger = {
type = "craft", type = "craft",
item= "beds:fancy_bed_bottom", item= "beds:fancy_bed_bottom",
@ -806,7 +906,7 @@ if minetest.get_modpath("stairs") then
awards.register_award("award_stairs_goldblock", { awards.register_award("award_stairs_goldblock", {
title = S("Filthy Rich"), title = S("Filthy Rich"),
description = S("Craft 24 gold block stairs."), description = S("Craft 24 gold block stairs."),
icon = "default_gold_block.png", icon = "awards_filthy_rich.png",
trigger = { trigger = {
type = "craft", type = "craft",
item= "stairs:stair_goldblock", item= "stairs:stair_goldblock",
@ -819,7 +919,7 @@ if minetest.get_modpath("dye") then
awards.register_award("awards_dye_red", { awards.register_award("awards_dye_red", {
title = S("Roses Are Red"), title = S("Roses Are Red"),
description = S("Craft 400 red dyes."), description = S("Craft 400 red dyes."),
icon = "dye_red.png", icon = "awards_roses_are_red.png",
trigger = { trigger = {
type = "craft", type = "craft",
item = "dye:red", item = "dye:red",
@ -830,7 +930,7 @@ if minetest.get_modpath("dye") then
awards.register_award("awards_dye_yellow", { awards.register_award("awards_dye_yellow", {
title = S("Dandelions are Yellow"), title = S("Dandelions are Yellow"),
description = S("Craft 400 yellow dyes."), description = S("Craft 400 yellow dyes."),
icon = "dye_yellow.png", icon = "awards_dandelions_are_yellow.png",
trigger = { trigger = {
type = "craft", type = "craft",
item = "dye:yellow", item = "dye:yellow",
@ -841,7 +941,7 @@ if minetest.get_modpath("dye") then
awards.register_award("awards_dye_blue", { awards.register_award("awards_dye_blue", {
title = S("Geraniums are Blue"), title = S("Geraniums are Blue"),
description = S("Craft 400 blue dyes."), description = S("Craft 400 blue dyes."),
icon = "dye_blue.png", icon = "awards_geraniums_are_blue.png",
trigger = { trigger = {
type = "craft", type = "craft",
item= "dye:blue", item= "dye:blue",
@ -852,7 +952,7 @@ if minetest.get_modpath("dye") then
awards.register_award("awards_dye_white", { awards.register_award("awards_dye_white", {
title = S("White Color Stock"), title = S("White Color Stock"),
description = S("Craft 100 white dyes."), description = S("Craft 100 white dyes."),
icon = "dye_white.png", icon = "awards_white_color_stock.png",
trigger = { trigger = {
type = "craft", type = "craft",
item= "dye:white", item= "dye:white",
@ -865,7 +965,7 @@ if minetest.get_modpath("flowers") then
awards.register_award("awards_brown_mushroom1", { awards.register_award("awards_brown_mushroom1", {
title = S("Tasty Mushrooms"), title = S("Tasty Mushrooms"),
description = S("Eat 3 brown mushrooms."), description = S("Eat 3 brown mushrooms."),
icon = "flowers_mushroom_brown.png^awards_level1.png", icon = "awards_tasty_mushrooms.png^awards_level1.png",
trigger = { trigger = {
type = "eat", type = "eat",
item= "flowers:mushroom_brown", item= "flowers:mushroom_brown",
@ -875,7 +975,7 @@ if minetest.get_modpath("flowers") then
awards.register_award("awards_brown_mushroom2", { awards.register_award("awards_brown_mushroom2", {
title = S("Mushroom Lover"), title = S("Mushroom Lover"),
description = S("Eat 33 brown mushrooms."), description = S("Eat 33 brown mushrooms."),
icon = "flowers_mushroom_brown.png^awards_level2.png", icon = "awards_mushroom_lover.png^awards_level2.png",
trigger = { trigger = {
type = "eat", type = "eat",
item= "flowers:mushroom_brown", item= "flowers:mushroom_brown",
@ -885,7 +985,7 @@ if minetest.get_modpath("flowers") then
awards.register_award("awards_brown_mushroom3", { awards.register_award("awards_brown_mushroom3", {
title = S("Underground Mushroom Farmer"), title = S("Underground Mushroom Farmer"),
description = S("Eat 333 brown mushrooms."), description = S("Eat 333 brown mushrooms."),
icon = "flowers_mushroom_brown.png^awards_level3.png", icon = "awards_underground_mushroom_farmer.png^awards_level3.png",
trigger = { trigger = {
type = "eat", type = "eat",
item= "flowers:mushroom_brown", item= "flowers:mushroom_brown",
@ -912,15 +1012,15 @@ minetest.after(0, function()
awards.register_award("awards_builder1", { awards.register_award("awards_builder1", {
title = S("Builder"), title = S("Builder"),
icon = "awards_house.png^awards_level1.png", icon = "awards_builder.png^awards_level1.png",
trigger = { trigger = {
type = "place", type = "place",
target = 1000, target = 1000,
}, },
}) })
awards.register_award("awards_builder2", { awards.register_award("awards_builder2", {
title = S("Constructor"), title = S("Engineer"),
icon = "awards_house.png^awards_level2.png", icon = "awards_engineer.png^awards_level2.png",
trigger = { trigger = {
type = "place", type = "place",
target = 5000, target = 5000,
@ -928,7 +1028,7 @@ minetest.after(0, function()
}) })
awards.register_award("awards_builder3", { awards.register_award("awards_builder3", {
title = S("Architect"), title = S("Architect"),
icon = "awards_house.png^awards_level3.png", icon = "awards_architect.png^awards_level3.png",
trigger = { trigger = {
type = "place", type = "place",
target = 10000, target = 10000,
@ -936,7 +1036,7 @@ minetest.after(0, function()
}) })
awards.register_award("awards_builder4", { awards.register_award("awards_builder4", {
title = S("Master Architect"), title = S("Master Architect"),
icon = "awards_house.png^awards_level4.png", icon = "awards_master_architect.png^awards_level4.png",
trigger = { trigger = {
type = "place", type = "place",
target = 25000, target = 25000,
@ -950,7 +1050,7 @@ if minetest.get_modpath("nyancat") then
secret = true, secret = true,
title = S("A Cat in a Pop-Tart?!"), title = S("A Cat in a Pop-Tart?!"),
description = S("Mine a nyan cat."), description = S("Mine a nyan cat."),
icon = "nyancat_front.png", icon = "awards_a_cat_in_a_pop_tart.png",
trigger = { trigger = {
type = "dig", type = "dig",
node = "nyancat:nyancat", node = "nyancat:nyancat",
@ -958,3 +1058,53 @@ if minetest.get_modpath("nyancat") then
} }
}) })
end end
if minetest.get_modpath("pipeworks") then
awards.register_award("award_pipeworks_transporter", {
title = S("Item transporter"),
description = S("Place 10000 tubes."),
difficulty = 0.05,
trigger = {
type = "place",
node = "pipeworks:tube_1",
target = 2000,
}
})
awards.register_award("award_pipeworks_automator", {
title = S("Factory"),
description = S("Place 5 autocrafters."),
difficulty = 3,
trigger = {
type = "place",
node = "pipeworks:autocrafter",
target = 5,
}
})
end
if minetest.get_modpath("mesecons") then
awards.register_award("awards_mesecons", {
title = S("Electical Engineer"),
description = S("Place 500 mesecon wires."),
difficulty = 0.2,
trigger = {
type = "place",
node = "mesecons:wire_00000000_off",
target = 500,
}
})
end
if minetest.get_modpath("basic_materials") then
awards.register_award("awards_oil", {
title = S("Oil Typhoon"),
description = S("Craft 500 times oil extract."),
trigger = {
type = "craft",
item = "basic_materials:oil_extract",
target = 500,
}
})
end

View File

@ -2,73 +2,9 @@
local S = awards.gettext local S = awards.gettext
local function order_awards(name)
local hash_is_unlocked = {}
local retval = {}
local data = awards.player(name)
if data and data.unlocked then
for awardname, _ in pairs(data.unlocked) do
local def = awards.registered_awards[awardname]
if def then
hash_is_unlocked[awardname] = true
local score = -100000
local difficulty = def.difficulty or 1
if def.trigger and def.trigger.target then
difficulty = difficulty * def.trigger.target
end
score = score + difficulty
retval[#retval + 1] = {
name = awardname,
def = def,
unlocked = true,
started = true,
score = score,
}
end
end
end
for _, def in pairs(awards.registered_awards) do
if not hash_is_unlocked[def.name] and def:can_unlock(data) then
local started = false
local score = def.difficulty or 1
if def.secret then
score = 1000000
elseif def.trigger and def.trigger.target and def.getProgress then
local progress = def:getProgress(data).perc
score = score * (1 - progress) * def.trigger.target
if progress < 0.001 then
score = score + 100
else
started = true
end
else
score = 100
end
retval[#retval + 1] = {
name = def.name,
def = def,
unlocked = false,
started = started,
score = score,
}
end
end
table.sort(retval, function(a, b)
return a.score < b.score
end)
return retval
end
function awards.get_formspec(name, to, sid) function awards.get_formspec(name, to, sid)
local formspec = "" local formspec = ""
local awards_list = order_awards(name) local awards_list = awards.get_award_states(name)
local data = awards.player(name)
if #awards_list == 0 then if #awards_list == 0 then
formspec = formspec .. "label[3.9,1.5;"..minetest.formspec_escape(S("Error: No achivements available.")).."]" formspec = formspec .. "label[3.9,1.5;"..minetest.formspec_escape(S("Error: No achivements available.")).."]"
@ -104,17 +40,13 @@ function awards.get_formspec(name, to, sid)
";]" ";]"
if sdef and sdef.icon then if sdef and sdef.icon then
formspec = formspec .. "image[0.6,0;3,3;" .. sdef.icon .. "]" formspec = formspec .. "image[0.45,0;3.5,3.5;" .. sdef.icon .. "]" -- adjusted values from 0.6,0;3,3
end end
local barwidth = 3.95
local perc = nil if sitem.progress then
local label = nil local barwidth = 3.95
if sdef.getProgress and data then local perc = sitem.progress.current / sitem.progress.target
local res = sdef:getProgress(data) local label = sitem.progress.label
perc = res.perc
label = res.label
end
if perc then
if perc > 1 then if perc > 1 then
perc = 1 perc = 1
end end
@ -124,6 +56,7 @@ function awards.get_formspec(name, to, sid)
formspec = formspec .. "label[1.6,8.15;" .. minetest.formspec_escape(label) .. "]" formspec = formspec .. "label[1.6,8.15;" .. minetest.formspec_escape(label) .. "]"
end end
end end
if sdef and sdef.description then if sdef and sdef.description then
formspec = formspec .. "box[-0.05,3.75;3.9,4.2;#000]" formspec = formspec .. "box[-0.05,3.75;3.9,4.2;#000]"
formspec = formspec .. "textarea[0.25,3.75;3.9,4.2;;" .. formspec = formspec .. "textarea[0.25,3.75;3.9,4.2;;" ..
@ -174,7 +107,7 @@ function awards.show_to(name, to, sid, text)
return return
end end
if text then if text then
local awards_list = order_awards(name) local awards_list = awards.get_award_states(name)
if #awards_list == 0 then if #awards_list == 0 then
minetest.chat_send_player(to, S("Error: No award available.")) minetest.chat_send_player(to, S("Error: No award available."))
return return

View File

@ -14,6 +14,10 @@
-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-- --
-- Check if a player object is valid for awards.
local function player_ok(player)
return player and player.is_player and player:is_player() and not player.is_fake_player
end
awards.register_trigger("chat", { awards.register_trigger("chat", {
type = "counted", type = "counted",
@ -22,7 +26,7 @@ awards.register_trigger("chat", {
}) })
minetest.register_on_chat_message(function(name, message) minetest.register_on_chat_message(function(name, message)
local player = minetest.get_player_by_name(name) local player = minetest.get_player_by_name(name)
if not player or string.find(message, "/") then if not player_ok(player) or string.find(message, "/") then
return return
end end
@ -68,7 +72,7 @@ awards.register_trigger("dig", {
key_is_item = true, key_is_item = true,
}) })
minetest.register_on_dignode(function(pos, node, player) minetest.register_on_dignode(function(pos, node, player)
if not player or not pos or not node then if not player_ok(player) or not pos or not node then
return return
end end
@ -89,7 +93,7 @@ awards.register_trigger("place", {
key_is_item = true, key_is_item = true,
}) })
minetest.register_on_placenode(function(pos, node, player) minetest.register_on_placenode(function(pos, node, player)
if not player or not pos or not node then if not player_ok(player) or not pos or not node then
return return
end end
@ -110,7 +114,7 @@ awards.register_trigger("craft", {
key_is_item = true, key_is_item = true,
}) })
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if not player or itemstack:is_empty() then if not player_ok(player) or itemstack:is_empty() then
return return
end end
@ -131,11 +135,11 @@ awards.register_trigger("eat", {
key_is_item = true, key_is_item = true,
}) })
minetest.register_on_item_eat(function(_, _, itemstack, player, _) minetest.register_on_item_eat(function(_, _, itemstack, player, _)
if not player or itemstack:is_empty() then if not player_ok(player) or itemstack:is_empty() then
return return
end end
local itemname = itemstack:get_name() local itemname = itemstack:get_name()
itemname = minetest.registered_aliases[itemname] or itemname itemname = minetest.registered_aliases[itemname] or itemname
awards.notify_craft(player, itemname, itemstack:get_count()) awards.notify_eat(player, itemname)
end) end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

428
textures/_Read Me.txt Normal file
View File

@ -0,0 +1,428 @@
__________ .___ _____
\______ \ ____ _____ __| _/ / \ ____
| _// __ \\__ \ / __ | / \ / \_/ __ \
| | \ ___/ / __ \_/ /_/ | / Y \ ___/
|____|_ /\___ >____ /\____ | \____|__ /\___ >
\/ \/ \/ \/ \/ \/
and license info
Below is a listing of the Award icon source and attribution/licence info.
CC BY-SA 3.0 - https://creativecommons.org/licenses/by-sa/3.0/
CC0 - https://creativecommons.org/share-your-work/public-domain/cc0/
A Cat in a Pop Tart?! -- CC0
Inspiration art RinRinDaishi on Deviant art
https://www.deviantart.com/rinrindaishi/art/Nyancat-Bed-335515771
see _RinrinDaishi_message.png
Icon drawn by Sirrobzeroone from scratch
Architect -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Stone Wall (cobble) texture - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Aspiring Farmer -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Fence texture - Paramat/Blockmen
Wheat Texture - PilzAdam/BlockMen/MasterGollum/Gambit
Rest - Sirrobzeroone
Backpacker -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Binoculars - Paramat
Wool Texture - Cisoun
Rest - Sirrobzeroone
Baker -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Stone Wall texture - Neuromancer/Brane Praefect
Furnace - Neuromancer
Rest - Sirrobzeroone
Banker -- CC BY-SA 3.0
Wood Pine Floor (default_pinewood.png) - Paramat
Chest - BlockMen
Rest - Sirrobzeroone
Bricker -- CC BY-SA 3.0
Brick Texture - Calinou
Rest - Sirrobzeroone
Build a Cave -- CC BY-SA 3.0
Stone (default_stone.png) - Cisoun
Grass texture (default_grass.png) - Paramat
Rest - Sirrobzeroone
Builder -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Wool Texture - Cisoun
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Castorama -- CC0 (Public Domain)
All - Sirrobzeroone
Crafter of Sticks -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Grass Tall (default_grass_*.png) - Gambit
Rest - Sirrobzeroone
Dandelions are Yellow -- CC0 (Public Domain)
All - Openclipart Library/Sirrobzeroone
Desert Discoverer -- CC BY-SA 3.0
Sand (default_desert_sand.png) - VanessaE
Dry Shrub (default_dry_shrub.png) - celeron55
Sun () - Celeron55
Rest - Sirrobzeroone
Desert Dweller -- CC BY-SA 3.0
Sand (default_desert_sand.png) - VanessaE
Rest - Sirrobzeroone
Engineer -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Far Lands -- CC BY-SA 3.0
Water (default_water.png) - Cisoun
Tree Bark (default_tree.png) - Cisoun
Tree Wood (default_wood.png) - BlockMen
Tree Leaves (default_leaves.png) - Cisoun
Sun () - Celeron55
Rest - Sirrobzeroone
Farming Skills Acquired -- CC BY-SA 3.0
Wheat Texture - PilzAdam/BlockMen/MasterGollum/Gambit
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Grass texture (default_grass.png) - Paramat
Sun () - Celeron55
Rest - Sirrobzeroone
Field Worker -- CC BY-SA 3.0
Wheat Texture - PilzAdam/BlockMen/MasterGollum/Gambit
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Rest - Sirrobzeroone
Filthy Rich -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Rest - Sirrobzeroone
Firefighter -- CC0 (Public Domain)
All - Sirrobzeroone
First Day in the Woods -- CC BY-SA 3.0
Tree Bark (default_tree.png) - Cisoun
Grass texture (default_grass.png) - Paramat
Grass Tall (default_grass_*.png) - Gambit
Axe (default_tool_*.png) - BlockMen
Rest - Sirrobzeroone
First Gold Find -- CC BY-SA 3.0
Gold Nugget (default_gold_lump.png) - Gambit
Stone (default_stone.png) - Cisoun
Rest - Sirrobzeroone
First Mese Find -- CC BY-SA 3.0
Stone (default_stone.png) - Cisoun
Mese Crystal (default_mese_crystal.png) - VanessaE
Rest - Sirrobzeroone
Fortress -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Tree Bark (default_tree.png) - Cisoun
Tree Leaves (default_leaves.png) - Cisoun
Rest - Sirrobzeroone
Geraniums are Blue -- CC BY-SA 3.0
Geranium (flowers_geranium.png)
Wool Texture - Cisoun
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Tree Wood (default_wood.png) - BlockMen
Rest - Sirrobzeroone
Girl's Best Friend -- CC BY-SA 3.0
Diamond (default_diamond.png) - BlockMen
Rest - Sirrobzeroone
Glacier Discoverer -- CC BY-SA 3.0
Ice (default_ice.png) - as197
Snow (default_snow.png) - Gambit
Rest - Sirrobzeroone
Glasser -- CC BY-SA 3.0
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Tree Wood (default_wood.png) - BlockMen
Rest - Sirrobzeroone
Gold Rush -- CC BY-SA 3.0
Stone Blocks (default_stone_block.png) - Paramat
Tree Bark (default_tree.png) - Cisoun
Stone (default_stone.png) - Cisoun
Gold Nugget (default_gold_lump.png) - Gambit
Torch (default_torch_on_floor.png) - VanessaE
Rail (carts_rail_*) - Hexafraction/Sofar
Cart (carts_cart_side.png) - Gambit
Rest - Sirrobzeroone
Grasslands Discoverer -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Sun () - Celeron55
Bluberry (default_blueberries.png) - Random-Geek
Viola (flowers_viola.png) - RHRhino/Gambit/yyt16384/Paramat
Rest - Sirrobzeroone
Hardened Miner -- CC BY-SA 3.0
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Hardest Block on Earth -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Tree Bark (default_tree.png) - Cisoun
Tree Leaves (default_leaves.png) - Cisoun
Diamond Block (default_diamond_block.png) - Gambit
Rest - Sirrobzeroone
Hotelier -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Tree Wood (default_wood.png) - BlockMen
Tree Bark (default_tree.png) - Cisoun
Wood Pine Floor (default_pinewood.png) - Paramat
Wood Acacia Floor (default_acacia_wood.png) - Paramat
Rest - Sirrobzeroone
House of Obsidian -- CC BY-SA 3.0
Wood Acacia Floor (default_acacia_wood.png) - Paramat
Grass texture (default_grass.png) - Paramat
Tree Bark (default_tree.png) - Cisoun
Obsidian (default_obsidian.png) - Jojoa1997
Rest - Sirrobzeroone
In the Dungeon -- CC BY-SA 3.0
Wood Pine Floor (default_pinewood.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Industrial Age -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Wood Pine Floor (default_pinewood.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Sun () - Celeron55
Rest - Sirrobzeroone
Jungle Discoverer -- CC BY-SA 3.0
Jungle Bark (default_jungletree.png) - Cisoun
Jungle Leaves (default_jungleleaves.png) - PilzAdam
Jungle Litter (default_rainforest_litter.png) - npx
Grass texture (default_grass.png) - Paramat
Rest - Sirrobzeroone
Junglebaby -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Jungle Bark (default_jungletree.png) - Cisoun
Rest - Sirrobzeroone
Jungleman -- CC BY-SA 3.0
Jungle Bark (default_jungletree.png) - Cisoun
Jungle Leaves (default_jungleleaves.png) - PilzAdam
Rest - Sirrobzeroone
Lava and Water -- CC BY-SA 3.0
Water (default_water.png) - Cisoun
Lava (default_lava.png) - Cisoun
Obsidian (default_obsidian.png) - Jojoa1997
Rest - Sirrobzeroone
Lava Miner -- CC BY-SA 3.0
Lava (default_lava.png) - Cisoun
Stone (default_stone.png) - Cisoun
Rest - Sirrobzeroone
Light It Up -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Torch (default_torch_on_floor.png) - VanessaE
Rest - Sirrobzeroone
Little Library -- CC BY-SA 3.0
BookShelf (default_bookshelf.png) - Celeron55
Tree Wood (default_wood.png) - BlockMen
Rest - Sirrobzeroone
Long Ladder -- CC BY-SA 3.0
Ladder (default_ladder_wood.png) - Celeron55
Rest - Sirrobzeroone
Lumberjack -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Tree Bark (default_tree.png) - Cisoun
Rest - Sirrobzeroone
Marchand De Sable -- CC BY-SA 3.0
Sand ( default_desert_sand.png) - VanessaE
Sand Block (default_desert_stone.png) - VanessaE
Rest - Sirrobzeroone
Master Miner -- CC BY-SA 3.0
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Mese Mastery -- CC BY-SA 3.0
Stone (default_stone.png) - Cisoun
Mese block (default_mese_block.png) - Paramat
Rest - Sirrobzeroone
Mini Miner -- CC BY-SA 3.0
Stone (default_stone.png) - Cisoun
Iron Ore (default_mineral_iron.png) - Celeron55
Rest - Sirrobzeroone
Mushroom Lover -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Rest - Sirrobzeroone
Obsessed with Obsidian -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Tree Bark (default_tree.png) - Cisoun
Tree Leaves (default_leaves.png) - Cisoun
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Obsidian (default_obsidian.png) - Jojoa1997
Rest - Sirrobzeroone
On The Way -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Tree Bark (default_tree.png) - Cisoun
Tree Leaves (default_leaves.png) - Cisoun
Rail (carts_rail_*) - Hexafraction/Sofar
Rest - Sirrobzeroone
Outpost -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Tree Bark (default_tree.png) - Cisoun
Tree Leaves (default_leaves.png) - Cisoun
Rest - Sirrobzeroone
Pharaoh -- CC BY-SA 3.0
Sand (default_desert_sand.png) - VanessaE
Rest - Sirrobzeroone
Professional Lumberjack -- CC BY-SA 3.0
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Tree Wood (default_wood.png) - BlockMen
Axe (default_tool_*.png) - BlockMen
Rest - Sirrobzeroone
Pyromaniac -- CC0 (Public Domain)
All - Sirrobzeroone
Really Well Lit -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Wheat Texture - PilzAdam/BlockMen/MasterGollum/Gambit
Tree Wood (default_wood.png) - BlockMen
Rest - Sirrobzeroone
Roses Are Red -- CC0 (Public Domain)
All - Sirrobzeroone
Saint-Maclou -- CC0 (Public Domain)
All - Sirrobzeroone
Sam the Trapper -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Grass texture (default_grass.png) - Paramat
Rest - Sirrobzeroone
Savannah Discoverer -- CC BY-SA 3.0
Dry grass (default_dry_grass.png) - Paramat
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Sun () - Celeron55
Acacia Leaves (default_acacia_leaves.png) - Paramat
Acacia Bark (default_acacia_tree.png) - Paramat
Rest - Sirrobzeroone
Semi-pro Lumberjack -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Tree Bark (default_tree.png) - Cisoun
Axe (default_tool_*.png) - BlockMen
Rest - Sirrobzeroone
Smelter -- CC0 (Public Domain)
All - Openclipart library/Sirrobzeroone
Tasty Mushrooms -- CC0 (Public Domain)
All - Openclipart library/Sirrobzeroone
Treasurer -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Wood Pine Floor (default_pinewood.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Underground Mushroom Farmer -- CC BY-SA 3.0
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Stone (default_stone.png) - Cisoun
Mushroom (flowers_mushroom_brown.png) - RHRhino/Gambit/yyt16384/Paramat
Torch (default_torch_on_floor.png) - VanessaE
Rest - Sirrobzeroone
Very Simple Snow Man -- CC BY-SA 3.0
Snow (default_snow.png) - Gambit
Stick (default_stick.png) - BlockMen
Rest - Sirrobzeroone
Watchtower -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Tree Bark (default_tree.png) - Cisoun
Tree Leaves (default_leaves.png) - Cisoun
Rest - Sirrobzeroone
Well Lit -- CC BY-SA 3.0
Grass texture (default_grass.png) - Paramat
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Wood Pine Floor (default_pinewood.png) - Paramat
Rest - Sirrobzeroone
Wheat Magnate -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Sun () - Celeron55
Wheat Texture - PilzAdam/BlockMen/MasterGollum/Gambit
Rest - Sirrobzeroone
White Color Stock -- CC BY-SA 3.0
Tree Wood (default_wood.png) - BlockMen
Cobble Wall (default_cobble.png) - Neuromancer/Brane Praefect
Rest - Sirrobzeroone
Wool Over Your Eyes -- CC BY-SA 3.0
Sun () - Celeron55
Grass texture (default_grass.png) - Paramat
Dirt Texture (default_dirt.png) - Random-Geek/Neuromancer
Bluberry (default_blueberries.png) - Random-Geek
Viola (flowers_viola.png) - RHRhino/Gambit/yyt16384/Paramat
Grass Tall (default_grass_*.png) - Gambit
Rest - Sirrobzeroone
Wow, I am Diamonds! -- CC BY-SA 3.0
Diamond (default_diamond.png) - BlockMen
Stone (default_stone.png) - Cisoun
Rest - Sirrobzeroone
You<EFBFBD>re a copper -- CC0 (Public Domain)
All - Sirrobzeroone
Yummy! -- CC0 (Public Domain)
All - Openclipart library/Sirrobzeroone

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Some files were not shown because too many files have changed in this diff Show More