package net.minecraft.client.resources.model; import com.mojang.blaze3d.vertex.VertexConsumer; import java.util.Comparator; import java.util.Objects; import java.util.function.Function; import javax.annotation.Nullable; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class Material { public static final Comparator COMPARATOR = Comparator.comparing(Material::atlasLocation).thenComparing(Material::texture); private final ResourceLocation atlasLocation; private final ResourceLocation texture; @Nullable private RenderType renderType; public Material(ResourceLocation p_119191_, ResourceLocation p_119192_) { this.atlasLocation = p_119191_; this.texture = p_119192_; } public ResourceLocation atlasLocation() { return this.atlasLocation; } public ResourceLocation texture() { return this.texture; } public TextureAtlasSprite sprite() { return Minecraft.getInstance().getTextureAtlas(this.atlasLocation()).apply(this.texture()); } public RenderType renderType(Function p_119202_) { if (this.renderType == null) { this.renderType = p_119202_.apply(this.atlasLocation); } return this.renderType; } public VertexConsumer buffer(MultiBufferSource p_119195_, Function p_119196_) { return this.sprite().wrap(p_119195_.getBuffer(this.renderType(p_119196_))); } public VertexConsumer buffer(MultiBufferSource p_119198_, Function p_119199_, boolean p_119200_, boolean p_361191_) { return this.sprite().wrap(ItemRenderer.getFoilBuffer(p_119198_, this.renderType(p_119199_), p_119200_, p_361191_)); } @Override public boolean equals(Object p_119206_) { if (this == p_119206_) { return true; } else if (p_119206_ != null && this.getClass() == p_119206_.getClass()) { Material material = (Material)p_119206_; return this.atlasLocation.equals(material.atlasLocation) && this.texture.equals(material.texture); } else { return false; } } @Override public int hashCode() { return Objects.hash(this.atlasLocation, this.texture); } @Override public String toString() { return "Material{atlasLocation=" + this.atlasLocation + ", texture=" + this.texture + "}"; } }