use of crazypants.enderio.base.render.util.ItemQuadCollector in project EnderIO by SleepyTrousers.
the class EnderItemOverrideList method handleItemState.
@SuppressWarnings("deprecation")
@Override
@Nonnull
public IBakedModel handleItemState(@Nonnull IBakedModel originalModel, @Nonnull ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) {
if (Prep.isInvalid(stack)) {
return Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getModelManager().getMissingModel();
}
Block block = Block.getBlockFromItem(stack.getItem());
if (block == Blocks.AIR) {
Registerable modObject = ModObjectRegistry.getModObject(stack.getItem());
if (modObject != null) {
block = modObject.getBlock();
}
if (block == null || block == Blocks.AIR) {
throw new NullPointerException("Wrong parameter 'ItemStack stack', not an ItemBlock and not registered with ModObjectRegistry");
}
}
if (block instanceof ITESRItemBlock) {
return RelayingBakedModel.wrapModelForTESRRendering(originalModel);
}
if (block instanceof IBlockPaintableBlock && (!(block instanceof IWrenchHideablePaint) || !YetaUtil.shouldHeldItemHideFacadesClient())) {
IBlockState paintSource = ((IBlockPaintableBlock) block).getPaintSource(block, stack);
if (paintSource != null && paintSource != Blocks.AIR.getDefaultState()) {
Pair<Block, Long> cacheKey = NullHelper.notnull(Pair.of((Block) null, new CacheKey().addCacheKey(paintSource).getCacheKey()), "no way");
ItemQuadCollector quads = cache.getIfPresent(cacheKey);
if (quads == null) {
quads = new ItemQuadCollector();
quads.addItemBlockState(paintSource, Prep.getEmpty());
quads.addBlockState(ModObject.block_machine_base.getBlockNN().getDefaultState().withProperty(EnumRenderPart.SUB, EnumRenderPart.PAINT_OVERLAY), Prep.getEmpty());
cache.put(cacheKey, quads);
}
return new CollectedItemQuadBakedBlockModel(originalModel, quads);
}
}
if (block instanceof ISmartRenderAwareBlock) {
IRenderMapper.IItemRenderMapper renderMapper = ((ISmartRenderAwareBlock) block).getItemRenderMapper();
Pair<Block, Long> cacheKey = Pair.of(block, renderMapper.getCacheKey(block, stack, new CacheKey().addCacheKey(stack.getMetadata())).getCacheKey());
ItemQuadCollector quads = cacheKey.getRight() == null ? null : cache.getIfPresent(cacheKey);
if (quads == null) {
quads = new ItemQuadCollector();
if (renderMapper instanceof IRenderMapper.IItemRenderMapper.IItemStateMapper) {
quads.addBlockStates(((IRenderMapper.IItemRenderMapper.IItemStateMapper) renderMapper).mapItemRender(block, stack, quads), stack, block);
} else if (renderMapper instanceof IRenderMapper.IItemRenderMapper.IItemModelMapper) {
List<IBakedModel> bakedModels = ((IRenderMapper.IItemRenderMapper.IItemModelMapper) renderMapper).mapItemRender(block, stack);
if (bakedModels != null) {
for (IBakedModel bakedModel : bakedModels) {
quads.addItemBakedModel(bakedModel);
}
}
} else {
return Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getModelManager().getMissingModel();
}
if (cacheKey.getRight() != null) {
cache.put(cacheKey, quads);
}
}
if (renderMapper instanceof IItemRenderMapper.IDynamicOverlayMapper) {
quads = quads.combine(((IItemRenderMapper.IDynamicOverlayMapper) renderMapper).mapItemDynamicOverlayRender(block, stack));
}
return new CollectedItemQuadBakedBlockModel(originalModel, quads);
}
return originalModel;
}
use of crazypants.enderio.base.render.util.ItemQuadCollector in project EnderIO by SleepyTrousers.
the class FusedQuartzItemRenderMapper method mapItemDynamicOverlayRender.
@Override
@SideOnly(Side.CLIENT)
public ItemQuadCollector mapItemDynamicOverlayRender(@Nonnull Block block, @Nonnull ItemStack stack) {
if (NbtValue.FAKE.hasTag(stack)) {
// this is for the TOP overlay, kind of a hack putting it here, but the alternative would be adding a new item just for this...
SmartTank tank = ItemTankHelper.getTank(stack);
HalfBakedList buffer = TankRenderHelper.mkTank(tank, 0, 0, 16, true);
if (buffer != null) {
ItemQuadCollector result = new ItemQuadCollector();
List<BakedQuad> quads = new ArrayList<BakedQuad>();
buffer.bake(quads);
result.addQuads(null, quads);
return result;
}
}
return null;
}
use of crazypants.enderio.base.render.util.ItemQuadCollector in project EnderIO by SleepyTrousers.
the class TankItemRenderMapper method mapItemDynamicOverlayRender.
@Override
@SideOnly(Side.CLIENT)
public ItemQuadCollector mapItemDynamicOverlayRender(@Nonnull Block block, @Nonnull ItemStack stack) {
ItemQuadCollector result = new ItemQuadCollector();
if (stack.hasTagCompound()) {
SmartTank tank = ItemTankHelper.getTank(stack);
HalfBakedList buffer = TankRenderHelper.mkTank(tank, 0.5, 0.5, 15.5, false);
if (buffer != null) {
List<BakedQuad> quads = new ArrayList<BakedQuad>();
buffer.bake(quads);
result.addQuads(null, quads);
}
}
if (!NbtValue.FAKE.hasTag(stack)) {
result.addBlockState(block.getStateFromMeta(stack.getMetadata()).withProperty(EnumRenderMode.RENDER, EnumRenderMode.FRONT_ON), stack, true);
}
return result;
}
use of crazypants.enderio.base.render.util.ItemQuadCollector in project EnderIO by SleepyTrousers.
the class CapBankItemRenderMapper method mapItemDynamicOverlayRender.
@Override
@SideOnly(Side.CLIENT)
public ItemQuadCollector mapItemDynamicOverlayRender(@Nonnull Block block, @Nonnull ItemStack stack) {
IEnergyStorage energyItem = PowerHandlerUtil.getCapability(stack, null);
if (energyItem != null) {
int maxEnergy = energyItem.getMaxEnergyStored();
if (maxEnergy > 0) {
int energy = energyItem.getEnergyStored();
FillGaugeBakery gauge = new FillGaugeBakery(BlockCapBank.getGaugeIcon(), (double) energy / maxEnergy);
if (gauge.canRender()) {
ItemQuadCollector result = new ItemQuadCollector();
List<BakedQuad> quads = new ArrayList<BakedQuad>();
gauge.bake(quads);
result.addQuads(null, quads);
return result;
}
}
}
return null;
}
use of crazypants.enderio.base.render.util.ItemQuadCollector in project EnderIO by SleepyTrousers.
the class RenderMapperGauge method mapItemDynamicOverlayRender.
@Override
public ItemQuadCollector mapItemDynamicOverlayRender(@Nonnull Block block, @Nonnull ItemStack stack) {
double v = EnderIO.proxy.getTickCount() % 120;
if (v > 60) {
v = 120 - v;
}
double ratio = v / 60d;
FillGaugeBakery gauge = new FillGaugeBakery(BlockGauge.gaugeIcon.get(TextureAtlasSprite.class), ratio);
if (gauge.canRender()) {
ItemQuadCollector result = new ItemQuadCollector();
List<BakedQuad> quads = new ArrayList<BakedQuad>();
gauge.bake(quads);
result.addQuads(null, quads);
return result;
}
return null;
}
Aggregations