mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 19:37:35 +01:00
ea855e2b46
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Developers!: You will need to clean up your work/Minecraft/1.13.2 folder for this Also, restore a patch that was dropped in the last upstream Bukkit Changes: 279eeab3 Fix command description not being set 96e2bb18 Remove debug print from SyntheticEventTest CraftBukkit Changes:d3ed1516
Fix dangerously threaded beacons217a293d
Don't relocate joptsimple to allow --help to work.1be05a21
Prepare for imminent Java 12 releasea49270b2
Mappings Update5259d80c
SPIGOT-4669: Fix PlayerTeleportEvent coordinates for relative teleports Spigot Changes: e6eb36f2 Rebuild patches
86 lines
3.6 KiB
Diff
86 lines
3.6 KiB
Diff
From 0db7caa6c1fffb8a75ca04e449016be2d771c7b0 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sat, 17 Jun 2017 17:00:32 -0400
|
|
Subject: [PATCH] Profile Lookup Events
|
|
|
|
Adds a Pre Lookup Event and a Post Lookup Event so that plugins may prefill in profile data, and cache the responses from
|
|
profiles that had to be looked up.
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/profile/PaperGameProfileRepository.java b/src/main/java/com/destroystokyo/paper/profile/PaperGameProfileRepository.java
|
|
index 3bcdb8f93..bb9894318 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/profile/PaperGameProfileRepository.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/profile/PaperGameProfileRepository.java
|
|
@@ -1,17 +1,68 @@
|
|
package com.destroystokyo.paper.profile;
|
|
|
|
+import com.destroystokyo.paper.event.profile.LookupProfileEvent;
|
|
+import com.destroystokyo.paper.event.profile.PreLookupProfileEvent;
|
|
+import com.google.common.collect.Sets;
|
|
import com.mojang.authlib.Agent;
|
|
+import com.mojang.authlib.GameProfile;
|
|
import com.mojang.authlib.ProfileLookupCallback;
|
|
import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
|
|
import com.mojang.authlib.yggdrasil.YggdrasilGameProfileRepository;
|
|
|
|
+import java.util.Set;
|
|
+
|
|
public class PaperGameProfileRepository extends YggdrasilGameProfileRepository {
|
|
+
|
|
public PaperGameProfileRepository(YggdrasilAuthenticationService authenticationService) {
|
|
super(authenticationService);
|
|
}
|
|
|
|
@Override
|
|
public void findProfilesByNames(String[] names, Agent agent, ProfileLookupCallback callback) {
|
|
- super.findProfilesByNames(names, agent, callback);
|
|
+ Set<String> unfoundNames = Sets.newHashSet();
|
|
+ for (String name : names) {
|
|
+ PreLookupProfileEvent event = new PreLookupProfileEvent(name);
|
|
+ event.callEvent();
|
|
+ if (event.getUUID() != null) {
|
|
+ // Plugin provided UUI, we can skip network call.
|
|
+ GameProfile gameprofile = new GameProfile(event.getUUID(), name);
|
|
+ // We might even have properties!
|
|
+ Set<ProfileProperty> profileProperties = event.getProfileProperties();
|
|
+ if (!profileProperties.isEmpty()) {
|
|
+ for (ProfileProperty property : profileProperties) {
|
|
+ gameprofile.getProperties().put(property.getName(), CraftPlayerProfile.asAuthlib(property));
|
|
+ }
|
|
+ }
|
|
+ callback.onProfileLookupSucceeded(gameprofile);
|
|
+ } else {
|
|
+ unfoundNames.add(name);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ // Some things were not found.... Proceed to look up.
|
|
+ if (!unfoundNames.isEmpty()) {
|
|
+ String[] namesArr = unfoundNames.toArray(new String[unfoundNames.size()]);
|
|
+ super.findProfilesByNames(namesArr, agent, new PreProfileLookupCallback(callback));
|
|
+ }
|
|
+ }
|
|
+
|
|
+ private static class PreProfileLookupCallback implements ProfileLookupCallback {
|
|
+ private final ProfileLookupCallback callback;
|
|
+
|
|
+ PreProfileLookupCallback(ProfileLookupCallback callback) {
|
|
+ this.callback = callback;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void onProfileLookupSucceeded(GameProfile gameProfile) {
|
|
+ PlayerProfile from = CraftPlayerProfile.asBukkitMirror(gameProfile);
|
|
+ new LookupProfileEvent(from).callEvent();
|
|
+ callback.onProfileLookupSucceeded(gameProfile);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void onProfileLookupFailed(GameProfile gameProfile, Exception e) {
|
|
+ callback.onProfileLookupFailed(gameProfile, e);
|
|
+ }
|
|
}
|
|
}
|
|
--
|
|
2.21.0
|
|
|