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 54138dae452714e73549ad1c1512b68267cad443..2c9aa0cbce1450695b285a9e654b0e9f10e28c37 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 /**