tModLoader

tModLoader

1,266 ratings
Achievement Mod
5
3
10
4
6
2
2
2
   
Award
Favorite
Favorited
Unfavorite
Mod Side: Client
tModLoader Version: 1.4.3, 1.4.4
File Size
Posted
Updated
111.774 KB
2 Feb, 2023 @ 5:21pm
25 May, 2023 @ 10:36am
8 Change Notes ( view )

Subscribe to download
Achievement Mod

Description
Note: This mod was made back when achievements didn't work for tModLoader, but that has since been fixed and the mod is no longer required to earn achievements in tModLoader.

Allows you to unlock achievements like in vanilla and allows other mods to add achievements.
Contains configuration options like having separate achievements for each player.
Adds the /achievement command which you can use to give/take/reset achievements.
Usage:
/achievement clear
/achievement grant [achievement name]
/achievement revoke [achievement name]

You can also type /achievement unlockvanilla to unlock all vanilla achievements.

Your achievements are saved to a json file which can be found in a folder called AchievementData.
The folder is found in the same place that your player and world folders are located.

For Developers:

If you are a developer and want to add an achievement use Mod.Call in PostSetupContent

Mod.Call("AddAchievement", this (reference to your mod),
Name of your achievement (string, don't put spaces),
Achievement Category (Terraria.Achievements.AchievementCategory),
Texture path (string, the texture should be 128x64, it will contain the unlocked and locked sprite of the achievement),
Custom border texture path (string, can be null, if you add a texture it should be 72x72),
Show progress bar (bool), Show achievement card (bool), Achievement card order (float), Conditions (string array))

Example:

if (ModLoader.TryGetMod("TMLAchievements", out Mod mod))
mod.Call("AddAchievement", this, "AchievementName", AchievementCategory.Collector, "YourMod/Assets/Textures/Achievement", null, false, false, 2.5f, new string[] { "Collect_" + ItemID.RodofDiscord });

This will create an achievement which you unlock by collecting a Rod of Discord

Setting show progress bar to true will show how many conditions are completed.

Achievement card order is the order of your achievement if you set show achievement card to true
The achievement Timber!! has an order of 1, while Champion of Terraria (Defeat the moon lord) has an order of 36
Setting the order will allow you put the achievement in the correct place in terms of progression.

How to add conditons:
To add a condition you simply add a string in the conditions array.
If you want to add a item condition add the string "Collect_" + the item id. Example: "Collect_" + ItemID.RodofDiscord
If you want to add a craft item condition add the string "Craft_" + the item id. Example: "Craft_" + ItemID.OnyxBlaster
If you want to add a mine tile condition add the string "Mine_" + the tile id. Example: "Mine_" + TileID.GrayBrick
If you want to add a kill npc condition add the string "Kill_" + the npc id. Example: "Kill_" + NPCID.Mimic

If you want a custom condition do "Event_ExampleEvent". Use Mod.Call("Event", "ExampleEvent"); to complete the condition.

If you want a custom value condition do "ValueEvent_ExampleValue_100". If the value reaches 100 the condition is completed. Use Mod.Call("ValueEvent", "ExampleValue", 1f); change the value by 1

Complete Example:
new string[] { "Collect_" + ItemID.AbigailsFlower, "Craft_" + ItemID.GoldenDelight, "Kill_" + NPCID.PurpleSlime }

To complete the achievement with those conditions you will need to collect abigails flower, craft a golden delight, and kill a purple slime.

Finally you will need to add an entry in the localization file of your mod for your achievement name and description.

You can type /achievement debuglist if you want the names of all achievements (including modded ones). Typing the command will print the names of all achievements to your client.log file.

You can modify this to create a texture for your achievement.

https://i.imgur.com/sO6F6Mg.png
Originally posted by tModLoader:
Developed By metalkingpig
141 Comments
DookieDoingle 6 Oct @ 1:09am 
awh, doesn't work anymore unfortunately. the new update screwed so many things up :steamsad:
Little Gyro 3 Oct @ 10:06am 
So it's obsolete now, huh? They officially added vanilla and modded achievement support now!
The Scarlet Devil 2 Oct @ 1:03am 
By opening the achievements tab there is now a specific tab for custom TModLoader achievements along with specific tags saying which mod they come from on the right side. Seems like the functionality of this mod has been mostly added on the default game, and those changes are why the mod is now breaking.

The problem is that the only way to reset them is through a reset button, so it doesn't save achievements per character / per world like this mod did, which is unfortunate. Hopefully someone adds that functionality.
ohhhLuna 1 Oct @ 3:40pm 
I was wondering why I couldn't load into my world without CTD last night, then TMod flagged this mod as outdated today.
Rowdeezy 1 Oct @ 10:07am 
@metakingpig, thank you thank u🙏I understand wut you're saying, things going on in ppls lives aren't always smooth sailing as mine but im glad to hear you're still active on steam atleast:D goodluck with life and everything else<3
metalkingpig  [author] 1 Oct @ 9:35am 
@Rowdeezy I'll try to have a look soon. Life's been busy recently.
Rowdeezy 1 Oct @ 9:24am 
it no longer works for latest October 1st update:( plz update dev, this mod was perfect for having per-world achievements alone, I need that feature
Yutoca uwu Leohearts 1 Oct @ 6:40am 
@joelmicfletch it's literally 26 May, 2023 @ 1:36am
btw community, do we have an alternative to this ? looks like it's been really a long time
The Scarlet Devil 1 Oct @ 5:46am 
Doesn't work very well anymore... :c
vemit 1 Sep @ 8:14pm 
hard to find this mod for some reason