Skip to content

Commit 2a2ce96

Browse files
committed
Use new AdvancementDisplay available in Spigot for Minecraft 1.19 to get Advancement details (fixes #9)
1 parent 8bca5f3 commit 2a2ce96

File tree

4 files changed

+8
-136
lines changed

4 files changed

+8
-136
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
</scm>
2424

2525
<properties>
26-
<bukkit-api-version>1.12.2</bukkit-api-version>
26+
<bukkit-api-version>1.19</bukkit-api-version>
2727
</properties>
2828

2929
<repositories>

src/main/java/com/selfcoders/matterbukkit/EventListener.java

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,26 @@
33
import com.selfcoders.matterbukkit.matterbridgeapi.API;
44
import com.selfcoders.matterbukkit.matterbridgeapi.Message;
55
import org.bukkit.ChatColor;
6+
import org.bukkit.advancement.AdvancementDisplay;
67
import org.bukkit.configuration.file.FileConfiguration;
7-
import org.bukkit.configuration.file.YamlConfiguration;
88
import org.bukkit.entity.Player;
99
import org.bukkit.event.EventHandler;
1010
import org.bukkit.event.Listener;
1111
import org.bukkit.event.entity.PlayerDeathEvent;
1212
import org.bukkit.event.player.*;
1313

1414
import java.io.IOException;
15-
import java.io.InputStreamReader;
16-
import java.util.Arrays;
1715
import java.util.logging.Level;
18-
import java.util.stream.Collectors;
1916

2017
class EventListener implements Listener {
2118
private final MatterBukkit plugin;
2219
private final API matterBridgeApi;
2320
private final String avatarUrl;
24-
private final YamlConfiguration advancements;
2521

2622
EventListener(MatterBukkit plugin, API matterBridgeApi, String avatarUrl) {
2723
this.plugin = plugin;
2824
this.matterBridgeApi = matterBridgeApi;
2925
this.avatarUrl = avatarUrl;
30-
31-
advancements = YamlConfiguration.loadConfiguration(new InputStreamReader(plugin.getResource("advancements.yml")));
3226
}
3327

3428
@EventHandler
@@ -87,40 +81,20 @@ public void onPlayerAdvancementDone(PlayerAdvancementDoneEvent event) {
8781
return;
8882
}
8983

90-
if (event.getAdvancement() == null || event.getAdvancement().getKey().getKey().contains("recipe/") || event.getPlayer() == null) {
91-
return;
92-
}
93-
94-
// Taken from DiscordSRV: https://github.com/DiscordSRV/DiscordSRV/blob/v1.26.2/src/main/java/github/scarsz/discordsrv/listeners/PlayerAdvancementDoneListener.java#L108-L117
95-
try {
96-
Object craftAdvancement = ((Object) event.getAdvancement()).getClass().getMethod("getHandle").invoke(event.getAdvancement());
97-
Object advancementDisplay = craftAdvancement.getClass().getMethod("c").invoke(craftAdvancement);
98-
boolean display = (boolean) advancementDisplay.getClass().getMethod("i").invoke(advancementDisplay);
84+
AdvancementDisplay advancementDisplay = event.getAdvancement().getDisplay();
9985

100-
if (!display) {
101-
return;
102-
}
103-
} catch (NullPointerException exception) {
86+
if (advancementDisplay == null) {
10487
return;
105-
} catch (Exception exception) {
106-
plugin.getLogger().log(Level.SEVERE, "Failed to check whether advancement should be displayed", exception);
10788
}
10889

109-
String internalAdvancementName = event.getAdvancement().getKey().getKey();
110-
111-
String advancementName = advancements.getString(internalAdvancementName);
112-
113-
if (advancementName == null) {
114-
// Fallback if not defined in advancements.yml: turn "story/shitty_advancement_name" into "Shitty Advancement Name", taken from DiscordSRV
115-
advancementName = Arrays.stream(internalAdvancementName.substring(internalAdvancementName.lastIndexOf("/") + 1).toLowerCase().split("_"))
116-
.map(s -> s.substring(0, 1).toUpperCase() + s.substring(1))
117-
.collect(Collectors.joining(" "));
90+
if (!advancementDisplay.shouldAnnounceChat()) {
91+
return;
11892
}
11993

12094
String text = config.getString("outgoing.advancement.format");
12195

12296
text = text.replaceAll("%playername%", event.getPlayer().getName())
123-
.replaceAll("%advancement%", advancementName);
97+
.replaceAll("%advancement%", advancementDisplay.getTitle());
12498

12599
try {
126100
matterBridgeApi.sendMessage(text);

src/main/resources/advancements.yml

Lines changed: 0 additions & 102 deletions
This file was deleted.

src/main/resources/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ outgoing:
4444
enable: true
4545

4646
# Format for advancement messages sent to MatterBridge
47-
# Placeholders: %playername% (name of the player), %advancement% (name of the advancement as defined in advancements.yml)
47+
# Placeholders: %playername% (name of the player), %advancement% (title of the advancement)
4848
format: "%playername% has made the advancement [%advancement%]"
4949

5050
level-up:

0 commit comments

Comments
 (0)