diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/RenderItem.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/RenderItem.java.patch index 498fc5d5e..25a088e33 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/RenderItem.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/RenderItem.java.patch @@ -9,7 +9,17 @@ this.func_175041_b(); } -@@ -302,6 +302,10 @@ +@@ -212,6 +212,9 @@ + private void func_175033_a(WorldRenderer p_175033_1_, BakedQuad p_175033_2_, int p_175033_3_) + { + p_175033_1_.func_178981_a(p_175033_2_.func_178209_a()); ++ if(p_175033_2_ instanceof net.minecraftforge.client.model.IColoredBakedQuad) ++ net.minecraftforge.client.ForgeHooksClient.putQuadColor(p_175033_1_, p_175033_2_, p_175033_3_); ++ else + p_175033_1_.func_178968_d(p_175033_3_); + this.func_175038_a(p_175033_1_, p_175033_2_); + } +@@ -302,6 +305,10 @@ modelresourcelocation = new ModelResourceLocation("bow_pulling_0", "inventory"); } } @@ -20,7 +30,7 @@ if (modelresourcelocation != null) { -@@ -314,6 +318,11 @@ +@@ -314,6 +321,11 @@ protected void func_175034_a(ItemTransformVec3f p_175034_1_) { @@ -32,7 +42,7 @@ if (p_175034_1_ != ItemTransformVec3f.field_178366_a) { GlStateManager.func_179109_b(p_175034_1_.field_178365_c.x + field_175055_b, p_175034_1_.field_178365_c.y + field_175056_c, p_175034_1_.field_178365_c.z + field_175053_d); -@@ -335,23 +344,7 @@ +@@ -335,23 +347,7 @@ GlStateManager.func_179120_a(770, 771, 1, 0); GlStateManager.func_179094_E(); @@ -57,7 +67,7 @@ this.func_180454_a(p_175040_1_, p_175040_2_); GlStateManager.func_179121_F(); -@@ -485,10 +478,11 @@ +@@ -485,10 +481,11 @@ GlStateManager.func_179126_j(); } @@ -72,7 +82,7 @@ GlStateManager.func_179140_f(); GlStateManager.func_179097_i(); GlStateManager.func_179090_x(); -@@ -501,7 +495,7 @@ +@@ -501,7 +498,7 @@ this.func_175044_a(worldrenderer, p_180453_3_ + 2, p_180453_4_ + 13, 13, 2, 0); this.func_175044_a(worldrenderer, p_180453_3_ + 2, p_180453_4_ + 13, 12, 1, i1); this.func_175044_a(worldrenderer, p_180453_3_ + 2, p_180453_4_ + 13, j1, 1, l); @@ -81,7 +91,7 @@ GlStateManager.func_179141_d(); GlStateManager.func_179098_w(); GlStateManager.func_179145_e(); -@@ -1072,12 +1066,26 @@ +@@ -1072,12 +1069,26 @@ this.func_175029_a(Blocks.field_150420_aW, BlockHugeMushroom.EnumType.ALL_INSIDE.func_176896_a(), "brown_mushroom_block"); this.func_175029_a(Blocks.field_150419_aX, BlockHugeMushroom.EnumType.ALL_INSIDE.func_176896_a(), "red_mushroom_block"); this.func_175031_a(Blocks.field_150380_bt, "dragon_egg"); diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index 2d4f7f925..e236112df 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -26,6 +26,8 @@ import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderGlobal; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemTransformVec3f; import net.minecraft.client.renderer.entity.RenderItem; @@ -656,4 +658,25 @@ public class ForgeHooksClient ret.mul(tmp); return ret; } + + public static void putQuadColor(WorldRenderer renderer, BakedQuad quad, int color) + { + float cr = color & 0xFF; + float cg = (color >>> 8) & 0xFF; + float cb = (color >>> 16) & 0xFF; + float ca = (color >>> 24) & 0xFF; + for(int i = 0; i < 4; i++) + { + int vc = quad.getVertexData()[3 + 7 * i]; + float vcr = vc & 0xFF; + float vcg = (vc >>> 8) & 0xFF; + float vcb = (vc >>> 16) & 0xFF; + float vca = (vc >>> 24) & 0xFF; + int ncr = Math.min(0xFF, (int)(cr * vcr / 0xFF)); + int ncg = Math.min(0xFF, (int)(cg * vcg / 0xFF)); + int ncb = Math.min(0xFF, (int)(cb * vcb / 0xFF)); + int nca = Math.min(0xFF, (int)(ca * vca / 0xFF)); + renderer.putColorRGBA(renderer.getColorIndex(i + 1), ncr, ncg, ncb, nca); + } + } } diff --git a/src/main/java/net/minecraftforge/client/model/IColoredBakedQuad.java b/src/main/java/net/minecraftforge/client/model/IColoredBakedQuad.java new file mode 100644 index 000000000..95fce88a7 --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/IColoredBakedQuad.java @@ -0,0 +1,14 @@ +package net.minecraftforge.client.model; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.util.EnumFacing; + +public interface IColoredBakedQuad { + public static class ColoredBakedQuad extends BakedQuad implements IColoredBakedQuad + { + public ColoredBakedQuad(int[] data, int tintIndex, EnumFacing side) + { + super(data, tintIndex, side); + } + } +} \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java index ca0f3fbb0..ca6ab3018 100644 --- a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java +++ b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java @@ -26,6 +26,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.Attributes; +import net.minecraftforge.client.model.IColoredBakedQuad.ColoredBakedQuad; import net.minecraftforge.client.model.ICustomModelLoader; import net.minecraftforge.client.model.IFlexibleBakedModel; import net.minecraftforge.client.model.IModel; @@ -465,7 +466,7 @@ public class B3DLoader implements ICustomModelLoader buf.flip(); int[] data = new int[VERTICES_IN_QUAD * format.getNextOffset() / BYTES_IN_INT]; buf.asIntBuffer().get(data); - builder.add(new BakedQuad(data, -1, EnumFacing.getFacingFromVector(f.getNormal().x, f.getNormal().y, f.getNormal().z))); + builder.add(new ColoredBakedQuad(data, -1, EnumFacing.getFacingFromVector(f.getNormal().x, f.getNormal().y, f.getNormal().z))); } quads = builder.build(); } diff --git a/src/main/resources/forge_at.cfg b/src/main/resources/forge_at.cfg index 1aa9b2ae5..8016e3a9f 100644 --- a/src/main/resources/forge_at.cfg +++ b/src/main/resources/forge_at.cfg @@ -152,3 +152,5 @@ public net.minecraft.client.resources.model.WeightedBakedModel field_177565_b # # EnumFacing public net.minecraft.util.EnumFacing field_82609_l # VALUES public net.minecraft.util.EnumFacing field_176754_o # HORIZONTALS +public net.minecraft.client.renderer.WorldRenderer func_78909_a(I)I # getColorIndex +public net.minecraft.client.renderer.WorldRenderer func_178972_a(IIIII)V # putColorRGBA