Compare commits

..
106 Commits
Author SHA1 Message Date
NotAlexNoyle 2db6f362b2 Exclude CODEOWNERS from language statistics 2026-10-28 08:31:43 -04:00
NotAlexNoyle a80a1241b2 Add CODEOWNERS (one staff approval) 2026-10-28 08:31:43 -04:00
NotAlexNoyle d2ecb911f2 Fix double spaces appended to prefixes 2026-04-16 08:19:30 -04:00
NotAlexNoyle 2fb9457cd2 Fix jar 2025-12-10 02:35:48 -05:00
NotAlexNoyle 5531d8ff71 Update gradle 2025-09-23 21:50:41 -04:00
NotAlexNoyle 7df7d7c628 Update settings.gradle.kts again 2025-08-31 11:31:01 -04:00
NotAlexNoyle 18ff36d805 Update settings.gradle.kts 2025-08-31 11:21:17 -04:00
NotAlexNoyle cfced6638f Update gradle to 8.14.3 2025-08-30 10:54:06 -04:00
NotAlexNoyle cc4041096e Propose open source license 2025-07-25 01:46:09 -04:00
Adrian 55e17cee9e Merge pull request #77 from MiniPlaceholders/renovate/org.gradle.toolchains.foojay-resolver-convention-0.x
chore(deps): update plugin org.gradle.toolchains.foojay-resolver-convention to v0.8.0
2024-02-06 16:50:12 -05:00
renovate[bot] d824145030 chore(deps): update plugin org.gradle.toolchains.foojay-resolver-convention to v0.8.0 2024-02-04 11:44:57 +00:00
Adrian 06be6bf318 Merge pull request #69 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 32bab5b
2024-01-03 23:41:14 -05:00
renovate[bot] 71cd1791e9 chore(deps): update gradle/gradle-build-action digest to 32bab5b 2024-01-04 04:03:50 +00:00
Adrian 2f6a861f60 Merge pull request #75 from MiniPlaceholders/renovate/adventure
fix(deps): update dependency net.kyori:adventure-text-serializer-legacy to v4.15.0
2023-12-18 07:04:32 -05:00
renovate[bot] 66b14bf1ef fix(deps): update dependency net.kyori:adventure-text-serializer-legacy to v4.15.0 2023-12-18 10:43:20 +00:00
Adrian f5e0f565a5 Merge pull request #70 from MiniPlaceholders/renovate/fabric.loader
fix(deps): update dependency net.fabricmc:fabric-loader to v0.15.0
2023-11-29 08:53:17 -05:00
renovate[bot] 6000e1a3b5 fix(deps): update dependency net.fabricmc:fabric-loader to v0.15.0 2023-11-29 12:33:40 +00:00
Adrian a129d47dc0 Merge pull request #68 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 87a9a15
2023-11-27 12:02:21 -05:00
renovate[bot] 2307a8aa15 chore(deps): update gradle/gradle-build-action digest to 87a9a15 2023-11-27 07:50:47 +00:00
Adrian 4a26f2c333 Merge pull request #67 from MiniPlaceholders/renovate/miniplaceholders
fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.3
2023-11-19 08:44:22 -05:00
renovate[bot] 5a6724f854 fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.3 2023-11-18 21:06:38 +00:00
Adrian 13feec89c2 Merge pull request #66 from MiniPlaceholders/renovate/adventurefabric
fix(deps): update dependency net.kyori:adventure-platform-fabric to v5.10.1
2023-11-17 09:34:00 -05:00
renovate[bot] 0859305d28 fix(deps): update dependency net.kyori:adventure-platform-fabric to v5.10.1 2023-11-17 03:43:29 +00:00
Adrian 416b22ba77 Merge remote-tracking branch 'origin/main' 2023-11-12 12:02:07 -05:00
Adrian e58147aea0 fix: Correctly obtain user placeholders 2023-11-12 12:01:11 -05:00
Adrian 1ddc5f1798 Merge pull request #64 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 9bca466
2023-11-10 19:37:06 -05:00
renovate[bot] 956cd3c029 chore(deps): update gradle/gradle-build-action digest to 9bca466 2023-11-09 09:49:21 +00:00
Adrian efff714ca2 Merge pull request #56 from MiniPlaceholders/renovate/fabric-loom-1.x
chore(deps): update plugin fabric-loom to v1.4.4
2023-11-05 23:23:33 -05:00
renovate[bot] ed88680013 chore(deps): update plugin fabric-loom to v1.4.4 2023-11-06 04:16:29 +00:00
Adrian c194dbd624 Merge pull request #52 from MiniPlaceholders/renovate/org.spongepowered.gradle.plugin-2.x
chore(deps): update plugin org.spongepowered.gradle.plugin to v2.2.0
2023-11-05 23:15:59 -05:00
Adrian 5ddf63ca83 fix: Return an empty component instead of null in data placeholders 2023-11-05 23:15:08 -05:00
renovate[bot] fea5597b93 chore(deps): update plugin org.spongepowered.gradle.plugin to v2.2.0 2023-11-06 04:04:39 +00:00
Adrian 8e0e09b62d Merge pull request #53 from MiniPlaceholders/renovate/runtask
chore(deps): update dependency xyz.jpenilla.run-velocity to v2.2.0
2023-11-05 23:03:08 -05:00
Adrian dd808195f9 Merge pull request #44 from MiniPlaceholders/renovate/gradle-8.x
chore(deps): update dependency gradle to v8.4
2023-11-05 23:02:59 -05:00
Adrian 6220457381 Merge pull request #62 from MiniPlaceholders/renovate/fabric.loader
fix(deps): update dependency net.fabricmc:fabric-loader to v0.14.24
2023-11-05 23:02:50 -05:00
Adrian 7aa0007bfc fix: Updated blossom usage 2023-11-05 23:02:09 -05:00
Adrian 548d04b69e Merge pull request #63 from MiniPlaceholders/renovate/miniplaceholders
fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.2
2023-11-04 17:06:33 -05:00
renovate[bot] 59415b0b3e fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.2 2023-11-04 21:46:51 +00:00
renovate[bot] a43f3e42f5 fix(deps): update dependency net.fabricmc:fabric-loader to v0.14.24 2023-10-25 01:03:30 +00:00
Adrian 6efce1cfe3 Merge pull request #58 from MiniPlaceholders/renovate/fabric.loader
fix(deps): update dependency net.fabricmc:fabric-loader to v0.14.23
2023-10-13 07:44:57 -05:00
renovate[bot] edb9edf3eb fix(deps): update dependency net.fabricmc:fabric-loader to v0.14.23 2023-10-13 07:54:45 +00:00
Adrian 953ea8158d Merge pull request #59 from MiniPlaceholders/renovate/fabric.api
fix(deps): update dependency net.fabricmc.fabric-api:fabric-api to v0.90.1+1.20.3
2023-10-12 23:42:20 -05:00
Adrian 914b6fcef5 Merge pull request #60 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 0bfe00a
2023-10-12 23:42:10 -05:00
renovate[bot] f829a152be chore(deps): update gradle/gradle-build-action digest to 0bfe00a 2023-10-12 19:41:24 +00:00
renovate[bot] b848d092fb fix(deps): update dependency net.fabricmc.fabric-api:fabric-api to v0.90.1+1.20.3 2023-10-12 06:20:24 +00:00
renovate[bot] 0799f4f9c4 chore(deps): update dependency gradle to v8.4 2023-10-04 21:45:19 +00:00
Adrian cd7271e247 Merge pull request #57 from MiniPlaceholders/renovate/fabric.api
fix(deps): update dependency net.fabricmc.fabric-api:fabric-api to v0.89.3+1.20.2
2023-10-01 22:07:06 -05:00
renovate[bot] 12c6d3fb85 fix(deps): update dependency net.fabricmc.fabric-api:fabric-api to v0.89.3+1.20.2 2023-10-02 01:00:26 +00:00
Adrian 56fc696fd6 Merge pull request #54 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 62cce3c
2023-10-01 13:18:10 -05:00
renovate[bot] 2dc3b75d5b chore(deps): update gradle/gradle-build-action digest to 62cce3c 2023-10-01 14:08:52 +00:00
Adrian c55ecb435e Merge pull request #47 from MiniPlaceholders/renovate/fabric.api
fix(deps): update dependency net.fabricmc.fabric-api:fabric-api to v0.89.2+1.20.2
2023-09-23 23:26:09 -05:00
renovate[bot] 28b979f975 fix(deps): update dependency net.fabricmc.fabric-api:fabric-api to v0.89.2+1.20.2 2023-09-23 21:09:14 +00:00
Adrian 6e9094d9f0 Merge pull request #55 from MiniPlaceholders/renovate/adventurefabric
fix(deps): update dependency net.kyori:adventure-platform-fabric to v5.10.0
2023-09-23 09:17:15 -05:00
renovate[bot] 672674a1a2 fix(deps): update dependency net.kyori:adventure-platform-fabric to v5.10.0 2023-09-23 04:48:53 +00:00
renovate[bot] d2d5b5513f chore(deps): update dependency xyz.jpenilla.run-velocity to v2.2.0 2023-09-21 07:48:01 +00:00
Adrian a5a201f289 Merge pull request #50 from MiniPlaceholders/renovate/actions-checkout-4.x
chore(deps): update actions/checkout action to v4
2023-09-04 20:56:15 -05:00
Adrian b680efef52 Merge pull request #51 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 3bfe3a4
2023-09-04 20:56:03 -05:00
renovate[bot] f00cc3fc5b chore(deps): update gradle/gradle-build-action digest to 3bfe3a4 2023-09-05 01:51:07 +00:00
renovate[bot] c5840658a2 chore(deps): update actions/checkout action to v4 2023-09-04 15:58:35 +00:00
Adrian c5183fa01b Merge pull request #48 from MiniPlaceholders/renovate/fabric-loom-1.x
chore(deps): update plugin fabric-loom to v1.3.9
2023-09-01 09:44:32 -05:00
Adrian 6eaccf2b65 release: Version 1.4.0 2023-09-01 09:44:06 -05:00
renovate[bot] e4df40df11 chore(deps): update plugin fabric-loom to v1.3.9 2023-09-01 04:03:54 +00:00
Adrian d2f8f17f90 Merge pull request #45 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 8f08e41
2023-08-31 23:03:44 -05:00
Adrian 1b1ee632c5 Merge pull request #46 from MiniPlaceholders/feat/fabric
feat: Added Fabric Support
2023-08-31 23:03:35 -05:00
Adrian 0758c0e526 feat: Added Fabric Support 2023-08-31 22:55:21 -05:00
renovate[bot] 6d49072d31 chore(deps): update gradle/gradle-build-action digest to 8f08e41 2023-08-28 20:12:49 +00:00
Adrian 61d29e983c Merge pull request #43 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 86a7c5a
2023-08-17 18:10:45 -05:00
renovate[bot] 8b886739da chore(deps): update gradle/gradle-build-action digest to 86a7c5a 2023-08-17 22:55:54 +00:00
Adrian 33eb4711ca release: Version 1.3.0 2023-08-01 18:57:25 -05:00
Adrian 1dc0cba891 fix: Fixed Sponge support 2023-08-01 18:56:03 -05:00
Adrian dba1f47d26 feat: Added Sponge support 2023-08-01 18:38:29 -05:00
Adrian e38c5312c3 [ci skip] chore: Add missing placeholder to README 2023-08-01 18:26:42 -05:00
Adrian 402ed6b10e feat: Update to MiniPlaceholders 2.2.1 2023-08-01 18:25:12 -05:00
Adrian f4d81a24f9 Merge pull request #40 from MiniPlaceholders/renovate/miniplaceholders
fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.1
2023-08-01 18:18:36 -05:00
Adrian 5bcda30624 Merge pull request #42 from RealMarvn/meta-support
Added get_meta placeholder
2023-08-01 18:18:15 -05:00
RealMarvn 4d9c9ddbc3 Update CommonExpansion.java
Updated get_meta to just meta
2023-08-02 01:13:18 +02:00
RealMarvn 5426949be3 Update CommonExpansion.java
If the result is null due to invalid keys it should return nothing.
If there is a result it will now return the value without being edited.
2023-08-02 01:12:23 +02:00
RealMarvn a1b4d64ea4 Added get_meta placeholder
You can now get the meta value with a placeholder
2023-08-02 01:03:14 +02:00
Adrian 2abc476b85 Merge pull request #41 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to a4cf152
2023-07-31 23:58:40 -05:00
renovate[bot] e909ef687c chore(deps): update gradle/gradle-build-action digest to a4cf152 2023-07-24 16:17:49 +00:00
renovate[bot] bb237abc01 fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.1 2023-07-20 18:34:21 +00:00
Adrian e865b0013e Merge pull request #38 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 2dbad1e
2023-07-18 11:26:43 -05:00
renovate[bot] fe59f35290 chore(deps): update gradle/gradle-build-action digest to 2dbad1e 2023-07-17 22:50:10 +00:00
Adrian 0493adac46 release: Version 1.2.1 2023-07-17 12:59:10 -05:00
Adrian 8478013286 Merge remote-tracking branch 'origin/main' 2023-07-17 12:55:38 -05:00
Adrian cf1a00d5a5 fix: Fixed legacy string detection 2023-07-17 12:55:09 -05:00
Adrian a18b81b2b5 Merge pull request #37 from MiniPlaceholders/renovate/gradle-8.x
chore(deps): update dependency gradle to v8.2.1
2023-07-10 09:00:18 -05:00
Adrian 3a10aa2f69 Merge pull request #35 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to cef72ff
2023-07-10 09:00:12 -05:00
renovate[bot] 21b537d427 chore(deps): update dependency gradle to v8.2.1 2023-07-10 13:27:35 +00:00
renovate[bot] b80d48202e chore(deps): update gradle/gradle-build-action digest to cef72ff 2023-07-10 13:26:27 +00:00
Adrian c63be1d382 Merge pull request #36 from MiniPlaceholders/renovate/gradle-8.x
chore(deps): update dependency gradle to v8.2
2023-06-30 15:48:05 -05:00
renovate[bot] 409225b9e6 chore(deps): update dependency gradle to v8.2 2023-06-30 20:28:35 +00:00
Adrian f56c4ddfbf Merge pull request #33 from MiniPlaceholders/renovate/adventure
fix(deps): update adventure to v4.14.0
2023-06-29 23:14:37 -05:00
renovate[bot] 4aa8afc794 fix(deps): update adventure to v4.14.0 2023-06-30 04:00:47 +00:00
Adrian e419b045ae Merge pull request #34 from MiniPlaceholders/renovate/pluginyml
chore(deps): update dependency net.minecrell.plugin-yml.bukkit to v0.6.0
2023-06-29 23:00:29 -05:00
Adrian 9cc677b3c2 Merge pull request #32 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 40b6781
2023-06-29 23:00:18 -05:00
renovate[bot] f09b8a44d3 chore(deps): update gradle/gradle-build-action digest to 40b6781 2023-06-29 19:40:07 +00:00
renovate[bot] 9006321454 chore(deps): update dependency net.minecrell.plugin-yml.bukkit to v0.6.0 2023-06-19 08:46:13 +00:00
Adrian 81468ca694 Merge pull request #31 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 680037c
2023-05-29 21:14:11 -05:00
renovate[bot] 9780d0b729 chore(deps): update gradle/gradle-build-action digest to 680037c 2023-05-29 21:30:25 +00:00
Adrian b636018b65 fix: Fixed MiniMessage format in legacy strings 2023-05-28 17:00:09 -05:00
Adrian b537bd1488 fix: Fixed data method usage 2023-05-28 16:27:31 -05:00
Adrian 9f85d2d641 Merge pull request #30 from MiniPlaceholders/renovate/gradle-gradle-build-action-digest
chore(deps): update gradle/gradle-build-action digest to 2bf6bc3
2023-05-23 17:10:24 -05:00
renovate[bot] 669f0b0c5b chore(deps): update gradle/gradle-build-action digest to 2bf6bc3 2023-05-23 21:36:29 +00:00
Adrian 6e971aa7e3 Merge pull request #29 from MiniPlaceholders/renovate/miniplaceholders
fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.0
2023-05-13 15:50:34 -05:00
renovate[bot] fa3da54687 fix(deps): update dependency io.github.miniplaceholders:miniplaceholders-api to v2.2.0 2023-05-13 20:32:09 +00:00
23 changed files with 382 additions and 211 deletions

No files matched your search

+1
View File
@@ -0,0 +1 @@
.gitea/CODEOWNERS linguist-detectable=false
+3
View File
@@ -0,0 +1,3 @@
# Pull requests request review from the eligible staff team(s).
# One approval from either an Admin or Developer satisfies branch protection.
* @trueog/Admins @trueog/Developers
-28
View File
@@ -1,28 +0,0 @@
name: Java CI with Gradle
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'gradle'
- name: Build with Gradle
uses: gradle/gradle-build-action@d23c38fad3e837961b39af2b98b046694927aca4
with:
arguments: build
+22
View File
@@ -0,0 +1,22 @@
MIT License
Copyright (c) 4drian3d
Copyright (c) contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+2
View File
@@ -15,6 +15,8 @@ LuckPerms Expansion for MiniPlaceholders
`<luckperms_inherits_group:group>` (true/false)
`<luckperms_meta:meta-key>`
## Downloads
[![](https://raw.githubusercontent.com/Prospector/badges/master/modrinth-badge-72h-padded.png)](https://modrinth.com/plugin/luckperms-expansion)
+13 -7
View File
@@ -1,18 +1,17 @@
plugins {
java
alias(libs.plugins.shadow)
eclipse
id("com.gradleup.shadow") version "8.3.9" // Import Shadow plugin.
}
dependencies {
implementation(project(":luckperms-expansion-velocity"))
implementation(project(":luckperms-expansion-paper"))
implementation(projects.luckpermsExpansionPaper)
implementation(projects.luckpermsExpansionVelocity)
implementation(projects.luckpermsExpansionSponge)
}
subprojects {
apply<JavaPlugin>()
repositories {
maven("https://repo.papermc.io/repository/maven-public/")
}
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
@@ -26,7 +25,14 @@ subprojects {
tasks {
shadowJar {
archiveFileName.set("LuckPerms-Expansion-${project.version}.jar")
archiveFileName.set("MiniPlaceholders-LuckPerms-${project.version}.jar")
archiveClassifier.set("")
doLast {
copy {
from(archiveFile)
into("${rootProject.projectDir}/build")
}
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
build {
+7
View File
@@ -0,0 +1,7 @@
dependencies {
compileOnly(libs.miniplaceholders)
compileOnly(libs.adventure.api)
compileOnly(libs.adventure.minimessage)
compileOnly(libs.adventure.legacy)
compileOnly(libs.luckperms)
}
@@ -0,0 +1,127 @@
package io.github.miniplaceholders.expansion.luckperms.common;
import io.github.miniplaceholders.api.Expansion;
import io.github.miniplaceholders.api.utils.TagsUtils;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import net.luckperms.api.query.QueryOptions;
import net.luckperms.api.util.Tristate;
import java.util.Optional;
import java.util.UUID;
import static io.github.miniplaceholders.api.utils.Components.*;
import static io.github.miniplaceholders.api.utils.LegacyUtils.*;
public record CommonExpansion(LuckPerms luckPerms) {
private static final Component UNDEFINED_COMPONENT = Component.text("undefined", NamedTextColor.GRAY);
public Expansion.Builder commonBuilder() {
return Expansion.builder("luckperms")
.audiencePlaceholder("prefix", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
return Tag.inserting(parsePossibleLegacy(stripOrNull(user.getCachedData().getMetaData().getPrefix()), ctx));
})
.audiencePlaceholder("suffix", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
return Tag.inserting(parsePossibleLegacy(stripOrNull(user.getCachedData().getMetaData().getSuffix()), ctx));
})
.audiencePlaceholder("meta", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
final String meta = queue.popOr(() -> "you need to introduce a meta key").value();
final Optional<QueryOptions> queryOptions = this.luckPerms.getContextManager().getQueryOptions(user);
if (queryOptions.isEmpty()) {
return null;
}
final String result = user.getCachedData().getMetaData(queryOptions.get()).getMetaValue(meta);
if (result == null) {
return TagsUtils.EMPTY_TAG;
}
return Tag.preProcessParsed(result.strip());
})
.audiencePlaceholder("has_permission", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
final String permission = queue.popOr(() -> "you need to introduce an permission").value();
final Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
return Tag.selfClosingInserting(result.asBoolean()
? TRUE_COMPONENT
: FALSE_COMPONENT
);
})
.audiencePlaceholder("check_permission", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
final String permission = queue.popOr(() -> "you need to introduce an permission").value();
final Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
return Tag.selfClosingInserting(switch(result) {
case TRUE -> TRUE_COMPONENT;
case FALSE -> FALSE_COMPONENT;
case UNDEFINED -> UNDEFINED_COMPONENT;
});
})
.audiencePlaceholder("inherited_groups", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
final Component groups = user.getInheritedGroups(user.getQueryOptions()).stream()
.map(group -> parsePossibleLegacy(stripOrNull(group.getDisplayName()), ctx))
.collect(Component.toComponent(Component.text(", ")));
return Tag.selfClosingInserting(groups);
})
.audiencePlaceholder("primary_group_name", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
final String primaryGroup = user.getCachedData().getMetaData().getPrimaryGroup();
if (primaryGroup == null) {
return TagsUtils.EMPTY_TAG;
}
return Tag.preProcessParsed(primaryGroup.strip());
})
.audiencePlaceholder("inherits_group", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
final Group group = luckPerms.getGroupManager().getGroup(queue.popOr("you need to provide a group").value());
return Tag.selfClosingInserting(group != null && user.getInheritedGroups(user.getQueryOptions()).contains(group)
? TRUE_COMPONENT
: FALSE_COMPONENT
);
});
}
private static String stripOrNull(final String value) {
return value == null ? null : value.strip();
}
private User user(final Audience audience) {
final UUID uuid = audience.get(Identity.UUID).orElse(null);
if (uuid == null) {
return null;
}
return luckPerms.getUserManager().getUser(uuid);
}
}
+3 -2
View File
@@ -1,3 +1,4 @@
group = io.github.miniplaceholders
version = 1.1.1
description = LuckPerms-Expansion
version = 1.4.1
description = LuckPerms-Expansion
org.gradle.jvmargs=-Xmx2G
+21 -7
View File
@@ -3,15 +3,20 @@ metadata.format.version = "1.1"
[versions]
velocity = "3.2.0-SNAPSHOT"
paper = "1.19.3-R0.1-SNAPSHOT"
paper = "1.19.4-R0.1-SNAPSHOT"
blossom = "1.3.1"
shadow = "8.1.1"
runtask = "2.1.0"
pluginyml = "0.5.3"
blossom = "2.1.0"
runtask = "2.2.0"
pluginyml = "0.6.0"
miniplaceholders = "2.1.0"
miniplaceholders = "2.2.3"
luckperms = "5.4"
adventure = "4.15.0"
fabric-loader = "0.15.0"
fabric-api = "0.90.1+1.20.3"
minecraft = "1.20.1"
adventurefabric = "5.10.1"
[libraries]
@@ -20,10 +25,19 @@ paper-api = { group = "io.papermc.paper", name = "paper-api", version.ref = "pap
miniplaceholders = { group = "io.github.miniplaceholders", name = "miniplaceholders-api", version.ref = "miniplaceholders" }
luckperms = { module = "net.luckperms:api", version.ref = "luckperms" }
adventure-api = { group = "net.kyori", name = "adventure-api", version.ref = "adventure" }
adventure-minimessage = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "adventure" }
adventure-legacy = { group = "net.kyori", name = "adventure-text-serializer-legacy", version.ref = "adventure" }
fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" }
fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fabric-api" }
minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" }
adventure-platform-fabric = { group = "net.kyori", name = "adventure-platform-fabric", version.ref = "adventurefabric" }
[plugins]
blossom = { id = "net.kyori.blossom", version.ref = "blossom" }
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }
runvelocity = { id = "xyz.jpenilla.run-velocity", version.ref = "runtask" }
runpaper = { id = "xyz.jpenilla.run-velocity", version.ref = "runtask" }
pluginyml = { id = "net.minecrell.plugin-yml.bukkit", version.ref = "pluginyml" }
idea-ext = { id = "org.jetbrains.gradle.plugin.idea-ext", version = "1.1.7" }
Binary file not shown.
+2 -1
View File
@@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+18 -12
View File
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -83,7 +85,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -111,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -130,10 +133,13 @@ location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
@@ -141,7 +147,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@@ -149,7 +155,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -198,16 +204,16 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
Vendored
+14 -12
View File
@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -57,22 +59,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
+1
View File
@@ -6,6 +6,7 @@ dependencies {
compileOnly(libs.paper.api)
compileOnly(libs.miniplaceholders)
compileOnly(libs.luckperms)
implementation(projects.luckpermsExpansionCommon)
}
tasks {
@@ -1,15 +1,7 @@
package io.github.miniplaceholders.expansion.luckperms.paper;
import io.github.miniplaceholders.api.Expansion;
import io.github.miniplaceholders.api.utils.LegacyUtils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.minimessage.tag.Tag;
import io.github.miniplaceholders.expansion.luckperms.common.CommonExpansion;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import net.luckperms.api.platform.PlayerAdapter;
import net.luckperms.api.util.Tristate;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
@@ -17,73 +9,22 @@ import org.bukkit.plugin.java.JavaPlugin;
@SuppressWarnings("unused")
public final class PaperPlugin extends JavaPlugin {
private static final Component FALSE_COMPONENT = Component.text(false, NamedTextColor.RED);
private static final Component TRUE_COMPONENT = Component.text(true, NamedTextColor.GREEN);
private static final Component UNDEFINED_COMPONENT = Component.text("undefined", NamedTextColor.GRAY);
@Override
public void onEnable(){
this.getSLF4JLogger().info("Starting LuckPerms Expansion for Paper");
RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
final RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
if (provider == null) {
this.getSLF4JLogger().error("Cannot found LuckPerms plugin, disabling expansion");
Bukkit.getPluginManager().disablePlugin(this);
return;
}
LuckPerms luckPerms = provider.getProvider();
final LuckPerms luckPerms = provider.getProvider();
PlayerAdapter<Player> adapter = luckPerms.getPlayerAdapter(Player.class);
Expansion.builder("luckperms")
.filter(Player.class)
.audiencePlaceholder("prefix", (aud, queue, ctx) ->
Tag.inserting(LegacyUtils.parsePossibleLegacy(adapter.getMetaData((Player)aud).getPrefix())))
.audiencePlaceholder("suffix", (aud, queue, ctx) ->
Tag.inserting(LegacyUtils.parsePossibleLegacy(adapter.getMetaData((Player)aud).getSuffix())))
.audiencePlaceholder("has_permission", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
String permission = queue.popOr(() -> "you need to introduce an permission").value();
Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
return Tag.selfClosingInserting(result.asBoolean()
? TRUE_COMPONENT
: FALSE_COMPONENT
);
})
.audiencePlaceholder("check_permission", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
String permission = queue.popOr(() -> "you need to introduce an permission").value();
Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
return Tag.selfClosingInserting(switch(result) {
case TRUE -> TRUE_COMPONENT;
case FALSE -> FALSE_COMPONENT;
case UNDEFINED -> UNDEFINED_COMPONENT;
});
})
.audiencePlaceholder("inherited_groups", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
Component groups = user.getInheritedGroups(user.getQueryOptions()).stream()
.map(group -> LegacyUtils.parsePossibleLegacy(group.getDisplayName()))
.collect(Component.toComponent(Component.space()));
return Tag.selfClosingInserting(groups);
})
.audiencePlaceholder("primary_group_name", (aud, queue, ctx) -> {
final String primaryGroup = adapter.getUser((Player)aud).getCachedData().getMetaData().getPrimaryGroup();
if (primaryGroup == null) {
return null;
}
return Tag.preProcessParsed(primaryGroup);
})
.audiencePlaceholder("inherits_group", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
Group group = luckPerms.getGroupManager().getGroup(queue.popOr(() -> "you need to provide a group").value());
return Tag.selfClosingInserting(group != null && user.getInheritedGroups(user.getQueryOptions()).contains(group)
? TRUE_COMPONENT
: FALSE_COMPONENT
);
})
.build()
.register();
new CommonExpansion(luckPerms).commonBuilder()
.filter(Player.class)
.build()
.register();
}
}
+3 -3
View File
@@ -1,11 +1,11 @@
name: LuckPerms-Expansion
name: MiniPlaceholders-LuckPerms
version: '${version}'
author: 4drian3d
main: io.github.miniplaceholders.expansion.luckperms.paper.PaperPlugin
api-version: '1.19'
folia-supported: true
folia-supported: false
dependencies:
- name: MiniPlaceholders
required: true
- name: LuckPerms
required: true
required: true
+23 -2
View File
@@ -1,6 +1,27 @@
rootProject.name = "Luckperms-Expansion"
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
rootProject.name = "MiniPlaceholders-LuckPerms"
arrayOf("paper", "velocity").forEach {
dependencyResolutionManagement {
repositories {
maven("https://repo.papermc.io/repository/maven-public/")
}
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
}
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
maven("https://maven.quiltmc.org/repository/release/")
}
}
arrayOf("common", "paper", "velocity", "sponge").forEach {
include("luckperms-expansion-$it")
project(":luckperms-expansion-$it").projectDir = file(it)
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
id("org.spongepowered.gradle.plugin") version "2.2.0"
}
+48
View File
@@ -0,0 +1,48 @@
import org.spongepowered.gradle.plugin.config.PluginLoaders
import org.spongepowered.plugin.metadata.model.PluginDependency
plugins {
id("org.spongepowered.gradle.plugin")
}
dependencies {
compileOnly(libs.miniplaceholders)
compileOnly(libs.luckperms)
implementation(projects.luckpermsExpansionCommon)
}
sponge {
apiVersion("8.1.0")
license("GPL-3")
loader {
name(PluginLoaders.JAVA_PLAIN)
version("1.0")
}
plugin("miniplaceholders-luckperms-expansion") {
displayName("MiniPlaceholders-LuckPerms-Expansion")
entrypoint("io.github.miniplaceholders.expansion.luckperms.sponge.SpongePlugin")
description(project.description)
links {
homepage("https://github.com/MiniPlaceholders/LuckPerms-Expansion")
source("https://github.com/MiniPlaceholders/LuckPerms-Expansion")
issues("https://github.com/MiniPlaceholders/LuckPerms-Expansion/issues")
}
contributor("4drian3d") {
description("Lead Developer")
}
dependency("spongeapi") {
loadOrder(PluginDependency.LoadOrder.AFTER)
optional(false)
}
dependency("miniplaceholders") {
loadOrder(PluginDependency.LoadOrder.AFTER)
optional(false)
version("2.2.0")
}
dependency("luckperms") {
loadOrder(PluginDependency.LoadOrder.AFTER)
optional(false)
version("5.4.98")
}
}
}
@@ -0,0 +1,29 @@
package io.github.miniplaceholders.expansion.luckperms.sponge;
import com.google.inject.Inject;
import io.github.miniplaceholders.expansion.luckperms.common.CommonExpansion;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.LuckPermsProvider;
import org.apache.logging.log4j.Logger;
import org.spongepowered.api.Server;
import org.spongepowered.api.entity.living.player.server.ServerPlayer;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.lifecycle.StartingEngineEvent;
import org.spongepowered.plugin.builtin.jvm.Plugin;
@Plugin("miniplaceholders-luckperms-expansion")
public class SpongePlugin {
@Inject
private Logger logger;
@Listener
public void onServerStart(final StartingEngineEvent<Server> event) {
this.logger.info("Starting LuckPerms Expansion for Sponge");
final LuckPerms luckPerms = LuckPermsProvider.get();
new CommonExpansion(luckPerms).commonBuilder()
.filter(ServerPlayer.class)
.build()
.register();
}
}
+16
View File
@@ -1,6 +1,22 @@
plugins {
alias(libs.plugins.idea.ext)
alias(libs.plugins.blossom)
}
dependencies {
compileOnly(libs.velocity.api)
annotationProcessor(libs.velocity.api)
compileOnly(libs.miniplaceholders)
compileOnly(libs.luckperms)
implementation(projects.luckpermsExpansionCommon)
}
sourceSets {
main {
blossom {
javaSources {
property("version", project.version.toString())
}
}
}
}
@@ -0,0 +1,6 @@
package io.github.miniplaceholders.expansion.luckperms.velocity;
public class Constants {
private Constants() {}
static final String VERSION = "{{ version }}";
}
@@ -6,37 +6,24 @@ import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
import com.velocitypowered.api.plugin.Dependency;
import com.velocitypowered.api.plugin.Plugin;
import com.velocitypowered.api.proxy.Player;
import io.github.miniplaceholders.api.Expansion;
import io.github.miniplaceholders.api.utils.LegacyUtils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.minimessage.tag.Tag;
import io.github.miniplaceholders.expansion.luckperms.common.CommonExpansion;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.LuckPermsProvider;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import net.luckperms.api.platform.PlayerAdapter;
import net.luckperms.api.util.Tristate;
import org.slf4j.Logger;
import java.util.stream.Collectors;
@Plugin(
name = "LuckPerms-Expansion",
id = "luckperms-expansion",
version = "1.0.0",
authors = {"4drian3d"},
dependencies = {
@Dependency(id = "miniplaceholders"),
@Dependency(id = "luckperms")
}
name = "MiniPlaceholders-LuckPerms-Expansion",
id = "miniplaceholders-luckperms-expansion",
version = Constants.VERSION,
authors = {"4drian3d"},
dependencies = {
@Dependency(id = "miniplaceholders"),
@Dependency(id = "luckperms")
}
)
public final class VelocityPlugin {
private final Logger logger;
private static final Component FALSE_COMPONENT = Component.text(false, NamedTextColor.RED);
private static final Component TRUE_COMPONENT = Component.text(true, NamedTextColor.GREEN);
private static final Component UNDEFINED_COMPONENT = Component.text("undefined", NamedTextColor.GRAY);
@Inject
public VelocityPlugin(Logger logger) {
@@ -44,56 +31,14 @@ public final class VelocityPlugin {
}
@Subscribe
public void onProxyInitialize(ProxyInitializeEvent event) {
public void onProxyInitialize(final ProxyInitializeEvent event) {
logger.info("Starting LuckPerms Expansion for Velocity");
LuckPerms luckPerms = LuckPermsProvider.get();
final LuckPerms luckPerms = LuckPermsProvider.get();
PlayerAdapter<Player> adapter = luckPerms.getPlayerAdapter(Player.class);
Expansion.builder("luckperms")
.filter(Player.class)
.audiencePlaceholder("prefix", (aud, queue, ctx) -> Tag.inserting(LegacyUtils.parsePossibleLegacy(adapter.getMetaData((Player)aud).getPrefix())))
.audiencePlaceholder("suffix", (aud, queue, ctx) ->
Tag.inserting(LegacyUtils.parsePossibleLegacy(adapter.getMetaData((Player)aud).getSuffix())))
.audiencePlaceholder("has_permission", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
String permission = queue.popOr(() -> "you need to introduce an permission").value();
Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
return Tag.selfClosingInserting(result.asBoolean()
? TRUE_COMPONENT
: FALSE_COMPONENT
);
})
.audiencePlaceholder("check_permission", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
String permission = queue.popOr(() -> "you need to introduce an permission").value();
Tristate result = user.getCachedData().getPermissionData().checkPermission(permission);
return Tag.selfClosingInserting(switch(result) {
case TRUE -> TRUE_COMPONENT;
case FALSE -> FALSE_COMPONENT;
case UNDEFINED -> UNDEFINED_COMPONENT;
});
})
.audiencePlaceholder("inherited_groups", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
String groups = user.getInheritedGroups(user.getQueryOptions()).stream()
.map(Group::getDisplayName)
.collect(Collectors.joining(" "));
return Tag.selfClosingInserting(LegacyUtils.parsePossibleLegacy(groups));
})
.audiencePlaceholder("primary_group_name", (aud, queue, ctx) ->
Tag.selfClosingInserting(Component.text(adapter.getUser((Player)aud).getCachedData().getMetaData().getPrimaryGroup())))
.audiencePlaceholder("inherits_group", (aud, queue, ctx) -> {
User user = adapter.getUser((Player)aud);
Group group = luckPerms.getGroupManager().getGroup(queue.popOr(() -> "you need to provide a group").value());
return Tag.selfClosingInserting(group != null && user.getInheritedGroups(user.getQueryOptions()).contains(group)
? TRUE_COMPONENT
: FALSE_COMPONENT
);
})
.build()
.register();
new CommonExpansion(luckPerms).commonBuilder()
.filter(Player.class)
.build()
.register();
}
}