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!
@Lolmewn
Okay, thanks. I ran into an issue while updating the latest build #76.
I was trying to check my achievement status for ID 17 by running /achievements 17 but was given by the response "Do /achievements to view your achievements!" That goes the same for doing /achievements or any other command with the plugin. Heres my config. I don't think I did something wrong. http://pastebin.com/8Qg866Jf
@Prodkid
Yes, type is Player as far as I know. As for PVP, Yes. The description from Stats can be copied to here pretty much, all stats from Stats are supported automatically by Achievements.
For kill stats, is there a type for just players? is it player? Also looking at stats plugin theres a stat called pvp, does this plugin have that?
@Daconway
Something like that is planned, yes. Currently does not exist.
Does this plugin use GUI? If not, do you plan on adding that feature in the future?
@Omanoctoa
Not yet. However, if I recall correctly, there is a ticket for it.
Is it possible to create recurring achievements, or are the achievements auto-recurring anyways? I didn't see it mentioned anywhere...
Basically I want to create different types of achievements: 1-time, recurring, and even cash-in.
1-Time Ach.: What you have already. Do something, achievement get!
Recurring Ach.: Achievement Get! Get! Get!
Cash-In Ach.: These ones might be tricky. Basically when the player types a command or clicks a signs or something, the plugin could search their inventory for a defined amount of certain items, and if located they can be given a reward in exchange for those items (or allowed to keep them; configurable). Other plugins (AcidIsland and probably skyblock) use it to create cash-in achievements for players, such as trade in 64 netherrack for 1 soulsand and 1 netherwart.
Thanks for your consideration.
@EnderSandman
Oh, that error is because I forgot to clear achievements on plugin stop. I'll check on those rewards/messages.
EDIT: Found it. The code was there, but was never registered. The plugin practically simply didn't know those rewards existed. Should be good now :)
@Lolmewn
EDIT: Changing what I posted because the builds you did today fixed my issues. It was my bad that I did not notice the new builds.
Thanks for fixing this so quick
You are awesome!
@Lolmewn This
2.0.1-SNAPSHOT #71
BTW: I tested the development version. It seems that everything is fine, but when the players completes the requirements, nothing happens :(
@Sickagp
Which feature are you talking about?
@EnderSandman
Basically I made some changes to how Achievements reads the achievements.yml file, and after I did that Fanciful issues arose. So you can use them, but only if you want to re-do your achievements.yml file while there's no documentation for it yet. Default achievements.yml has one example.
OK, I am confused. The fanciful issue was resolved in the dev builds but we are not suppose to use them. The /ach command is not working in v2.0.0 with Spigot 1.8 because of the fanciful issue. Is there a workaround for this using v2.0.0 and Spigot 1.8 that I am missing?
Thanks,
This and Stats are great plugins BTW!
@Lolmewn Yes, this feature it's amazing. Could you add that feature to your API?
@Sickagp
That looks pretty neat :) The achievements command will have something similar, actually.
@Lolmewn
OK, thank you for the reply. I'm working on a new project, which supports your awesome plugins. Here is a sample.
I tested the development version. It seems that everything is fine, but when the players completes the requirements, nothing happens.
@Sickagp
Let me put it like this: It has been fixed in a DEV build, but you do NOT want to use that as it uses a new achievements.yml layout, for which there is no converter or documentation yet.
Hi, please could you fix it? Your plugin is very important for me. Thank you for the reply Achievements v2.0.0
Error
@Lolmewn
issue resolved. Just wondering why the rewards are being sent on each server my players go to? have i missed something on this?
@jenks1999
It's not an error from the plugin - the achievements.yml file is misconfigured. I repeat: Don't use dev-builds. Just downgrade to 2.0.0
@Lolmewn
Any ideas on when this will get resolved? and updated to build 71. Would be nice to have this run on final build of 1.7.10