From 95ccfdfc14e21b6dba09b64766825043a6053fc1 Mon Sep 17 00:00:00 2001 From: Krakenied Date: Wed, 21 Jan 2026 11:37:57 +0100 Subject: Add nullability annotations to version specific handlers --- .../bukkit/hook/versionspecific/VersionSpecificHandler.java | 10 ++++++---- .../hook/versionspecific/VersionSpecificHandler_V1_11.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_11_2.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_14.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_15_2.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_16.java | 7 +++++-- .../hook/versionspecific/VersionSpecificHandler_V1_17.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_19_2.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_20.java | 9 ++++++--- .../hook/versionspecific/VersionSpecificHandler_V1_20_4.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_21_11.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_21_6.java | 2 ++ .../hook/versionspecific/VersionSpecificHandler_V1_8.java | 10 ++++++---- .../hook/versionspecific/VersionSpecificHandler_V1_9.java | 6 ++++-- 14 files changed, 45 insertions(+), 15 deletions(-) diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler.java index 25b555da..4875cd2f 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler.java @@ -36,6 +36,7 @@ import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.SmithingInventory; import org.bukkit.inventory.SmithingTransformRecipe; import org.bukkit.inventory.SmithingTrimRecipe; +import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import java.util.Collections; @@ -50,6 +51,7 @@ import java.util.TreeSet; * All information about changes in the API should be documented HERE in the method docs. */ @SuppressWarnings({"deprecation", "BooleanMethodIsAlwaysInverted"}) +@NullMarked public interface VersionSpecificHandler { NavigableSet IMPLEMENTATIONS = Collections.unmodifiableNavigableSet(new TreeSet<>() {{ @@ -283,7 +285,7 @@ public interface VersionSpecificHandler { * to get specified equipment slot item still hasn't existed. In {@code 1.15.2} the method was finally introduced * {@link PlayerInventory#getItem(EquipmentSlot)} making us able to no longer maintain this one. */ - ItemStack getItemInEquipmentSlot(PlayerInventory inventory, EquipmentSlot slot); + @Nullable ItemStack getItemInEquipmentSlot(PlayerInventory inventory, EquipmentSlot slot); /** * Dual-wielding system was introduced in {@code 1.9}. @@ -295,7 +297,7 @@ public interface VersionSpecificHandler { /** * Dual-wielding system was introduced in {@code 1.9}. */ - EquipmentSlot getHand(PlayerInteractEvent event); + @Nullable EquipmentSlot getHand(PlayerInteractEvent event); /** * Dual-wielding system was introduced in {@code 1.9}. @@ -307,14 +309,14 @@ public interface VersionSpecificHandler { * and {@link SmithingInventory#getInputMineral()}. In {@code 1.20} the feature was extended to support templates. * Due to the following reason, new method was added: {@link SmithingInventory#getInputTemplate()}. */ - ItemStack[] getSmithItems(SmithItemEvent event); + @Nullable ItemStack[] getSmithItems(SmithItemEvent event); /** * Items smithing system was introduced in {@code 1.16} with {@link SmithingTransformRecipe}. * In {@code 1.20} the feature was extended to support templates. Due to the following reason, * new class has been added {@link SmithingTrimRecipe}. */ - String getSmithMode(SmithItemEvent event); + @Nullable String getSmithMode(SmithItemEvent event); /** * Goats were introduced in {@code 1.17}. diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11.java index 0e525c38..f58fd02a 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11.java @@ -10,7 +10,9 @@ import org.bukkit.entity.SkeletonHorse; import org.bukkit.entity.ZombieHorse; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NullMarked; +@NullMarked public class VersionSpecificHandler_V1_11 extends VersionSpecificHandler_V1_9 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11_2.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11_2.java index 61514ddd..9807d031 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11_2.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_11_2.java @@ -2,9 +2,11 @@ package com.leonardobishop.quests.bukkit.hook.versionspecific; import com.leonardobishop.quests.common.versioning.Version; import org.bukkit.entity.Entity; +import org.jspecify.annotations.NullMarked; import java.util.List; +@NullMarked public class VersionSpecificHandler_V1_11_2 extends VersionSpecificHandler_V1_11 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_14.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_14.java index d8864715..54e7e1e8 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_14.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_14.java @@ -2,7 +2,9 @@ package com.leonardobishop.quests.bukkit.hook.versionspecific; import com.leonardobishop.quests.common.versioning.Version; import org.bukkit.block.Biome; +import org.jspecify.annotations.NullMarked; +@NullMarked public class VersionSpecificHandler_V1_14 extends VersionSpecificHandler_V1_11_2 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_15_2.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_15_2.java index 2ea95950..153d25db 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_15_2.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_15_2.java @@ -4,7 +4,9 @@ import com.leonardobishop.quests.common.versioning.Version; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; +import org.jspecify.annotations.NullMarked; +@NullMarked public class VersionSpecificHandler_V1_15_2 extends VersionSpecificHandler_V1_14 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_16.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_16.java index 6cd4a34a..21608f6f 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_16.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_16.java @@ -6,7 +6,10 @@ import org.bukkit.entity.Strider; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.SmithItemEvent; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class VersionSpecificHandler_V1_16 extends VersionSpecificHandler_V1_15_2 { @Override @@ -25,8 +28,8 @@ public class VersionSpecificHandler_V1_16 extends VersionSpecificHandler_V1_15_2 } @Override - public ItemStack[] getSmithItems(SmithItemEvent event) { - return new ItemStack[]{ + public @Nullable ItemStack[] getSmithItems(SmithItemEvent event) { + return new @Nullable ItemStack[]{ event.getInventory().getInputEquipment(), event.getInventory().getInputMineral() }; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_17.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_17.java index e9f53565..3ef4c666 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_17.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_17.java @@ -7,7 +7,9 @@ import org.bukkit.block.data.BlockData; import org.bukkit.block.data.type.CaveVinesPlant; import org.bukkit.entity.Entity; import org.bukkit.entity.Goat; +import org.jspecify.annotations.NullMarked; +@NullMarked public class VersionSpecificHandler_V1_17 extends VersionSpecificHandler_V1_16 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_19_2.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_19_2.java index fdf19c48..e2c538ce 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_19_2.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_19_2.java @@ -3,7 +3,9 @@ package com.leonardobishop.quests.bukkit.hook.versionspecific; import com.leonardobishop.quests.common.versioning.Version; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.inventory.ItemStack; +import org.jspecify.annotations.NullMarked; +@NullMarked public class VersionSpecificHandler_V1_19_2 extends VersionSpecificHandler_V1_17 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20.java index d62df255..11fa3ffc 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20.java @@ -8,7 +8,10 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.Recipe; import org.bukkit.inventory.SmithingTransformRecipe; import org.bukkit.inventory.SmithingTrimRecipe; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class VersionSpecificHandler_V1_20 extends VersionSpecificHandler_V1_19_2 { @Override @@ -22,8 +25,8 @@ public class VersionSpecificHandler_V1_20 extends VersionSpecificHandler_V1_19_2 } @Override - public ItemStack[] getSmithItems(SmithItemEvent event) { - return new ItemStack[]{ + public @Nullable ItemStack[] getSmithItems(SmithItemEvent event) { + return new @Nullable ItemStack[]{ event.getInventory().getInputEquipment(), event.getInventory().getInputMineral(), event.getInventory().getInputTemplate() @@ -31,7 +34,7 @@ public class VersionSpecificHandler_V1_20 extends VersionSpecificHandler_V1_19_2 } @Override - public String getSmithMode(SmithItemEvent event) { + public @Nullable String getSmithMode(SmithItemEvent event) { Recipe recipe = event.getInventory().getRecipe(); if (recipe instanceof SmithingTransformRecipe) { return "transform"; diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20_4.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20_4.java index 042c7fbe..fa5bbea4 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20_4.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_20_4.java @@ -5,8 +5,10 @@ import org.bukkit.damage.DamageSource; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent; +import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; +@NullMarked public class VersionSpecificHandler_V1_20_4 extends VersionSpecificHandler_V1_20 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_11.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_11.java index e64e2a42..2a8a7263 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_11.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_11.java @@ -4,7 +4,9 @@ import com.leonardobishop.quests.common.versioning.Version; import org.bukkit.entity.CamelHusk; import org.bukkit.entity.Nautilus; import org.bukkit.entity.Player; +import org.jspecify.annotations.NullMarked; +@NullMarked public class VersionSpecificHandler_V1_21_11 extends VersionSpecificHandler_V1_21_6 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_6.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_6.java index 4eaae85f..db4bcb4d 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_6.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_21_6.java @@ -3,7 +3,9 @@ package com.leonardobishop.quests.bukkit.hook.versionspecific; import com.leonardobishop.quests.common.versioning.Version; import org.bukkit.entity.HappyGhast; import org.bukkit.entity.Player; +import org.jspecify.annotations.NullMarked; +@NullMarked public class VersionSpecificHandler_V1_21_6 extends VersionSpecificHandler_V1_20_4 { @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_8.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_8.java index 4567f548..c462c750 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_8.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_8.java @@ -20,10 +20,12 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.projectiles.ProjectileSource; +import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import java.util.List; +@NullMarked public class VersionSpecificHandler_V1_8 implements VersionSpecificHandler { @Override @@ -129,7 +131,7 @@ public class VersionSpecificHandler_V1_8 implements VersionSpecificHandler { @SuppressWarnings("deprecation") @Override - public ItemStack getItemInEquipmentSlot(PlayerInventory inventory, EquipmentSlot slot) { + public @Nullable ItemStack getItemInEquipmentSlot(PlayerInventory inventory, EquipmentSlot slot) { return switch (slot) { case CHEST -> inventory.getChestplate(); case FEET -> inventory.getBoots(); @@ -148,7 +150,7 @@ public class VersionSpecificHandler_V1_8 implements VersionSpecificHandler { } @Override - public EquipmentSlot getHand(PlayerInteractEvent event) { + public @Nullable EquipmentSlot getHand(PlayerInteractEvent event) { return EquipmentSlot.HAND; } @@ -158,12 +160,12 @@ public class VersionSpecificHandler_V1_8 implements VersionSpecificHandler { } @Override - public ItemStack[] getSmithItems(SmithItemEvent event) { + public @Nullable ItemStack[] getSmithItems(SmithItemEvent event) { return new ItemStack[0]; } @Override - public String getSmithMode(SmithItemEvent event) { + public @Nullable String getSmithMode(SmithItemEvent event) { return null; } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_9.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_9.java index ae90569a..720ea4e5 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_9.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/versionspecific/VersionSpecificHandler_V1_9.java @@ -7,8 +7,10 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; +import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; +@NullMarked public class VersionSpecificHandler_V1_9 extends VersionSpecificHandler_V1_8 { @Override @@ -43,7 +45,7 @@ public class VersionSpecificHandler_V1_9 extends VersionSpecificHandler_V1_8 { @SuppressWarnings("deprecation") @Override - public ItemStack getItemInEquipmentSlot(PlayerInventory inventory, EquipmentSlot slot) { + public @Nullable ItemStack getItemInEquipmentSlot(PlayerInventory inventory, EquipmentSlot slot) { return switch (slot) { case CHEST -> inventory.getChestplate(); case FEET -> inventory.getBoots(); @@ -58,7 +60,7 @@ public class VersionSpecificHandler_V1_9 extends VersionSpecificHandler_V1_8 { } @Override - public EquipmentSlot getHand(PlayerInteractEvent event) { + public @Nullable EquipmentSlot getHand(PlayerInteractEvent event) { return event.getHand(); } -- cgit v1.2.3-70-g09d2