diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle
index 965928520..0c86fe2f0 100644
--- a/Bukkit/build.gradle
+++ b/Bukkit/build.gradle
@@ -13,6 +13,7 @@ repositories {
}
maven { url = "https://ci.ender.zone/plugin/repository/everything/" }
maven { url = "https://mvn.intellectualsites.com/content/repositories/snapshots" }
+ maven { url = "https://repo.wea-ondara.net/repository/public/" }
mavenLocal()
}
@@ -33,6 +34,7 @@ dependencies {
implementation("me.clip:placeholderapi:2.10.4")
implementation("net.luckperms:api:5.0")
implementation("net.ess3:EssentialsX:2.16.1")
+ implementation("net.alpenblock:BungeePerms:4.0-dev-106")
compile("se.hyperver.hyperverse:Core:0.6.0-SNAPSHOT"){ transitive = false }
compile 'com.github.pavog:SquirrelID:0.6.1'
}
diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml
index 57d06b615..42fce3d0a 100644
--- a/Bukkit/pom.xml
+++ b/Bukkit/pom.xml
@@ -152,6 +152,12 @@
2.16.1
runtime
+
+ net.alpenblock
+ BungeePerms
+ 4.0-dev-106
+ runtime
+
junit
junit
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java
index 84e474319..02cf4db04 100644
--- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java
+++ b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java
@@ -51,6 +51,7 @@ import com.plotsquared.bukkit.util.BukkitTaskManager;
import com.plotsquared.bukkit.util.BukkitUtil;
import com.plotsquared.bukkit.util.SetGenCB;
import com.plotsquared.bukkit.util.UpdateUtility;
+import com.plotsquared.bukkit.uuid.BungeePermsUUIDService;
import com.plotsquared.bukkit.uuid.EssentialsUUIDService;
import com.plotsquared.bukkit.uuid.LuckPermsUUIDService;
import com.plotsquared.bukkit.uuid.OfflinePlayerUUIDService;
@@ -273,6 +274,14 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
luckPermsUUIDService = null;
}
+ final BungeePermsUUIDService bungeePermsUUIDService;
+ if (Bukkit.getPluginManager().getPlugin("BungeePerms") != null) {
+ bungeePermsUUIDService = new BungeePermsUUIDService();
+ PlotSquared.log(Captions.PREFIX + "(UUID) Using BungeePerms as a complementary UUID service");
+ } else {
+ bungeePermsUUIDService = null;
+ }
+
final EssentialsUUIDService essentialsUUIDService;
if (Bukkit.getPluginManager().getPlugin("Essentials") != null) {
essentialsUUIDService = new EssentialsUUIDService();
@@ -305,6 +314,10 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
impromptuPipeline.registerService(luckPermsUUIDService);
backgroundPipeline.registerService(luckPermsUUIDService);
}
+ if (bungeePermsUUIDService != null) {
+ impromptuPipeline.registerService(bungeePermsUUIDService);
+ backgroundPipeline.registerService(bungeePermsUUIDService);
+ }
if (essentialsUUIDService != null) {
impromptuPipeline.registerService(essentialsUUIDService);
backgroundPipeline.registerService(essentialsUUIDService);
diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/BungeePermsUUIDService.java b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/BungeePermsUUIDService.java
new file mode 100644
index 000000000..4de1bdb92
--- /dev/null
+++ b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/BungeePermsUUIDService.java
@@ -0,0 +1,85 @@
+/*
+ * _____ _ _ _____ _
+ * | __ \| | | | / ____| | |
+ * | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| |
+ * | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` |
+ * | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| |
+ * |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_|
+ * | |
+ * |_|
+ * PlotSquared plot management system for Minecraft
+ * Copyright (C) 2020 IntellectualSites
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.plotsquared.bukkit.uuid;
+
+import com.plotsquared.core.uuid.UUIDMapping;
+import com.plotsquared.core.uuid.UUIDService;
+import net.luckperms.api.model.user.UserManager;
+import org.bukkit.Bukkit;
+import org.bukkit.plugin.RegisteredServiceProvider;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import net.alpenblock.bungeeperms.BungeePerms;
+import net.alpenblock.bungeeperms.io.UUIDPlayerDB;
+
+/**
+ * UUID service that uses the BungeePerms API
+ */
+public class BungeePermsUUIDService implements UUIDService {
+
+ private final BungeePerms bp;
+
+ public BungeePermsUUIDService() {
+ final RegisteredServiceProvider provider = Bukkit.getServicesManager().getRegistration(BungeePerms.class);
+ if (provider != null) {
+ this.bp = provider.getProvider();
+ } else {
+ throw new IllegalStateException("BungeePerms is not available");
+ }
+ }
+
+ @Override @NotNull public List getNames(@NotNull final List uuids) {
+ final List mappings = new ArrayList<>(uuids.size());
+ final UUIDPlayerDB uuiddb = BungeePerms.getInstance().getPermissionsManager().getUUIDPlayerDB();
+ for (final UUID uuid : uuids) {
+ try {
+ final String username = uuiddb.getPlayerName(uuid);
+ if (username != null) {
+ mappings.add(new UUIDMapping(uuid, username));
+ }
+ } catch (final Exception ignored) {}
+ }
+ return mappings;
+ }
+
+ @Override @NotNull public List getUUIDs(@NotNull final List usernames) {
+ final List mappings = new ArrayList<>(usernames.size());
+ final UUIDPlayerDB uuiddb = BungeePerms.getInstance().getPermissionsManager().getUUIDPlayerDB();
+ for (final String username : usernames) {
+ try {
+ final UUID uuid = uuiddb.getUUID(username);
+ if (username != null) {
+ mappings.add(new UUIDMapping(uuid, username));
+ }
+ } catch (final Exception ignored) {}
+ }
+ return mappings;
+ }
+
+}