Overwrote BlockRenderer and rederModel() function; everything turns out fine 'ight now.
public class RendererResourceMooshroom extends MobRenderer<EntityResourceMooshroom, CowModel<EntityResourceMooshroom>> {
Block mushroom;
public RendererResourceMooshroom(EntityRendererManager renderManagerIn, Block mushroom) {
super(renderManagerIn,new CowModel<>(), 0.7F);
this.mushroom = mushroom;
this.addLayer(new ResourceMooshroomLayer<>(this, mushroom));
}
@Override
public ResourceLocation getEntityTexture(EntityResourceMooshroom entity) {
return new ResourceLocation("textures/entity/cow/brown_mooshroom.png");
}
class ResourceMooshroomLayer<T extends EntityResourceMooshroom> extends MooshroomMushroomLayer<T>{
Block mushroom;
public ResourceMooshroomLayer(IEntityRenderer rendererIn, Block mushroom) {
super(rendererIn);
this.mushroom = mushroom;
}
public void render(MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int packedLightIn, T entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) {
if (!entitylivingbaseIn.isChild() && !entitylivingbaseIn.isInvisible()) {
BlockRendererDispatcher blockrendererdispatcher = Minecraft.getInstance().getBlockRendererDispatcher();
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
BlockState blockstate = mushroom.getDefaultState().getBlockState();
int i = LivingRenderer.getPackedOverlay(entitylivingbaseIn, 0.0F);
matrixStackIn.push();
matrixStackIn.translate(0.2F, -0.35F, 0.5D);
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(-48.0F));
matrixStackIn.scale(-1.0F, -1.0F, 1.0F);
matrixStackIn.translate(-0.5D, -0.5D, -0.5D);
renderMushroom(blockrendererdispatcher,blockstate, matrixStackIn, bufferIn, packedLightIn, i, net.minecraftforge.client.model.data.EmptyModelData.INSTANCE);
matrixStackIn.pop();
matrixStackIn.push();
matrixStackIn.translate(0.2F, -0.35F, 0.5D);
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(42.0F));
matrixStackIn.translate(0.1F, 0.0D, -0.6F);
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(-48.0F));
matrixStackIn.scale(-1.0F, -1.0F, 1.0F);
matrixStackIn.translate(-0.5D, -0.5D, -0.5D);
renderMushroom(blockrendererdispatcher,blockstate, matrixStackIn, bufferIn, packedLightIn, i, net.minecraftforge.client.model.data.EmptyModelData.INSTANCE);
matrixStackIn.pop();
matrixStackIn.push();
this.getEntityModel().getHead().translateRotate(matrixStackIn);
matrixStackIn.translate(0.0D, -0.7F, -0.2F);
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(-78.0F));
matrixStackIn.scale(-1.0F, -1.0F, 1.0F);
matrixStackIn.translate(-0.5D, -0.5D, -0.5D);
renderMushroom(blockrendererdispatcher,blockstate, matrixStackIn, bufferIn, packedLightIn, i, net.minecraftforge.client.model.data.EmptyModelData.INSTANCE);
matrixStackIn.pop();
}
}
private void renderMushroom(BlockRendererDispatcher dispatcher, BlockState blockStateIn, MatrixStack matrixStackIn, IRenderTypeBuffer bufferTypeIn, int combinedLightIn, int combinedOverlayIn, net.minecraftforge.client.model.data.IModelData modelData){
IBakedModel ibakedmodel = dispatcher.getModelForState(blockStateIn);
int i = ((BlockResourceMushroom) blockStateIn.getBlock()).color;
float f = (float)(i >> 16 & 255) / 255.0F;
float f1 = (float)(i >> 8 & 255) / 255.0F;
float f2 = (float)(i & 255) / 255.0F;
renderModel(matrixStackIn.getLast(), bufferTypeIn.getBuffer(RenderTypeLookup.getRenderType(blockStateIn)), blockStateIn, ibakedmodel, f, f1, f2, combinedLightIn, combinedOverlayIn, modelData);
}
private void renderModel(MatrixStack.Entry matrixEntry, IVertexBuilder buffer, @Nullable BlockState state, IBakedModel modelIn, float red, float green, float blue, int combinedLightIn, int combinedOverlayIn, net.minecraftforge.client.model.data.IModelData modelData){
Random random = new Random();
random.setSeed(42L);
List<BakedQuad> quadList = modelIn.getQuads(state, null, random);
for(BakedQuad bakedquad : quadList) {
float f;
float f1;
float f2;
if (bakedquad.getTintIndex()==1) {
f = MathHelper.clamp(red, 0.0F, 1.0F);
f1 = MathHelper.clamp(green, 0.0F, 1.0F);
f2 = MathHelper.clamp(blue, 0.0F, 1.0F);
} else {
f = 1.0F;
f1 = 1.0F;
f2 = 1.0F;
}
buffer.addQuad(matrixEntry, bakedquad, f, f1, f2, combinedLightIn, combinedOverlayIn);
}
}
}
}