aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0083-Fill-Profile-Property-Events.patch
diff options
context:
space:
mode:
authorRiley Park <[email protected]>2021-06-21 09:55:17 -0700
committerRiley Park <[email protected]>2021-06-21 09:57:15 -0700
commit15e4b30e9eaf4ccfeb899fec5b248d37b3889ef4 (patch)
treecf6152b1a413e4713c9bdbdd8dd2c41dbdfab558 /patches/api/0083-Fill-Profile-Property-Events.patch
parent33a04d97ab566ac6c8e8a6794e2d432234f3d2e5 (diff)
downloadPaper-15e4b30e9eaf4ccfeb899fec5b248d37b3889ef4.tar.gz
Paper-15e4b30e9eaf4ccfeb899fec5b248d37b3889ef4.zip
Allow use of TYPE_USE annotations
Diffstat (limited to 'patches/api/0083-Fill-Profile-Property-Events.patch')
-rw-r--r--patches/api/0083-Fill-Profile-Property-Events.patch176
1 files changed, 176 insertions, 0 deletions
diff --git a/patches/api/0083-Fill-Profile-Property-Events.patch b/patches/api/0083-Fill-Profile-Property-Events.patch
new file mode 100644
index 0000000000..5511f6449a
--- /dev/null
+++ b/patches/api/0083-Fill-Profile-Property-Events.patch
@@ -0,0 +1,176 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+Date: Tue, 2 Jan 2018 00:31:08 -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/event/profile/FillProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/FillProfileEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..71f36e9cae209ec6861835a5e76e018de959040a
+--- /dev/null
++++ b/src/main/java/com/destroystokyo/paper/event/profile/FillProfileEvent.java
+@@ -0,0 +1,75 @@
++/*
++ * Copyright (c) 2018 Daniel Ennis (Aikar) MIT License
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++package com.destroystokyo.paper.event.profile;
++
++import com.destroystokyo.paper.profile.PlayerProfile;
++import com.destroystokyo.paper.profile.ProfileProperty;
++import org.bukkit.event.Event;
++import org.bukkit.event.HandlerList;
++
++import java.util.Set;
++import org.jetbrains.annotations.NotNull;
++
++/**
++ * Fired once a profiles additional properties (such as textures) has been filled
++ */
++public class FillProfileEvent extends Event {
++ @NotNull private final PlayerProfile profile;
++
++ public FillProfileEvent(@NotNull PlayerProfile profile) {
++ super(!org.bukkit.Bukkit.isPrimaryThread());
++ this.profile = profile;
++ }
++
++ /**
++ * @return The Profile that had properties filled
++ */
++ @NotNull
++ public PlayerProfile getPlayerProfile() {
++ return profile;
++ }
++
++ /**
++ * Same as .getPlayerProfile().getProperties()
++ *
++ * @see PlayerProfile#getProperties()
++ * @return The new properties on the profile.
++ */
++ @NotNull
++ public Set<ProfileProperty> getProperties() {
++ return profile.getProperties();
++ }
++
++ private static final HandlerList handlers = new HandlerList();
++
++ @NotNull
++ public HandlerList getHandlers() {
++ return handlers;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return handlers;
++ }
++}
+diff --git a/src/main/java/com/destroystokyo/paper/event/profile/PreFillProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/PreFillProfileEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..021bc86310a06f84b39459e0eb8927802726399c
+--- /dev/null
++++ b/src/main/java/com/destroystokyo/paper/event/profile/PreFillProfileEvent.java
+@@ -0,0 +1,77 @@
++/*
++ * Copyright (c) 2018 Daniel Ennis (Aikar) MIT License
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++package com.destroystokyo.paper.event.profile;
++
++import com.destroystokyo.paper.profile.PlayerProfile;
++import com.destroystokyo.paper.profile.ProfileProperty;
++import org.bukkit.event.Event;
++import org.bukkit.event.HandlerList;
++
++import java.util.Collection;
++import org.jetbrains.annotations.NotNull;
++
++/**
++ * Fired when the server is requesting to fill in properties of an incomplete profile, such as textures.
++ *
++ * Allows plugins to pre populate cached properties and avoid a call to the Mojang API
++ */
++public class PreFillProfileEvent extends Event {
++ @NotNull private final PlayerProfile profile;
++
++ public PreFillProfileEvent(@NotNull PlayerProfile profile) {
++ super(!org.bukkit.Bukkit.isPrimaryThread());
++ this.profile = profile;
++ }
++
++ /**
++ * @return The profile that needs its properties filled
++ */
++ @NotNull
++ public PlayerProfile getPlayerProfile() {
++ return profile;
++ }
++
++ /**
++ * Sets the properties on the profile, avoiding the call to the Mojang API
++ * Same as .getPlayerProfile().setProperties(properties);
++ *
++ * @see PlayerProfile#setProperties(Collection)
++ * @param properties The properties to set/append
++ */
++ public void setProperties(@NotNull Collection<ProfileProperty> properties) {
++ profile.setProperties(properties);
++ }
++
++ private static final HandlerList handlers = new HandlerList();
++
++ @NotNull
++ public HandlerList getHandlers() {
++ return handlers;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return handlers;
++ }
++}