diff --git a/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java b/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java index a7a33b0005..055e593322 100644 --- a/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java +++ b/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java @@ -16,7 +16,6 @@ import com.simibubi.create.foundation.model.BakedModelWrapperWithData; import net.createmod.catnip.data.Iterate; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.resources.model.BakedModel; @@ -25,6 +24,7 @@ import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; + import net.minecraftforge.client.ChunkRenderTypeSet; import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData.Builder; @@ -50,7 +50,7 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { @Override protected ModelData.Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state, - ModelData blockEntityData) { + ModelData blockEntityData) { PipeModelData data = new PipeModelData(); FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE); BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE); @@ -65,14 +65,26 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { return builder.with(PIPE_PROPERTY, data); } - // TODO: Update once MinecraftForge#9163 is merged @Override public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) { - ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data); - if (set.isEmpty()) { - return ItemBlockRenderTypes.getRenderLayers(state); + List set = new ArrayList<>(); + + set.add(super.getRenderTypes(state, rand, data)); + set.add(AllPartialModels.FLUID_PIPE_CASING.get().getRenderTypes(state, rand, data)); + + if (data.has(PIPE_PROPERTY)) { + PipeModelData pipeData = data.get(PIPE_PROPERTY); + for (Direction d : Iterate.directions) { + AttachmentTypes type = pipeData.getAttachment(d); + for (ComponentPartials partial : type.partials) { + ChunkRenderTypeSet attachmentRenderTypeSet = AllPartialModels.PIPE_ATTACHMENTS.get(partial).get(d) + .get().getRenderTypes(state, rand, data); + set.add(attachmentRenderTypeSet); + } + } } - return set; + + return ChunkRenderTypeSet.union(set); } @Override @@ -102,7 +114,7 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { } private void addQuads(List quads, BlockState state, Direction side, RandomSource rand, ModelData data, - PipeModelData pipeData, RenderType renderType) { + PipeModelData pipeData, RenderType renderType) { BakedModel bracket = pipeData.getBracket(); if (bracket != null) quads.addAll(bracket.getQuads(state, side, rand, data, renderType));