package eu.thog92.isbrh; import java.lang.reflect.Field; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.model.IBakedModel; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.relauncher.ReflectionHelper; import eu.thog92.isbrh.registry.RenderRegistry; public class RenderItemISBRH extends RenderItem { protected TextureManager textureManager; public RenderItemISBRH(TextureManager textureManager, ModelManager modelManager, RenderItem renderItem) { super(textureManager, modelManager); this.textureManager = textureManager; try { Field mesher = ReflectionHelper.findField(RenderItem.class, "m", "field_175059_m", "itemModelMesher"); mesher.setAccessible(true); mesher.set(this, renderItem.getItemModelMesher()); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } @Override public void renderItem(ItemStack stack, IBakedModel model) { this.renderItem(stack, model, TransformType.NONE); } @Override protected void renderItemModelTransform(ItemStack stack, IBakedModel model, ItemCameraTransforms.TransformType cameraTransformType) { this.textureManager.bindTexture(TextureMap.locationBlocksTexture); this.textureManager.getTexture(TextureMap.locationBlocksTexture) .setBlurMipmap(false, false); this.preTransform(stack); GlStateManager.enableRescaleNormal(); GlStateManager.alphaFunc(516, 0.1F); GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.pushMatrix(); model = net.minecraftforge.client.ForgeHooksClient .handleCameraTransforms(model, cameraTransformType); renderItem(stack, model, cameraTransformType); GlStateManager.popMatrix(); GlStateManager.disableRescaleNormal(); GlStateManager.disableBlend(); this.textureManager.bindTexture(TextureMap.locationBlocksTexture); this.textureManager.getTexture(TextureMap.locationBlocksTexture) .restoreLastBlurMipmap(); } @Override public void renderItemIntoGUI(ItemStack stack, int x, int y) { IBakedModel ibakedmodel = this.getItemModelMesher().getItemModel(stack); GlStateManager.pushMatrix(); this.textureManager.bindTexture(TextureMap.locationBlocksTexture); this.textureManager.getTexture(TextureMap.locationBlocksTexture) .setBlurMipmap(false, false); GlStateManager.enableRescaleNormal(); GlStateManager.enableAlpha(); GlStateManager.alphaFunc(516, 0.1F); GlStateManager.enableBlend(); GlStateManager.blendFunc(770, 771); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); setupGuiTransform(x, y, ibakedmodel.isGui3d()); applyTransform(ibakedmodel.getItemCameraTransforms().gui); renderItem(stack, ibakedmodel, ItemCameraTransforms.TransformType.GUI); GlStateManager.disableAlpha(); GlStateManager.disableRescaleNormal(); GlStateManager.disableLighting(); GlStateManager.popMatrix(); this.textureManager.bindTexture(TextureMap.locationBlocksTexture); this.textureManager.getTexture(TextureMap.locationBlocksTexture) .restoreLastBlurMipmap(); } public void renderItem(ItemStack paramItemStack, IBakedModel paramIBakedModel, ItemCameraTransforms.TransformType paramTransformType) { if (((paramItemStack.getItem() instanceof ItemBlock)) && (((ItemBlock) paramItemStack.getItem()).getBlock() .getRenderType() > 4)) RenderRegistry.instance().renderInventoryBlock(paramItemStack, paramTransformType); else super.renderItem(paramItemStack, paramIBakedModel); } @Override public boolean shouldRenderItemIn3D(ItemStack stack) { IBakedModel ibakedmodel = this.getItemModelMesher().getItemModel(stack); if (ibakedmodel == null || ibakedmodel == this.getItemModelMesher().getModelManager() .getMissingModel()) return RenderRegistry.instance().shouldRender3DInInventory(stack); return ibakedmodel.isGui3d(); } }