PaperMC/patches/server/Fill-Profile-Property-Events.patch

48 lines
2.4 KiB
Diff
Raw Normal View History

2021-06-11 14:02:28 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 2 Jan 2018 00:31:26 -0500
Subject: [PATCH] Fill Profile Property Events
Allows plugins to populate profile properties from local sources to avoid calls out to Mojang API
to fill in textures for example.
If Mojang API does need to be hit, event fire so you can get the results.
This is useful for implementing a ProfileCache for Player Skulls
diff --git a/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java b/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java
+++ b/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java
2023-12-06 20:10:59 +01:00
@@ -0,0 +0,0 @@
package com.destroystokyo.paper.profile;
import com.mojang.authlib.Environment;
+import com.mojang.authlib.GameProfile;
import com.mojang.authlib.yggdrasil.ProfileResult;
import com.mojang.authlib.yggdrasil.ServicesKeySet;
import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
2021-06-11 14:02:28 +02:00
@@ -0,0 +0,0 @@ public class PaperMinecraftSessionService extends YggdrasilMinecraftSessionServi
2023-12-06 20:10:59 +01:00
super(servicesKeySet, proxy, environment);
2023-09-22 04:31:59 +02:00
}
2021-06-11 14:02:28 +02:00
2023-09-22 04:31:59 +02:00
- @Override
+ public @Nullable ProfileResult fetchProfile(GameProfile profile, final boolean requireSecure) {
2021-06-11 14:02:28 +02:00
+ CraftPlayerProfile playerProfile = (CraftPlayerProfile) CraftPlayerProfile.asBukkitMirror(profile);
2023-09-22 04:31:59 +02:00
+ new com.destroystokyo.paper.event.profile.PreFillProfileEvent(playerProfile).callEvent();
2021-06-11 14:02:28 +02:00
+ profile = playerProfile.getGameProfile();
2023-09-22 04:31:59 +02:00
+ if (profile.getProperties().containsKey("textures")) {
+ return new ProfileResult(profile, java.util.Collections.emptySet());
+ }
+ ProfileResult result = super.fetchProfile(profile.getId(), requireSecure);
+ if (result != null) {
+ new com.destroystokyo.paper.event.profile.FillProfileEvent(CraftPlayerProfile.asBukkitMirror(result.profile())).callEvent();
2021-06-11 14:02:28 +02:00
+ }
2023-09-22 04:31:59 +02:00
+ return result;
+ }
+
+ @Override @io.papermc.paper.annotation.DoNotUse @Deprecated
public @Nullable ProfileResult fetchProfile(final UUID profileId, final boolean requireSecure) {
return super.fetchProfile(profileId, requireSecure);
2021-06-11 14:02:28 +02:00
}