diff --git a/Spigot-API-Patches/0061-ensureServerConversions-API.patch b/Spigot-API-Patches/0061-ensureServerConversions-API.patch index 6a870beb35..0e170da04e 100644 --- a/Spigot-API-Patches/0061-ensureServerConversions-API.patch +++ b/Spigot-API-Patches/0061-ensureServerConversions-API.patch @@ -1,4 +1,4 @@ -From 4c5a58a93cd324de4bbb929a3feac630cd3a758d Mon Sep 17 00:00:00 2001 +From 20eb853456b944fc4eb760f9ee5c6bfa3433513b Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 4 May 2016 23:55:48 -0400 Subject: [PATCH] ensureServerConversions API @@ -29,24 +29,19 @@ index cbcbe8c8a..8e602cf51 100644 + // Paper end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 7b709457f..e8f97c949 100644 +index 7b709457f..4ee01be5f 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -517,7 +517,12 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { +@@ -517,7 +517,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { } } - return result; -+ // Set damage again incase meta overwrote it -+ if (args.containsKey("damage")) { -+ result.setDurability(damage); -+ } -+ + return result.ensureServerConversions(); // Paper } /** -@@ -576,4 +581,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { +@@ -576,4 +576,19 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { return true; } diff --git a/Spigot-API-Patches/0062-Add-getI18NDisplayName-API.patch b/Spigot-API-Patches/0062-Add-getI18NDisplayName-API.patch index 94727ace32..b0bad345f0 100644 --- a/Spigot-API-Patches/0062-Add-getI18NDisplayName-API.patch +++ b/Spigot-API-Patches/0062-Add-getI18NDisplayName-API.patch @@ -1,4 +1,4 @@ -From c2814c3f3d70e2834f47c4bb3beafb0d591d4985 Mon Sep 17 00:00:00 2001 +From 35bbd72e452d3c31afe5217706a2a60df856117f Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 4 May 2016 23:55:48 -0400 Subject: [PATCH] Add getI18NDisplayName API @@ -29,10 +29,10 @@ index 8e602cf51..dca77bbaf 100644 // Paper end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index e8f97c949..b1c02ac0d 100644 +index 4ee01be5f..3ff3458e7 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -595,5 +595,17 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { +@@ -590,5 +590,17 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { public ItemStack ensureServerConversions() { return Bukkit.getServer().getItemFactory().ensureServerConversions(this); } diff --git a/Spigot-API-Patches/0106-ItemStack-getMaxItemUseDuration.patch b/Spigot-API-Patches/0106-ItemStack-getMaxItemUseDuration.patch index a921ebee72..be5e4f44b6 100644 --- a/Spigot-API-Patches/0106-ItemStack-getMaxItemUseDuration.patch +++ b/Spigot-API-Patches/0106-ItemStack-getMaxItemUseDuration.patch @@ -1,4 +1,4 @@ -From 25cbaf39e7634f8faad5ebb998a201df436baa71 Mon Sep 17 00:00:00 2001 +From ec59e7df8881e52fb38e05e99c430effd5afb875 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 5 Jun 2018 22:59:50 -0400 Subject: [PATCH] ItemStack#getMaxItemUseDuration @@ -6,10 +6,10 @@ Subject: [PATCH] ItemStack#getMaxItemUseDuration Allows you to determine how long it takes to use a usable/consumable item diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index b1c02ac0d..1c7bbbcef 100644 +index 3ff3458e7..345dc8bdc 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -607,5 +607,13 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { +@@ -602,5 +602,13 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { public String getI18NDisplayName() { return Bukkit.getServer().getItemFactory().getI18NDisplayName(this); } diff --git a/Spigot-API-Patches/0114-ItemStack-API-additions-for-quantity-flags-lore.patch b/Spigot-API-Patches/0114-ItemStack-API-additions-for-quantity-flags-lore.patch index a61eba50cd..2ba3d88df3 100644 --- a/Spigot-API-Patches/0114-ItemStack-API-additions-for-quantity-flags-lore.patch +++ b/Spigot-API-Patches/0114-ItemStack-API-additions-for-quantity-flags-lore.patch @@ -1,11 +1,11 @@ -From 4d3cc2c3c2ad606f01cea7d7be635e7ef1dd9e4a Mon Sep 17 00:00:00 2001 +From 34a7e90eaaf6385e619588c697a7856732b44ffc Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 22 Jun 2018 22:59:18 -0400 Subject: [PATCH] ItemStack API additions for quantity/flags/lore diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 1c7bbbcef..845a9255d 100644 +index 345dc8bdc..1b19f8215 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -2,7 +2,9 @@ package org.bukkit.inventory; @@ -18,7 +18,7 @@ index 1c7bbbcef..845a9255d 100644 import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; -@@ -615,5 +617,140 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { +@@ -610,5 +612,140 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { // Requires access to NMS return ensureServerConversions().getMaxItemUseDuration(); } diff --git a/Spigot-API-Patches/0178-Ignore-package-private-methods-for-nullability-annot.patch b/Spigot-API-Patches/0178-Ignore-package-private-methods-for-nullability-annot.patch new file mode 100644 index 0000000000..bbc83c45fb --- /dev/null +++ b/Spigot-API-Patches/0178-Ignore-package-private-methods-for-nullability-annot.patch @@ -0,0 +1,23 @@ +From 37fda0cd6fa5841548e4747e642c0e67800829e8 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Sun, 24 Mar 2019 18:44:26 -0400 +Subject: [PATCH] Ignore package-private methods for nullability annotations + +This isn't API + +diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java +index 596f28076..cdc0afc0c 100644 +--- a/src/test/java/org/bukkit/AnnotationTest.java ++++ b/src/test/java/org/bukkit/AnnotationTest.java +@@ -163,7 +163,7 @@ public class AnnotationTest { + + private static boolean isMethodIncluded(@NotNull ClassNode clazz, @NotNull MethodNode method, @NotNull Map allClasses) { + // Exclude private, synthetic and deprecated methods +- if ((method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_DEPRECATED)) != 0) { ++ if ((method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_DEPRECATED)) != 0 || (method.access & (Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC)) == 0) { // Paper - ignore package-private + return false; + } + +-- +2.21.0 + diff --git a/Spigot-API-Patches/0179-Flip-some-Spigot-API-null-annotations.patch b/Spigot-API-Patches/0179-Flip-some-Spigot-API-null-annotations.patch new file mode 100644 index 0000000000..72fa269f1a --- /dev/null +++ b/Spigot-API-Patches/0179-Flip-some-Spigot-API-null-annotations.patch @@ -0,0 +1,130 @@ +From bf5e87d656e1988c33c4854227450dcefb55e3ce Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Sun, 24 Mar 2019 18:39:01 -0400 +Subject: [PATCH] Flip some Spigot API null annotations + +while some of these may of been true, they are extreme cases and cause +a ton of noise to plugin developers. + +These do not help plugin developers if they bring moise noise than value. + +diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java +index 6b0a09067..5d6c856dd 100644 +--- a/src/main/java/org/bukkit/Bukkit.java ++++ b/src/main/java/org/bukkit/Bukkit.java +@@ -1183,7 +1183,7 @@ public final class Bukkit { + * + * @return the scoreboard manager or null if no worlds are loaded. + */ +- @Nullable ++ @NotNull // Paper + public static ScoreboardManager getScoreboardManager() { + return server.getScoreboardManager(); + } +@@ -1480,7 +1480,7 @@ public final class Bukkit { + * @param clazz the class of the tag entries + * @return the tag or null + */ +- @Nullable ++ @Contract("null, null, null -> fail") // Paper + public static Tag getTag(@NotNull String registry, @NotNull NamespacedKey tag, @NotNull Class clazz) { + return server.getTag(registry, tag, clazz); + } +diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java +index 57ce443a5..6b8dde716 100644 +--- a/src/main/java/org/bukkit/Location.java ++++ b/src/main/java/org/bukkit/Location.java +@@ -45,7 +45,7 @@ public class Location implements Cloneable, ConfigurationSerializable { + * @param y The y-coordinate of this new location + * @param z The z-coordinate of this new location + */ +- public Location(@Nullable final World world, final double x, final double y, final double z) { ++ public Location(@NotNull final World world, final double x, final double y, final double z) { // Paper + this(world, x, y, z, 0, 0); + } + +@@ -59,7 +59,7 @@ public class Location implements Cloneable, ConfigurationSerializable { + * @param yaw The absolute rotation on the x-plane, in degrees + * @param pitch The absolute rotation on the y-plane, in degrees + */ +- public Location(@Nullable final World world, final double x, final double y, final double z, final float yaw, final float pitch) { ++ public Location(@NotNull final World world, final double x, final double y, final double z, final float yaw, final float pitch) { // Paper + this.world = world; + this.x = x; + this.y = y; +@@ -82,7 +82,7 @@ public class Location implements Cloneable, ConfigurationSerializable { + * + * @return World that contains this location + */ +- @Nullable ++ @NotNull + public World getWorld() { + return world; + } +diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java +index 66d22ba79..08cd7cabc 100644 +--- a/src/main/java/org/bukkit/Server.java ++++ b/src/main/java/org/bukkit/Server.java +@@ -988,7 +988,7 @@ public interface Server extends PluginMessageRecipient { + * + * @return the scoreboard manager or null if no worlds are loaded. + */ +- @Nullable ++ @NotNull // Paper + ScoreboardManager getScoreboardManager(); + + /** +@@ -1258,7 +1258,7 @@ public interface Server extends PluginMessageRecipient { + * @param clazz the class of the tag entries + * @return the tag or null + */ +- @Nullable ++ @Contract("null, null, null -> fail") // Paper + Tag getTag(@NotNull String registry, @NotNull NamespacedKey tag, @NotNull Class clazz); + + /** +diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java +index dca77bbaf..8335f8a8b 100644 +--- a/src/main/java/org/bukkit/inventory/ItemFactory.java ++++ b/src/main/java/org/bukkit/inventory/ItemFactory.java +@@ -6,6 +6,7 @@ import org.bukkit.Server; + import org.bukkit.inventory.meta.BookMeta; + import org.bukkit.inventory.meta.ItemMeta; + import org.bukkit.inventory.meta.SkullMeta; ++import org.jetbrains.annotations.Contract; + import org.jetbrains.annotations.NotNull; + import org.jetbrains.annotations.Nullable; + +@@ -25,7 +26,7 @@ public interface ItemFactory { + * @return a new ItemMeta that could be applied to an item stack of the + * specified material + */ +- @Nullable ++ @Contract() // Paper + ItemMeta getItemMeta(@NotNull final Material material); + + /** +diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java +index 1b19f8215..4a6dea561 100644 +--- a/src/main/java/org/bukkit/inventory/ItemStack.java ++++ b/src/main/java/org/bukkit/inventory/ItemStack.java +@@ -15,6 +15,7 @@ import org.bukkit.enchantments.Enchantment; + import org.bukkit.inventory.meta.Damageable; + import org.bukkit.inventory.meta.ItemMeta; + import org.bukkit.material.MaterialData; ++import org.jetbrains.annotations.Contract; + import org.jetbrains.annotations.NotNull; + import org.jetbrains.annotations.Nullable; + +@@ -527,7 +528,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { + * + * @return a copy of the current ItemStack's ItemData + */ +- @Nullable ++ @Contract() // Paper + public ItemMeta getItemMeta() { + return this.meta == null ? Bukkit.getItemFactory().getItemMeta(this.type) : this.meta.clone(); + } +-- +2.21.0 +