Skip to content

Commit 7611d26

Browse files
committed
Still support achievements when using versions below 1.12
1 parent 979035b commit 7611d26

File tree

4 files changed

+60
-7
lines changed

4 files changed

+60
-7
lines changed

config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ settings:
105105
death: '%message%'
106106
players-list: 'Online (%playerCount%/%maxPlayers%): %message%'
107107
players-nobody: 'Nobody is minecrafting right now.'
108-
advancement: '%sender% earned advancement %green%[%message%]'
108+
achievement: '%sender% earned achievement %green%[%message%]'
109109
from-irc:
110110
chat: '[%srcChannel%] <%sender%> %message%'
111111
private: '%sender% whispers> %message%'
@@ -291,7 +291,7 @@ default-attributes:
291291
say: true
292292
generic: true
293293
death: true
294-
advancement: true
294+
achievement: true
295295
mode: false
296296
notice: false
297297

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.ensifera.animosity.craftirc;
2+
3+
import org.bukkit.event.EventHandler;
4+
import org.bukkit.event.EventPriority;
5+
import org.bukkit.event.Listener;
6+
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
7+
8+
final class AdvancementsListener implements Listener {
9+
private final CraftIRC plugin;
10+
11+
AdvancementsListener(CraftIRC plugin) {
12+
this.plugin = plugin;
13+
}
14+
15+
@EventHandler(priority = EventPriority.MONITOR)
16+
public void onPlayerAdvancement(PlayerAdvancementDoneEvent event) {
17+
if (this.plugin.isHeld(CraftIRC.HoldType.ADVANCEMENTS)) {
18+
return;
19+
}
20+
if (event.getAdvancement() == null) {
21+
return;
22+
}
23+
final RelayedMessage msg = this.plugin.newMsg(this.plugin.getEndPoint(this.plugin.cMinecraftTag()), null, "achievement");
24+
if (msg == null) {
25+
return;
26+
}
27+
msg.setField("sender", event.getPlayer().getDisplayName());
28+
msg.setField("message", event.getAdvancement().getKey().getKey());
29+
msg.setField("world", event.getPlayer().getWorld().getName());
30+
msg.setField("realSender", event.getPlayer().getName());
31+
msg.setField("prefix", this.plugin.getPrefix(event.getPlayer()));
32+
msg.setField("suffix", this.plugin.getSuffix(event.getPlayer()));
33+
msg.doNotColor("message");
34+
msg.post();
35+
}
36+
}

src/main/java/com/ensifera/animosity/craftirc/CraftIRC.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.ensifera.animosity.craftirc.libs.com.sk89q.util.config.ConfigurationNode;
55
import com.ensifera.animosity.craftirc.libs.org.jibble.pircbot.Colors;
66
import net.milkbowl.vault.chat.Chat;
7+
import org.bukkit.Bukkit;
78
import org.bukkit.command.Command;
89
import org.bukkit.command.CommandSender;
910
import org.bukkit.entity.Player;
@@ -78,6 +79,19 @@ private void logDerp(String message) {
7879
}
7980
}
8081

82+
private static final Pattern versionPattern = Pattern.compile("(\\d).(\\d+).*");
83+
private boolean versionGreaterorEqualThan(int major, int minor) {
84+
String bukkitVersion = Bukkit.getBukkitVersion();
85+
Matcher versionMatcher = versionPattern.matcher(bukkitVersion);
86+
if (versionMatcher.find()) {
87+
int majorV = Integer.parseInt(versionMatcher.group(1));
88+
int minorV = Integer.parseInt(versionMatcher.group(2));
89+
if (majorV > major || (majorV == major && minorV >= minor))
90+
return true;
91+
}
92+
return false;
93+
}
94+
8195
/***************************
8296
* Bukkit stuff
8397
***************************/
@@ -148,6 +162,9 @@ public void onEnable() {
148162

149163
// Event listeners
150164
this.getServer().getPluginManager().registerEvents(new CraftIRCListener(this), this);
165+
// Check for advancements api
166+
if (this.versionGreaterorEqualThan(1, 12))
167+
this.getServer().getPluginManager().registerEvents(new AdvancementsListener(this), this);
151168
this.getServer().getPluginManager().registerEvents(new ConsoleListener(this), this);
152169

153170
// Native endpoints!

src/main/java/com/ensifera/animosity/craftirc/CraftIRCListener.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.bukkit.event.Listener;
88
import org.bukkit.event.entity.PlayerDeathEvent;
99
import org.bukkit.event.player.AsyncPlayerChatEvent;
10-
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
10+
import org.bukkit.event.player.PlayerAchievementAwardedEvent;
1111
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
1212
import org.bukkit.event.player.PlayerJoinEvent;
1313
import org.bukkit.event.player.PlayerKickEvent;
@@ -173,19 +173,19 @@ public void onPlayerDeath(PlayerDeathEvent event) {
173173
}
174174

175175
@EventHandler(priority = EventPriority.MONITOR)
176-
public void onPlayerAdvancement(PlayerAdvancementDoneEvent event) {
176+
public void onPlayerAchievement(PlayerAchievementAwardedEvent event) {
177177
if (this.plugin.isHeld(CraftIRC.HoldType.ADVANCEMENTS)) {
178178
return;
179179
}
180-
if (event.getAdvancement() == null) {
180+
if (event.getAchievement() == null) {
181181
return;
182182
}
183-
final RelayedMessage msg = this.plugin.newMsg(this.plugin.getEndPoint(this.plugin.cMinecraftTag()), null, "advancement");
183+
final RelayedMessage msg = this.plugin.newMsg(this.plugin.getEndPoint(this.plugin.cMinecraftTag()), null, "achievement");
184184
if (msg == null) {
185185
return;
186186
}
187187
msg.setField("sender", event.getPlayer().getDisplayName());
188-
msg.setField("message", event.getAdvancement().getKey().getKey());
188+
msg.setField("message", event.getAchievement().name());
189189
msg.setField("world", event.getPlayer().getWorld().getName());
190190
msg.setField("realSender", event.getPlayer().getName());
191191
msg.setField("prefix", this.plugin.getPrefix(event.getPlayer()));

0 commit comments

Comments
 (0)