From 5a34a7c895fc2a1022007c098bb9ecc9ce66e50a Mon Sep 17 00:00:00 2001
From: Tamion <70228790+notTamion@users.noreply.github.com>
Date: Sat, 4 Nov 2023 21:20:13 +0100
Subject: [PATCH] Deprecate Player#boostElytra (#9899)
The Paper method was chosen for deprecation because it was more
restrictive in that it has an isGliding check.
---
patches/api/Add-sendOpLevel-API.patch | 14 +++++----
...stom-Chat-Completion-Suggestions-API.patch | 12 ++++---
patches/api/Player-elytra-boost-API.patch | 7 ++++-
patches/server/Add-sendOpLevel-API.patch | 12 ++++---
...stom-Chat-Completion-Suggestions-API.patch | 12 ++++---
patches/server/Player-elytra-boost-API.patch | 31 -------------------
6 files changed, 35 insertions(+), 53 deletions(-)
delete mode 100644 patches/server/Player-elytra-boost-API.patch
diff --git a/patches/api/Add-sendOpLevel-API.patch b/patches/api/Add-sendOpLevel-API.patch
index 1715ba717e..7cdb109a45 100644
--- a/patches/api/Add-sendOpLevel-API.patch
+++ b/patches/api/Add-sendOpLevel-API.patch
@@ -9,10 +9,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
- */
- @Nullable
- Firework boostElytra(@NotNull ItemStack firework);
-+
+ }
+ // Paper end
+
++ // Paper start - sendOpLevel API
+ /**
+ * Send a packet to the player indicating its operator status level.
+ *
@@ -23,6 +23,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ * @throws IllegalArgumentException If the level is negative or greater than {@code 4} (i.e. not within {@code [0, 4]}).
+ */
+ void sendOpLevel(byte level);
- // Paper end
-
++ // Paper end - sendOpLevel API
++
// Spigot start
+ public class Spigot extends Entity.Spigot {
+
diff --git a/patches/api/Custom-Chat-Completion-Suggestions-API.patch b/patches/api/Custom-Chat-Completion-Suggestions-API.patch
index 0d8de55385..188721a647 100644
--- a/patches/api/Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/api/Custom-Chat-Completion-Suggestions-API.patch
@@ -9,10 +9,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
- * @throws IllegalArgumentException If the level is negative or greater than {@code 4} (i.e. not within {@code [0, 4]}).
- */
void sendOpLevel(byte level);
-+
+ // Paper end - sendOpLevel API
+
++ // Paper start - custom chat completions API
+ /**
+ * Adds custom chat completion suggestions that the client will
+ * suggest when typing in chat.
@@ -35,6 +35,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ */
+ @Deprecated(since = "1.20.1")
+ void removeAdditionalChatCompletions(@NotNull java.util.Collection completions);
- // Paper end
-
++ // Paper end - custom chat completions API
++
// Spigot start
+ public class Spigot extends Entity.Spigot {
+
diff --git a/patches/api/Player-elytra-boost-API.patch b/patches/api/Player-elytra-boost-API.patch
index b2bcde8430..116df06bf1 100644
--- a/patches/api/Player-elytra-boost-API.patch
+++ b/patches/api/Player-elytra-boost-API.patch
@@ -22,9 +22,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ * @return The {@link Firework} boosting the Player or null if the spawning of the entity was cancelled
+ * @throws IllegalArgumentException if {@link #isGliding()} is false
+ * or if the {@code firework} isn't a {@link Material#FIREWORK_ROCKET}
++ * @deprecated use {@link HumanEntity#fireworkBoost(ItemStack)} instead. Note that this method does not
++ * check if the player is gliding or not.
+ */
+ @Nullable
-+ Firework boostElytra(@NotNull ItemStack firework);
++ default Firework boostElytra(@NotNull ItemStack firework) {
++ com.google.common.base.Preconditions.checkState(this.isGliding(), "Player must be gliding");
++ return this.fireworkBoost(firework);
++ }
// Paper end
// Spigot start
diff --git a/patches/server/Add-sendOpLevel-API.patch b/patches/server/Add-sendOpLevel-API.patch
index 06df0474fe..fbd590708e 100644
--- a/patches/server/Add-sendOpLevel-API.patch
+++ b/patches/server/Add-sendOpLevel-API.patch
@@ -36,16 +36,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- ? (org.bukkit.entity.Firework) entity.getBukkitEntity()
- : null;
}
-+
+ // Paper end
+
++ // Paper start - sendOpLevel API
+ @Override
+ public void sendOpLevel(byte level) {
+ Preconditions.checkArgument(level >= 0 && level <= 4, "Level must be within [0, 4]");
+
+ this.getHandle().getServer().getPlayerList().sendPlayerPermissionLevel(this.getHandle(), level, false);
+ }
- // Paper end
-
++ // Paper end - sendOpLevel API
++
@Override
+ public void setCompassTarget(Location loc) {
+ Preconditions.checkArgument(loc != null, "Location cannot be null");
diff --git a/patches/server/Custom-Chat-Completion-Suggestions-API.patch b/patches/server/Custom-Chat-Completion-Suggestions-API.patch
index b31d72d646..636081763e 100644
--- a/patches/server/Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/server/Custom-Chat-Completion-Suggestions-API.patch
@@ -9,10 +9,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
-
- this.getHandle().getServer().getPlayerList().sendPlayerPermissionLevel(this.getHandle(), level, false);
}
-+
+ // Paper end - sendOpLevel API
+
++ // Paper start - custom chat completions API
+ @Override
+ public void addAdditionalChatCompletions(@NotNull Collection completions) {
+ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket(
@@ -28,6 +28,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ new ArrayList<>(completions)
+ ));
+ }
- // Paper end
-
++ // Paper end - custom chat completions API
++
@Override
+ public void setCompassTarget(Location loc) {
+ Preconditions.checkArgument(loc != null, "Location cannot be null");
diff --git a/patches/server/Player-elytra-boost-API.patch b/patches/server/Player-elytra-boost-API.patch
deleted file mode 100644
index 9d0569682a..0000000000
--- a/patches/server/Player-elytra-boost-API.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Trigary
-Date: Tue, 14 Apr 2020 12:05:22 +0200
-Subject: [PATCH] Player elytra boost API
-
-
-diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- }
- throw new RuntimeException("Unknown settings type");
- }
-+
-+ @Override
-+ public org.bukkit.entity.Firework boostElytra(ItemStack firework) {
-+ Preconditions.checkState(this.isGliding(), "Player must be gliding");
-+ Preconditions.checkArgument(firework != null, "firework == null");
-+ Preconditions.checkArgument(firework.getType() == Material.FIREWORK_ROCKET, "Firework must be Material.FIREWORK_ROCKET");
-+
-+ net.minecraft.world.item.ItemStack item = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(firework);
-+ net.minecraft.world.level.Level world = ((CraftWorld) getWorld()).getHandle();
-+ net.minecraft.world.entity.projectile.FireworkRocketEntity entity = new net.minecraft.world.entity.projectile.FireworkRocketEntity(world, item, getHandle());
-+ return world.addFreshEntity(entity)
-+ ? (org.bukkit.entity.Firework) entity.getBukkitEntity()
-+ : null;
-+ }
- // Paper end
-
- @Override