diff --git a/src/main/java/net/minecraftforge/client/model/renderable/BakedRenderable.java b/src/main/java/net/minecraftforge/client/model/renderable/BakedRenderable.java index 46b3651eab..218c4ff0b1 100644 --- a/src/main/java/net/minecraftforge/client/model/renderable/BakedRenderable.java +++ b/src/main/java/net/minecraftforge/client/model/renderable/BakedRenderable.java @@ -19,10 +19,8 @@ package net.minecraftforge.client.model.renderable; -import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -33,6 +31,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.client.model.data.IModelData; +import java.util.Arrays; import java.util.Random; import java.util.function.Function; @@ -41,10 +40,7 @@ import java.util.function.Function; */ public class BakedRenderable implements IRenderable { - private static final ImmutableList MODEL_FACINGS = Util.make(ImmutableList.builder(), builder -> { - builder.add(Direction.values()); - builder.add((Direction)null); - }).build(); + private static final Direction[] MODEL_FACINGS = Arrays.copyOf(Direction.values(), Direction.values().length+1); /** * Constructs a BakedRenderable from the given model location. diff --git a/src/test/java/net/minecraftforge/debug/client/rendering/RenderableTest.java b/src/test/java/net/minecraftforge/debug/client/rendering/RenderableTest.java index 1d7861f695..723f5c7c40 100644 --- a/src/test/java/net/minecraftforge/debug/client/rendering/RenderableTest.java +++ b/src/test/java/net/minecraftforge/debug/client/rendering/RenderableTest.java @@ -31,14 +31,20 @@ import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.SimplePreparableReloadListener; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; import net.minecraftforge.client.event.RenderLevelLastEvent; +import net.minecraftforge.client.model.ForgeModelBakery; import net.minecraftforge.client.model.StandaloneModelConfiguration; +import net.minecraftforge.client.model.data.EmptyModelData; +import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.client.model.obj.OBJModel; +import net.minecraftforge.client.model.renderable.BakedRenderable; import net.minecraftforge.client.model.renderable.IRenderable; import net.minecraftforge.client.model.renderable.MultipartTransforms; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.loading.FMLEnvironment; @@ -65,15 +71,24 @@ public class RenderableTest private static class Client { + private static ResourceLocation MODEL_LOC = new ResourceLocation("minecraft:block/diamond_block"); + private static IRenderable renderable; + private static IRenderable bakedRenderable; public static void init() { var bus = FMLJavaModLoadingContext.get().getModEventBus(); + bus.addListener(Client::registerModels); bus.addListener(Client::registerReloadListeners); MinecraftForge.EVENT_BUS.addListener(Client::renderLast); } + private static void registerModels(ModelRegistryEvent t) + { + ForgeModelBakery.addSpecialModel(MODEL_LOC); + } + public static void registerReloadListeners(RegisterClientReloadListenersEvent event) { event.registerReloadListener(new SimplePreparableReloadListener() @@ -107,6 +122,11 @@ public class RenderableTest public static void renderLast(RenderLevelLastEvent event) { + if (bakedRenderable == null) + { + bakedRenderable = BakedRenderable.of(MODEL_LOC); + } + var poseStack = event.getPoseStack(); var bufferSource = Minecraft.getInstance().renderBuffers().bufferSource(); @@ -128,6 +148,11 @@ public class RenderableTest renderable.render(poseStack, bufferSource, RenderType::entitySolid, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, event.getPartialTick(), transforms); + poseStack.pushPose(); + poseStack.translate(0,0.5f,0); + bakedRenderable.render(poseStack, bufferSource, RenderType::entitySolid, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, event.getPartialTick(), EmptyModelData.INSTANCE); + poseStack.popPose(); + bufferSource.endBatch(); } }