From 54964d1b698802a5876fc59b9f15c31c6080fe3c Mon Sep 17 00:00:00 2001 From: lexikiq Date: Mon, 3 May 2021 21:59:49 -0400 Subject: [PATCH] Add [Optional]PlayerLike interfaces --- ...3-Add-Optional-PlayerLike-interfaces.patch | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 patches/api/0003-Add-Optional-PlayerLike-interfaces.patch diff --git a/patches/api/0003-Add-Optional-PlayerLike-interfaces.patch b/patches/api/0003-Add-Optional-PlayerLike-interfaces.patch new file mode 100644 index 0000000..0b8d297 --- /dev/null +++ b/patches/api/0003-Add-Optional-PlayerLike-interfaces.patch @@ -0,0 +1,83 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: lexikiq +Date: Mon, 3 May 2021 21:48:40 -0400 +Subject: [PATCH] Add [Optional]PlayerLike interfaces + + +diff --git a/src/main/java/me/lexikiq/OptionalPlayerLike.java b/src/main/java/me/lexikiq/OptionalPlayerLike.java +new file mode 100644 +index 0000000000000000000000000000000000000000..aaa1879f9560ef6ff415e98a5fdf2403f0480a0b +--- /dev/null ++++ b/src/main/java/me/lexikiq/OptionalPlayerLike.java +@@ -0,0 +1,16 @@ ++package me.lexikiq; ++ ++import net.kyori.adventure.identity.Identified; ++import net.kyori.adventure.identity.Identity; ++import org.checkerframework.checker.nullness.qual.NonNull; ++ ++/** ++ * Class that may be like a {@link org.bukkit.entity.Player} in that it has a {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, {@link Identity}, and a nullable Player. ++ * @see me.lexikiq.PlayerLike ++ */ ++public interface OptionalPlayerLike extends OptionalPlayer, HasUniqueId, HasOfflinePlayer, Identified { ++ @Override ++ default @NonNull Identity identity() { ++ return Identity.identity(getUniqueId()); ++ } ++} +diff --git a/src/main/java/me/lexikiq/PlayerLike.java b/src/main/java/me/lexikiq/PlayerLike.java +new file mode 100644 +index 0000000000000000000000000000000000000000..3184f585f9c6e59ce9297d6613749453ce5e6ab5 +--- /dev/null ++++ b/src/main/java/me/lexikiq/PlayerLike.java +@@ -0,0 +1,7 @@ ++package me.lexikiq; ++ ++/** ++ * Class that is like a {@link org.bukkit.entity.Player} in that it has a Player, {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, and an {@link net.kyori.adventure.identity.Identity}. ++ * @see me.lexikiq.OptionalPlayerLike ++ */ ++public interface PlayerLike extends HasPlayer, OptionalPlayerLike {} +diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java +index e2b4f86fc3825a77a5a0c1c29b428308eee54b16..95220ef8ad0602fae9f88c0231762ff50358d98f 100644 +--- a/src/main/java/org/bukkit/OfflinePlayer.java ++++ b/src/main/java/org/bukkit/OfflinePlayer.java +@@ -5,6 +5,7 @@ import java.util.UUID; + import me.lexikiq.HasOfflinePlayer; + import me.lexikiq.HasUniqueId; + import me.lexikiq.OptionalPlayer; ++import me.lexikiq.OptionalPlayerLike; + import org.bukkit.configuration.serialization.ConfigurationSerializable; + import org.bukkit.entity.AnimalTamer; + import org.bukkit.entity.EntityType; +@@ -13,7 +14,7 @@ import org.bukkit.permissions.ServerOperator; + import org.jetbrains.annotations.NotNull; + import org.jetbrains.annotations.Nullable; + +-public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable, OptionalPlayer, HasUniqueId, HasOfflinePlayer { // Parchment ++public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable, OptionalPlayerLike { // Parchment + // Parchment start + @Override + @NotNull default OfflinePlayer getOfflinePlayer() { +diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java +index 5b011eb3795d30f79a7c5ffef7c3a852dfd09c29..6f3afd14dd060660e0ab7c8c9cf6484b5d894851 100644 +--- a/src/main/java/org/bukkit/entity/Player.java ++++ b/src/main/java/org/bukkit/entity/Player.java +@@ -6,6 +6,7 @@ import java.util.UUID; + import com.destroystokyo.paper.ClientOption; // Paper + import com.destroystokyo.paper.Title; // Paper + import me.lexikiq.HasPlayer; ++import me.lexikiq.PlayerLike; + import net.kyori.adventure.text.Component; + import com.destroystokyo.paper.profile.PlayerProfile; // Paper + import java.util.Date; // Paper +@@ -40,7 +41,7 @@ import org.jetbrains.annotations.Nullable; + /** + * Represents a player, connected or not + */ +-public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient, HasPlayer { // Paper // Parchment ++public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient, PlayerLike { // Paper // Parchment + + // Parchment start + /**