package net.minecraft.client.renderer.texture; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.io.IOException; import java.io.InputStream; import java.util.List; import net.minecraft.block.material.MapColor; import net.minecraft.client.resources.IResourceManager; import net.minecraft.item.EnumDyeColor; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class LayeredColorMaskTexture extends AbstractTexture { private static final Logger field_174947_f = LogManager.getLogger(); private final ResourceLocation field_174948_g; private final List field_174949_h; private final List field_174950_i; private static final String __OBFID = "CL_00002404"; public LayeredColorMaskTexture(ResourceLocation p_i46101_1_, List p_i46101_2_, List p_i46101_3_) { this.field_174948_g = p_i46101_1_; this.field_174949_h = p_i46101_2_; this.field_174950_i = p_i46101_3_; } public void loadTexture(IResourceManager p_110551_1_) throws IOException { this.deleteGlTexture(); BufferedImage var2; try { BufferedImage var3 = TextureUtil.func_177053_a(p_110551_1_.getResource(this.field_174948_g).getInputStream()); int var4 = var3.getType(); if (var4 == 0) { var4 = 6; } var2 = new BufferedImage(var3.getWidth(), var3.getHeight(), var4); Graphics var5 = var2.getGraphics(); var5.drawImage(var3, 0, 0, (ImageObserver)null); for (int var6 = 0; var6 < this.field_174949_h.size() && var6 < this.field_174950_i.size(); ++var6) { String var7 = (String)this.field_174949_h.get(var6); MapColor var8 = ((EnumDyeColor)this.field_174950_i.get(var6)).func_176768_e(); if (var7 != null) { InputStream var9 = p_110551_1_.getResource(new ResourceLocation(var7)).getInputStream(); BufferedImage var10 = TextureUtil.func_177053_a(var9); if (var10.getWidth() == var2.getWidth() && var10.getHeight() == var2.getHeight() && var10.getType() == 6) { for (int var11 = 0; var11 < var10.getHeight(); ++var11) { for (int var12 = 0; var12 < var10.getWidth(); ++var12) { int var13 = var10.getRGB(var12, var11); if ((var13 & -16777216) != 0) { int var14 = (var13 & 16711680) << 8 & -16777216; int var15 = var3.getRGB(var12, var11); int var16 = MathHelper.func_180188_d(var15, var8.colorValue) & 16777215; var10.setRGB(var12, var11, var14 | var16); } } } var2.getGraphics().drawImage(var10, 0, 0, (ImageObserver)null); } } } } catch (IOException var17) { field_174947_f.error("Couldn\'t load layered image", var17); return; } TextureUtil.uploadTextureImage(this.getGlTextureId(), var2); } }