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!
@thomasmccarron
Thinking about it again, perhaps a permission node to deny/allow a player to get an achievement? E.g. the permission achievements.<id> could be negated to prevent a player from getting an achievement
Think you'd be able to add an "is_group" goal or something similar? It would allow for lots more customization, giving different rewards based on the group a player is in! Love the plugin ether way! Thanks :)
@Lolmewn
kk cool.
@cocothemooncat
I think console commands were broken but were fixed in dev builds. Once I release an update I'll give the page a big makeover, it's needed.
1. KrustyLv is right, there should be some sort of in game GUI for achievements. 2. How do I make the server broadcast the achievement to everyone online? I tried making the reward consoleCommands: bcast %player% earned the achievement %name%! and nothing happened. Great plugin too bad there's not really any documentation.
iT would be cool if there were command to see all achievements in gui menu.
@KrustyLv
Not sure about the latest verison on BukkitDev, but when an update comes out it's most certainly in there. (I'll be switching storage over from flatfile to MySQL since YML errors for no apparent reason.)
Is this plugin sends info to mysql server about achievements that player have done?
( hope yes - it would be amazing )
@Lolmewn
Sounds great, I just want to make sure such a great plugin isn't lost in the depth of bukkit.
@CustomForms
Thanks, much appreciated! <3 Development should resume shortly! Reason it's so slow is in my signature...
Hopefully 25 USD will help :)
@Shuski
On it soon.
@SPKuja
Use the 'variables' after a Stat, or TOTAL. In your example, it would be Kill 1 Zombie true. If this doesn't work, it's broken and it needs fixing.
@CustomForms
Always does <3
Would a generous donation help to get this plugin further into it's development?
How do you know if you need TOTAL or true at the end? Because I'm having difficulty getting a lot of the achievements working, for example:
I've also tried:
None of these are working
Not working fully...I can't seem to get other things except block break and place.
The example "Death 3 Creeper" doesn't work.
@GodsDead
When a user logs in it already checks for all achievements if they're finished or not. If only block break works, then that's just plain weird, especially if the logs say nothing about it. Maybe Stats 2.0 with Achievements 1.0 will fix things.
@Lolmewn
Well I hope its as flexible as webstatsx, resizing to fit any device. I literally a few days ago installed it and got it working in an iframe for my website, Also the colour scheme works with my existing website which is a bonus and does not make it look out of place. Do you have an online demo live?
The question was targeted towards achievements, if theres a way I can get this setup and working, some of my users have passed the needed requirements for upgrades, and I dont want to get into the habit of having to do it manually.
If I remember right, It wasnt playtime, It was only blocks broken that I could get to work...
@GodsDead
The difference will be that WebStatsX is designed for the old database layout, while the new version of Stats (of which you had a alpha-version) stores things a bit differently. That's pretty much it.
I'm getting into releasing the first basic version of the webend now, so expect a new file popping up on Stats soon (won't be auto-downloaded, in case you were wondering).
@Lolmewn
Awesome, I guess this will be a few weeks away? Any chance I can get this up and working now? Or should I just stick to manually upgrading people and wait for an update? I had trouble with the stats plugin too, and only managed to get it to work by using an older version, Will this be sorted in the near future too? Im currently using WebStatsX and it works well, What will be the differance with the stats web-end over WebstatsX?
@GodsDead
Known and weird problem, switching to MySQL storage soon (got a database connection through Stats already anyway). And yes, it is in need of some serious love. It's up for extreme love time after Stats web-end (which is at... 90%?)