package mekanism.client.render.obj; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.obj.OBJModel; import net.minecraftforge.common.model.IModelState; import com.google.common.base.Function; import com.google.common.collect.ImmutableMap; public class MekanismOBJModel extends OBJModel { public OBJModelType modelType; public ResourceLocation location; public MekanismOBJModel(OBJModelType type, MaterialLibrary matLib, ResourceLocation modelLocation) { super(matLib, modelLocation); modelType = type; location = modelLocation; } @Override public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) { IBakedModel preBaked = super.bake(state, format, bakedTextureGetter); if(modelType == OBJModelType.GLOW_PANEL) { return new GlowPanelModel(preBaked, this, state, format, GlowPanelModel.getTexturesForOBJModel(preBaked), null); } else if(modelType == OBJModelType.TRANSMITTER) { return new TransmitterModel(preBaked, this, state, format, TransmitterModel.getTexturesForOBJModel(preBaked), null); } return null; } @Override public IModel process(ImmutableMap<String, String> customData) { MekanismOBJModel ret = new MekanismOBJModel(modelType, getMatLib(), location); return ret; } @Override public IModel retexture(ImmutableMap<String, String> textures) { MekanismOBJModel ret = new MekanismOBJModel(modelType, getMatLib().makeLibWithReplacements(textures), location); return ret; } public static enum OBJModelType { GLOW_PANEL, TRANSMITTER } }