diff --git a/build.gradle b/build.gradle
index 5f5a96f11..f541e949e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,8 +19,8 @@ plugins {
 def ENV = System.getenv()
 
 class Globals {
-	static def baseVersion = "0.30.4"
-	static def mcVersion = "21w06a"
+	static def baseVersion = "0.30.5"
+	static def mcVersion = "21w07a"
 	static def yarnVersion = "+build.1"
 	static def loaderVersion = "0.10.5+build.213"
 	static def preRelease = true
diff --git a/fabric-lifecycle-events-v1/build.gradle b/fabric-lifecycle-events-v1/build.gradle
index 99a9a0e27..6fb3830cd 100644
--- a/fabric-lifecycle-events-v1/build.gradle
+++ b/fabric-lifecycle-events-v1/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-lifecycle-events-v1"
-version = getSubprojectVersion(project, "1.4.2")
+version = getSubprojectVersion(project, "1.4.3")
 
 moduleDependencies(project, [
 		'fabric-api-base'
diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerWorldEntityLoaderMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerWorldEntityLoaderMixin.java
index 7e777b3d3..c92be10f9 100644
--- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerWorldEntityLoaderMixin.java
+++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerWorldEntityLoaderMixin.java
@@ -28,7 +28,7 @@ import net.minecraft.server.world.ServerWorld;
 
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerEntityEvents;
 
-@Mixin(targets = "net/minecraft/server/world/ServerWorld$EntityLoader")
+@Mixin(targets = "net/minecraft/server/world/ServerWorld$ServerEntityHandler")
 abstract class ServerWorldEntityLoaderMixin {
 	// final synthetic Lnet/minecraft/server/world/ServerWorld; field_26936
 	@SuppressWarnings("ShadowTarget")
@@ -36,12 +36,12 @@ abstract class ServerWorldEntityLoaderMixin {
 	@Final
 	private ServerWorld field_26936;
 
-	@Inject(method = "onLoadEntity(Lnet/minecraft/entity/Entity;)V", at = @At("TAIL"))
+	@Inject(method = "startTracking(Lnet/minecraft/entity/Entity;)V", at = @At("TAIL"))
 	private void invokeEntityLoadEvent(Entity entity, CallbackInfo ci) {
 		ServerEntityEvents.ENTITY_LOAD.invoker().onLoad(entity, this.field_26936);
 	}
 
-	@Inject(method = "onUnloadEntity(Lnet/minecraft/entity/Entity;)V", at = @At("HEAD"))
+	@Inject(method = "stopTracking(Lnet/minecraft/entity/Entity;)V", at = @At("HEAD"))
 	private void invokeEntityUnloadEvent(Entity entity, CallbackInfo info) {
 		ServerEntityEvents.ENTITY_UNLOAD.invoker().onUnload(entity, this.field_26936);
 	}
diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientWorldEntityLoaderMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientWorldEntityLoaderMixin.java
index 28fe557a6..f8846f3dd 100644
--- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientWorldEntityLoaderMixin.java
+++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientWorldEntityLoaderMixin.java
@@ -31,7 +31,7 @@ import net.fabricmc.api.Environment;
 import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents;
 
 @Environment(EnvType.CLIENT)
-@Mixin(targets = "net/minecraft/client/world/ClientWorld$EntityLoader")
+@Mixin(targets = "net/minecraft/client/world/ClientWorld$ClientEntityHandler")
 abstract class ClientWorldEntityLoaderMixin {
 	// final synthetic Lnet/minecraft/client/world/ClientWorld; field_27735
 	@SuppressWarnings("ShadowTarget")
@@ -40,13 +40,13 @@ abstract class ClientWorldEntityLoaderMixin {
 	private ClientWorld field_27735;
 
 	// Call our load event after vanilla has loaded the entity
-	@Inject(method = "onLoadEntity(Lnet/minecraft/entity/Entity;)V", at = @At("TAIL"))
+	@Inject(method = "startTracking(Lnet/minecraft/entity/Entity;)V", at = @At("TAIL"))
 	private void invokeLoadEntity(Entity entity, CallbackInfo ci) {
 		ClientEntityEvents.ENTITY_LOAD.invoker().onLoad(entity, this.field_27735);
 	}
 
 	// Call our unload event before vanilla does.
-	@Inject(method = "onUnloadEntity(Lnet/minecraft/entity/Entity;)V", at = @At("HEAD"))
+	@Inject(method = "stopTracking(Lnet/minecraft/entity/Entity;)V", at = @At("HEAD"))
 	private void invokeUnloadEntity(Entity entity, CallbackInfo ci) {
 		ClientEntityEvents.ENTITY_UNLOAD.invoker().onUnload(entity, this.field_27735);
 	}
diff --git a/fabric-networking-api-v1/build.gradle b/fabric-networking-api-v1/build.gradle
index 61a4322a2..7ab2412b5 100644
--- a/fabric-networking-api-v1/build.gradle
+++ b/fabric-networking-api-v1/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-networking-api-v1"
-version = getSubprojectVersion(project, "1.0.3")
+version = getSubprojectVersion(project, "1.0.4")
 
 moduleDependencies(project, [
 		'fabric-api-base'
diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/api/networking/v1/PlayerLookup.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/api/networking/v1/PlayerLookup.java
index 4c0a7cab1..476ad44a5 100644
--- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/api/networking/v1/PlayerLookup.java
+++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/api/networking/v1/PlayerLookup.java
@@ -33,7 +33,7 @@ import net.minecraft.util.math.ChunkPos;
 import net.minecraft.util.math.Vec3d;
 import net.minecraft.util.math.Vec3i;
 import net.minecraft.world.chunk.ChunkManager;
-import net.minecraft.class_5629;
+import net.minecraft.server.world.EntityTrackingListener;
 
 import net.fabricmc.fabric.mixin.networking.accessor.EntityTrackerAccessor;
 import net.fabricmc.fabric.mixin.networking.accessor.ThreadedAnvilChunkStorageAccessor;
@@ -118,7 +118,7 @@ public final class PlayerLookup {
 			// return an immutable collection to guard against accidental removals.
 			if (tracker != null) {
 				return Collections.unmodifiableCollection(tracker.getPlayersTracking()
-						.stream().map(class_5629::method_32311).collect(Collectors.toSet()));
+						.stream().map(EntityTrackingListener::getPlayer).collect(Collectors.toSet()));
 			}
 
 			return Collections.emptySet();
diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/accessor/EntityTrackerAccessor.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/accessor/EntityTrackerAccessor.java
index ab556924a..f27705c52 100644
--- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/accessor/EntityTrackerAccessor.java
+++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/accessor/EntityTrackerAccessor.java
@@ -21,10 +21,10 @@ import java.util.Set;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.gen.Accessor;
 
-import net.minecraft.class_5629;
+import net.minecraft.server.world.EntityTrackingListener;
 
 @Mixin(targets = "net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker")
 public interface EntityTrackerAccessor {
-	@Accessor
-	Set<class_5629> getPlayersTracking();
+	@Accessor("listeners")
+	Set<EntityTrackingListener> getPlayersTracking();
 }
diff --git a/fabric-networking-blockentity-v0/build.gradle b/fabric-networking-blockentity-v0/build.gradle
index 5aa5646ca..aa8c03493 100644
--- a/fabric-networking-blockentity-v0/build.gradle
+++ b/fabric-networking-blockentity-v0/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-networking-blockentity-v0"
-version = getSubprojectVersion(project, "0.2.8")
+version = getSubprojectVersion(project, "0.2.9")
 
 moduleDependencies(project, [
 		'fabric-api-base'
diff --git a/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinBlockEntity.java b/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinBlockEntity.java
index 311adca8c..004380352 100644
--- a/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinBlockEntity.java
+++ b/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinBlockEntity.java
@@ -64,7 +64,7 @@ public abstract class MixinBlockEntity {
 		}
 	}
 
-	@Inject(at = @At("RETURN"), method = "toInitialChunkDataTag", cancellable = true)
+	@Inject(at = @At("RETURN"), method = "toInitialChunkDataNbt", cancellable = true)
 	public void toInitialChunkDataTag(CallbackInfoReturnable<CompoundTag> info) {
 		Object self = this;
 
diff --git a/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinClientPlayNetworkHandler.java b/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinClientPlayNetworkHandler.java
index d416dc673..e987458de 100644
--- a/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinClientPlayNetworkHandler.java
+++ b/fabric-networking-blockentity-v0/src/main/java/net/fabricmc/fabric/mixin/networking/blockentity/MixinClientPlayNetworkHandler.java
@@ -69,12 +69,12 @@ public class MixinClientPlayNetworkHandler {
 		}
 	}
 
-	@Redirect(method = "onChunkData", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/BlockEntity;fromTag(Lnet/minecraft/nbt/CompoundTag;)V"))
+	@Redirect(method = "onChunkData", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/BlockEntity;readNbt(Lnet/minecraft/nbt/CompoundTag;)V"))
 	public void deserializeBlockEntityChunkData(BlockEntity blockEntity, CompoundTag tag) {
 		if (blockEntity instanceof BlockEntityClientSerializable) {
 			((BlockEntityClientSerializable) blockEntity).fromClientTag(tag);
 		} else {
-			blockEntity.fromTag(tag);
+			blockEntity.readNbt(tag);
 		}
 	}
 }
diff --git a/fabric-object-builder-api-v1/build.gradle b/fabric-object-builder-api-v1/build.gradle
index f1a120164..1a67ed273 100644
--- a/fabric-object-builder-api-v1/build.gradle
+++ b/fabric-object-builder-api-v1/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-object-builder-api-v1"
-version = getSubprojectVersion(project, "1.10.4")
+version = getSubprojectVersion(project, "1.10.5")
 
 dependencies {
 	testmodCompile project(path: ':fabric-command-api-v1', configuration: 'dev')
diff --git a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/SimpleTradeFactory.java b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/SimpleTradeFactory.java
index 28513e880..96d27d4db 100644
--- a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/SimpleTradeFactory.java
+++ b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/SimpleTradeFactory.java
@@ -32,6 +32,6 @@ class SimpleTradeFactory implements TradeOffers.Factory {
 	@Override
 	public TradeOffer create(Entity entity, Random random) {
 		// ALWAYS supply a copy of the offer.
-		return new TradeOffer(this.offer.toTag());
+		return new TradeOffer(this.offer.toNbt());
 	}
 }
diff --git a/fabric-screen-handler-api-v1/build.gradle b/fabric-screen-handler-api-v1/build.gradle
index 14ea21de6..555b20853 100644
--- a/fabric-screen-handler-api-v1/build.gradle
+++ b/fabric-screen-handler-api-v1/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-screen-handler-api-v1"
-version = getSubprojectVersion(project, "1.1.5")
+version = getSubprojectVersion(project, "1.1.6")
 
 minecraft {
 	accessWidener = file('src/main/resources/fabric-screen-handler-api-v1.accesswidener')
diff --git a/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/item/BagInventory.java b/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/item/BagInventory.java
index aec664e09..d05b74bf9 100644
--- a/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/item/BagInventory.java
+++ b/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/item/BagInventory.java
@@ -30,7 +30,7 @@ final class BagInventory implements ImplementedInventory {
 		CompoundTag tag = stack.getSubTag("Items");
 
 		if (tag != null) {
-			Inventories.fromTag(tag, items);
+			Inventories.readNbt(tag, items);
 		}
 	}
 
@@ -42,6 +42,6 @@ final class BagInventory implements ImplementedInventory {
 	@Override
 	public void markDirty() {
 		CompoundTag tag = stack.getOrCreateSubTag("Items");
-		Inventories.toTag(tag, items);
+		Inventories.writeNbt(tag, items);
 	}
 }