From d9b43e71e608748b2b6a36fc8586616a81d1dec6 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 27 Feb 2021 17:48:51 +0800 Subject: [PATCH] Add EntityRenderers (#52) Close #45 --- .../registry/entity/EntityRenderers.java | 21 +++++++++++++++++++ .../entity/fabric/EntityRenderersImpl.java | 15 +++++++++++++ .../entity/forge/EntityRenderersImpl.java | 15 +++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 common/src/main/java/me/shedaniel/architectury/registry/entity/EntityRenderers.java create mode 100644 fabric/src/main/java/me/shedaniel/architectury/registry/entity/fabric/EntityRenderersImpl.java create mode 100644 forge/src/main/java/me/shedaniel/architectury/registry/entity/forge/EntityRenderersImpl.java diff --git a/common/src/main/java/me/shedaniel/architectury/registry/entity/EntityRenderers.java b/common/src/main/java/me/shedaniel/architectury/registry/entity/EntityRenderers.java new file mode 100644 index 00000000..336d3dc4 --- /dev/null +++ b/common/src/main/java/me/shedaniel/architectury/registry/entity/EntityRenderers.java @@ -0,0 +1,21 @@ +package me.shedaniel.architectury.registry.entity; + +import me.shedaniel.architectury.annotations.ExpectPlatform; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; + +import java.util.function.Function; + +@Environment(EnvType.CLIENT) +public final class EntityRenderers { + private EntityRenderers() {} + + @ExpectPlatform + public static void register(EntityType type, Function> factory) { + throw new AssertionError(); + } +} diff --git a/fabric/src/main/java/me/shedaniel/architectury/registry/entity/fabric/EntityRenderersImpl.java b/fabric/src/main/java/me/shedaniel/architectury/registry/entity/fabric/EntityRenderersImpl.java new file mode 100644 index 00000000..96830f6c --- /dev/null +++ b/fabric/src/main/java/me/shedaniel/architectury/registry/entity/fabric/EntityRenderersImpl.java @@ -0,0 +1,15 @@ +package me.shedaniel.architectury.registry.entity.fabric; + +import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; + +import java.util.function.Function; + +public class EntityRenderersImpl { + public static void register(EntityType type, Function> factory) { + EntityRendererRegistry.INSTANCE.register(type, (manager, context) -> factory.apply(manager)); + } +} diff --git a/forge/src/main/java/me/shedaniel/architectury/registry/entity/forge/EntityRenderersImpl.java b/forge/src/main/java/me/shedaniel/architectury/registry/entity/forge/EntityRenderersImpl.java new file mode 100644 index 00000000..8be995d3 --- /dev/null +++ b/forge/src/main/java/me/shedaniel/architectury/registry/entity/forge/EntityRenderersImpl.java @@ -0,0 +1,15 @@ +package me.shedaniel.architectury.registry.entity.forge; + +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraftforge.fml.client.registry.RenderingRegistry; + +import java.util.function.Function; + +public class EntityRenderersImpl { + public static void register(EntityType type, Function> factory) { + RenderingRegistry.registerEntityRenderingHandler(type, factory::apply); + } +}