Files
Applied-Energistics-2/src/main/java/appeng/client/render/model/BiometricCardModel.java
T
2022-09-17 08:08:02 -03:00

61 lines
2.1 KiB
Java

package appeng.client.render.model;
import appeng.core.AppEng;
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.ModelLoaderRegistry;
import net.minecraftforge.common.model.IModelState;
import net.minecraftforge.common.model.TRSRTransformation;
import java.util.Collection;
import java.util.Collections;
import java.util.function.Function;
/**
* Model wrapper for the biometric card item model, which combines a base card layer with a "visual hash" of the player
* name
*/
public class BiometricCardModel implements IModel {
private static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/biometric_card");
private static final ResourceLocation TEXTURE = new ResourceLocation(AppEng.MOD_ID, "items/biometric_card_hash");
@Override
public Collection<ResourceLocation> getDependencies() {
return Collections.singletonList(MODEL_BASE);
}
@Override
public Collection<ResourceLocation> getTextures() {
return Collections.singletonList(TEXTURE);
}
@Override
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
TextureAtlasSprite texture = bakedTextureGetter.apply(TEXTURE);
IBakedModel baseModel = this.getBaseModel(state, format, bakedTextureGetter);
return new BiometricCardBakedModel(format, baseModel, texture);
}
private IBakedModel getBaseModel(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
// Load the base model
try {
return ModelLoaderRegistry.getModel(MODEL_BASE).bake(state, format, bakedTextureGetter);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public IModelState getDefaultState() {
return TRSRTransformation.identity();
}
}