mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-25 04:13:44 +01:00
6fd799ac42
Fixed the error that was thrown when the advancement is unlocked and also fixed the popup HUD so the advancement title fits correctly
550 lines
16 KiB
Lua
550 lines
16 KiB
Lua
-- Settings
|
|
|
|
-- If true, activates achievements from other Minecraft editions (XBox, PS, etc.)
|
|
local non_pc_achievements = false
|
|
|
|
local S = minetest.get_translator(minetest.get_current_modname())
|
|
|
|
-- Achievements from PC Edition
|
|
|
|
awards.register_achievement("mcl_buildWorkBench", {
|
|
title = S("Benchmarking"),
|
|
description = S("Craft a crafting table from 4 wooden planks."),
|
|
icon = "crafting_workbench_front.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_crafting_table:crafting_table",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
awards.register_achievement("mcl:buildPickaxe", {
|
|
title = S("Time to Mine!"),
|
|
description = S("Use a crafting table to craft a wooden pickaxe from wooden planks and sticks."),
|
|
icon = "default_tool_woodpick.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_tools:pick_wood",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
awards.register_achievement("mcl:buildFurnace", {
|
|
title = S("Hot Topic"),
|
|
description = S("Use 8 cobblestones to craft a furnace."),
|
|
icon = "default_furnace_front.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_furnaces:furnace",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
awards.register_achievement("mcl:buildHoe", {
|
|
title = S("Time to Farm!"),
|
|
description = S("Use a crafting table to craft a wooden hoe from wooden planks and sticks."),
|
|
icon = "farming_tool_woodhoe.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_farming:hoe_wood",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
awards.register_achievement("mcl:makeBread", {
|
|
title = S("Bake Bread"),
|
|
description = S("Use wheat to craft a bread."),
|
|
icon = "farming_bread.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_farming:bread",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
awards.register_achievement("mcl:bakeCake", {
|
|
title = S("The Lie"),
|
|
description = S("Craft a cake using wheat, sugar, milk and an egg."),
|
|
icon = "cake.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_cake:cake",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
awards.register_achievement("mcl:buildBetterPickaxe", {
|
|
title = S("Getting an Upgrade"),
|
|
-- TODO: This achievement should support all non-wood pickaxes
|
|
description = S("Craft a stone pickaxe using sticks and cobblestone."),
|
|
icon = "default_tool_stonepick.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_tools:pick_stone",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
awards.register_achievement("mcl:buildSword", {
|
|
title = S("Time to Strike!"),
|
|
description = S("Craft a wooden sword using wooden planks and sticks on a crafting table."),
|
|
icon = "default_tool_woodsword.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_tools:sword_wood",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Adventure",
|
|
})
|
|
|
|
awards.register_achievement("mcl:bookcase", {
|
|
title = S("Librarian"),
|
|
description = S("Craft a bookshelf."),
|
|
icon = "default_bookshelf.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_books:bookshelf",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
|
|
awards.register_achievement("mcl:buildIronPickaxe", {
|
|
title = S("Isn't It Iron Pick"),
|
|
description = S("Craft a iron pickaxe using sticks and iron."),
|
|
icon = "default_tool_steelpick.png",
|
|
trigger = {
|
|
type = "craft",
|
|
item = "mcl_tools:pick_iron",
|
|
target = 1
|
|
},
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
|
|
-- Item pickup achievements: These are awarded when picking up a certain item.
|
|
-- The achivements are manually given in the mod mcl_item_entity.
|
|
awards.register_achievement("mcl:diamonds", {
|
|
title = S("DIAMONDS!"),
|
|
description = S("Pick up a diamond from the floor."),
|
|
icon = "mcl_core_diamond_ore.png",
|
|
type = "Advancement",
|
|
})
|
|
awards.register_achievement("mcl:blazeRod", {
|
|
title = S("Into Fire"),
|
|
description = S("Pick up a blaze rod from the floor."),
|
|
icon = "mcl_mobitems_blaze_rod.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
awards.register_achievement("mcl:killCow", {
|
|
title = S("Cow Tipper"),
|
|
description = S("Pick up leather from the floor.\nHint: Cows and some other animals have a chance to drop leather, when killed."),
|
|
icon = "mcl_mobitems_leather.png",
|
|
type = "Advancement",
|
|
group = "Adventure",
|
|
})
|
|
awards.register_achievement("mcl:mineWood", {
|
|
title = S("Getting Wood"),
|
|
description = S("Pick up a wood item from the ground.\nHint: Punch a tree trunk until it pops out as an item."),
|
|
icon = "default_tree.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
|
|
awards.register_achievement("mcl:whosCuttingOnions", {
|
|
title = S("Who is Cutting Onions?"),
|
|
description = S("Pick up a crying obsidian from the floor."),
|
|
icon = "default_obsidian.png^mcl_core_crying_obsidian.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
awards.register_achievement("mcl:hiddenInTheDepths", {
|
|
title = S("Hidden in the Depths"),
|
|
description = S("Pick up an Ancient Debris from the floor."),
|
|
icon = "mcl_nether_ancient_debris_side.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
awards.register_achievement("mcl:PickUpDragonEgg", {
|
|
title = S("The Next Generation"),
|
|
description = S("Hold the Dragon Egg.\nHint: Pick up the egg from the ground and have it in your inventory."),
|
|
icon = "mcl_end_dragon_egg.png",
|
|
type = "Goal",
|
|
group = "End",
|
|
})
|
|
|
|
awards.register_achievement("mcl:skysTheLimit", {
|
|
title = S("Sky's the Limit"),
|
|
description = S("Find the elytra and prepare to fly above and beyond!"),
|
|
icon = "mcl_armor_inv_elytra.png",
|
|
type = "Goal",
|
|
group = "End",
|
|
}) -- TODO: Make also unlock when moved to inventory, not just picking up from ground
|
|
|
|
-- Smelting achivements: These are awarded when picking up an item from a furnace
|
|
-- output. They are given in mcl_furnaces.
|
|
awards.register_achievement("mcl:acquireIron", {
|
|
title = S("Aquire Hardware"),
|
|
description = S("Take an iron ingot from a furnace's output slot.\nHint: To smelt an iron ingot, put a fuel (like coal) and iron ore into a furnace."),
|
|
icon = "default_steel_ingot.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
awards.register_achievement("mcl:cookFish", {
|
|
title = S("Delicious Fish"),
|
|
description = S("Take a cooked fish from a furnace.\nHint: Use a fishing rod to catch a fish and cook it in a furnace."),
|
|
icon = "mcl_fishing_fish_cooked.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
-- Other achievements triggered outside of mcl_achievements
|
|
|
|
-- Triggered in mcl_minecarts
|
|
awards.register_achievement("mcl:onARail", {
|
|
title = S("On A Rail"),
|
|
description = S("Travel by minecart for at least 1000 meters from your starting point in a single ride."),
|
|
icon = "default_rail.png",
|
|
type = "Challenge",
|
|
group = "Adventure",
|
|
})
|
|
|
|
-- Triggered in mcl_bows
|
|
awards.register_achievement("mcl:snipeSkeleton", {
|
|
title = S("Sniper Duel"),
|
|
-- TODO: This achievement should be for killing, not hitting
|
|
-- TODO: The range should be 50, not 20. Nerfed because of reduced bow range
|
|
description = S("Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters."),
|
|
icon = "mcl_bows_bow.png",
|
|
type = "Challenge",
|
|
group = "Adventure",
|
|
})
|
|
|
|
-- Triggered in mcl_portals
|
|
awards.register_achievement("mcl:buildNetherPortal", {
|
|
title = S("We Need to Go Deeper"),
|
|
description = S("Use obsidian and a fire starter to construct a Nether portal."),
|
|
icon = "mcl_fire_flint_and_steel.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
|
|
awards.register_achievement("mcl:enterEndPortal", {
|
|
title = S("The End?"),
|
|
description = S("Or the beginning?\nHint: Enter an end portal."),
|
|
icon = "mcl_end_end_stone.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
|
|
awards.register_achievement("mcl:theNether", {
|
|
title = S("The Nether"),
|
|
description = S("Bring summer clothes.\nHint: Enter the Nether."),
|
|
icon = "mcl_nether_netherrack.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
-- Triggered in mcl_totems
|
|
awards.register_achievement("mcl:postMortal", {
|
|
title = S("Postmortal"),
|
|
description = S("Use a Totem of Undying to cheat death."),
|
|
icon = "mcl_totems_totem.png",
|
|
type = "Goal",
|
|
group = "Adventure",
|
|
})
|
|
|
|
-- Triggered in mcl_beds
|
|
awards.register_achievement("mcl:sweetDreams", {
|
|
title = S("Sweet Dreams"),
|
|
description = S("Sleep in a bed to change your respawn point."),
|
|
icon = "mcl_beds_bed_red_inv.png",
|
|
type = "Advancement",
|
|
group = "Adventure",
|
|
})
|
|
|
|
awards.register_achievement("mcl:notQuiteNineLives", {
|
|
title = S('Not Quite "Nine" Lives'),
|
|
description = S("Charge a Respawn Anchor to the maximum."),
|
|
icon = "respawn_anchor_side4.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
-- Triggered in mobs_mc
|
|
awards.register_achievement("mcl:whatAdeal", {
|
|
title = S("What A Deal!"),
|
|
description = S("Successfully trade with a Villager."),
|
|
icon = "mcl_core_emerald.png",
|
|
type = "Advancement",
|
|
group = "Adventure",
|
|
})
|
|
|
|
awards.register_achievement("mcl:tacticalFishing", {
|
|
title = S("Tactical Fishing"),
|
|
description = S("Catch a fish... without a fishing rod!"),
|
|
icon = "pufferfish_bucket.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
awards.register_achievement("mcl:cutestPredator", {
|
|
title = S("The Cutest Predator"),
|
|
description = S("Catch an Axolotl with a bucket!"),
|
|
icon = "axolotl_bucket.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
awards.register_achievement("mcl:witheringHeights", {
|
|
title = S("Withering Heights"),
|
|
description = S("Summon the wither from the dead."),
|
|
icon = "mcl_mobitems_nether_star.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
awards.register_achievement("mcl:freeTheEnd", {
|
|
title = S("Free the End"),
|
|
description = S("Kill the ender dragon. Good Luck!"),
|
|
icon = "(spawn_egg.png^[multiply:#252525)^(spawn_egg_overlay.png^[multiply:#b313c9)", -- TODO: Dragon Head Icon
|
|
type = "Advancement",
|
|
group = "End",
|
|
})
|
|
|
|
-- Triggered in mcl_fishing
|
|
awards.register_achievement("mcl:fishyBusiness", {
|
|
title = S("Fishy Business"),
|
|
description = S("Catch a fish.\nHint: Catch a fish, salmon, clownfish, or pufferfish."),
|
|
icon = "mcl_fishing_fishing_rod.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
-- Triggered in mcl_compass
|
|
awards.register_achievement("mcl:countryLode", {
|
|
title = S("Country Lode, Take Me Home"),
|
|
description = S("Use a compass on a Lodestone."),
|
|
icon = "lodestone_side4.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
-- Triggered in mcl_smithing_table
|
|
awards.register_achievement("mcl:seriousDedication", {
|
|
title = S("Serious Dedication"),
|
|
description = S("Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices."),
|
|
icon = "farming_tool_netheritehoe.png",
|
|
type = "Challenge",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
-- Triggered in mcl_brewing
|
|
awards.register_achievement("mcl:localBrewery", {
|
|
title = S("Local Brewery"),
|
|
description = S("Brew a Potion.\nHint: Take a potion or glass bottle out of the brewing stand."),
|
|
icon = "mcl_potions_potion_overlay.png^[colorize:#F82423:"..tostring(127).."^mcl_potions_potion_bottle.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
-- Triggered in mcl_enchanting
|
|
awards.register_achievement("mcl:enchanter", {
|
|
title = S("Enchanter"),
|
|
description = S("Enchant an item using an Enchantment Table."),
|
|
icon = "mcl_enchanting_book_enchanted.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
|
|
--Triggered in mcl_beacons
|
|
awards.register_achievement("mcl:beacon", {
|
|
title = S("Bring Home the Beacon"),
|
|
description = S("Use a beacon."),
|
|
icon = "beacon_achievement_icon.png",
|
|
type = "Advancement",
|
|
group = "Nether",
|
|
})
|
|
|
|
awards.register_achievement("mcl:maxed_beacon", {
|
|
title = S("Beaconator"),
|
|
description = S("Use a fully powered beacon."),
|
|
icon = "beacon_achievement_icon.png",
|
|
type = "Goal",
|
|
group = "Nether",
|
|
})
|
|
|
|
-- Triggered in mcl_end
|
|
awards.register_achievement("mcl:theEndAgain", {
|
|
title = S("The End... Again..."),
|
|
description = S("Respawn the Ender Dragon."),
|
|
icon = "mcl_end_crystal_item.png",
|
|
type = "Goal",
|
|
group = "End",
|
|
})
|
|
|
|
-- Triggered in mcl_beehives
|
|
awards.register_achievement("mcl:bee_our_guest", {
|
|
title = S("Bee Our Guest"),
|
|
description = S("Use a campfire to collect a bottle of honey from a beehive without aggrivating the bees inside."),
|
|
icon = "mcl_honey_honey_bottle.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
awards.register_achievement("mcl:total_beelocation", {
|
|
title = S("Total Beelocation"),
|
|
description = S("Move a bee nest, with 3 bees inside, using a silk touch enchanted tool."),
|
|
icon = "mcl_beehives_bee_nest_front_honey.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
-- Triggered in mcl_copper
|
|
awards.register_achievement("mcl:wax_on", {
|
|
title = S("Wax On"),
|
|
description = S("Apply honeycomb to a copper block to protect it from the elements."),
|
|
icon = "mcl_honey_honeycomb.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
awards.register_achievement("mcl:wax_off", {
|
|
title = S("Wax Off"),
|
|
description = S("Scrape wax off of a copper block."),
|
|
icon = "default_tool_stoneaxe.png",
|
|
type = "Advancement",
|
|
group = "Husbandry",
|
|
})
|
|
|
|
-- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.)
|
|
|
|
if non_pc_achievements then
|
|
awards.register_achievement("mcl:n_placeDispenser", {
|
|
title = S("Dispense With This"),
|
|
description = S("Place a dispenser."),
|
|
icon = "mcl_dispensers_dispenser_front_horizontal.png",
|
|
trigger = {
|
|
type = "place",
|
|
node = "mcl_dispensers:dispenser",
|
|
target = 1
|
|
}
|
|
})
|
|
|
|
-- FIXME: Eating achievements don't work when you have exactly one of these items on hand
|
|
awards.register_achievement("mcl:n_eatPorkchop", {
|
|
title = S("Pork Chop"),
|
|
description = S("Eat a cooked porkchop."),
|
|
icon = "mcl_mobitems_porkchop_cooked.png",
|
|
trigger = {
|
|
type = "eat",
|
|
item= "mcl_mobitems:cooked_porkchop",
|
|
target = 1,
|
|
}
|
|
})
|
|
awards.register_achievement("mcl:n_eatRabbit", {
|
|
title = S("Rabbit Season"),
|
|
icon = "mcl_mobitems_rabbit_cooked.png",
|
|
description = S("Eat a cooked rabbit."),
|
|
trigger = {
|
|
type = "eat",
|
|
item= "mcl_mobitems:cooked_rabbit",
|
|
target = 1,
|
|
}
|
|
})
|
|
awards.register_achievement("mcl:n_eatRottenFlesh", {
|
|
title = S("Iron Belly"),
|
|
description = S("Get really desperate and eat rotten flesh."),
|
|
icon = "mcl_mobitems_rotten_flesh.png",
|
|
trigger = {
|
|
type = "eat",
|
|
item= "mcl_mobitems:rotten_flesh",
|
|
target = 1,
|
|
}
|
|
})
|
|
awards.register_achievement("mcl:n_placeFlowerpot", {
|
|
title = S("Pot Planter"),
|
|
description = S("Place a flower pot."),
|
|
icon = "mcl_flowerpots_flowerpot_inventory.png",
|
|
trigger = {
|
|
type = "place",
|
|
node = "mcl_flowerpots:flower_pot",
|
|
target = 1,
|
|
}
|
|
})
|
|
|
|
awards.register_achievement("mcl:n_emeralds", {
|
|
title = S("The Haggler"),
|
|
description = S("Mine emerald ore."),
|
|
icon = "default_emerald.png",
|
|
trigger = {
|
|
type = "dig",
|
|
node = "mcl_core:stone_with_emerald",
|
|
target = 1,
|
|
}
|
|
})
|
|
end
|
|
|
|
-- Show achievements formspec when the button was pressed
|
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|
if fields.__mcl_achievements then
|
|
local name = player:get_player_name()
|
|
awards.show_to(name, name, nil, false)
|
|
end
|
|
end)
|
|
|
|
|
|
awards.register_achievement("mcl:stoneAge", {
|
|
title = S("Stone Age"),
|
|
description = S("Mine a stone with new pickaxe."),
|
|
icon = "default_cobble.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
awards.register_achievement("mcl:hotStuff", {
|
|
title = S("Hot Stuff"),
|
|
description = S("Put lava in a bucket."),
|
|
icon = "bucket_lava.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
awards.register_achievement("mcl:obsidian", {
|
|
title = S("Ice Bucket Challenge"),
|
|
description = S("Obtain an obsidian block."),
|
|
icon = "default_obsidian.png",
|
|
type = "Advancement",
|
|
group = "Overworld",
|
|
})
|
|
|
|
awards.register_achievement("mcl:hero_of_the_village", {
|
|
title = S("Hero of the Village"),
|
|
description = S("Successfully defend a village from a raid"),
|
|
icon = "mcl_raids_hero_of_the_village_icon.png",
|
|
type = "Advancement",
|
|
group = "Adventure",
|
|
secret = true,
|
|
})
|
|
|
|
awards.register_achievement("mcl:voluntary_exile", {
|
|
title = S("Voluntary Exile"),
|
|
description = S("Kill a raid captain. Maybe consider staying away from the local villages for the time being..."),
|
|
icon = "mcl_potions_effect_bad_omen.png",
|
|
type = "Advancement",
|
|
group = "Adventure",
|
|
secret = true,
|
|
})
|