I’m trying to give money to player every time he got achievement. So I’m trying to use GrantAchievementEvent and GrantAchievementEvent.TargetPlayer - but neither is called. So, any other idea? Is it bug?
Did you include the @Listener
annotation above your method?
That was the first thing I checked. I already tried to listen to all events but there’s no event when I got achievement…
Is the listener outside of your main class? If so you have to register it: Event Listeners — Sponge 7.2.0 documentation
The GrantAchievementEvent is definitely called by SpongeCommon as of late december of 2016:
Perhaps you’re running an out of date version of SpongeCommon?
Yep, it is. I tried to make listener for all Events, it worked and printed out all events. But there were no events of Achievement when I got it. Using SpongeForge.
Is your project open source? I couldn’t find any sponge plugins on your github.
Nope, it’s not.
Basically - any other event listener in same class works well. But this:
@Listener
public void onPlayerAchievement(GrantAchievementEvent.TargetPlayer e){
plugin.getLogger().info("DEBUG");
}
just doesn’t work…
Is the event cancelled? I know GrantAchievementEvent implements MessageEvent and MessageChannelEvent.
If not, then perhaps the event isn’t being fired from Sponge.
EDIT
Check to see if the event was cancelled.
@Listener(order = Order.POST) // not sure on the syntax exactly at the moment
public void onGrantPlayerAchievement(GrantAchievementEvent.TargetPlayer event) {
plugin.getLogger().info("GameAchievementEvent isCancelled(): " + (event.isCancelled() ? "true", "false"));
}
Nope, as I found it’s not implemented in SpongeForge yet. Well, that’s great…
If there isn’t an issue about it on GitHub, you should open one