diff --git a/build.gradle b/build.gradle
index 7689890d0..174038da8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,8 +12,8 @@ plugins {
 def ENV = System.getenv()
 
 class Globals {
-	static def baseVersion = "0.5.6"
-	static def mcVersion = "20w13a"
+	static def baseVersion = "0.5.7"
+	static def mcVersion = "20w14infinite"
 	static def yarnVersion = "+build.1"
 }
 
diff --git a/fabric-biomes-v1/build.gradle b/fabric-biomes-v1/build.gradle
index e391e78e0..aba5857b3 100644
--- a/fabric-biomes-v1/build.gradle
+++ b/fabric-biomes-v1/build.gradle
@@ -1,2 +1,2 @@
 archivesBaseName = "fabric-biomes-v1"
-version = getSubprojectVersion(project, "0.2.1")
+version = getSubprojectVersion(project, "0.3.0")
diff --git a/fabric-biomes-v1/src/main/java/net/fabricmc/fabric/api/biomes/v1/NetherBiomes.java b/fabric-biomes-v1/src/main/java/net/fabricmc/fabric/api/biomes/v1/NetherBiomes.java
index b9b446d92..758392c76 100644
--- a/fabric-biomes-v1/src/main/java/net/fabricmc/fabric/api/biomes/v1/NetherBiomes.java
+++ b/fabric-biomes-v1/src/main/java/net/fabricmc/fabric/api/biomes/v1/NetherBiomes.java
@@ -18,8 +18,6 @@ package net.fabricmc.fabric.api.biomes.v1;
 
 import net.minecraft.world.biome.Biome;
 
-import net.fabricmc.fabric.impl.biome.InternalBiomeData;
-
 /**
  * API that exposes the internals of Minecraft's nether biome code.
  */
@@ -35,6 +33,7 @@ public final class NetherBiomes {
 	 */
 	@Deprecated
 	public static void addNetherBiome(Biome biome) {
-		InternalBiomeData.addNetherBiome(biome);
+		// Not working, as the april fools version broke it, but I want to ensure that most mods can run on this version.
+		// If this was a normal version I would have removed this api if it couldnt have been fixed.
 	}
 }
diff --git a/fabric-biomes-v1/src/main/java/net/fabricmc/fabric/mixin/biome/MixinTheNetherDimension.java b/fabric-biomes-v1/src/main/java/net/fabricmc/fabric/mixin/biome/MixinTheNetherDimension.java
deleted file mode 100644
index ec8b349a5..000000000
--- a/fabric-biomes-v1/src/main/java/net/fabricmc/fabric/mixin/biome/MixinTheNetherDimension.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, 2018, 2019 FabricMC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.fabricmc.fabric.mixin.biome;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.ModifyArg;
-
-import net.minecraft.world.biome.Biome;
-import net.minecraft.world.dimension.TheNetherDimension;
-
-import net.fabricmc.fabric.impl.biome.InternalBiomeData;
-
-@Mixin(TheNetherDimension.class)
-public class MixinTheNetherDimension {
-	@ModifyArg(method = "createChunkGenerator", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/biome/source/MultiNoiseBiomeSourceConfig;withBiomes(Ljava/util/Set;)Lnet/minecraft/world/biome/source/MultiNoiseBiomeSourceConfig;"))
-	protected Set<Biome> modifyNetherBiomes(Set<Biome> set) {
-		// the provided set is immutable, so we construct our own
-		Set<Biome> newSet = new HashSet<>(set);
-		newSet.addAll(InternalBiomeData.getNetherBiomes());
-		return newSet;
-	}
-}
diff --git a/fabric-biomes-v1/src/main/resources/fabric-biomes-v1.mixins.json b/fabric-biomes-v1/src/main/resources/fabric-biomes-v1.mixins.json
index 37b122b34..f8eb0be49 100644
--- a/fabric-biomes-v1/src/main/resources/fabric-biomes-v1.mixins.json
+++ b/fabric-biomes-v1/src/main/resources/fabric-biomes-v1.mixins.json
@@ -8,7 +8,6 @@
     "MixinAddRiversLayer",
     "MixinBiomeSource",
     "MixinSetBaseBiomesLayer",
-    "MixinTheNetherDimension",
     "MixinVanillaLayeredBiomeSource"
   ],
   "injectors": {
diff --git a/fabric-biomes-v1/src/main/resources/fabric.mod.json b/fabric-biomes-v1/src/main/resources/fabric.mod.json
index 2bc6e9fe4..f431e49bb 100644
--- a/fabric-biomes-v1/src/main/resources/fabric.mod.json
+++ b/fabric-biomes-v1/src/main/resources/fabric.mod.json
@@ -17,7 +17,7 @@
   ],
   "depends": {
     "fabricloader": ">=0.4.0",
-    "minecraft": ">=1.16-alpha.20.10.a"
+    "minecraft": "1.16-20.w.14"
   },
   "description": "Hooks for adding biomes to the default world generator.",
   "mixins": [
diff --git a/fabric-particles-v1/build.gradle b/fabric-particles-v1/build.gradle
index aaaa3e9a6..438f890e8 100644
--- a/fabric-particles-v1/build.gradle
+++ b/fabric-particles-v1/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-particles-v1"
-version = getSubprojectVersion(project, "0.1.1")
+version = getSubprojectVersion(project, "0.1.2")
 
 dependencies {
 	compile project(path: ':fabric-api-base', configuration: 'dev')
diff --git a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/api/particle/v1/FabricParticleTypes.java b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/api/particle/v1/FabricParticleTypes.java
index 271fb71cf..ce0adbe4e 100644
--- a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/api/particle/v1/FabricParticleTypes.java
+++ b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/api/particle/v1/FabricParticleTypes.java
@@ -76,6 +76,6 @@ public final class FabricParticleTypes {
 	 * @param factory	 A factory for serializing packet data and string command parameters into a particle effect.
 	 */
 	public static <T extends ParticleEffect> ParticleType<T> complex(boolean alwaysSpawn, ParticleEffect.Factory<T> factory) {
-		return new ParticleType<T>(alwaysSpawn, factory) { };
+		return new ParticleType<T>(alwaysSpawn, factory, (random, tParticleType) -> (T) tParticleType) { };
 	}
 }
diff --git a/fabric-particles-v1/src/main/resources/fabric.mod.json b/fabric-particles-v1/src/main/resources/fabric.mod.json
index 49c85e272..2f67f7eac 100644
--- a/fabric-particles-v1/src/main/resources/fabric.mod.json
+++ b/fabric-particles-v1/src/main/resources/fabric.mod.json
@@ -4,7 +4,8 @@
   "version": "${version}",
   "license": "Apache-2.0",
   "depends": {
-    "fabricloader": ">=0.4.0"
+    "fabricloader": ">=0.4.0",
+    "minecraft": "1.16-20.w.14"
   },
   "mixins": [
     "fabric-particles-v1.mixins.json"
diff --git a/fabric-registry-sync-v0/build.gradle b/fabric-registry-sync-v0/build.gradle
index b22488897..baa3267c8 100644
--- a/fabric-registry-sync-v0/build.gradle
+++ b/fabric-registry-sync-v0/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-registry-sync-v0"
-version = getSubprojectVersion(project, "0.2.9")
+version = getSubprojectVersion(project, "0.3.0")
 
 dependencies {
 	compile project(path: ':fabric-api-base', configuration: 'dev')
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java
index 9979a530e..85ed87804 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java
@@ -40,7 +40,6 @@ import org.spongepowered.asm.mixin.injection.Inject;
 import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
 
 import net.minecraft.util.Identifier;
-import net.minecraft.util.collection.Int2ObjectBiMap;
 import net.minecraft.util.registry.SimpleRegistry;
 
 import net.fabricmc.fabric.api.event.Event;
@@ -56,7 +55,9 @@ import net.fabricmc.fabric.impl.registry.sync.RemappableRegistry;
 @Mixin(SimpleRegistry.class)
 public abstract class MixinIdRegistry<T> implements RemappableRegistry, ListenableRegistry {
 	@Shadow
-	protected Int2ObjectBiMap<T> indexedEntries;
+	protected Int2ObjectMap<T> indexedEntries;
+	@Shadow
+	protected Object2IntMap<T> field_23632;
 	@Shadow
 	protected BiMap<Identifier, T> entries;
 	@Shadow
@@ -124,7 +125,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab
 	@SuppressWarnings({"unchecked", "ConstantConditions"})
 	@Inject(method = "set", at = @At("HEAD"))
 	public void setPre(int id, Identifier identifier, Object object, CallbackInfoReturnable info) {
-		int indexedEntriesId = indexedEntries.getId((T) object);
+		int indexedEntriesId = field_23632.getOrDefault((T) object, -1);
 
 		if (indexedEntriesId >= 0) {
 			throw new RuntimeException("Attempted to register object " + object + " twice! (at raw IDs " + indexedEntriesId + " and " + id + " )");
@@ -136,7 +137,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab
 			T oldObject = entries.get(identifier);
 
 			if (oldObject != null && oldObject != object) {
-				int oldId = indexedEntries.getId(oldObject);
+				int oldId = field_23632.getInt(oldObject);
 
 				if (oldId != id) {
 					throw new RuntimeException("Attempted to register ID " + identifier + " at different raw IDs (" + oldId + ", " + id + ")! If you're trying to override an item, use .set(), not .register()!");
@@ -292,7 +293,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab
 
 		Int2IntMap idMap = new Int2IntOpenHashMap();
 
-		for (Object o : indexedEntries) {
+		for (Object o : indexedEntries.values()) {
 			Identifier id = registry.getId(o);
 			int rid = registry.getRawId(o);
 
@@ -327,7 +328,8 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab
 			}
 
 			// Add the new object, increment nextId to match.
-			indexedEntries.put(object, id);
+			indexedEntries.put(id, object);
+			field_23632.put(object, id);
 
 			if (nextId <= id) {
 				nextId = id + 1;
@@ -357,7 +359,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab
 			remap(name, fabric_prevIndexedEntries, RemapMode.AUTHORITATIVE);
 
 			for (Identifier id : addedIds) {
-				fabric_getAddObjectEvent().invoker().onEntryAdded(indexedEntries.getId(entries.get(id)), id, entries.get(id));
+				fabric_getAddObjectEvent().invoker().onEntryAdded(field_23632.getInt(entries.get(id)), id, entries.get(id));
 			}
 
 			fabric_prevIndexedEntries = null;
diff --git a/fabric-registry-sync-v0/src/main/resources/fabric.mod.json b/fabric-registry-sync-v0/src/main/resources/fabric.mod.json
index 56a6f76ff..12d00d049 100644
--- a/fabric-registry-sync-v0/src/main/resources/fabric.mod.json
+++ b/fabric-registry-sync-v0/src/main/resources/fabric.mod.json
@@ -18,7 +18,8 @@
   "depends": {
     "fabricloader": ">=0.4.0",
     "fabric-api-base": "*",
-    "fabric-networking-v0": "*"
+    "fabric-networking-v0": "*",
+    "minecraft": "1.16-20.w.14"
   },
   "description": "Syncs registry mappings.",
   "mixins": [
diff --git a/fabric-renderer-indigo/build.gradle b/fabric-renderer-indigo/build.gradle
index 4750768e8..0154be2e5 100644
--- a/fabric-renderer-indigo/build.gradle
+++ b/fabric-renderer-indigo/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-renderer-indigo"
-version = getSubprojectVersion(project, "0.2.27")
+version = getSubprojectVersion(project, "0.2.28")
 
 dependencies {
 	compile project(path: ':fabric-api-base', configuration: 'dev')
diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractQuadRenderer.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractQuadRenderer.java
index f6339ccf9..c1b893c31 100644
--- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractQuadRenderer.java
+++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractQuadRenderer.java
@@ -25,10 +25,10 @@ import net.minecraft.block.BlockState;
 import net.minecraft.client.render.RenderLayer;
 import net.minecraft.client.render.VertexConsumer;
 import net.minecraft.client.render.WorldRenderer;
-import net.minecraft.client.util.math.Matrix4f;
+import net.minecraft.util.math.Matrix4f;
 import net.minecraft.client.util.math.Vector3f;
 import net.minecraft.util.math.BlockPos;
-import net.minecraft.client.util.math.Matrix3f;
+import net.minecraft.util.math.Matrix3f;
 
 import net.fabricmc.fabric.api.renderer.v1.render.RenderContext.QuadTransform;
 import net.fabricmc.fabric.impl.client.indigo.renderer.aocalc.AoCalculator;
diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractRenderContext.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractRenderContext.java
index 9dd537b5e..13b2625f1 100644
--- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractRenderContext.java
+++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractRenderContext.java
@@ -18,8 +18,8 @@ package net.fabricmc.fabric.impl.client.indigo.renderer.render;
 
 import it.unimi.dsi.fastutil.objects.ObjectArrayList;
 
-import net.minecraft.client.util.math.Matrix4f;
-import net.minecraft.client.util.math.Matrix3f;
+import net.minecraft.util.math.Matrix4f;
+import net.minecraft.util.math.Matrix3f;
 
 import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView;
 import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/BlockRenderContext.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/BlockRenderContext.java
index bf734e834..a88d43122 100644
--- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/BlockRenderContext.java
+++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/BlockRenderContext.java
@@ -26,8 +26,8 @@ import net.minecraft.client.render.VertexConsumer;
 import net.minecraft.client.render.WorldRenderer;
 import net.minecraft.client.render.block.BlockModelRenderer;
 import net.minecraft.client.render.model.BakedModel;
-import net.minecraft.client.util.math.Matrix4f;
-import net.minecraft.client.util.math.Matrix3f;
+import net.minecraft.util.math.Matrix4f;
+import net.minecraft.util.math.Matrix3f;
 import net.minecraft.client.util.math.MatrixStack;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.world.BlockRenderView;
diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java
index 8d1a6901a..0d406b3ae 100644
--- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java
+++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java
@@ -33,7 +33,7 @@ import net.minecraft.client.render.model.BakedModel;
 import net.minecraft.client.render.model.BakedQuad;
 import net.minecraft.client.render.model.json.ModelTransformation;
 import net.minecraft.client.render.model.json.ModelTransformation.Mode;
-import net.minecraft.client.util.math.Matrix4f;
+import net.minecraft.util.math.Matrix4f;
 import net.minecraft.client.util.math.MatrixStack;
 import net.minecraft.client.util.math.Vector3f;
 import net.minecraft.item.ItemStack;
diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/TerrainRenderContext.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/TerrainRenderContext.java
index 8b5c4aea9..d62e6288b 100644
--- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/TerrainRenderContext.java
+++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/TerrainRenderContext.java
@@ -24,12 +24,12 @@ import net.minecraft.client.render.chunk.ChunkBuilder.ChunkData;
 import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
 import net.minecraft.client.render.chunk.ChunkRendererRegion;
 import net.minecraft.client.render.model.BakedModel;
-import net.minecraft.client.util.math.Matrix4f;
+import net.minecraft.util.math.Matrix4f;
 import net.minecraft.util.crash.CrashException;
 import net.minecraft.util.crash.CrashReport;
 import net.minecraft.util.crash.CrashReportSection;
 import net.minecraft.util.math.BlockPos;
-import net.minecraft.client.util.math.Matrix3f;
+import net.minecraft.util.math.Matrix3f;
 import net.minecraft.client.util.math.MatrixStack;
 
 import net.fabricmc.fabric.api.renderer.v1.mesh.Mesh;
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index d2458d1d6..6e246e81e 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -17,7 +17,7 @@
   ],
   "depends": {
     "fabricloader": ">=0.7.8",
-    "minecraft": "~1.16-alpha.20.10.a"
+    "minecraft": "1.16-20.w.14"
   },
   "description": "Core API module providing key hooks and intercompatibility features."
 }