Skip to content

Commit bc47cba

Browse files
committed
fix: Fixed ExpansionProvider loading
1 parent 6584a76 commit bc47cba

File tree

4 files changed

+191
-178
lines changed

4 files changed

+191
-178
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
group = io.github.miniplaceholders
2-
version = 2.0.0
2+
version = 2.0.1
33
description = LuckPerms-Expansion
44
org.gradle.configuration-cache=true
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
package io.github.miniplaceholders.expansion.luckperms;
2+
3+
import io.github.miniplaceholders.api.Expansion;
4+
import io.github.miniplaceholders.api.utils.Tags;
5+
import net.kyori.adventure.audience.Audience;
6+
import net.kyori.adventure.identity.Identity;
7+
import net.kyori.adventure.text.Component;
8+
import net.kyori.adventure.text.format.NamedTextColor;
9+
import net.kyori.adventure.text.minimessage.MiniMessage;
10+
import net.kyori.adventure.text.minimessage.tag.Tag;
11+
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
12+
import net.luckperms.api.LuckPerms;
13+
import net.luckperms.api.LuckPermsProvider;
14+
import net.luckperms.api.model.group.Group;
15+
import net.luckperms.api.model.user.User;
16+
import net.luckperms.api.query.QueryOptions;
17+
import net.luckperms.api.util.Tristate;
18+
19+
import java.util.Optional;
20+
import java.util.UUID;
21+
22+
import static io.github.miniplaceholders.api.utils.Components.FALSE_COMPONENT;
23+
import static io.github.miniplaceholders.api.utils.Components.TRUE_COMPONENT;
24+
import static io.github.miniplaceholders.api.utils.LegacyStrings.parsePossibleLegacy;
25+
26+
public final class LuckPermsExpansion {
27+
private static final Component UNDEFINED_COMPONENT = Component.text("undefined", NamedTextColor.GRAY);
28+
29+
private LuckPermsExpansion() {}
30+
31+
static Expansion luckPerms() {
32+
final LuckPerms luckPerms = LuckPermsProvider.get();
33+
return Expansion.builder("luckperms")
34+
.author("MiniPlaceholders Contributors")
35+
.version("2.0.0")
36+
.audiencePlaceholder("prefix", (aud, queue, ctx) -> {
37+
final User user = user(aud, luckPerms);
38+
if (user == null) {
39+
return null;
40+
}
41+
final String prefix = user.getCachedData().getMetaData().getPrefix();
42+
43+
if (parseString(queue)) {
44+
return Tag.preProcessParsed(MiniMessage.miniMessage().serialize(parsePossibleLegacy(prefix, ctx)));
45+
} else {
46+
return Tag.inserting(parsePossibleLegacy(prefix, ctx));
47+
}
48+
})
49+
.audiencePlaceholder("suffix", (aud, queue, ctx) -> {
50+
final User user = user(aud, luckPerms);
51+
if (user == null) {
52+
return null;
53+
}
54+
final String suffix = user.getCachedData().getMetaData().getSuffix();
55+
56+
if (parseString(queue)) {
57+
return Tag.preProcessParsed(MiniMessage.miniMessage().serialize(parsePossibleLegacy(suffix, ctx)));
58+
} else {
59+
return Tag.inserting(parsePossibleLegacy(suffix, ctx));
60+
}
61+
})
62+
.audiencePlaceholder("meta", (aud, queue, ctx) -> {
63+
final User user = user(aud, luckPerms);
64+
if (user == null) {
65+
return null;
66+
}
67+
final String meta = queue.popOr(() -> "you need to introduce a meta key").value();
68+
final Optional<QueryOptions> queryOptions = luckPerms.getContextManager().getQueryOptions(user);
69+
if (queryOptions.isEmpty()) {
70+
return null;
71+
}
72+
final String result = user.getCachedData().getMetaData(queryOptions.get()).getMetaValue(meta);
73+
74+
if (parseString(queue)) {
75+
return Tag.preProcessParsed(result != null ? result : "");
76+
} else {
77+
if (result == null) {
78+
return Tags.EMPTY_TAG;
79+
}
80+
return Tag.preProcessParsed(result);
81+
}
82+
})
83+
.audiencePlaceholder("has_permission", (aud, queue, ctx) -> {
84+
final User user = user(aud, luckPerms);
85+
if (user == null) {
86+
return null;
87+
}
88+
final String permission = queue.popOr(() -> "you need to introduce an permission").value();
89+
final Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
90+
final boolean hasPermission = result.asBoolean();
91+
92+
if (parseString(queue)) {
93+
return Tag.preProcessParsed(hasPermission ? "true" : "false");
94+
} else {
95+
return Tag.selfClosingInserting(hasPermission
96+
? TRUE_COMPONENT
97+
: FALSE_COMPONENT
98+
);
99+
}
100+
})
101+
.audiencePlaceholder("check_permission", (aud, queue, ctx) -> {
102+
final User user = user(aud, luckPerms);
103+
if (user == null) {
104+
return null;
105+
}
106+
final String permission = queue.popOr(() -> "you need to introduce an permission").value();
107+
final Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
108+
109+
if (parseString(queue)) {
110+
return Tag.preProcessParsed(switch (result) {
111+
case TRUE -> "true";
112+
case FALSE -> "false";
113+
case UNDEFINED -> "undefined";
114+
});
115+
} else {
116+
return Tag.selfClosingInserting(switch (result) {
117+
case TRUE -> TRUE_COMPONENT;
118+
case FALSE -> FALSE_COMPONENT;
119+
case UNDEFINED -> UNDEFINED_COMPONENT;
120+
});
121+
}
122+
})
123+
.audiencePlaceholder("inherited_groups", (aud, queue, ctx) -> {
124+
final User user = user(aud, luckPerms);
125+
if (user == null) {
126+
return null;
127+
}
128+
129+
if (parseString(queue)) {
130+
final String groups = user.getInheritedGroups(user.getQueryOptions()).stream()
131+
.map(group -> MiniMessage.miniMessage().serialize(parsePossibleLegacy(group.getDisplayName())))
132+
.reduce((a, b) -> a + ", " + b)
133+
.orElse("");
134+
return Tag.preProcessParsed(groups);
135+
} else {
136+
final Component groups = user.getInheritedGroups(user.getQueryOptions()).stream()
137+
.map(group -> parsePossibleLegacy(group.getDisplayName(), ctx))
138+
.collect(Component.toComponent(Component.text(", ")));
139+
return Tag.selfClosingInserting(groups);
140+
}
141+
})
142+
.audiencePlaceholder("primary_group_name", (aud, queue, ctx) -> {
143+
final User user = user(aud, luckPerms);
144+
if (user == null) {
145+
return null;
146+
}
147+
final String primaryGroup = user.getCachedData().getMetaData().getPrimaryGroup();
148+
149+
if (parseString(queue)) {
150+
return Tag.preProcessParsed(primaryGroup != null ? primaryGroup : "");
151+
} else {
152+
if (primaryGroup == null) {
153+
return Tags.EMPTY_TAG;
154+
}
155+
return Tag.preProcessParsed(primaryGroup);
156+
}
157+
})
158+
.audiencePlaceholder("inherits_group", (aud, queue, ctx) -> {
159+
final User user = user(aud, luckPerms);
160+
if (user == null) {
161+
return null;
162+
}
163+
final Group group = luckPerms.getGroupManager().getGroup(queue.popOr("you need to provide a group").value());
164+
final boolean inheritsGroup = group != null && user.getInheritedGroups(user.getQueryOptions()).contains(group);
165+
166+
if (parseString(queue)) {
167+
return Tag.preProcessParsed(inheritsGroup ? "true" : "false");
168+
} else {
169+
return Tag.selfClosingInserting(inheritsGroup
170+
? TRUE_COMPONENT
171+
: FALSE_COMPONENT
172+
);
173+
}
174+
}).build();
175+
}
176+
177+
private static boolean parseString(ArgumentQueue queue) {
178+
return queue.hasNext() && queue.pop().lowerValue().equals("string");
179+
}
180+
181+
private static User user(final Audience audience, final LuckPerms luckPerms) {
182+
final UUID uuid = audience.get(Identity.UUID).orElse(null);
183+
if (uuid == null) {
184+
return null;
185+
}
186+
return luckPerms.getUserManager().getUser(uuid);
187+
}
188+
}

src/main/java/io/github/miniplaceholders/expansion/luckperms/LuckPermsExpansionProvider.java

Lines changed: 1 addition & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -3,192 +3,17 @@
33
import io.github.miniplaceholders.api.Expansion;
44
import io.github.miniplaceholders.api.provider.ExpansionProvider;
55
import io.github.miniplaceholders.api.provider.LoadRequirement;
6-
import io.github.miniplaceholders.api.utils.Tags;
7-
import net.kyori.adventure.audience.Audience;
8-
import net.kyori.adventure.identity.Identity;
9-
import net.kyori.adventure.text.Component;
10-
import net.kyori.adventure.text.format.NamedTextColor;
11-
import net.kyori.adventure.text.minimessage.MiniMessage;
12-
import net.kyori.adventure.text.minimessage.tag.Tag;
13-
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
14-
import net.luckperms.api.LuckPerms;
15-
import net.luckperms.api.LuckPermsProvider;
16-
import net.luckperms.api.model.group.Group;
17-
import net.luckperms.api.model.user.User;
18-
import net.luckperms.api.query.QueryOptions;
19-
import net.luckperms.api.util.Tristate;
20-
21-
import java.util.Optional;
22-
import java.util.UUID;
23-
24-
import static io.github.miniplaceholders.api.utils.Components.FALSE_COMPONENT;
25-
import static io.github.miniplaceholders.api.utils.Components.TRUE_COMPONENT;
26-
import static io.github.miniplaceholders.api.utils.LegacyStrings.parsePossibleLegacy;
276

287
public final class LuckPermsExpansionProvider implements ExpansionProvider {
29-
private static final Component UNDEFINED_COMPONENT = Component.text("undefined", NamedTextColor.GRAY);
30-
31-
private User user(final Audience audience, final LuckPerms luckPerms) {
32-
final UUID uuid = audience.get(Identity.UUID).orElse(null);
33-
if (uuid == null) {
34-
return null;
35-
}
36-
return luckPerms.getUserManager().getUser(uuid);
37-
}
388

399
@Override
4010
public Expansion provideExpansion() {
41-
final LuckPerms luckPerms = LuckPermsProvider.get();
42-
return Expansion.builder("luckperms")
43-
.author("MiniPlaceholders Contributors")
44-
.version("2.0.0")
45-
.audiencePlaceholder("prefix", (aud, queue, ctx) -> {
46-
final User user = user(aud, luckPerms);
47-
if (user == null) {
48-
return null;
49-
}
50-
final String prefix = user.getCachedData().getMetaData().getPrefix();
51-
52-
if (parseString(queue)) {
53-
return Tag.preProcessParsed(MiniMessage.miniMessage().serialize(parsePossibleLegacy(prefix, ctx)));
54-
} else {
55-
return Tag.inserting(parsePossibleLegacy(prefix, ctx));
56-
}
57-
})
58-
.audiencePlaceholder("suffix", (aud, queue, ctx) -> {
59-
final User user = user(aud, luckPerms);
60-
if (user == null) {
61-
return null;
62-
}
63-
final String suffix = user.getCachedData().getMetaData().getSuffix();
64-
65-
if (parseString(queue)) {
66-
return Tag.preProcessParsed(MiniMessage.miniMessage().serialize(parsePossibleLegacy(suffix, ctx)));
67-
} else {
68-
return Tag.inserting(parsePossibleLegacy(suffix, ctx));
69-
}
70-
})
71-
.audiencePlaceholder("meta", (aud, queue, ctx) -> {
72-
final User user = user(aud, luckPerms);
73-
if (user == null) {
74-
return null;
75-
}
76-
final String meta = queue.popOr(() -> "you need to introduce a meta key").value();
77-
final Optional<QueryOptions> queryOptions = luckPerms.getContextManager().getQueryOptions(user);
78-
if (queryOptions.isEmpty()) {
79-
return null;
80-
}
81-
final String result = user.getCachedData().getMetaData(queryOptions.get()).getMetaValue(meta);
82-
83-
if (parseString(queue)) {
84-
return Tag.preProcessParsed(result != null ? result : "");
85-
} else {
86-
if (result == null) {
87-
return Tags.EMPTY_TAG;
88-
}
89-
return Tag.preProcessParsed(result);
90-
}
91-
})
92-
.audiencePlaceholder("has_permission", (aud, queue, ctx) -> {
93-
final User user = user(aud, luckPerms);
94-
if (user == null) {
95-
return null;
96-
}
97-
final String permission = queue.popOr(() -> "you need to introduce an permission").value();
98-
final Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
99-
final boolean hasPermission = result.asBoolean();
100-
101-
if (parseString(queue)) {
102-
return Tag.preProcessParsed(hasPermission ? "true" : "false");
103-
} else {
104-
return Tag.selfClosingInserting(hasPermission
105-
? TRUE_COMPONENT
106-
: FALSE_COMPONENT
107-
);
108-
}
109-
})
110-
.audiencePlaceholder("check_permission", (aud, queue, ctx) -> {
111-
final User user = user(aud, luckPerms);
112-
if (user == null) {
113-
return null;
114-
}
115-
final String permission = queue.popOr(() -> "you need to introduce an permission").value();
116-
final Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
117-
118-
if (parseString(queue)) {
119-
return Tag.preProcessParsed(switch (result) {
120-
case TRUE -> "true";
121-
case FALSE -> "false";
122-
case UNDEFINED -> "undefined";
123-
});
124-
} else {
125-
return Tag.selfClosingInserting(switch (result) {
126-
case TRUE -> TRUE_COMPONENT;
127-
case FALSE -> FALSE_COMPONENT;
128-
case UNDEFINED -> UNDEFINED_COMPONENT;
129-
});
130-
}
131-
})
132-
.audiencePlaceholder("inherited_groups", (aud, queue, ctx) -> {
133-
final User user = user(aud, luckPerms);
134-
if (user == null) {
135-
return null;
136-
}
137-
138-
if (parseString(queue)) {
139-
final String groups = user.getInheritedGroups(user.getQueryOptions()).stream()
140-
.map(group -> MiniMessage.miniMessage().serialize(parsePossibleLegacy(group.getDisplayName())))
141-
.reduce((a, b) -> a + ", " + b)
142-
.orElse("");
143-
return Tag.preProcessParsed(groups);
144-
} else {
145-
final Component groups = user.getInheritedGroups(user.getQueryOptions()).stream()
146-
.map(group -> parsePossibleLegacy(group.getDisplayName(), ctx))
147-
.collect(Component.toComponent(Component.text(", ")));
148-
return Tag.selfClosingInserting(groups);
149-
}
150-
})
151-
.audiencePlaceholder("primary_group_name", (aud, queue, ctx) -> {
152-
final User user = user(aud, luckPerms);
153-
if (user == null) {
154-
return null;
155-
}
156-
final String primaryGroup = user.getCachedData().getMetaData().getPrimaryGroup();
157-
158-
if (parseString(queue)) {
159-
return Tag.preProcessParsed(primaryGroup != null ? primaryGroup : "");
160-
} else {
161-
if (primaryGroup == null) {
162-
return Tags.EMPTY_TAG;
163-
}
164-
return Tag.preProcessParsed(primaryGroup);
165-
}
166-
})
167-
.audiencePlaceholder("inherits_group", (aud, queue, ctx) -> {
168-
final User user = user(aud, luckPerms);
169-
if (user == null) {
170-
return null;
171-
}
172-
final Group group = luckPerms.getGroupManager().getGroup(queue.popOr("you need to provide a group").value());
173-
final boolean inheritsGroup = group != null && user.getInheritedGroups(user.getQueryOptions()).contains(group);
174-
175-
if (parseString(queue)) {
176-
return Tag.preProcessParsed(inheritsGroup ? "true" : "false");
177-
} else {
178-
return Tag.selfClosingInserting(inheritsGroup
179-
? TRUE_COMPONENT
180-
: FALSE_COMPONENT
181-
);
182-
}
183-
}).build();
11+
return LuckPermsExpansion.luckPerms();
18412
}
18513

18614
@Override
18715
public LoadRequirement loadRequirement() {
18816
return LoadRequirement.requiredComplement("luckperms", "LuckPerms");
18917
}
19018

191-
private boolean parseString(ArgumentQueue queue) {
192-
return queue.hasNext() && queue.pop().lowerValue().equals("string");
193-
}
19419
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
provider-class=io.miniplaceholders.expansion.luckperms.LuckpermsExpansionProvider
1+
provider-class=io.github.miniplaceholders.expansion.luckperms.LuckPermsExpansionProvider

0 commit comments

Comments
 (0)