Skip to content

Commit

Permalink
Initial upgrade to that awful new LuckPerms update
Browse files Browse the repository at this point in the history
apparently @lucko is intent on given anybody who tries to use LP as an API an aneurysm. Why would you turn a clean user-friendly API into this nightmare of layers, managers, generics, streams, ...
  • Loading branch information
mcmonkey4eva committed Mar 3, 2020
1 parent ad653dd commit e234f07
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 21 deletions.
Binary file modified lib/LuckPerms.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -160,7 +160,7 @@
<dependency>
<groupId>me.lucko.luckperms</groupId>
<artifactId>luckperms-api</artifactId>
<version>4.2.17</version>
<version>5.0.88</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/LuckPerms.jar</systemPath>
</dependency>
Expand Down
Expand Up @@ -3,9 +3,6 @@
import com.denizenscript.depenizen.bukkit.properties.luckperms.LuckPermsPlayerProperties;
import com.denizenscript.depenizen.bukkit.objects.luckperms.LuckPermsTrackTag;
import com.denizenscript.depenizen.bukkit.Bridge;
import me.lucko.luckperms.LuckPerms;
import me.lucko.luckperms.api.LuckPermsApi;
import me.lucko.luckperms.api.Track;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizencore.objects.ObjectFetcher;
import com.denizenscript.denizencore.tags.TagRunnable;
Expand All @@ -14,11 +11,16 @@
import com.denizenscript.denizencore.tags.Attribute;
import com.denizenscript.denizencore.tags.ReplaceableTagEvent;
import com.denizenscript.denizencore.tags.TagManager;
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
import me.lucko.luckperms.common.model.Track;

public class LuckPermsBridge extends Bridge {

public static LPBukkitPlugin luckPermsInstance;

@Override
public void init() {
luckPermsInstance = (LPBukkitPlugin) plugin;
TagManager.registerTagHandler(new TagRunnable.RootForm() {
@Override
public void run(ReplaceableTagEvent event) {
Expand All @@ -41,8 +43,7 @@ public void tagEvent(ReplaceableTagEvent event) {
// -->
if (attribute.startsWith("list_tracks")) {
ListTag tracks = new ListTag();
LuckPermsApi api = LuckPerms.getApi();
for (Track track : api.getTracks()) {
for (Track track : luckPermsInstance.getTrackManager().getAll().values()) {
tracks.addObject(new LuckPermsTrackTag(track));
}
event.setReplacedObject(tracks.getObjectAttribute(attribute.fulfill(1)));
Expand All @@ -57,8 +58,7 @@ public void tagEvent(ReplaceableTagEvent event) {
// -->
if (attribute.startsWith("track")) {
if (attribute.hasContext(1)) {
LuckPermsApi api = LuckPerms.getApi();
event.setReplacedObject(new LuckPermsTrackTag(api.getTrack(attribute.getContext(1))).getObjectAttribute(attribute.fulfill(1)));
event.setReplacedObject(LuckPermsTrackTag.valueOf(attribute.getContext(1)).getObjectAttribute(attribute.fulfill(1)));
}
}
}
Expand Down
@@ -1,15 +1,14 @@
package com.denizenscript.depenizen.bukkit.objects.luckperms;

import me.lucko.luckperms.LuckPerms;
import me.lucko.luckperms.api.LuckPermsApi;
import me.lucko.luckperms.api.Track;
import com.denizenscript.denizen.utilities.debugging.Debug;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.Fetchable;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.tags.Attribute;
import com.denizenscript.denizencore.tags.TagContext;
import com.denizenscript.depenizen.bukkit.bridges.LuckPermsBridge;
import me.lucko.luckperms.common.model.Track;

public class LuckPermsTrackTag implements ObjectTag {

Expand Down Expand Up @@ -45,8 +44,7 @@ public static LuckPermsTrackTag valueOf(String string, TagContext context) {

string = string.replace("luckpermstrack@", "");
try {
LuckPermsApi api = LuckPerms.getApi();
Track track = api.getTrack(string);
Track track = LuckPermsBridge.luckPermsInstance.getTrackManager().getIfLoaded(string);
if (track == null) {
return null;
}
Expand Down Expand Up @@ -155,7 +153,6 @@ public String getAttribute(Attribute attribute) {
// -->
if (attribute.startsWith("groups")) {
ListTag groups = new ListTag();
LuckPermsApi api = LuckPerms.getApi();
groups.addAll(track.getGroups());
return groups.getAttribute(attribute.fulfill(1));
}
Expand Down
Expand Up @@ -2,14 +2,17 @@

import com.denizenscript.denizencore.objects.properties.Property;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.depenizen.bukkit.bridges.LuckPermsBridge;
import com.denizenscript.depenizen.bukkit.objects.luckperms.LuckPermsTrackTag;
import me.lucko.luckperms.LuckPerms;
import me.lucko.luckperms.api.LuckPermsApi;
import me.lucko.luckperms.api.Track;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.tags.Attribute;
import me.lucko.luckperms.common.model.Group;
import me.lucko.luckperms.common.model.Track;
import me.lucko.luckperms.common.model.User;
import net.luckperms.api.node.NodeType;
import net.luckperms.api.query.QueryOptions;

public class LuckPermsPlayerProperties implements Property {

Expand Down Expand Up @@ -61,10 +64,17 @@ public String getAttribute(Attribute attribute) {
// -->
if (attribute.startsWith("luckperms_tracks")) {
ListTag tracks = new ListTag();
LuckPermsApi api = LuckPerms.getApi();
for (Track track : api.getTracks()) {
for (String group : track.getGroups()) {
if (api.getUser(player.getOfflinePlayer().getUniqueId()).inheritsGroup(api.getGroup(group))) {
User user = LuckPermsBridge.luckPermsInstance.getUserManager().getOrMake(player.getOfflinePlayer().getUniqueId());
for (Track track : LuckPermsBridge.luckPermsInstance.getTrackManager().getAll().values()) {
for (String groupName : track.getGroups()) {
Group group = LuckPermsBridge.luckPermsInstance.getGroupManager().getOrMake(groupName);
// Copied from https://github.com/LuckPerms/extension-legacy-api/blob/97f30ce63b32663a0481557f3a081a9554a5bca0/src/main/java/me/lucko/luckperms/extension/legacyapi/impl/permissionholders/PermissionHolderProxy.java#L205-L212
boolean inGroup = user.resolveInheritedNodes(QueryOptions.nonContextual()).stream()
.filter(NodeType.INHERITANCE::matches)
.map(NodeType.INHERITANCE::cast)
.filter(net.luckperms.api.node.Node::getValue)
.anyMatch(n -> n.getGroupName().equalsIgnoreCase(group.getName()));
if (inGroup) {
if (!tracks.contains(new LuckPermsTrackTag(track).identify())) {
tracks.addObject(new LuckPermsTrackTag(track));
}
Expand Down

0 comments on commit e234f07

Please sign in to comment.