mirror of
https://gitlab.com/rubenwardy/awards.git
synced 2025-06-28 22:26:17 +02:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
4f5260da5f | |||
89d4a93f3b | |||
cae2c1ee3b | |||
54db6ce0c0 |
62
README.md
62
README.md
@ -37,11 +37,10 @@ awards.register_award("mymod:award", {
|
||||
|
||||
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
|
||||
case the key is the value of the `node` field.
|
||||
|
||||
If you leave out 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 placed 10
|
||||
nodes of any type:
|
||||
case the key is the value of the `node` field. If you leave out
|
||||
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
|
||||
placed 10 nodes of any type:
|
||||
|
||||
```lua
|
||||
awards.register_award("mymod:award", {
|
||||
@ -126,10 +125,6 @@ awards.register_trigger("foo", {
|
||||
type = "custom",
|
||||
progress = "@1/@2 foos",
|
||||
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()
|
||||
@ -173,9 +168,7 @@ end
|
||||
|
||||
# API
|
||||
|
||||
## Awards
|
||||
|
||||
* `awards.register_award(name, def)`, the def table has the following fields:
|
||||
* awards.register_award(name, def), the def table has the following fields:
|
||||
* `title` - title of the award (defaults to name)
|
||||
* `description` - longer description of the award, displayed in Awards tab
|
||||
* `difficulty` - see [Award Difficulty](#award-difficulty).
|
||||
@ -189,48 +182,23 @@ end
|
||||
* `background` - the background image, use default otherwise.
|
||||
* `trigger` - trigger definition, see [Builtin Trigger Types](#builtin-trigger-types).
|
||||
* `on_unlock(name, def)` - callback on unlock.
|
||||
* `awards.registered_awards` - table of award name to definition.
|
||||
* `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).
|
||||
* awards.register_trigger(name, def), the def table has the following fields:
|
||||
* `type` - see [Trigger Types](#trigger-types).
|
||||
* `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.
|
||||
* `on_register(self, award_def)` - called when an award registers with this type.
|
||||
* `on_register(award_def)` - called when an award registers with this type.
|
||||
* "counted_key" only:
|
||||
* `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.
|
||||
* `key_is_item` - true if the key is an item name. On notify(),
|
||||
any watched groups will also be notified as `group:groupname` keys.
|
||||
* `awards.registered_triggers` - table of trigger name to definition.
|
||||
* 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
|
||||
|
||||
## Builtin Trigger Types
|
||||
|
||||
|
8
init.lua
8
init.lua
@ -3,9 +3,7 @@
|
||||
-- The global award namespace
|
||||
awards = {
|
||||
show_mode = "hud",
|
||||
registered_awards = {},
|
||||
registered_triggers = {},
|
||||
on_unlock = {},
|
||||
}
|
||||
|
||||
-- Internationalization support.
|
||||
@ -18,11 +16,7 @@ dofile(minetest.get_modpath("awards").."/src/api_triggers.lua")
|
||||
dofile(minetest.get_modpath("awards").."/src/chat_commands.lua")
|
||||
dofile(minetest.get_modpath("awards").."/src/gui.lua")
|
||||
dofile(minetest.get_modpath("awards").."/src/triggers.lua")
|
||||
|
||||
-- Optionally add default awards.
|
||||
if minetest.settings:get_bool("awards.add_defaults", true) then
|
||||
dofile(minetest.get_modpath("awards").."/src/awards.lua")
|
||||
end
|
||||
dofile(minetest.get_modpath("awards").."/src/awards.lua")
|
||||
|
||||
awards.load()
|
||||
minetest.register_on_shutdown(awards.save)
|
||||
|
@ -1,2 +0,0 @@
|
||||
# Add default achievements from the awards mod
|
||||
awards.add_defaults (Add Default Achievements) bool true
|
@ -43,11 +43,6 @@ end
|
||||
-- name - the name of the player
|
||||
-- award - the name of the award to give
|
||||
function awards.unlock(name, award)
|
||||
-- Ensure the player is online.
|
||||
if not minetest.get_player_by_name(name) then
|
||||
return
|
||||
end
|
||||
|
||||
-- Access Player Data
|
||||
local data = awards.player(name)
|
||||
local awdef = awards.registered_awards[award]
|
||||
@ -65,7 +60,7 @@ function awards.unlock(name, award)
|
||||
end
|
||||
|
||||
-- Unlock Award
|
||||
minetest.log("action", name.." has unlocked award "..award)
|
||||
minetest.log("action", name.." has unlocked award "..name)
|
||||
data.unlocked[award] = award
|
||||
awards.save()
|
||||
|
||||
@ -96,7 +91,7 @@ function awards.unlock(name, award)
|
||||
local title = awdef.title or award
|
||||
local desc = awdef.description or ""
|
||||
local background = awdef.background or "awards_bg_default.png"
|
||||
local icon = (awdef.icon or "awards_unknown.png") .. "^[resize:32x32"
|
||||
local icon = awdef.icon or "awards_unknown.png"
|
||||
local sound = awdef.sound
|
||||
if sound == nil then
|
||||
-- Explicit check for nil because sound could be `false` to disable it
|
||||
@ -127,6 +122,9 @@ function awards.unlock(name, award)
|
||||
end
|
||||
else
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not (player and player.is_player and player:is_player()) then
|
||||
return
|
||||
end
|
||||
local one = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
name = "award_bg",
|
||||
@ -165,7 +163,7 @@ function awards.unlock(name, award)
|
||||
local four = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
name = "award_icon",
|
||||
scale = {x = 2, y = 2}, -- adjusted for 32x32 from x/y = 4
|
||||
scale = {x = 4, y = 4},
|
||||
text = icon,
|
||||
position = {x = 0.5, y = 0.05},
|
||||
offset = {x = -200.5, y = 126},
|
||||
@ -182,71 +180,3 @@ function awards.unlock(name, award)
|
||||
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
|
||||
|
@ -2,7 +2,9 @@
|
||||
|
||||
local S, NS = awards.gettext, awards.ngettext
|
||||
|
||||
awards.registered_awards = {}
|
||||
awards.on = {}
|
||||
awards.on_unlock = {}
|
||||
|
||||
local default_def = {}
|
||||
|
||||
@ -41,12 +43,11 @@ function awards.register_trigger(tname, tdef)
|
||||
}
|
||||
tdef.register(tmp)
|
||||
|
||||
function def.get_progress(_, data)
|
||||
local current = math.min(data[tname] or 0, tmp.target)
|
||||
function def.getProgress(_, data)
|
||||
local done = math.min(data[tname] or 0, tmp.target)
|
||||
return {
|
||||
current = current,
|
||||
target = tmp.target,
|
||||
label = S(tdef.progress, current, tmp.target),
|
||||
perc = done / tmp.target,
|
||||
label = S(tdef.progress, done, tmp.target),
|
||||
}
|
||||
end
|
||||
|
||||
@ -101,7 +102,7 @@ function awards.register_trigger(tname, tdef)
|
||||
end
|
||||
|
||||
-- Called to get progress values and labels
|
||||
function def.get_progress(_, data)
|
||||
function def.getProgress(_, data)
|
||||
data[tname] = data[tname] or {}
|
||||
|
||||
local done
|
||||
@ -113,8 +114,7 @@ function awards.register_trigger(tname, tdef)
|
||||
done = math.min(done, tmp.target)
|
||||
|
||||
return {
|
||||
current = done,
|
||||
target = tmp.target,
|
||||
perc = done / tmp.target,
|
||||
label = S(tdef.progress, done, tmp.target),
|
||||
}
|
||||
end
|
||||
@ -144,8 +144,8 @@ function awards.register_trigger(tname, tdef)
|
||||
if tdef.key_is_item and key:sub(1, 6) ~= "group:" then
|
||||
local itemdef = minetest.registered_items[key]
|
||||
if itemdef then
|
||||
for groupname,rating in pairs(itemdef.groups or {}) do
|
||||
if rating ~= 0 and tdef.watched_groups[groupname] then
|
||||
for groupname, _ in pairs(itemdef.groups or {}) do
|
||||
if tdef.watched_groups[groupname] then
|
||||
tdef.notify(player, "group:" .. groupname, n)
|
||||
end
|
||||
end
|
||||
@ -160,9 +160,8 @@ function awards.register_trigger(tname, tdef)
|
||||
data[tname] = data[tname] or {}
|
||||
local currentVal = (data[tname][key] or 0) + n
|
||||
data[tname][key] = currentVal
|
||||
data[tname].__total = (data[tname].__total or 0)
|
||||
if key:sub(1, 6) ~= "group:" then
|
||||
data[tname].__total = data[tname].__total + n
|
||||
data[tname].__total = (data[tname].__total or 0) + n
|
||||
end
|
||||
|
||||
tdef:run_callbacks(player, data, function(entry)
|
||||
@ -174,6 +173,7 @@ function awards.register_trigger(tname, tdef)
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
if current >= entry.target then
|
||||
return entry.award
|
||||
end
|
||||
@ -201,7 +201,7 @@ end
|
||||
|
||||
function awards.increment_item_counter(data, field, itemname, count)
|
||||
itemname = minetest.registered_aliases[itemname] or itemname
|
||||
data[field][itemname] = (data[field][itemname] or 0) + (count or 1)
|
||||
data[field][itemname] = (data[field][itemname] or 0) + 1
|
||||
end
|
||||
|
||||
function awards.get_item_count(data, field, itemname)
|
||||
|
304
src/awards.lua
304
src/awards.lua
@ -2,13 +2,12 @@
|
||||
|
||||
local S = awards.gettext
|
||||
|
||||
|
||||
-- Saint-Maclou
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
awards.register_award("award_saint_maclou",{
|
||||
title = S("Saint-Maclou"),
|
||||
description = S("Place 20 coal checkers."),
|
||||
icon = "awards_saint_maclou.png",
|
||||
icon = "awards_novicebuilder.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
node = "moreblocks:coal_checker",
|
||||
@ -20,7 +19,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
awards.register_award("award_castorama",{
|
||||
title = S("Castorama"),
|
||||
description = S("Place 20 iron checkers."),
|
||||
icon = "awards_castorama.png",
|
||||
icon = "awards_novicebuilder.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
node = "moreblocks:iron_checker",
|
||||
@ -32,7 +31,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
awards.register_award("award_sam_the_trapper",{
|
||||
title = S("Sam the Trapper"),
|
||||
description = S("Place 2 trap stones."),
|
||||
icon = "awards_sam_the_trapper.png",
|
||||
icon = "awards_novicebuilder.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
node = "moreblocks:trap_stone",
|
||||
@ -47,7 +46,7 @@ if minetest.get_modpath("unified_inventory") then
|
||||
awards.register_award("awards_ui_bags", {
|
||||
title = S("Backpacker"),
|
||||
description = S("Craft 4 large bags."),
|
||||
icon = "awards_backpacker.png",
|
||||
icon = "awards_ui_bags.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "unified_inventory:bag_large",
|
||||
@ -61,7 +60,7 @@ if minetest.get_modpath("fire") then
|
||||
awards.register_award("awards_pyro", {
|
||||
title = S("Pyromaniac"),
|
||||
description = S("Craft 8 times flint and steel."),
|
||||
icon = "awards_pyromaniac.png",
|
||||
icon = "fire_flint_steel.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "fire:flint_and_steel",
|
||||
@ -80,68 +79,14 @@ if minetest.get_modpath("fire") then
|
||||
}
|
||||
})
|
||||
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
|
||||
|
||||
-- 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
|
||||
-- Light it up
|
||||
awards.register_award("award_lightitup",{
|
||||
title = S("Light It Up"),
|
||||
description = S("Place 100 torches."),
|
||||
icon = "awards_light_it_up.png^awards_level1.png",
|
||||
icon = "awards_novicebuilder.png^awards_level1.png",
|
||||
difficulty = 0.01,
|
||||
trigger = {
|
||||
type = "place",
|
||||
@ -153,7 +98,7 @@ if minetest.get_modpath("default") then
|
||||
-- Light ALL the things!
|
||||
awards.register_award("award_well_lit",{
|
||||
title = S("Well Lit"),
|
||||
icon = "awards_well_lit.png^awards_level2.png",
|
||||
icon = "awards_novicebuilder.png^awards_level2.png",
|
||||
description = S("Place 1,000 torches."),
|
||||
difficulty = 0.01,
|
||||
trigger = {
|
||||
@ -166,7 +111,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_meselamp",{
|
||||
title = S("Really Well Lit"),
|
||||
description = S("Craft 10 mese lamps."),
|
||||
icon = "awards_really_well_lit.png",
|
||||
icon = "default_meselamp.png",
|
||||
difficulty = 0.2,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -178,7 +123,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_stonebrick", {
|
||||
title = S("Outpost"),
|
||||
description = S("Craft 200 stone bricks."),
|
||||
icon = "awards_outpost.png^awards_level1.png",
|
||||
icon = "default_stone_brick.png^awards_level1.png",
|
||||
difficulty = 0.08,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -190,7 +135,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_stonebrick2", {
|
||||
title = S("Watchtower"),
|
||||
description = S("Craft 800 stone bricks."),
|
||||
icon = "awards_watchtower.png^awards_level2.png",
|
||||
icon = "default_stone_brick.png^awards_level2.png",
|
||||
difficulty = 0.08,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -202,7 +147,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_stonebrick3", {
|
||||
title = S("Fortress"),
|
||||
description = S("Craft 3,200 stone bricks."),
|
||||
icon = "awards_fortress.png^awards_level3.png",
|
||||
icon = "default_stone_brick.png^awards_level3.png",
|
||||
difficulty = 0.08,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -214,7 +159,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_desert_stonebrick", {
|
||||
title = S("Desert Dweller"),
|
||||
description = S("Craft 400 desert stone bricks."),
|
||||
icon = "awards_desert_dweller.png",
|
||||
icon = "default_desert_stone_brick.png",
|
||||
difficulty = 0.09,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -226,7 +171,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_desertstonebrick", {
|
||||
title = S("Pharaoh"),
|
||||
description = S("Craft 100 sandstone bricks."),
|
||||
icon = "awards_pharaoh.png",
|
||||
icon = "default_sandstone_brick.png",
|
||||
difficulty = 0.09,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -238,7 +183,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_bookshelf", {
|
||||
title = S("Little Library"),
|
||||
description = S("Craft 7 bookshelves."),
|
||||
icon = "awards_little_library.png",
|
||||
icon = "default_bookshelf.png",
|
||||
difficulty = 0.2,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -250,7 +195,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_obsidian", {
|
||||
title = S("Lava and Water"),
|
||||
description = S("Mine your first obsidian."),
|
||||
icon = "awards_lava_and_water.png^awards_level1.png",
|
||||
icon = "default_obsidian.png^awards_level1.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 1.5,
|
||||
trigger = {
|
||||
@ -264,7 +209,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_obsessed_with_obsidian",{
|
||||
title = S("Obsessed with Obsidian"),
|
||||
description = S("Mine 50 obsidian."),
|
||||
icon = "awards_obsessed_with_obsidian.png^awards_level2.png",
|
||||
icon = "default_obsidian.png^awards_level2.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 1.5,
|
||||
trigger = {
|
||||
@ -278,8 +223,8 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_lavaminer",{
|
||||
title = S("Lava Miner"),
|
||||
description = S("Mine any block while being very close to lava."),
|
||||
icon = "awards_lava_miner.png",
|
||||
background = "awards_bg_mining.png",
|
||||
icon = "default_lava.png",
|
||||
difficulty = 1,
|
||||
})
|
||||
awards.register_on_dig(function(player,data)
|
||||
@ -295,7 +240,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_on_the_way", {
|
||||
title = S("On The Way"),
|
||||
description = S("Place 100 rails."),
|
||||
icon = "awards_on_the_way.png",
|
||||
icon = "carts_rail_straight.png",
|
||||
difficulty = 0.1,
|
||||
trigger = {
|
||||
type = "place",
|
||||
@ -307,7 +252,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_lumberjack_firstday", {
|
||||
title = S("First Day in the Woods"),
|
||||
description = S("Dig 6 tree blocks."),
|
||||
icon = "awards_first_day_in_the_woods.png^awards_level1.png",
|
||||
icon = "default_tree.png^awards_level1.png",
|
||||
difficulty = 0.03,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -320,7 +265,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_lumberjack", {
|
||||
title = S("Lumberjack"),
|
||||
description = S("Dig 36 tree blocks."),
|
||||
icon = "awards_lumberjack.png^awards_level2.png",
|
||||
icon = "default_tree.png^awards_level2.png",
|
||||
difficulty = 0.03,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -333,7 +278,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_lumberjack_semipro", {
|
||||
title = S("Semi-pro Lumberjack"),
|
||||
description = S("Dig 216 tree blocks."),
|
||||
icon = "awards_semi_pro_lumberjack.png^awards_level3.png",
|
||||
icon = "default_tree.png^awards_level3.png",
|
||||
difficulty = 0.03,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -346,7 +291,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_lumberjack_professional", {
|
||||
title = S("Professional Lumberjack"),
|
||||
description = S("Dig 1,296 tree blocks."),
|
||||
icon = "awards_professional_lumberjack.png^awards_level4.png",
|
||||
icon = "default_tree.png^awards_level4.png",
|
||||
difficulty = 0.03,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -359,7 +304,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_junglebaby", {
|
||||
title = S("Junglebaby"),
|
||||
description = S("Dig 100 jungle tree blocks."),
|
||||
icon = "awards_junglebaby.png^awards_level1.png",
|
||||
icon = "default_jungletree.png^awards_level1.png",
|
||||
difficulty = 0.05,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -372,7 +317,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_jungleman", {
|
||||
title = S("Jungleman"),
|
||||
description = S("Dig 1,000 jungle tree blocks."),
|
||||
icon = "awards_jungleman.png^awards_level2.png",
|
||||
icon = "default_jungletree.png^awards_level2.png",
|
||||
difficulty = 0.05,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -385,7 +330,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_mesefind", {
|
||||
title = S("First Mese Find"),
|
||||
description = S("Mine your first mese ore."),
|
||||
icon = "awards_first_mese_find.png",
|
||||
icon = "default_stone.png^default_mineral_mese.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 1,
|
||||
trigger = {
|
||||
@ -400,7 +345,7 @@ if minetest.get_modpath("default") then
|
||||
secret = true,
|
||||
title = S("Mese Mastery"),
|
||||
description = S("Mine a mese block."),
|
||||
icon = "awards_mese_mastery.png",
|
||||
icon = "default_mese_block.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 1.1,
|
||||
trigger = {
|
||||
@ -414,7 +359,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_youre_a_copper", {
|
||||
title = S("You’re a copper"),
|
||||
description = S("Dig 1,000 copper ores."),
|
||||
icon = "awards_youre_a_copper.png",
|
||||
icon = "default_stone.png^default_mineral_copper.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 0.2,
|
||||
trigger = {
|
||||
@ -428,7 +373,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_mine2", {
|
||||
title = S("Mini Miner"),
|
||||
description = S("Dig 100 stone blocks."),
|
||||
icon = "awards_mini_miner.png^awards_level1.png",
|
||||
icon = "awards_miniminer.png^awards_level1.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 0.02,
|
||||
trigger = {
|
||||
@ -442,7 +387,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_mine3", {
|
||||
title = S("Hardened Miner"),
|
||||
description = S("Dig 1,000 stone blocks."),
|
||||
icon = "awards_hardened_miner.png^awards_level2.png",
|
||||
icon = "awards_miniminer.png^awards_level2.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 0.02,
|
||||
trigger = {
|
||||
@ -456,7 +401,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_mine4", {
|
||||
title = S("Master Miner"),
|
||||
description = S("Dig 10,000 stone blocks."),
|
||||
icon = "awards_master_miner.png^awards_level3.png",
|
||||
icon = "awards_miniminer.png^awards_level3.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 0.02,
|
||||
trigger = {
|
||||
@ -470,7 +415,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_marchand_de_sable", {
|
||||
title = S("Marchand De Sable"),
|
||||
description = S("Dig 1,000 sand."),
|
||||
icon = "awards_marchand_de_sable.png",
|
||||
icon = "default_sand.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 0.05,
|
||||
trigger = {
|
||||
@ -483,7 +428,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_crafter_of_sticks", {
|
||||
title = S("Crafter of Sticks"),
|
||||
description = S("Craft 100 sticks."),
|
||||
icon = "awards_crafter_of_sticks.png",
|
||||
icon = "default_stick.png",
|
||||
difficulty = 0.01,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -495,7 +440,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_junglegrass", {
|
||||
title = S("Jungle Discoverer"),
|
||||
description = S("Mine your first jungle grass."),
|
||||
icon = "awards_jungle_discoverer.png",
|
||||
icon = "default_junglegrass.png",
|
||||
difficulty = 0.009,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -507,7 +452,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_grass", {
|
||||
title = S("Grasslands Discoverer"),
|
||||
description = S("Mine some grass."),
|
||||
icon = "awards_grasslands_discoverer.png",
|
||||
icon = "default_grass_3.png",
|
||||
difficulty = 0.009,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -519,7 +464,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_dry_grass", {
|
||||
title = S("Savannah Discoverer"),
|
||||
description = S("Mine some dry grass."),
|
||||
icon = "awards_savannah_discoverer.png",
|
||||
icon = "default_dry_grass_3.png",
|
||||
difficulty = 0.009,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -531,7 +476,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_cactus", {
|
||||
title = S("Desert Discoverer"),
|
||||
description = S("Mine your first cactus."),
|
||||
icon = "awards_desert_discoverer.png",
|
||||
icon = "default_cactus_side.png",
|
||||
difficulty = 0.03,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -543,7 +488,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_dry_shrub", {
|
||||
title = S("Far Lands"),
|
||||
description = S("Mine your first dry shrub."),
|
||||
icon = "awards_far_lands.png",
|
||||
icon = "default_dry_shrub.png",
|
||||
difficulty = 0.009,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -555,7 +500,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_ice", {
|
||||
title = S("Glacier Discoverer"),
|
||||
description = S("Mine your first ice."),
|
||||
icon = "awards_glacier_discoverer.png",
|
||||
icon = "default_ice.png",
|
||||
difficulty = 0.02,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -568,7 +513,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_snowblock", {
|
||||
title = S("Very Simple Snow Man"),
|
||||
description = S("Place two snow blocks."),
|
||||
icon = "awards_very_simple_snow_man.png",
|
||||
icon = "default_snow.png",
|
||||
difficulty = 0.02,
|
||||
trigger = {
|
||||
type = "place",
|
||||
@ -580,7 +525,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_gold_ore", {
|
||||
title = S("First Gold Find"),
|
||||
description = S("Mine your first gold ore."),
|
||||
icon = "awards_first_gold_find.png^awards_level1.png",
|
||||
icon = "default_stone.png^default_mineral_gold.png^awards_level1.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 0.9,
|
||||
trigger = {
|
||||
@ -593,7 +538,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_gold_rush", {
|
||||
title = S("Gold Rush"),
|
||||
description = S("Mine 45 gold ores."),
|
||||
icon = "awards_gold_rush.png^awards_level2.png",
|
||||
icon = "default_stone.png^default_mineral_gold.png^awards_level2.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 0.9,
|
||||
trigger = {
|
||||
@ -606,7 +551,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_diamond_ore", {
|
||||
title = S("Wow, I am Diamonds!"),
|
||||
description = S("Mine your first diamond ore."),
|
||||
icon = "awards_wow_i_am_diamonds.png^awards_level1.png",
|
||||
icon = "default_stone.png^default_mineral_diamond.png^awards_level1.png",
|
||||
difficulty = 1,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -618,7 +563,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_diamond_rush", {
|
||||
title = S("Girl's Best Friend"),
|
||||
description = S("Mine 18 diamond ores."),
|
||||
icon = "awards_girls_best_friend.png^awards_level2.png",
|
||||
icon = "default_stone.png^default_mineral_diamond.png^awards_level2.png",
|
||||
background = "awards_bg_mining.png",
|
||||
difficulty = 1,
|
||||
trigger = {
|
||||
@ -631,7 +576,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_diamondblock", {
|
||||
title = S("Hardest Block on Earth"),
|
||||
description = S("Craft a diamond block."),
|
||||
icon = "awards_hardest_block_on_earth.png",
|
||||
icon = "default_diamond_block.png",
|
||||
difficulty = 1.1,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -643,7 +588,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("awards_mossycobble", {
|
||||
title = S("In the Dungeon"),
|
||||
description = S("Mine a mossy cobblestone."),
|
||||
icon = "awards_in_the_dungeon.png",
|
||||
icon = "default_mossycobble.png",
|
||||
difficulty = 0.9,
|
||||
trigger = {
|
||||
type = "dig",
|
||||
@ -655,7 +600,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_furnace", {
|
||||
title = S("Smelter"),
|
||||
description = S("Craft 10 furnaces."),
|
||||
icon = "awards_smelter.png",
|
||||
icon = "default_furnace_front.png",
|
||||
difficulty = 0.08,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -667,7 +612,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_chest", {
|
||||
title = S("Treasurer"),
|
||||
description = S("Craft 15 chests."),
|
||||
icon = "awards_treasurer.png",
|
||||
icon = "default_chest_front.png",
|
||||
difficulty = 0.08,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -677,9 +622,9 @@ if minetest.get_modpath("default") then
|
||||
})
|
||||
|
||||
awards.register_award("award_chest2", {
|
||||
title = S("Banker"),
|
||||
title = S("Bankier"),
|
||||
description = S("Craft 30 locked chests."),
|
||||
icon = "awards_banker.png",
|
||||
icon = "default_chest_lock.png",
|
||||
difficulty = 0.08,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -691,7 +636,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_brick", {
|
||||
title = S("Bricker"),
|
||||
description = S("Craft 200 brick blocks."),
|
||||
icon = "awards_bricker.png",
|
||||
icon = "default_brick.png",
|
||||
difficulty = 0.03,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -703,7 +648,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_obsidianbrick", {
|
||||
title = S("House of Obsidian"),
|
||||
description = S("Craft 100 obsidian bricks."),
|
||||
icon = "awards_house_of_obsidian.png",
|
||||
icon = "default_obsidian_brick.png",
|
||||
difficulty = 0.4,
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -715,7 +660,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_placestone", {
|
||||
title = S("Build a Cave"),
|
||||
description = S("Place 100 stone."),
|
||||
icon = "awards_build_a_cave.png",
|
||||
icon = "default_stone.png",
|
||||
difficulty = 0.1,
|
||||
trigger = {
|
||||
type = "place",
|
||||
@ -727,7 +672,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_woodladder", {
|
||||
title = S("Long Ladder"),
|
||||
description = S("Place 400 wooden ladders."),
|
||||
icon = "awards_long_ladder.png",
|
||||
icon = "default_ladder_wood.png",
|
||||
difficulty = 0.1,
|
||||
trigger = {
|
||||
type = "place",
|
||||
@ -739,7 +684,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_steelladder", {
|
||||
title = S("Industrial Age"),
|
||||
description = S("Place 40 steel ladders."),
|
||||
icon = "awards_industrial_age.png",
|
||||
icon = "default_ladder_steel.png",
|
||||
difficulty = 1,
|
||||
trigger = {
|
||||
type = "place",
|
||||
@ -751,7 +696,7 @@ if minetest.get_modpath("default") then
|
||||
awards.register_award("award_apples", {
|
||||
title = S("Yummy!"),
|
||||
description = S("Eat 80 apples."),
|
||||
icon = "awards_yummy.png",
|
||||
icon = "default_apple.png",
|
||||
difficulty = 0.1,
|
||||
trigger = {
|
||||
type = "eat",
|
||||
@ -759,57 +704,12 @@ if minetest.get_modpath("default") then
|
||||
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
|
||||
|
||||
if minetest.get_modpath("vessels") then
|
||||
awards.register_award("award_vessels_shelf", {
|
||||
title = S("Glasser"),
|
||||
icon = "awards_glasser.png",
|
||||
icon = "vessels_shelf.png",
|
||||
description = S("Craft 14 vessels shelves."),
|
||||
trigger = {
|
||||
type = "craft",
|
||||
@ -823,7 +723,7 @@ if minetest.get_modpath("farming") then
|
||||
awards.register_award("awards_farmer", {
|
||||
title = S("Farming Skills Acquired"),
|
||||
description = S("Harvest a fully grown wheat plant."),
|
||||
icon = "awards_farming_skills_acquired.png^awards_level1.png",
|
||||
icon = "farming_wheat_8.png^awards_level1.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "farming:wheat_8",
|
||||
@ -833,7 +733,7 @@ if minetest.get_modpath("farming") then
|
||||
awards.register_award("awards_farmer2", {
|
||||
title = S("Field Worker"),
|
||||
description = S("Harvest 25 fully grown wheat plants."),
|
||||
icon = "awards_field_worker.png^awards_level2.png",
|
||||
icon = "farming_wheat_8.png^awards_level2.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "farming:wheat_8",
|
||||
@ -844,7 +744,7 @@ if minetest.get_modpath("farming") then
|
||||
awards.register_award("awards_farmer3", {
|
||||
title = S("Aspiring Farmer"),
|
||||
description = S("Harvest 125 fully grown wheat plants."),
|
||||
icon = "awards_aspiring_farmer.png^awards_level3.png",
|
||||
icon = "farming_wheat_8.png^awards_level3.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "farming:wheat_8",
|
||||
@ -855,7 +755,7 @@ if minetest.get_modpath("farming") then
|
||||
awards.register_award("awards_farmer4", {
|
||||
title = S("Wheat Magnate"),
|
||||
description = S("Harvest 625 fully grown wheat plants."),
|
||||
icon = "awards_wheat_magnate.png^awards_level4.png",
|
||||
icon = "farming_wheat_8.png^awards_level4.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "farming:wheat_8",
|
||||
@ -866,7 +766,7 @@ if minetest.get_modpath("farming") then
|
||||
awards.register_award("award_bread", {
|
||||
title = S("Baker"),
|
||||
description = S("Eat 10 loaves of bread."),
|
||||
icon = "awards_baker.png",
|
||||
icon = "farming_bread.png",
|
||||
trigger = {
|
||||
type = "eat",
|
||||
item = "farming:bread",
|
||||
@ -880,7 +780,7 @@ if minetest.get_modpath("wool") and minetest.get_modpath("farming") then
|
||||
awards.register_award("awards_wool", {
|
||||
title = S("Wool Over Your Eyes"),
|
||||
description = S("Craft 250 white wool."),
|
||||
icon = "awards_wool_over_your_eyes.png",
|
||||
icon = "wool_white.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "wool:white",
|
||||
@ -893,7 +793,7 @@ if minetest.get_modpath("beds") then
|
||||
awards.register_award("award_bed", {
|
||||
title = S("Hotelier"),
|
||||
description = S("Craft 15 fancy beds."),
|
||||
icon = "awards_hotelier.png",
|
||||
icon = "beds_bed_fancy.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item= "beds:fancy_bed_bottom",
|
||||
@ -906,7 +806,7 @@ if minetest.get_modpath("stairs") then
|
||||
awards.register_award("award_stairs_goldblock", {
|
||||
title = S("Filthy Rich"),
|
||||
description = S("Craft 24 gold block stairs."),
|
||||
icon = "awards_filthy_rich.png",
|
||||
icon = "default_gold_block.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item= "stairs:stair_goldblock",
|
||||
@ -919,7 +819,7 @@ if minetest.get_modpath("dye") then
|
||||
awards.register_award("awards_dye_red", {
|
||||
title = S("Roses Are Red"),
|
||||
description = S("Craft 400 red dyes."),
|
||||
icon = "awards_roses_are_red.png",
|
||||
icon = "dye_red.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "dye:red",
|
||||
@ -930,7 +830,7 @@ if minetest.get_modpath("dye") then
|
||||
awards.register_award("awards_dye_yellow", {
|
||||
title = S("Dandelions are Yellow"),
|
||||
description = S("Craft 400 yellow dyes."),
|
||||
icon = "awards_dandelions_are_yellow.png",
|
||||
icon = "dye_yellow.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item = "dye:yellow",
|
||||
@ -941,7 +841,7 @@ if minetest.get_modpath("dye") then
|
||||
awards.register_award("awards_dye_blue", {
|
||||
title = S("Geraniums are Blue"),
|
||||
description = S("Craft 400 blue dyes."),
|
||||
icon = "awards_geraniums_are_blue.png",
|
||||
icon = "dye_blue.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item= "dye:blue",
|
||||
@ -952,7 +852,7 @@ if minetest.get_modpath("dye") then
|
||||
awards.register_award("awards_dye_white", {
|
||||
title = S("White Color Stock"),
|
||||
description = S("Craft 100 white dyes."),
|
||||
icon = "awards_white_color_stock.png",
|
||||
icon = "dye_white.png",
|
||||
trigger = {
|
||||
type = "craft",
|
||||
item= "dye:white",
|
||||
@ -965,7 +865,7 @@ if minetest.get_modpath("flowers") then
|
||||
awards.register_award("awards_brown_mushroom1", {
|
||||
title = S("Tasty Mushrooms"),
|
||||
description = S("Eat 3 brown mushrooms."),
|
||||
icon = "awards_tasty_mushrooms.png^awards_level1.png",
|
||||
icon = "flowers_mushroom_brown.png^awards_level1.png",
|
||||
trigger = {
|
||||
type = "eat",
|
||||
item= "flowers:mushroom_brown",
|
||||
@ -975,7 +875,7 @@ if minetest.get_modpath("flowers") then
|
||||
awards.register_award("awards_brown_mushroom2", {
|
||||
title = S("Mushroom Lover"),
|
||||
description = S("Eat 33 brown mushrooms."),
|
||||
icon = "awards_mushroom_lover.png^awards_level2.png",
|
||||
icon = "flowers_mushroom_brown.png^awards_level2.png",
|
||||
trigger = {
|
||||
type = "eat",
|
||||
item= "flowers:mushroom_brown",
|
||||
@ -985,7 +885,7 @@ if minetest.get_modpath("flowers") then
|
||||
awards.register_award("awards_brown_mushroom3", {
|
||||
title = S("Underground Mushroom Farmer"),
|
||||
description = S("Eat 333 brown mushrooms."),
|
||||
icon = "awards_underground_mushroom_farmer.png^awards_level3.png",
|
||||
icon = "flowers_mushroom_brown.png^awards_level3.png",
|
||||
trigger = {
|
||||
type = "eat",
|
||||
item= "flowers:mushroom_brown",
|
||||
@ -1012,15 +912,15 @@ minetest.after(0, function()
|
||||
|
||||
awards.register_award("awards_builder1", {
|
||||
title = S("Builder"),
|
||||
icon = "awards_builder.png^awards_level1.png",
|
||||
icon = "awards_house.png^awards_level1.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
target = 1000,
|
||||
},
|
||||
})
|
||||
awards.register_award("awards_builder2", {
|
||||
title = S("Engineer"),
|
||||
icon = "awards_engineer.png^awards_level2.png",
|
||||
title = S("Constructor"),
|
||||
icon = "awards_house.png^awards_level2.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
target = 5000,
|
||||
@ -1028,7 +928,7 @@ minetest.after(0, function()
|
||||
})
|
||||
awards.register_award("awards_builder3", {
|
||||
title = S("Architect"),
|
||||
icon = "awards_architect.png^awards_level3.png",
|
||||
icon = "awards_house.png^awards_level3.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
target = 10000,
|
||||
@ -1036,7 +936,7 @@ minetest.after(0, function()
|
||||
})
|
||||
awards.register_award("awards_builder4", {
|
||||
title = S("Master Architect"),
|
||||
icon = "awards_master_architect.png^awards_level4.png",
|
||||
icon = "awards_house.png^awards_level4.png",
|
||||
trigger = {
|
||||
type = "place",
|
||||
target = 25000,
|
||||
@ -1050,7 +950,7 @@ if minetest.get_modpath("nyancat") then
|
||||
secret = true,
|
||||
title = S("A Cat in a Pop-Tart?!"),
|
||||
description = S("Mine a nyan cat."),
|
||||
icon = "awards_a_cat_in_a_pop_tart.png",
|
||||
icon = "nyancat_front.png",
|
||||
trigger = {
|
||||
type = "dig",
|
||||
node = "nyancat:nyancat",
|
||||
@ -1058,53 +958,3 @@ if minetest.get_modpath("nyancat") then
|
||||
}
|
||||
})
|
||||
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
|
||||
|
@ -2,28 +2,39 @@
|
||||
|
||||
local S = awards.gettext
|
||||
|
||||
minetest.register_privilege("awards_admin", { description = "Can manage awards of given player" })
|
||||
|
||||
minetest.register_chatcommand("awards", {
|
||||
params = S("[c|clear|disable|enable]"),
|
||||
description = S("Show, clear, disable or enable your awards"),
|
||||
params = "[c|clear|disable|enable] [player_name]",
|
||||
description = "Show, clear, disable or enable player's awards",
|
||||
func = function(name, param)
|
||||
if param == "clear" then
|
||||
awards.clear_player(name)
|
||||
minetest.chat_send_player(name,
|
||||
S("All your awards and statistics have been cleared. You can now start again."))
|
||||
elseif param == "disable" then
|
||||
awards.disable(name)
|
||||
minetest.chat_send_player(name, S("You have disabled awards."))
|
||||
elseif param == "enable" then
|
||||
awards.enable(name)
|
||||
minetest.chat_send_player(name, S("You have enabled awards."))
|
||||
elseif param == "c" then
|
||||
awards.show_to(name, name, nil, true)
|
||||
else
|
||||
if not minetest.check_player_privs(name, { awards_admin = true }) then
|
||||
return false, "You need awards_admin privilege!"
|
||||
end
|
||||
local action, playern = param:split(" ")[1], param:split(" ")[2] or name
|
||||
if action == "clear" then
|
||||
awards.clear_player(playern)
|
||||
minetest.chat_send_player(playern,
|
||||
S("All your awards and statistics have been cleared. You can now start again."))
|
||||
minetest.chat_send_player(name, "All awards and statistics of "..playern.." have been cleared.")
|
||||
elseif action == "disable" then
|
||||
awards.disable(playern)
|
||||
minetest.chat_send_player(playern, "Your awards are disabled.")
|
||||
minetest.chat_send_player(name, "You have disabled awards of "..playern..".")
|
||||
elseif action == "enable" then
|
||||
awards.enable(playern)
|
||||
minetest.chat_send_player(playern, "Your awards are enabled.")
|
||||
minetest.chat_send_player(name, "You have enabled awards of "..playern..".")
|
||||
elseif action == "c" then
|
||||
awards.show_to(playern, name, nil, true)
|
||||
elseif not action then
|
||||
awards.show_to(name, name, nil, false)
|
||||
else
|
||||
awards.show_to(action, name, nil, true)
|
||||
end
|
||||
|
||||
if (param == "disable" or param == "enable") and minetest.global_exists("sfinv") then
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if (action == "disable" or action == "enable") and minetest.global_exists("sfinv") and not minetest.get_modpath("unified_inventory") then
|
||||
local player = minetest.get_player_by_name(playern)
|
||||
if player then
|
||||
sfinv.set_player_inventory_formspec(player)
|
||||
end
|
||||
|
87
src/gui.lua
87
src/gui.lua
@ -2,9 +2,73 @@
|
||||
|
||||
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)
|
||||
local formspec = ""
|
||||
local awards_list = awards.get_award_states(name)
|
||||
local awards_list = order_awards(name)
|
||||
local data = awards.player(name)
|
||||
|
||||
if #awards_list == 0 then
|
||||
formspec = formspec .. "label[3.9,1.5;"..minetest.formspec_escape(S("Error: No achivements available.")).."]"
|
||||
@ -40,13 +104,17 @@ function awards.get_formspec(name, to, sid)
|
||||
";]"
|
||||
|
||||
if sdef and sdef.icon then
|
||||
formspec = formspec .. "image[0.45,0;3.5,3.5;" .. sdef.icon .. "]" -- adjusted values from 0.6,0;3,3
|
||||
formspec = formspec .. "image[0.6,0;3,3;" .. sdef.icon .. "]"
|
||||
end
|
||||
|
||||
if sitem.progress then
|
||||
local barwidth = 3.95
|
||||
local perc = sitem.progress.current / sitem.progress.target
|
||||
local label = sitem.progress.label
|
||||
local barwidth = 3.95
|
||||
local perc = nil
|
||||
local label = nil
|
||||
if sdef.getProgress and data then
|
||||
local res = sdef:getProgress(data)
|
||||
perc = res.perc
|
||||
label = res.label
|
||||
end
|
||||
if perc then
|
||||
if perc > 1 then
|
||||
perc = 1
|
||||
end
|
||||
@ -56,7 +124,6 @@ function awards.get_formspec(name, to, sid)
|
||||
formspec = formspec .. "label[1.6,8.15;" .. minetest.formspec_escape(label) .. "]"
|
||||
end
|
||||
end
|
||||
|
||||
if sdef and sdef.description then
|
||||
formspec = formspec .. "box[-0.05,3.75;3.9,4.2;#000]"
|
||||
formspec = formspec .. "textarea[0.25,3.75;3.9,4.2;;" ..
|
||||
@ -101,13 +168,13 @@ function awards.show_to(name, to, sid, text)
|
||||
if name == "" or name == nil then
|
||||
name = to
|
||||
end
|
||||
local data = awards.player(to)
|
||||
local data = awards.player(name)
|
||||
if name == to and data.disabled then
|
||||
minetest.chat_send_player(name, S("You've disabled awards. Type /awards enable to reenable."))
|
||||
return
|
||||
end
|
||||
if text then
|
||||
local awards_list = awards.get_award_states(name)
|
||||
local awards_list = order_awards(name)
|
||||
if #awards_list == 0 then
|
||||
minetest.chat_send_player(to, S("Error: No award available."))
|
||||
return
|
||||
|
@ -14,10 +14,6 @@
|
||||
-- 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", {
|
||||
type = "counted",
|
||||
@ -26,7 +22,7 @@ awards.register_trigger("chat", {
|
||||
})
|
||||
minetest.register_on_chat_message(function(name, message)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player_ok(player) or string.find(message, "/") then
|
||||
if not player or string.find(message, "/") then
|
||||
return
|
||||
end
|
||||
|
||||
@ -72,7 +68,7 @@ awards.register_trigger("dig", {
|
||||
key_is_item = true,
|
||||
})
|
||||
minetest.register_on_dignode(function(pos, node, player)
|
||||
if not player_ok(player) or not pos or not node then
|
||||
if not player or not pos or not node then
|
||||
return
|
||||
end
|
||||
|
||||
@ -93,7 +89,7 @@ awards.register_trigger("place", {
|
||||
key_is_item = true,
|
||||
})
|
||||
minetest.register_on_placenode(function(pos, node, player)
|
||||
if not player_ok(player) or not pos or not node then
|
||||
if not player or not pos or not node then
|
||||
return
|
||||
end
|
||||
|
||||
@ -113,15 +109,15 @@ awards.register_trigger("craft", {
|
||||
end,
|
||||
key_is_item = true,
|
||||
})
|
||||
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||
if not player_ok(player) or itemstack:is_empty() then
|
||||
return
|
||||
end
|
||||
|
||||
local itemname = itemstack:get_name()
|
||||
itemname = minetest.registered_aliases[itemname] or itemname
|
||||
awards.notify_craft(player, itemname, itemstack:get_count())
|
||||
end)
|
||||
--minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||
-- if not player or itemstack:is_empty() then
|
||||
-- return
|
||||
-- end
|
||||
--
|
||||
-- local itemname = itemstack:get_name()
|
||||
-- itemname = minetest.registered_aliases[itemname] or itemname
|
||||
-- awards.notify_craft(player, itemname, itemstack:get_count())
|
||||
--end)
|
||||
|
||||
|
||||
awards.register_trigger("eat", {
|
||||
@ -135,11 +131,11 @@ awards.register_trigger("eat", {
|
||||
key_is_item = true,
|
||||
})
|
||||
minetest.register_on_item_eat(function(_, _, itemstack, player, _)
|
||||
if not player_ok(player) or itemstack:is_empty() then
|
||||
if not player or itemstack:is_empty() then
|
||||
return
|
||||
end
|
||||
|
||||
local itemname = itemstack:get_name()
|
||||
itemname = minetest.registered_aliases[itemname] or itemname
|
||||
awards.notify_eat(player, itemname)
|
||||
awards.notify_craft(player, itemname, itemstack:get_count())
|
||||
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.
@ -1,428 +0,0 @@
|
||||
__________ .___ _____
|
||||
\______ \ ____ _____ __| _/ / \ ____
|
||||
| _// __ \\__ \ / __ | / \ / \_/ __ \
|
||||
| | \ ___/ / __ \_/ /_/ | / 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.
Before Width: | Height: | Size: 45 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.0 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user