From e5580b84b7c214365563e2ce0e60b53002e0db66 Mon Sep 17 00:00:00 2001 From: LexManos Date: Tue, 28 Nov 2023 20:55:20 -0800 Subject: [PATCH] Deprecate EntityRenderersEvent.AddLayers functions that hard case to LivingEntityRenderers as the backing maps do not guarantee that type. Closes #9683 --- .../client/event/EntityRenderersEvent.java | 85 +++++++++---------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java b/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java index 7f4f90a424..dc51c1c420 100644 --- a/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java +++ b/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java @@ -53,12 +53,9 @@ import java.util.function.Supplier; * @see EntityRenderersEvent.RegisterRenderers * @see EntityRenderersEvent.AddLayers */ -public abstract class EntityRenderersEvent extends Event implements IModBusEvent -{ +public abstract class EntityRenderersEvent extends Event implements IModBusEvent { @ApiStatus.Internal - protected EntityRenderersEvent() - { - } + protected EntityRenderersEvent() {} /** * Fired for registering layer definitions at the appropriate time. @@ -68,12 +65,9 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent *

This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus}, * only on the {@linkplain LogicalSide#CLIENT logical client}.

*/ - public static class RegisterLayerDefinitions extends EntityRenderersEvent - { + public static class RegisterLayerDefinitions extends EntityRenderersEvent { @ApiStatus.Internal - public RegisterLayerDefinitions() - { - } + public RegisterLayerDefinitions() {} /** * Registers a layer definition supplier with the given {@link ModelLayerLocation}. @@ -84,8 +78,7 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent * @param supplier a supplier to create a {@link LayerDefinition}, generally a static method reference in * the entity model class */ - public void registerLayerDefinition(ModelLayerLocation layerLocation, Supplier supplier) - { + public void registerLayerDefinition(ModelLayerLocation layerLocation, Supplier supplier) { ForgeHooksClient.registerLayerDefinition(layerLocation, supplier); } } @@ -100,12 +93,9 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent *

This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus}, * only on the {@linkplain LogicalSide#CLIENT logical client}.

*/ - public static class RegisterRenderers extends EntityRenderersEvent - { + public static class RegisterRenderers extends EntityRenderersEvent { @ApiStatus.Internal - public RegisterRenderers() - { - } + public RegisterRenderers() {} /** * Registers an entity renderer for the given entity type. @@ -113,8 +103,7 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent * @param entityType the entity type to register a renderer for * @param entityRendererProvider the renderer provider */ - public void registerEntityRenderer(EntityType entityType, EntityRendererProvider entityRendererProvider) - { + public void registerEntityRenderer(EntityType entityType, EntityRendererProvider entityRendererProvider) { EntityRenderers.register(entityType, entityRendererProvider); } @@ -124,8 +113,7 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent * @param blockEntityType the block entity type to register a renderer for * @param blockEntityRendererProvider the renderer provider */ - public void registerBlockEntityRenderer(BlockEntityType blockEntityType, BlockEntityRendererProvider blockEntityRendererProvider) - { + public void registerBlockEntityRenderer(BlockEntityType blockEntityType, BlockEntityRendererProvider blockEntityRendererProvider) { BlockEntityRenderers.register(blockEntityType, blockEntityRendererProvider); } } @@ -139,15 +127,13 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent *

This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus}, * only on the {@linkplain LogicalSide#CLIENT logical client}.

*/ - public static class AddLayers extends EntityRenderersEvent - { + public static class AddLayers extends EntityRenderersEvent { private final Map, EntityRenderer> renderers; private final Map> skinMap; private final EntityRendererProvider.Context context; @ApiStatus.Internal - public AddLayers(Map, EntityRenderer> renderers, Map> playerRenderers, EntityRendererProvider.Context context) - { + public AddLayers(Map, EntityRenderer> renderers, Map> playerRenderers, EntityRendererProvider.Context context) { this.renderers = renderers; this.skinMap = playerRenderers; this.context = context; @@ -160,8 +146,7 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent * {@linkplain ModelLayers#PLAYER regular player model} and {@code slim} for the * {@linkplain ModelLayers#PLAYER_SLIM slim player model}. */ - public Set getSkins() - { + public Set getSkins() { return skinMap.keySet(); } @@ -175,9 +160,18 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent */ @Nullable @SuppressWarnings("unchecked") - public >> R getSkin(PlayerSkin.Model skinName) - { - return (R) skinMap.get(skinName); + public > R getPlayerSkin(PlayerSkin.Model skinName) { + return (R)skinMap.get(skinName); + } + + /** + * @deprecated Use getEntitySkin, return type down graded to EntityRenderer instead of LivingEntityRenderer + */ + @Nullable + @SuppressWarnings("unchecked") + @Deprecated(forRemoval = true, since = "1.20.2") + public >> R getSkin(PlayerSkin.Model skinName) { + return (R)skinMap.get(skinName); } /** @@ -190,24 +184,31 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent */ @Nullable @SuppressWarnings("unchecked") - public >> R getRenderer(EntityType entityType) - { + public > R getEntityRenderer(EntityType entityType) { + return (R)renderers.get(entityType); + } + + /** + * @deprecated Use getEntityRenderer, return type down graded to EntityRenderer instead of LivingEntityRenderer + */ + @Nullable + @SuppressWarnings("unchecked") + @Deprecated(forRemoval = true, since = "1.20.2") + public >> R getRenderer(EntityType entityType) { return (R) renderers.get(entityType); } /** * {@return the set of entity models} */ - public EntityModelSet getEntityModels() - { + public EntityModelSet getEntityModels() { return this.context.getModelSet(); } /** * {@return the context for the entity renderer provider} */ - public EntityRendererProvider.Context getContext() - { + public EntityRendererProvider.Context getContext() { return context; } } @@ -220,14 +221,12 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent *

This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus}, * only on the {@linkplain LogicalSide#CLIENT logical client}.

*/ - public static class CreateSkullModels extends EntityRenderersEvent - { + public static class CreateSkullModels extends EntityRenderersEvent { private final ImmutableMap.Builder builder; private final EntityModelSet entityModelSet; @ApiStatus.Internal - public CreateSkullModels(ImmutableMap.Builder builder, EntityModelSet entityModelSet) - { + public CreateSkullModels(ImmutableMap.Builder builder, EntityModelSet entityModelSet) { this.builder = builder; this.entityModelSet = entityModelSet; } @@ -235,8 +234,7 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent /** * {@return the set of entity models} */ - public EntityModelSet getEntityModelSet() - { + public EntityModelSet getEntityModelSet() { return entityModelSet; } @@ -251,8 +249,7 @@ public abstract class EntityRenderersEvent extends Event implements IModBusEvent * {@link EntityModelSet#bakeLayer(ModelLayerLocation)} and pass it to the constructor for * {@link SkullModel}. */ - public void registerSkullModel(SkullBlock.Type type, SkullModelBase model) - { + public void registerSkullModel(SkullBlock.Type type, SkullModelBase model) { builder.put(type, model); } }