Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class RenderUtil {
- public static IBakedModel getModel(ItemStack stack) {
- return Minecraft.getInstance().getItemRenderer().getItemModelShaper().getItemModel(stack);
- }
- public static void renderModel(ItemStack stack, ItemCameraTransforms.TransformType transformType, boolean leftHanded, MatrixStack matrixStack, IRenderTypeBuffer renderTypeBuffer, int lightTexture, int overlayTexture, IBakedModel model) {
- if (!stack.isEmpty()) {
- matrixStack.pushPose();
- boolean isGui = transformType == ItemCameraTransforms.TransformType.GUI;
- boolean tridentFlag = isGui || transformType == ItemCameraTransforms.TransformType.GROUND || transformType == ItemCameraTransforms.TransformType.FIXED;
- if (stack.getItem() == Items.TRIDENT && tridentFlag) {
- model = Minecraft.getInstance().getModelManager().getModel(new ModelResourceLocation("minecraft:trident#inventory"));
- }
- model = ForgeHooksClient.handleCameraTransforms(matrixStack, model, transformType, leftHanded);
- matrixStack.translate(-0.5, -0.5, -0.5);
- if (!model.isCustomRenderer() && (stack.getItem() != Items.TRIDENT || tridentFlag)) {
- RenderType renderType = RenderTypeLookup.getRenderType(stack, false); //TODO test what this flag does
- if (isGui && Objects.equals(renderType, Atlases.translucentItemSheet())) {
- renderType = Atlases.translucentItemSheet();
- }
- IVertexBuilder vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, renderType, true, stack.hasFoil());
- renderModel(model, stack, lightTexture, overlayTexture, matrixStack, vertexBuilder);
- } else {
- stack.getItem().getItemStackTileEntityRenderer().renderByItem(stack, transformType, matrixStack, renderTypeBuffer, lightTexture, overlayTexture);
- }
- matrixStack.popPose();
- }
- }
- private static void renderModel(IBakedModel model, ItemStack stack, int lightTexture, int overlayTexture, MatrixStack matrixStack, IVertexBuilder vertexBuilder) {
- Random random = new Random();
- for (Direction direction : Direction.values()) {
- random.setSeed(42L);
- renderQuads(matrixStack, vertexBuilder, model.getQuads(null, direction, random), stack, lightTexture, overlayTexture);
- }
- random.setSeed(42L);
- renderQuads(matrixStack, vertexBuilder, model.getQuads(null, null, random), stack, lightTexture, overlayTexture);
- }
- private static void renderQuads(MatrixStack matrixStack, IVertexBuilder vertexBuilder, List<BakedQuad> quads, ItemStack stack, int lightTexture, int overlayTexture) {
- boolean useItemColor = !stack.isEmpty();
- MatrixStack.Entry entry = matrixStack.last();
- for (BakedQuad quad : quads) {
- int tintColor = 0xFFFFFF;
- if (quad.isTinted()) {
- if (useItemColor) {
- tintColor = Minecraft.getInstance().getItemColors().getColor(stack, quad.getTintIndex());
- } else {
- tintColor = -1;
- }
- }
- float red = (float) (tintColor >> 16 & 255) / 255.0F;
- float green = (float) (tintColor >> 8 & 255) / 255.0F;
- float blue = (float) (tintColor & 255) / 255.0F;
- vertexBuilder.addVertexData(entry, quad, red, green, blue, lightTexture, overlayTexture, true);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement