From 435f1e64337728a13e42dea8ea1f059c7eca1f3a Mon Sep 17 00:00:00 2001
From: Adrian Siekierka <kontakt@asie.pl>
Date: Sun, 9 Dec 2018 13:43:32 +0100
Subject: [PATCH] rearrange mixins, document more client stuff

---
 .../FabricBlockBuilder.java                   |  2 +-
 .../render/BlockEntityRendererRegistry.java   |  3 ++
 .../client/render/EntityRendererRegistry.java |  3 ++
 .../client/texture/DependentSprite.java       |  5 ++-
 .../fabric/client/texture/SpriteRegistry.java | 13 ++++++
 .../texture/{ => impl}/FabricSprite.java      |  2 +-
 .../client/SpriteEvent.java}                  | 16 +++----
 .../{helpers => block}/MixinBlockBuilder.java |  4 +-
 .../render/MixinBlockEntityRenderManager.java |  2 +-
 .../render/MixinEntityRenderManager.java      |  2 +-
 .../texture}/MixinSpriteAtlasTexture.java     | 12 +++---
 .../objectbuilder}/MixinBlock.java            |  2 +-
 .../objectbuilder}/MixinItem.java             |  2 +-
 .../MixinClientPlayerInteractionManager.java  |  2 +-
 .../MixinServerPlayNetworkHandler.java        |  2 +-
 .../MixinServerPlayerEntity.java              |  2 +-
 .../MixinServerPlayerInteractionManager.java  |  2 +-
 .../{ => server}/MixinMinecraftServer.java    | 10 +----
 .../{ => tick}/MixinMinecraftClient.java      |  2 +-
 .../events/tick/MixinMinecraftServer.java     | 42 +++++++++++++++++++
 .../mixin/events/{ => tick}/MixinWorld.java   |  2 +-
 .../fabricmc/fabric/tools/ToolManager.java    |  5 ++-
 .../net.fabricmc.fabric.mixins.client.json    | 10 ++---
 .../net.fabricmc.fabric.mixins.common.json    | 17 ++++----
 24 files changed, 110 insertions(+), 54 deletions(-)
 rename src/main/java/net/fabricmc/fabric/{helpers => block}/FabricBlockBuilder.java (99%)
 rename src/main/java/net/fabricmc/fabric/client/texture/{ => impl}/FabricSprite.java (95%)
 rename src/main/java/net/fabricmc/fabric/{client/texture/SpriteProvider.java => events/client/SpriteEvent.java} (69%)
 rename src/main/java/net/fabricmc/fabric/mixin/{helpers => block}/MixinBlockBuilder.java (95%)
 rename src/main/java/net/fabricmc/fabric/mixin/{ => client}/render/MixinBlockEntityRenderManager.java (96%)
 rename src/main/java/net/fabricmc/fabric/mixin/{ => client}/render/MixinEntityRenderManager.java (97%)
 rename src/main/java/net/fabricmc/fabric/mixin/{render => client/texture}/MixinSpriteAtlasTexture.java (93%)
 rename src/main/java/net/fabricmc/fabric/mixin/{helpers => events/objectbuilder}/MixinBlock.java (96%)
 rename src/main/java/net/fabricmc/fabric/mixin/{helpers => events/objectbuilder}/MixinItem.java (96%)
 rename src/main/java/net/fabricmc/fabric/mixin/events/{ => playerinteraction}/MixinClientPlayerInteractionManager.java (99%)
 rename src/main/java/net/fabricmc/fabric/mixin/events/{ => playerinteraction}/MixinServerPlayNetworkHandler.java (97%)
 rename src/main/java/net/fabricmc/fabric/mixin/events/{ => playerinteraction}/MixinServerPlayerEntity.java (96%)
 rename src/main/java/net/fabricmc/fabric/mixin/events/{ => playerinteraction}/MixinServerPlayerInteractionManager.java (98%)
 rename src/main/java/net/fabricmc/fabric/mixin/events/{ => server}/MixinMinecraftServer.java (84%)
 rename src/main/java/net/fabricmc/fabric/mixin/events/{ => tick}/MixinMinecraftClient.java (96%)
 create mode 100644 src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinMinecraftServer.java
 rename src/main/java/net/fabricmc/fabric/mixin/events/{ => tick}/MixinWorld.java (96%)

diff --git a/src/main/java/net/fabricmc/fabric/helpers/FabricBlockBuilder.java b/src/main/java/net/fabricmc/fabric/block/FabricBlockBuilder.java
similarity index 99%
rename from src/main/java/net/fabricmc/fabric/helpers/FabricBlockBuilder.java
rename to src/main/java/net/fabricmc/fabric/block/FabricBlockBuilder.java
index 0078481c4..b15274e23 100644
--- a/src/main/java/net/fabricmc/fabric/helpers/FabricBlockBuilder.java
+++ b/src/main/java/net/fabricmc/fabric/block/FabricBlockBuilder.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.helpers;
+package net.fabricmc.fabric.block;
 
 import net.fabricmc.fabric.tools.ToolManager;
 import net.minecraft.block.Block;
diff --git a/src/main/java/net/fabricmc/fabric/client/render/BlockEntityRendererRegistry.java b/src/main/java/net/fabricmc/fabric/client/render/BlockEntityRendererRegistry.java
index 4eaf2a105..e8f73c5e7 100644
--- a/src/main/java/net/fabricmc/fabric/client/render/BlockEntityRendererRegistry.java
+++ b/src/main/java/net/fabricmc/fabric/client/render/BlockEntityRendererRegistry.java
@@ -23,6 +23,9 @@ import net.minecraft.client.render.block.entity.BlockEntityRenderer;
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * Helper class for registering BlockEntityRenderers.
+ */
 public class BlockEntityRendererRegistry {
 	public static final BlockEntityRendererRegistry INSTANCE = new BlockEntityRendererRegistry();
 	private Map<Class<? extends BlockEntity>, BlockEntityRenderer<? extends BlockEntity>> renderers;
diff --git a/src/main/java/net/fabricmc/fabric/client/render/EntityRendererRegistry.java b/src/main/java/net/fabricmc/fabric/client/render/EntityRendererRegistry.java
index dbbb9914c..d1e740540 100644
--- a/src/main/java/net/fabricmc/fabric/client/render/EntityRendererRegistry.java
+++ b/src/main/java/net/fabricmc/fabric/client/render/EntityRendererRegistry.java
@@ -27,6 +27,9 @@ import java.util.Map;
 import java.util.WeakHashMap;
 import java.util.function.Function;
 
+/**
+ * Helper class for registering EntityRenderers.
+ */
 public class EntityRendererRegistry {
 	@FunctionalInterface
 	public interface Factory {
diff --git a/src/main/java/net/fabricmc/fabric/client/texture/DependentSprite.java b/src/main/java/net/fabricmc/fabric/client/texture/DependentSprite.java
index efde38af5..bef0861a4 100644
--- a/src/main/java/net/fabricmc/fabric/client/texture/DependentSprite.java
+++ b/src/main/java/net/fabricmc/fabric/client/texture/DependentSprite.java
@@ -24,8 +24,11 @@ import java.util.Set;
  * Implement this interface on a Sprite to declare additional dependencies
  * that should be processed prior to this sprite.
  *
- * TODO: Implement this!
+ * Best used in conjunction with {@link CustomSpriteLoader}.
  */
 public interface DependentSprite {
+	/**
+	 * @return A set of all sprites that should be loaded before this sprite.
+	 */
 	Set<Identifier> getDependencies();
 }
diff --git a/src/main/java/net/fabricmc/fabric/client/texture/SpriteRegistry.java b/src/main/java/net/fabricmc/fabric/client/texture/SpriteRegistry.java
index b128e7f78..5d4c2e9ee 100644
--- a/src/main/java/net/fabricmc/fabric/client/texture/SpriteRegistry.java
+++ b/src/main/java/net/fabricmc/fabric/client/texture/SpriteRegistry.java
@@ -22,6 +22,9 @@ import net.minecraft.util.Identifier;
 import java.util.Map;
 import java.util.function.Consumer;
 
+/**
+ * Helper class for registering Sprites during loading.
+ */
 public class SpriteRegistry {
 	private final Map<Identifier, Sprite> spriteMap;
 	private final Consumer<Identifier> defaultSpriteRegister;
@@ -31,10 +34,20 @@ public class SpriteRegistry {
 		this.defaultSpriteRegister = defaultSpriteRegister;
 	}
 
+	/**
+	 * Register a sprite to be loaded using the default implementation.
+	 *
+	 * @param id The sprite identifier.
+	 */
 	public void register(Identifier id) {
 		this.defaultSpriteRegister.accept(id);
 	}
 
+	/**
+	 * Register a custom sprite to be added and loaded.
+	 *
+	 * @param sprite The sprite to be added.
+	 */
 	public void register(Sprite sprite) {
 		this.spriteMap.put(sprite.getId(), sprite);
 	}
diff --git a/src/main/java/net/fabricmc/fabric/client/texture/FabricSprite.java b/src/main/java/net/fabricmc/fabric/client/texture/impl/FabricSprite.java
similarity index 95%
rename from src/main/java/net/fabricmc/fabric/client/texture/FabricSprite.java
rename to src/main/java/net/fabricmc/fabric/client/texture/impl/FabricSprite.java
index cba635834..27efb58a4 100644
--- a/src/main/java/net/fabricmc/fabric/client/texture/FabricSprite.java
+++ b/src/main/java/net/fabricmc/fabric/client/texture/impl/FabricSprite.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.client.texture;
+package net.fabricmc.fabric.client.texture.impl;
 
 import net.minecraft.class_1050;
 import net.minecraft.client.resource.metadata.AnimationResourceMetadata;
diff --git a/src/main/java/net/fabricmc/fabric/client/texture/SpriteProvider.java b/src/main/java/net/fabricmc/fabric/events/client/SpriteEvent.java
similarity index 69%
rename from src/main/java/net/fabricmc/fabric/client/texture/SpriteProvider.java
rename to src/main/java/net/fabricmc/fabric/events/client/SpriteEvent.java
index f02df5b94..004b240e1 100644
--- a/src/main/java/net/fabricmc/fabric/client/texture/SpriteProvider.java
+++ b/src/main/java/net/fabricmc/fabric/events/client/SpriteEvent.java
@@ -14,17 +14,17 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.client.texture;
+package net.fabricmc.fabric.events.client;
 
+import net.fabricmc.fabric.client.texture.SpriteRegistry;
 import net.fabricmc.fabric.util.HandlerList;
 import net.fabricmc.fabric.util.HandlerRegistry;
 
-/**
- * Use this interface to register providers for your own custom atlas sprites.
- */
-@FunctionalInterface
-public interface SpriteProvider {
-	final HandlerRegistry<SpriteProvider> HANDLER = new HandlerList<>();
+public class SpriteEvent {
+	@FunctionalInterface
+	public interface Provider {
+		void registerSprites(SpriteRegistry registry);
+	}
 
-	void registerSprites(SpriteRegistry registry);
+	public static final HandlerRegistry<Provider> PROVIDE = new HandlerList<>();
 }
diff --git a/src/main/java/net/fabricmc/fabric/mixin/helpers/MixinBlockBuilder.java b/src/main/java/net/fabricmc/fabric/mixin/block/MixinBlockBuilder.java
similarity index 95%
rename from src/main/java/net/fabricmc/fabric/mixin/helpers/MixinBlockBuilder.java
rename to src/main/java/net/fabricmc/fabric/mixin/block/MixinBlockBuilder.java
index 748451835..5812d2ba4 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/helpers/MixinBlockBuilder.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/block/MixinBlockBuilder.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.helpers;
+package net.fabricmc.fabric.mixin.block;
 
-import net.fabricmc.fabric.helpers.FabricBlockBuilder;
+import net.fabricmc.fabric.block.FabricBlockBuilder;
 import net.minecraft.block.Block;
 import net.minecraft.block.Material;
 import net.minecraft.block.MaterialColor;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/render/MixinBlockEntityRenderManager.java b/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinBlockEntityRenderManager.java
similarity index 96%
rename from src/main/java/net/fabricmc/fabric/mixin/render/MixinBlockEntityRenderManager.java
rename to src/main/java/net/fabricmc/fabric/mixin/client/render/MixinBlockEntityRenderManager.java
index 61adab581..0bac8ce30 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/render/MixinBlockEntityRenderManager.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinBlockEntityRenderManager.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.render;
+package net.fabricmc.fabric.mixin.client.render;
 
 import net.fabricmc.fabric.client.render.BlockEntityRendererRegistry;
 import net.minecraft.block.entity.BlockEntity;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/render/MixinEntityRenderManager.java b/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinEntityRenderManager.java
similarity index 97%
rename from src/main/java/net/fabricmc/fabric/mixin/render/MixinEntityRenderManager.java
rename to src/main/java/net/fabricmc/fabric/mixin/client/render/MixinEntityRenderManager.java
index 7b7d80ec6..d36b8e6ba 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/render/MixinEntityRenderManager.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/client/render/MixinEntityRenderManager.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.render;
+package net.fabricmc.fabric.mixin.client.render;
 
 import net.fabricmc.fabric.client.render.EntityRendererRegistry;
 import net.minecraft.client.render.entity.EntityRenderDispatcher;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/render/MixinSpriteAtlasTexture.java b/src/main/java/net/fabricmc/fabric/mixin/client/texture/MixinSpriteAtlasTexture.java
similarity index 93%
rename from src/main/java/net/fabricmc/fabric/mixin/render/MixinSpriteAtlasTexture.java
rename to src/main/java/net/fabricmc/fabric/mixin/client/texture/MixinSpriteAtlasTexture.java
index 1130a8f1d..a892aa373 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/render/MixinSpriteAtlasTexture.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/client/texture/MixinSpriteAtlasTexture.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.render;
+package net.fabricmc.fabric.mixin.client.texture;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
 import net.fabricmc.fabric.client.texture.*;
+import net.fabricmc.fabric.client.texture.impl.FabricSprite;
+import net.fabricmc.fabric.events.client.SpriteEvent;
 import net.fabricmc.fabric.util.HandlerList;
 import net.minecraft.class_1050;
 import net.minecraft.client.MinecraftClient;
@@ -31,8 +31,6 @@ import net.minecraft.util.Identifier;
 import net.minecraft.util.crash.CrashException;
 import net.minecraft.util.crash.CrashReport;
 import net.minecraft.util.crash.CrashReportElement;
-import org.apache.commons.io.IOUtils;
-import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.spongepowered.asm.mixin.Final;
 import org.spongepowered.asm.mixin.Mixin;
@@ -87,8 +85,8 @@ public abstract class MixinSpriteAtlasTexture {
 		//noinspection RedundantCast,ConstantConditions
 		if ((SpriteAtlasTexture) (Object) this == MinecraftClient.getInstance().getSpriteAtlas()) {
 			SpriteRegistry registry = new SpriteRegistry(sprites, (id) -> addSpriteToLoad(manager, id));
-			for (Object provider : ((HandlerList<SpriteProvider>) SpriteProvider.HANDLER).getBackingArray()) {
-				((SpriteProvider) provider).registerSprites(registry);
+			for (Object provider : ((HandlerList<SpriteEvent.Provider>) SpriteEvent.PROVIDE).getBackingArray()) {
+				((SpriteEvent.Provider) provider).registerSprites(registry);
 			}
 		}
 
diff --git a/src/main/java/net/fabricmc/fabric/mixin/helpers/MixinBlock.java b/src/main/java/net/fabricmc/fabric/mixin/events/objectbuilder/MixinBlock.java
similarity index 96%
rename from src/main/java/net/fabricmc/fabric/mixin/helpers/MixinBlock.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/objectbuilder/MixinBlock.java
index d937e4403..a07babd29 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/helpers/MixinBlock.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/objectbuilder/MixinBlock.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.helpers;
+package net.fabricmc.fabric.mixin.events.objectbuilder;
 
 import net.fabricmc.fabric.events.ObjectBuilderEvent;
 import net.fabricmc.fabric.util.HandlerList;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/helpers/MixinItem.java b/src/main/java/net/fabricmc/fabric/mixin/events/objectbuilder/MixinItem.java
similarity index 96%
rename from src/main/java/net/fabricmc/fabric/mixin/helpers/MixinItem.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/objectbuilder/MixinItem.java
index 6ccc62820..0f114b012 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/helpers/MixinItem.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/objectbuilder/MixinItem.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.helpers;
+package net.fabricmc.fabric.mixin.events.objectbuilder;
 
 import net.fabricmc.fabric.events.ObjectBuilderEvent;
 import net.fabricmc.fabric.util.HandlerList;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/MixinClientPlayerInteractionManager.java b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinClientPlayerInteractionManager.java
similarity index 99%
rename from src/main/java/net/fabricmc/fabric/mixin/events/MixinClientPlayerInteractionManager.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinClientPlayerInteractionManager.java
index a1cb04dd1..262b1ac4f 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/events/MixinClientPlayerInteractionManager.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinClientPlayerInteractionManager.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.events;
+package net.fabricmc.fabric.mixin.events.playerinteraction;
 
 import net.fabricmc.fabric.events.PlayerInteractionEvent;
 import net.fabricmc.fabric.util.HandlerList;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayNetworkHandler.java b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayNetworkHandler.java
similarity index 97%
rename from src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayNetworkHandler.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayNetworkHandler.java
index df76fb8c1..d7e068803 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayNetworkHandler.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayNetworkHandler.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.events;
+package net.fabricmc.fabric.mixin.events.playerinteraction;
 
 import net.fabricmc.fabric.events.PlayerInteractionEvent;
 import net.fabricmc.fabric.util.HandlerList;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayerEntity.java b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayerEntity.java
similarity index 96%
rename from src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayerEntity.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayerEntity.java
index 427acbbe4..dc3d4ffc5 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayerEntity.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayerEntity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.events;
+package net.fabricmc.fabric.mixin.events.playerinteraction;
 
 import net.fabricmc.fabric.events.PlayerInteractionEvent;
 import net.fabricmc.fabric.util.HandlerList;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayerInteractionManager.java b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayerInteractionManager.java
similarity index 98%
rename from src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayerInteractionManager.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayerInteractionManager.java
index e87e95a9e..bdcc7a15c 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/events/MixinServerPlayerInteractionManager.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/playerinteraction/MixinServerPlayerInteractionManager.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.events;
+package net.fabricmc.fabric.mixin.events.playerinteraction;
 
 import net.fabricmc.fabric.events.PlayerInteractionEvent;
 import net.fabricmc.fabric.util.HandlerList;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/MixinMinecraftServer.java b/src/main/java/net/fabricmc/fabric/mixin/events/server/MixinMinecraftServer.java
similarity index 84%
rename from src/main/java/net/fabricmc/fabric/mixin/events/MixinMinecraftServer.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/server/MixinMinecraftServer.java
index b83ed751b..9d4369114 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/events/MixinMinecraftServer.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/server/MixinMinecraftServer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.events;
+package net.fabricmc.fabric.mixin.events.server;
 
 import net.fabricmc.fabric.events.ServerEvent;
 import net.fabricmc.fabric.events.TickEvent;
@@ -32,9 +32,6 @@ import java.util.function.Consumer;
 
 @Mixin(MinecraftServer.class)
 public class MixinMinecraftServer {
-	@Shadow
-	private class_3689 profiler;
-
 	@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;method_3791(Lnet/minecraft/server/ServerMetadata;)V", ordinal = 0), method = "run")
 	public void afterSetupServer(CallbackInfo info) {
 		for (Object handler : ((HandlerList<Consumer<MinecraftServer>>) ServerEvent.START).getBackingArray()) {
@@ -42,9 +39,4 @@ public class MixinMinecraftServer {
 			((Consumer) handler).accept((Object) this);
 		}
 	}
-
-	@Inject(at = @At("RETURN"), method = "method_3813")
-	protected void method_3813(BooleanSupplier var1, CallbackInfo info) {
-		TickEvent.tick(TickEvent.SERVER, (MinecraftServer) (Object) this, this.profiler);
-	}
 }
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/MixinMinecraftClient.java b/src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinMinecraftClient.java
similarity index 96%
rename from src/main/java/net/fabricmc/fabric/mixin/events/MixinMinecraftClient.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinMinecraftClient.java
index 1206f7209..844838801 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/events/MixinMinecraftClient.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinMinecraftClient.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.events;
+package net.fabricmc.fabric.mixin.events.tick;
 
 import net.fabricmc.fabric.events.TickEvent;
 import net.fabricmc.fabric.events.client.ClientTickEvent;
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinMinecraftServer.java b/src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinMinecraftServer.java
new file mode 100644
index 000000000..ba7e9eeca
--- /dev/null
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinMinecraftServer.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2016, 2017, 2018 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.events.tick;
+
+import net.fabricmc.fabric.events.ServerEvent;
+import net.fabricmc.fabric.events.TickEvent;
+import net.fabricmc.fabric.util.HandlerList;
+import net.minecraft.class_3689;
+import net.minecraft.server.MinecraftServer;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import java.util.function.BooleanSupplier;
+import java.util.function.Consumer;
+
+@Mixin(MinecraftServer.class)
+public class MixinMinecraftServer {
+	@Shadow
+	private class_3689 profiler;
+
+	@Inject(at = @At("RETURN"), method = "method_3813")
+	protected void method_3813(BooleanSupplier var1, CallbackInfo info) {
+		TickEvent.tick(TickEvent.SERVER, (MinecraftServer) (Object) this, this.profiler);
+	}
+}
diff --git a/src/main/java/net/fabricmc/fabric/mixin/events/MixinWorld.java b/src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinWorld.java
similarity index 96%
rename from src/main/java/net/fabricmc/fabric/mixin/events/MixinWorld.java
rename to src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinWorld.java
index c3c40e657..71489b35e 100644
--- a/src/main/java/net/fabricmc/fabric/mixin/events/MixinWorld.java
+++ b/src/main/java/net/fabricmc/fabric/mixin/events/tick/MixinWorld.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package net.fabricmc.fabric.mixin.events;
+package net.fabricmc.fabric.mixin.events.tick;
 
 import net.fabricmc.fabric.events.PlayerInteractionEvent;
 import net.fabricmc.fabric.events.TickEvent;
diff --git a/src/main/java/net/fabricmc/fabric/tools/ToolManager.java b/src/main/java/net/fabricmc/fabric/tools/ToolManager.java
index 56c556f4b..8918d92ba 100644
--- a/src/main/java/net/fabricmc/fabric/tools/ToolManager.java
+++ b/src/main/java/net/fabricmc/fabric/tools/ToolManager.java
@@ -16,6 +16,7 @@
 
 package net.fabricmc.fabric.tools;
 
+import net.fabricmc.fabric.block.FabricBlockBuilder;
 import net.fabricmc.fabric.events.ObjectBuilderEvent;
 import net.fabricmc.fabric.util.TriState;
 import net.minecraft.block.Block;
@@ -93,7 +94,7 @@ public final class ToolManager {
 	}
 
 	/**
-	 * @deprecated Use {@link net.fabricmc.fabric.helpers.FabricBlockBuilder FabricBlockBuilder} for your own blocks.
+	 * @deprecated Use {@link FabricBlockBuilder FabricBlockBuilder} for your own blocks.
 	 * TODO: Add a way to manipulate the values for non-owned blocks.
 	 */
 	@Deprecated
@@ -102,7 +103,7 @@ public final class ToolManager {
 	}
 
 	/**
-	 * @deprecated Use {@link net.fabricmc.fabric.helpers.FabricBlockBuilder FabricBlockBuilder} for your own blocks.
+	 * @deprecated Use {@link FabricBlockBuilder FabricBlockBuilder} for your own blocks.
 	 * TODO: Add a way to manipulate the values for non-owned blocks.
 	 */
 	@Deprecated
diff --git a/src/main/resources/net.fabricmc.fabric.mixins.client.json b/src/main/resources/net.fabricmc.fabric.mixins.client.json
index 89f2ff4e5..c9e5d4ca0 100644
--- a/src/main/resources/net.fabricmc.fabric.mixins.client.json
+++ b/src/main/resources/net.fabricmc.fabric.mixins.client.json
@@ -4,15 +4,15 @@
   "compatibilityLevel": "JAVA_8",
   "mixins": [
     "block.entity.MixinClientPlayNetworkHandler",
-    "events.MixinClientPlayerInteractionManager",
-    "events.MixinMinecraftClient",
+    "client.render.MixinBlockEntityRenderManager",
+    "client.render.MixinEntityRenderManager",
+    "client.texture.MixinSpriteAtlasTexture",
+    "events.playerinteraction.MixinClientPlayerInteractionManager",
+    "events.tick.MixinMinecraftClient",
     "networking.MixinClientPlayNetworkHandler",
     "registry.client.MixinBlockColorMap",
     "registry.client.MixinItemColorMap",
     "registry.client.MixinItemModelMap",
-    "render.MixinBlockEntityRenderManager",
-    "render.MixinEntityRenderManager",
-    "render.MixinSpriteAtlasTexture",
     "resources.MixinMinecraftGame"
   ],
   "injectors": {
diff --git a/src/main/resources/net.fabricmc.fabric.mixins.common.json b/src/main/resources/net.fabricmc.fabric.mixins.common.json
index 29599b116..0b7b280b5 100644
--- a/src/main/resources/net.fabricmc.fabric.mixins.common.json
+++ b/src/main/resources/net.fabricmc.fabric.mixins.common.json
@@ -3,16 +3,17 @@
   "package": "net.fabricmc.fabric.mixin",
   "compatibilityLevel": "JAVA_8",
   "mixins": [
+    "block.MixinBlockBuilder",
     "block.entity.MixinBlockEntity",
     "commands.MixinServerCommandManager",
-    "events.MixinMinecraftServer",
-    "events.MixinServerPlayNetworkHandler",
-    "events.MixinServerPlayerEntity",
-    "events.MixinServerPlayerInteractionManager",
-    "events.MixinWorld",
-    "helpers.MixinBlock",
-    "helpers.MixinBlockBuilder",
-    "helpers.MixinItem",
+    "events.objectbuilder.MixinBlock",
+    "events.objectbuilder.MixinItem",
+    "events.playerinteraction.MixinServerPlayNetworkHandler",
+    "events.playerinteraction.MixinServerPlayerEntity",
+    "events.playerinteraction.MixinServerPlayerInteractionManager",
+    "events.server.MixinMinecraftServer",
+    "events.tick.MixinMinecraftServer",
+    "events.tick.MixinWorld",
     "networking.MixinServerPlayNetworkHandler",
     "networking.MixinSPacketCustomPayload",
     "registry.MixinBootstrap",