Skip to content

Commit

Permalink
fix: Fixed data method usage
Browse files Browse the repository at this point in the history
  • Loading branch information
4drian3d committed May 28, 2023
1 parent 9f85d2d commit b537bd1
Show file tree
Hide file tree
Showing 9 changed files with 144 additions and 140 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ plugins {
}

dependencies {
implementation(project(":luckperms-expansion-velocity"))
implementation(project(":luckperms-expansion-paper"))
implementation(projects.luckpermsExpansionPaper)
implementation(projects.luckpermsExpansionVelocity)
}

subprojects {
Expand Down
6 changes: 6 additions & 0 deletions common/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dependencies {
compileOnly(libs.miniplaceholders)
compileOnly(libs.adventure.api)
compileOnly(libs.adventure.minimessage)
compileOnly(libs.luckperms)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package io.github.miniplaceholders.expansion.luckperms.common;

import io.github.miniplaceholders.api.Expansion;
import io.github.miniplaceholders.api.utils.LegacyUtils;
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.util.Tristate;

import java.util.UUID;

import static io.github.miniplaceholders.api.utils.Components.*;

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(LegacyUtils.parsePossibleLegacy(user.getCachedData().getMetaData().getPrefix()));
})
.audiencePlaceholder("suffix", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
return Tag.inserting(LegacyUtils.parsePossibleLegacy(user.getCachedData().getMetaData().getSuffix()));
})
.audiencePlaceholder("has_permission", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
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) -> {
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 -> LegacyUtils.parsePossibleLegacy(group.getDisplayName()))
.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 null;
}
return Tag.preProcessParsed(primaryGroup);
})
.audiencePlaceholder("inherits_group", (aud, queue, ctx) -> {
final User user = user(aud);
if (user == null) {
return null;
}
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 User user(final Audience audience) {
final UUID uuid = audience.get(Identity.UUID).orElse(null);
if (uuid == null) {
return null;
}
return luckPerms.getUserManager().getUser(uuid);
}
}
4 changes: 4 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ pluginyml = "0.5.3"

miniplaceholders = "2.2.0"
luckperms = "5.4"
adventure = "4.13.1"

[libraries]

Expand All @@ -20,6 +21,9 @@ 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" }

[plugins]

blossom = { id = "net.kyori.blossom", version.ref = "blossom" }
Expand Down
1 change: 1 addition & 0 deletions paper/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ dependencies {
compileOnly(libs.paper.api)
compileOnly(libs.miniplaceholders)
compileOnly(libs.luckperms)
implementation(projects.luckpermsExpansionCommon)
}

tasks {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,89 +1,30 @@
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;
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 changes: 2 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
rootProject.name = "Luckperms-Expansion"

arrayOf("paper", "velocity").forEach {
arrayOf("paper", "velocity", "common").forEach {
include("luckperms-expansion-$it")
project(":luckperms-expansion-$it").projectDir = file(it)
}
1 change: 1 addition & 0 deletions velocity/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ dependencies {
annotationProcessor(libs.velocity.api)
compileOnly(libs.miniplaceholders)
compileOnly(libs.luckperms)
implementation(projects.luckpermsExpansionCommon)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,94 +6,39 @@
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 = "LuckPerms-Expansion",
id = "luckperms-expansion",
version = "1.0.0",
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) {
this.logger = logger;
}

@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();
}
}

0 comments on commit b537bd1

Please sign in to comment.