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; + } + +}