Achievements Reloaded
Achievements - made by Lolmewn
What does this plugin do?
This plugin allows you to add additional achievements to the game. This plugin requries my other plugin, Stats, to work.
Using this plugin, you can add achievements to the game, and add rewards to them. Whenever a player gets an achievement, you can let commands run, give them money and/or items, and much more using the API this plugin will have.
How do I install this?
Download the latest file from the files page and put it in your plugins folder.
Configuring the plugin
config.yml
There's nothing much to configure here yet. You can toggle whether or not it auto-updates, but that's about it.
achievements.yml
This is where you will store all your achievements. An achievement must have the following layout:
<id> name: YourAchievementName goals: - Stat <amount> <TOTAL or the variables belonging to this Stat> - another one?
The rest of the things is pretty self-explanatory. Once I have time, I will write down a good how-to-write achievements page.
Stats
These are the available Stats:
Stat | Description | Variables |
---|---|---|
Block_break | All broken blocks with their Datavalues | itemId itemData breaking |
Block_place | All placed blocks with their Datavalues | itemId itemData breaking |
Death | All deaths with their causes | cause entity(boolean, true is safest) |
Kill | All kills with their causes | type |
Move | Walking, sailing, riding a train, on the back of a pig or by horse. | type (0=walk, 1=boat, 2=train, 3=pig, 4=pig in train, 5=horse) |
Playtime | Time played in seconds | |
Arrows | Arrows shot | |
Xp_gained | Total XP gained | |
Joins | Total times joined | |
Fish_catched | Total fish Caught | |
Damage_taken | Total damage taken | |
Times_kicked | Total times kicked | |
Tools_broken | Total Tools broken | |
Eggs_thrown | Total eggs thrown | |
Items_crafted | Total items crafted | |
Omnomnom | Total times had a snack | |
On_fire | Total times being on fire | |
Words_said | Total words said | |
Commandsdone | Total commands done | |
Votes | Total times voted for the server (uses Votifier) | |
Worldchange | Total times worlds changed | |
Bucketfill | Total buckets filled | |
Bucketempty | Total buckets emptied | |
Bedenter | Total times bed entered | |
Itemdrops | Total times items dropped | |
Itempickups | Total times items picked up | |
Teleports | Total times teleported | |
Shear | Total times sheared | |
Lastjoin | The time the player joined the server last | |
Lastleave | The time the player left the server last |
Want to use a Stat that uses variables? You have to specify either the variables or use 'TOTAL'.
Variables with StatTypes
Some Stats have variables. A good example is Block_break, it has the variables <blockId> <blockData> and <breaking>.
If you want to have a goal where a player must break 5 blue wool blocks, the goal would be
- Block_break 5 35 3 true
If the block has no special blockData (e.g. there's only one type of it), use 0 as blockData. Example:
- Block_break 20 1 0 true
This means break 20 stone blocks.
Examples for the other special Stats:
- Block_place 5 TOTAL - Move 1000 1 #move 1000 blocks with transport type 1 (boat) - Kill 10 Zombie - Death 3 Creeper
The format always is - Stat Amount Total|Variables|<empty>
Item Rewards
The way Item Rewards are written down is somewhat difficult. Basically, you should write it down as
items: <itemId>.<itemData>,<amount>;<itemId>.<itemData>,amount;... etc. items: 35.3,10;1,10 items: 1,20
Note that the itemData doesn't have to be specified
The itemID obvioulsy is the ID the item has (which you can find a full list of here), the itemData is also on that list, and the amount.. well, duhh.
The first example gives you 10 colored wool, and 10 stone. The second example gives you 20 stone.
Example achievements.yml
You can find an example right here. When writing new achievements, I suggest you grab this page and see what all the options do.
Commands and permissions
Command | Permission | Description |
---|---|---|
/ach | achievements.view.self | Check out your progress |
/ach player <player> | achievements.view.others | Check out someone elses progress |
/ach reload | achievements.reload | Saves all players and reloads all achievements |
/ach page <page> | achievements.view.self | Check out page <page> of your progress |
/ach <achievement> | Check out what the achievement is all about |
Development builds
Development builds of this project can be acquired at the provided continuous integration server.
These builds have not been approved by the BukkitDev staff. Use them at your own risk, they may or may not work at all.
Development builds for Stats can be found at my CI, over at http://ci.lolmewn.nl/job/Achievements/.
Source
Want to help develop, or simply view what makes this plugin run?
Visit my bitbucket!
Metrics
This plugin utilises Hidendra's plugin metrics system, which means that the following information is collected and sent to mcstats.org:
- A unique identifier
- The server's version of Java
- Whether the server is in offline or online mode
- The plugin's version
- The server's version
- The OS version/name and architecture
- The core count for the CPU
- The number of players online
- The Metrics version
If you wish to disable this feature (/me cries), you can do so by opt-ing out, which you can do in the config file under /plugins/PluginMetrics/
Auto-updater
This plugin has a built-in auto-updater, which connects to BukkitDev to check for updates. If you, for some reason, wish to disable this process, you can do so by setting 'update' to false in the plugins' settings file.
IRC Support
You can find me (and possibly, when I'm around, support) in my IRC channel #Lolmewn on irc.esper.net - See you there!
From one problem to the next with this plugin, I decided to create a local server from scratch to test configs (easier to restart) I can't get this working WITH stats, it only seems to be working with playtime, I also used my live servers players.yml (Problem below) which didn't cause any problems.
I think this plugin is in need of some serious love.
Looks good
I came up with a cool addition for the goals section - certain criteria. e.g. testfor player_health=<3 That would test to see if the players health is less than 3, so then you could have achievements be earned when certain criteria are met. For example, Get a 2 killstreak with 2 hearts or less. If you could implement this feature I would appreciate it.
Restarted the server and players.yml wont load, I havent touched that!
http://pastebin.com/rckQFEXJ
@Lolmewn
No errors, just says
Are the development builds stable to work with R: Stats v1.37 for 1.7.4 Oct 29, 2013? What command would I use in-game/console to reload the configs, I presume the reaload was added to the dev builds?
Should there be a console event to show activity when achievements triggers? I can't see anything? Also im testing in gamemode 1, Ive set to track stats, this shouldnt be a problem should it?
@GodsDead
Reload command has just been implemented :) What do the logs say when you load that achievements file?
@Gowdsta712
If you mean killing a certain player, no. Only "Player" is possible right now. Specific items are also not saved by Stats.
@usunofbeach
How do you even get two players with those names, afaik that's not possible by Minecraft username standards.
Player1' name notch and player2‘ noTch will get different log in yml but same achievement&&rewards in game(same Stats I think).
help plz
What variables can you use with the kill statistic/achievement? I know that you can use entities, but what would you use if you only wanted to track kills vs another player? Plus, are you able to use an item id for the variable, so that it would track kills with only certain items?
Jesus, Its impossible to test configs without a reload command.
Right, Why does this not work?
Stats are here to show Ive collected them. http://stats.piratemc.com/single_player.php?p=GodsDead
At first the default config broke during loading, the message lines were breaking it, so I wrapped them in speach marks, this seemed to let the configs load, but I cant tell as theres no in-game commands to check.
@Lolmewn
Being able to boardcast custom messages when an achievement had been achieved to the server is a key feature! To tell the players that a player has achieved a new rank & status. The problem with /say and /broadcast is that You wouldnt be able to customize the [SERVER] or [broadcast] start text from this plugin.
Also what is the command to reload the configs in-game? To make changes and test them in-game without having to restart the server every time..
@doomlordking
Maybe.
@GodsDead
The 'messages' in onComplete only go to the player. You can use commands for sending it to the whole server (commands like /say or /broadcast that are not provided by the plugin). I can integrate a 'broadcast' thingie if requested, of course.
The stats reset was related to the stats plugin, I think, I will re-install the achievements plugin. In the messages section, how do I alert the rest of the server a player got an upgrade?
Is there? or can you think about adding a GUI? http://puu.sh/6JR1w.png
Epic!
@GodsDead
Any errors? Or just resetting?
Keeps resetting stats, again. Im going to have to give up this plugin, very unreliable.
@GodsDead
Yep! Check out http://dev.bukkit.org/bukkit-plugins/lolmewnachievements/pages/examples/
@vladior27
http://dev.bukkit.org/bukkit-plugins/lolmewnachievements/pages/examples/
@GodsDead
Yep, I should. Where's my time when I need it :o
Can you please add an option to execute a command when earning an achievement? Please :D!
How would I message all players that someone has ahieved something? I dont want to use that nasty [SERVER] MESSAGE, it needs to be customizable. You REALLY REALLY need to work on your documetnation.
Maybe add in a configurable book that will display all the current achievements on the server? Would be nice for players to lookup to see if they actually have an achievement or not.