--- a/net/minecraft/world/entity/projectile/ThrowableItemProjectile.java
+++ b/net/minecraft/world/entity/projectile/ThrowableItemProjectile.java
@@ -12,6 +12,7 @@
 import net.minecraft.world.level.Level;
 
 public abstract class ThrowableItemProjectile extends ThrowableProjectile implements ItemSupplier {
+
     private static final EntityDataAccessor<ItemStack> DATA_ITEM_STACK = SynchedEntityData.defineId(ThrowableItemProjectile.class, EntityDataSerializers.ITEM_STACK);
 
     public ThrowableItemProjectile(EntityType<? extends ThrowableItemProjectile> type, Level world) {
@@ -28,8 +29,8 @@
 
     public void setItem(ItemStack item) {
         if (!item.is(this.getDefaultItem()) || item.hasTag()) {
-            this.getEntityData().set(DATA_ITEM_STACK, Util.make(item.copy(), (stack) -> {
-                stack.setCount(1);
+            this.getEntityData().set(ThrowableItemProjectile.DATA_ITEM_STACK, (ItemStack) Util.make(item.copy(), (itemstack1) -> {
+                if (!itemstack1.isEmpty()) itemstack1.setCount(1); // CraftBukkit
             }));
         }
 
@@ -37,27 +38,35 @@
 
     protected abstract Item getDefaultItem();
 
+    // CraftBukkit start
+    public Item getDefaultItemPublic() {
+        return this.getDefaultItem();
+    }
+    // CraftBukkit end
+
     public ItemStack getItemRaw() {
-        return this.getEntityData().get(DATA_ITEM_STACK);
+        return (ItemStack) this.getEntityData().get(ThrowableItemProjectile.DATA_ITEM_STACK);
     }
 
     @Override
     public ItemStack getItem() {
-        ItemStack itemStack = this.getItemRaw();
-        return itemStack.isEmpty() ? new ItemStack(this.getDefaultItem()) : itemStack;
+        ItemStack itemstack = this.getItemRaw();
+
+        return itemstack.isEmpty() ? new ItemStack(this.getDefaultItem()) : itemstack;
     }
 
     @Override
     protected void defineSynchedData() {
-        this.getEntityData().define(DATA_ITEM_STACK, ItemStack.EMPTY);
+        this.getEntityData().define(ThrowableItemProjectile.DATA_ITEM_STACK, ItemStack.EMPTY);
     }
 
     @Override
     public void addAdditionalSaveData(CompoundTag nbt) {
         super.addAdditionalSaveData(nbt);
-        ItemStack itemStack = this.getItemRaw();
-        if (!itemStack.isEmpty()) {
-            nbt.put("Item", itemStack.save(new CompoundTag()));
+        ItemStack itemstack = this.getItemRaw();
+
+        if (!itemstack.isEmpty()) {
+            nbt.put("Item", itemstack.save(new CompoundTag()));
         }
 
     }
@@ -65,7 +74,8 @@
     @Override
     public void readAdditionalSaveData(CompoundTag nbt) {
         super.readAdditionalSaveData(nbt);
-        ItemStack itemStack = ItemStack.of(nbt.getCompound("Item"));
-        this.setItem(itemStack);
+        ItemStack itemstack = ItemStack.of(nbt.getCompound("Item"));
+
+        this.setItem(itemstack);
     }
 }
