Files
Eaglercraft-1.8/patches/minecraft/net/minecraft/client/renderer/entity/RenderItem.edit.java
2025-02-22 19:22:33 -08:00

177 lines
5.9 KiB
Java

# Eagler Context Redacted Diff
# Copyright (c) 2025 lax1dude. All rights reserved.
# Version: 1.0
# Author: lax1dude
> INSERT 4 : 11 @ 4
+
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> DELETE 21 @ 21 : 22
> DELETE 3 @ 3 : 4
> INSERT 21 : 22 @ 21
+ import net.minecraft.item.ItemBlock;
> INSERT 5 : 6 @ 5
+ import net.minecraft.util.EnumWorldBlockLayer;
> INSERT 3 : 5 @ 3
+ import net.optifine.Config;
+ import net.optifine.CustomItems;
> INSERT 8 : 9 @ 8
+ private ModelResourceLocation modelLocation = null;
> CHANGE 35 : 36 @ 35 : 36
~ public void renderModel(IBakedModel model, int color) {
> CHANGE 8 : 11 @ 8 : 9
~ EnumFacing[] facings = EnumFacing._VALUES;
~ for (int i = 0; i < facings.length; ++i) {
~ EnumFacing enumfacing = facings[i];
> CHANGE 7 : 12 @ 7 : 8
~ public static float renderPosX = 0.0f;
~ public static float renderPosY = 0.0f;
~ public static float renderPosZ = 0.0f;
~
~ public void renderItem(ItemStack stack, IBakedModel model_) {
> CHANGE 3 : 4 @ 3 : 4
~ if (model_.isBuiltInRenderer()) {
> CHANGE 7 : 9 @ 7 : 10
~ if (Config.isCustomItems()) {
~ model_ = CustomItems.getCustomItemModel(stack, model_, this.modelLocation, false);
> INSERT 1 : 74 @ 1
+ final IBakedModel model = model_;
+
+ if (DeferredStateManager.isInDeferredPass() && isTransparentItem(stack)) {
+ if (DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(renderPosX,
+ renderPosY, renderPosZ, EaglerDeferredPipeline.instance.getPartialTicks()) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ EntityRenderer.enableLightmapStatic();
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.texCoords2DDirect(1, lx, ly);
+ Minecraft.getMinecraft().getTextureManager()
+ .bindTexture(TextureMap.locationBlocksTexture);
+ RenderItem.this.renderModel(model, stack);
+ if (pass != PassType.SHADOW && stack.hasEffect()) {
+ GlStateManager.color(1.5F, 0.5F, 1.5F, 1.0F);
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.05f);
+ DeferredStateManager.setMetalnessConstant(0.01f);
+ GlStateManager.blendFunc(768, 1);
+ renderEffect(model, stack);
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ }
+ GlStateManager.popMatrix();
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ });
+ }
+ } else {
+ this.renderModel(model, stack);
+ if (stack.hasEffect()) {
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (DeferredStateManager.forwardCallbackHandler != null
+ && !DeferredStateManager.isEnableShadowRender()) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(renderPosX,
+ renderPosY, renderPosZ, EaglerDeferredPipeline.instance.getPartialTicks()) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ EntityRenderer.enableLightmapStatic();
+ GlStateManager.color(1.5F, 0.5F, 1.5F, 1.0F);
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.05f);
+ DeferredStateManager.setMetalnessConstant(0.01f);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.texCoords2DDirect(1, lx, ly);
+ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ONE);
+ renderEffect(model, stack);
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ GlStateManager.popMatrix();
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ });
+ }
+ } else {
+ GlStateManager.blendFunc(768, 1);
+ this.renderEffect(model, stack);
+ }
+ }
+ }
> CHANGE 6 : 15 @ 6 : 7
~ private static boolean isTransparentItem(ItemStack stack) {
~ Item itm = stack.getItem();
~ return itm instanceof ItemBlock
~ && ((ItemBlock) itm).getBlock().getBlockLayer() == EnumWorldBlockLayer.TRANSLUCENT;
~ }
~
~ private void renderEffect(IBakedModel model, ItemStack stack) {
~ if (Config.isCustomItems() && (CustomItems.renderCustomEffect(this, stack, model) || !CustomItems.isUseGlint()))
~ return;
> DELETE 3 @ 3 : 4
> INSERT 104 : 105 @ 104
+ this.modelLocation = modelresourcelocation;
> INSERT 4 : 5 @ 4
+ this.modelLocation = null;
> INSERT 15 : 16 @ 15
+ // boolean flag = DeferredStateManager.isEnableShadowRender();
> INSERT 1 : 2 @ 1
+ // GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
> INSERT 4 : 5 @ 4
+ // GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
> EOF