Adding new categories - PyvesB/advanced-achievements GitHub Wiki
Adding simple categories directly in Advanced Achievements is really easy and does not require advanced Java knowledge: it's mostly a matter of following the code that's already written! Let's take the example of the Eggs
achievement category and see how it's built.
- In NormalAchievements.java, there is an entry declaring the achievement category:
EGGS("Eggs"),
- There is a file EggsListener.java which keeps track of statistic increases for that category. Some highlights:
- an import statement is defined for the PlayerEggThrowEvent on line 10:
import org.bukkit.event.player.PlayerEggThrowEvent;
- the achievement declaration from NormalAchievements.java is specified on line 28:
super(NormalAchievements.EGGS, ...
- the aforementioned Bukkit event is used on line 32:
... onPlayerEggThrow(PlayerEggThrowEvent event) ...
- all the rest of the code in the file will be common for most other achievement categories.
- an import statement is defined for the PlayerEggThrowEvent on line 10:
- In ReloadableModule.java, a few lines of code make sure that the category is properly configured when the plugin starts up:
Note the statement on line 28:@Binds @IntoSet abstract Reloadable bindEggsListener(EggsListener eggsListener);
import com.hm.achievement.listener.statistics.EggsListener;
- Default permissions are configured in plugin.yml:
- on lines 197 to 199, the permission for the
Eggs
category is defined:achievement.count.eggs: description: Allows egg statistics in database to increase. default: true
- on line 107,
achievement.count.eggs: true
ensures that any player who has parent permissionachievement.count.*
will also have the eggs one.
- on lines 197 to 199, the permission for the
- The default category name displayed in the GUI is defined in lang.yml on line 160:
list-eggs: "Eggs Thrown"
- The default category item displayed in the GUI is defined in gui.yml on lines 68 and 69:
All material names defined here can be used for the item.Eggs: Item: egg
That's all! If you've created a new category and happy with your work, why not contribute and open a pull request?