diff --git a/patches/server/API-to-get-a-BlockState-without-a-snapshot.patch b/patches/server/API-to-get-a-BlockState-without-a-snapshot.patch
index 0cbc48ae0e..62900b68f5 100644
--- a/patches/server/API-to-get-a-BlockState-without-a-snapshot.patch
+++ b/patches/server/API-to-get-a-BlockState-without-a-snapshot.patch
@@ -43,12 +43,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +    public InventoryHolder getOwner(boolean useSnapshot) {
 +        // Paper end
          if (this.level == null) return null;
-         // Spigot start
          org.bukkit.block.Block block = this.level.getWorld().getBlockAt(this.worldPosition.getX(), this.worldPosition.getY(), this.worldPosition.getZ());
-@@ -0,0 +0,0 @@ public abstract class BlockEntity implements net.minecraft.server.KeyedObject {
-             return null;
-         }
-         // Spigot end
+         if (block.getType() == org.bukkit.Material.AIR) return null;
 -        org.bukkit.block.BlockState state = block.getState();
 +        org.bukkit.block.BlockState state = block.getState(useSnapshot); // Paper
          if (state instanceof InventoryHolder) return (InventoryHolder) state;
diff --git a/patches/server/Fix-unplaced-block-states-after-new-chunk-gen-API.patch b/patches/server/Fix-unplaced-block-states-after-new-chunk-gen-API.patch
index 23b616c6a3..96875e2875 100644
--- a/patches/server/Fix-unplaced-block-states-after-new-chunk-gen-API.patch
+++ b/patches/server/Fix-unplaced-block-states-after-new-chunk-gen-API.patch
@@ -9,11 +9,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java
 @@ -0,0 +0,0 @@ public class CraftBeehive extends CraftBlockEntityState<BeehiveBlockEntity> impl
- 
-     @Override
-     public List<Bee> releaseEntities() {
--        Preconditions.checkState(getWorldHandle() instanceof net.minecraft.world.level.Level, "Can't release entities during world generation");
- 
          List<Bee> bees = new ArrayList<>();
  
          if (isPlaced()) {
@@ -21,37 +16,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
              BeehiveBlockEntity beehive = ((BeehiveBlockEntity) this.getTileEntityFromWorld());
              for (Entity bee : beehive.releaseBees(this.getHandle(), BeeReleaseStatus.BEE_RELEASED, true)) {
                  bees.add((Bee) bee.getBukkitEntity());
-diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
-+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
-@@ -0,0 +0,0 @@ public class CraftBlockState implements BlockState {
- 
-     public LevelAccessor getWorldHandle() {
-         if (this.weakWorld == null) {
-+            requirePlaced(); // Paper
-             return this.world.getHandle();
-         }
- 
-         LevelAccessor access = this.weakWorld.get();
-         if (access == null) {
-             this.weakWorld = null;
-+            requirePlaced(); // Paper
-             return this.world.getHandle();
-         }
- 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java b/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java
 @@ -0,0 +0,0 @@ public class CraftChest extends CraftLootable<ChestBlockEntity> implements Chest
- 
-     @Override
-     public Inventory getInventory() {
--        Preconditions.checkState(getWorldHandle() instanceof net.minecraft.world.level.Level, "Can't get inventory during world generation, use getBlockInventory() instead");
- 
-         CraftInventory inventory = (CraftInventory) this.getBlockInventory();
-         if (!isPlaced()) {
+         if (!isPlaced() || isWorldGeneration()) {
              return inventory;
          }
 +        Preconditions.checkState(getWorldHandle() instanceof net.minecraft.world.level.Level, "Can't get inventory during world generation, use getBlockInventory() instead"); // Paper - move after placed check
diff --git a/patches/server/Null-check-isApplicable-for-CraftBlockEntityState-up.patch b/patches/server/Null-check-isApplicable-for-CraftBlockEntityState-up.patch
deleted file mode 100644
index 83a8df5ad8..0000000000
--- a/patches/server/Null-check-isApplicable-for-CraftBlockEntityState-up.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Spottedleaf <Spottedleaf@users.noreply.github.com>
-Date: Tue, 12 Oct 2021 13:32:52 -0700
-Subject: [PATCH] Null check isApplicable for CraftBlockEntityState#update
-
-If the update call removed the TE, then isApplicable would
-have NPE'd.
-
-diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
-+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
-@@ -0,0 +0,0 @@ public abstract class CraftBlockEntityState<T extends BlockEntity> extends Craft
-     }
- 
-     protected boolean isApplicable(BlockEntity tileEntity) {
--        return this.tileEntity.getClass() == tileEntity.getClass();
-+        return tileEntity != null && this.tileEntity.getClass() == tileEntity.getClass(); // Paper - fix NPE if the TE was removed
-     }
- 
-     @Override
diff --git a/work/Bukkit b/work/Bukkit
index 6be36d3638..9590b610cf 160000
--- a/work/Bukkit
+++ b/work/Bukkit
@@ -1 +1 @@
-Subproject commit 6be36d3638f97e6e0dc053f3e0fd0e68e8ec93f0
+Subproject commit 9590b610cfa705b082c0593b595a7d563a89dc85
diff --git a/work/CraftBukkit b/work/CraftBukkit
index 1df303e707..11c9299fbb 160000
--- a/work/CraftBukkit
+++ b/work/CraftBukkit
@@ -1 +1 @@
-Subproject commit 1df303e70742418fd30760a750a9545f3dea5b9b
+Subproject commit 11c9299fbb8f559c1ba38e8f0e1695c4d33109ba
diff --git a/work/Spigot b/work/Spigot
index 8e907441bd..dc75aca853 160000
--- a/work/Spigot
+++ b/work/Spigot
@@ -1 +1 @@
-Subproject commit 8e907441bde900ddc564d3a5fac831287a1a8b75
+Subproject commit dc75aca85361e65679880f2abd5c92f6db448ae2