Skip to content

Commit 071f74a

Browse files
committed
support MiniPlaceholders
1 parent d5e4fa4 commit 071f74a

2 files changed

Lines changed: 39 additions & 2 deletions

File tree

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,12 @@
139139
<version>2.9.1</version>
140140
<scope>provided</scope>
141141
</dependency>
142+
<dependency>
143+
<groupId>io.github.miniplaceholders</groupId>
144+
<artifactId>miniplaceholders-api</artifactId>
145+
<version>3.0.1</version>
146+
<scope>provided</scope>
147+
</dependency>
142148
<dependency>
143149
<groupId>org.jetbrains</groupId>
144150
<artifactId>annotations</artifactId>

src/main/java/me/hsgamer/bettergui/betterdialogs/text/PaperTextGetter.java

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,14 @@
1515
*/
1616
package me.hsgamer.bettergui.betterdialogs.text;
1717

18+
import io.github.miniplaceholders.api.MiniPlaceholders;
1819
import me.hsgamer.hscore.common.MapUtils;
20+
import net.kyori.adventure.text.Component;
1921
import net.kyori.adventure.text.minimessage.MiniMessage;
22+
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
2023
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
24+
import org.bukkit.Bukkit;
25+
import org.bukkit.entity.Player;
2126

2227
import java.util.Arrays;
2328
import java.util.Map;
@@ -26,12 +31,38 @@
2631
import java.util.stream.Stream;
2732

2833
public class PaperTextGetter implements TextGetter {
34+
private static final boolean IS_MINI_PLACEHOLDERS_SUPPORTED;
35+
36+
static {
37+
boolean isMiniPlaceholdersSupported = false;
38+
if (Bukkit.getPluginManager().getPlugin("MiniPlaceholders") != null) {
39+
try {
40+
Class<?> clazz = Class.forName("io.github.miniplaceholders.api.MiniPlaceholders");
41+
clazz.getDeclaredMethod("audienceGlobalPlaceholders");
42+
Class<?> pointerClass = Class.forName("net.kyori.adventure.pointer.Pointered");
43+
MiniMessage.class.getDeclaredMethod("deserialize", String.class, pointerClass, TagResolver.class);
44+
isMiniPlaceholdersSupported = true;
45+
} catch (Exception e) {
46+
// IGNORE
47+
}
48+
}
49+
IS_MINI_PLACEHOLDERS_SUPPORTED = isMiniPlaceholdersSupported;
50+
}
51+
52+
public Component miniMessage(String input, Player player) {
53+
if (IS_MINI_PLACEHOLDERS_SUPPORTED) {
54+
TagResolver tagResolver = MiniPlaceholders.audienceGlobalPlaceholders();
55+
return MiniMessage.miniMessage().deserialize(input, player, tagResolver);
56+
}
57+
return MiniMessage.miniMessage().deserialize(input);
58+
}
59+
2960
@Override
3061
public Optional<Text> get(Map<String, Object> input, String... keys) {
3162
String[] miniKeys = Arrays.stream(keys).flatMap(k -> Stream.of("mini-" + k, k + "$")).toArray(String[]::new);
3263
Optional<String> miniText = Optional.ofNullable(MapUtils.getIfFound(input, miniKeys)).map(Object::toString);
3364
if (miniText.isPresent()) {
34-
return Optional.of(new Text(true, miniText.get(), (s, p) -> MiniMessage.miniMessage().deserialize(s)));
65+
return Optional.of(new Text(true, miniText.get(), this::miniMessage));
3566
}
3667

3768
String[] jsonKeys = Arrays.stream(keys).map(k -> "json-" + k).toArray(String[]::new);
@@ -51,7 +82,7 @@ public Map<String, Text> getMap(Map<String, Object> input, String key) {
5182
return miniMap.entrySet().stream()
5283
.filter(e -> e.getKey() instanceof String)
5384
.filter(e -> e.getValue() != null)
54-
.map(e -> Map.entry((String) e.getKey(), new Text(true, e.getValue().toString(), (s, p) -> MiniMessage.miniMessage().deserialize(s))))
85+
.map(e -> Map.entry((String) e.getKey(), new Text(true, e.getValue().toString(), this::miniMessage)))
5586
.collect(Collectors.toMap(
5687
Map.Entry::getKey,
5788
Map.Entry::getValue,

0 commit comments

Comments
 (0)